← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 3134: plugin SDK: add VS project files

 

------------------------------------------------------------
revno: 3134
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Sun 2012-11-11 19:37:03 +0100
message:
  plugin SDK: add VS project files
removed:
  pluginsdk/c/pluginsdk/version.h
  pluginsdk/cpp/pluginsdk/version.h
added:
  pluginsdk/cpp/projects/
  pluginsdk/cpp/projects/vs2012/
  pluginsdk/cpp/projects/vs2012/Plugin.sln
  pluginsdk/cpp/projects/vs2012/Plugin.vcxproj
  pluginsdk/cpp/projects/vs2012/Plugin.vcxproj.filters
  pluginsdk/cpp/src/
  pluginsdk/cpp/src/Plugin.cpp
  pluginsdk/cpp/src/Plugin.def
  pluginsdk/cpp/src/Plugin.h
  pluginsdk/cpp/src/main.cpp
  pluginsdk/cpp/src/resource.h
  pluginsdk/cpp/src/resource.rc
  pluginsdk/cpp/src/stdafx.cpp
  pluginsdk/cpp/src/stdafx.h
  pluginsdk/cpp/src/version.h
modified:
  .bzrignore
  plugins/Dev/Plugin.cpp
  plugins/Dev/pluginsdk.cpp
  plugins/Script/Plugin.cpp
  plugins/Script/pluginsdk.cpp
  plugins/Test/Plugin.cpp
  plugins/Test/Plugin.h
  plugins/Test/pluginsdk.cpp
  pluginsdk/cpp/pluginsdk/Config.cpp
  pluginsdk/cpp/pluginsdk/Config.h
  pluginsdk/cpp/pluginsdk/Queue.cpp


--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk

Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file '.bzrignore'
--- .bzrignore	2012-09-17 18:25:16 +0000
+++ .bzrignore	2012-11-11 18:37:03 +0000
@@ -6,7 +6,11 @@
 custom.py
 *.aps
 *.lib
+*.opensdf
 *.pdb
+*.sdf
+*.suo
+*.vcxproj.user
 ./dcpp/version-revno.inc
 ./help/changelog.html
 ./help/compile.html
@@ -20,3 +24,6 @@
 ./msvc/debug-*
 ./msvc/release-*
 ./mingw/include/*.h
+./pluginsdk/cpp/pluginsdk/PluginDefs.h
+./pluginsdk/cpp/projects/vs2012/Debug
+./pluginsdk/cpp/projects/vs2012/Release

=== modified file 'plugins/Dev/Plugin.cpp'
--- plugins/Dev/Plugin.cpp	2012-11-11 16:57:44 +0000
+++ plugins/Dev/Plugin.cpp	2012-11-11 18:37:03 +0000
@@ -110,7 +110,7 @@
 
 bool Plugin::onLoad(DCCorePtr core, bool install) {
 	Core::init(core);
-	if(!Config::init() || !Hooks::init() || !Hubs::init() || !Logger::init() || !UI::init() || !Util::init()) {
+	if(!Config::init(PLUGIN_GUID) || !Hooks::init() || !Hubs::init() || !Logger::init() || !UI::init() || !Util::init()) {
 		return false;
 	}
 

=== modified file 'plugins/Dev/pluginsdk.cpp'
--- plugins/Dev/pluginsdk.cpp	2012-11-11 17:43:20 +0000
+++ plugins/Dev/pluginsdk.cpp	2012-11-11 18:37:03 +0000
@@ -1,8 +1,6 @@
 /* This file compiles the plugin SDK. Normally the relevant files would be included directly in the
 project; but it's impractical in the DC++ repository (would need some decent symlink support). */
 
-#include "version.h"
-
 #include <pluginsdk/Config.cpp>
 #include <pluginsdk/Core.cpp>
 #include <pluginsdk/Hooks.cpp>

=== modified file 'plugins/Script/Plugin.cpp'
--- plugins/Script/Plugin.cpp	2012-11-11 17:43:20 +0000
+++ plugins/Script/Plugin.cpp	2012-11-11 18:37:03 +0000
@@ -87,7 +87,7 @@
 
 bool Plugin::onLoad(DCCorePtr core, bool install) {
 	Core::init(core);
-	if(!Config::init() || !Connections::init() || !Hooks::init() || !Hubs::init() || !Logger::init() || !Util::init()) {
+	if(!Config::init(PLUGIN_GUID) || !Connections::init() || !Hooks::init() || !Hubs::init() || !Logger::init() || !Util::init()) {
 		return false;
 	}
 

=== modified file 'plugins/Script/pluginsdk.cpp'
--- plugins/Script/pluginsdk.cpp	2012-11-11 17:43:20 +0000
+++ plugins/Script/pluginsdk.cpp	2012-11-11 18:37:03 +0000
@@ -1,8 +1,6 @@
 /* This file compiles the plugin SDK. Normally the relevant files would be included directly in the
 project; but it's impractical in the DC++ repository (would need some decent symlink support). */
 
-#include "version.h"
-
 #include <pluginsdk/Config.cpp>
 #include <pluginsdk/Connections.cpp>
 #include <pluginsdk/Core.cpp>

=== modified file 'plugins/Test/Plugin.cpp'
--- plugins/Test/Plugin.cpp	2012-11-11 17:07:47 +0000
+++ plugins/Test/Plugin.cpp	2012-11-11 18:37:03 +0000
@@ -70,7 +70,7 @@
 
 bool Plugin::onLoad(DCCorePtr core, bool install) {
 	Core::init(core);
-	if(!Config::init() || !Hooks::init() || !Logger::init() || !Tagger::init() || !UI::init() || !Util::init()) {
+	if(!Config::init(PLUGIN_GUID) || !Hooks::init() || !Logger::init() || !Tagger::init() || !UI::init() || !Util::init()) {
 		return false;
 	}
 

=== modified file 'plugins/Test/Plugin.h'
--- plugins/Test/Plugin.h	2012-11-11 17:07:47 +0000
+++ plugins/Test/Plugin.h	2012-11-11 18:37:03 +0000
@@ -19,9 +19,6 @@
 #ifndef PLUGINS_TEST_PLUGIN_H
 #define PLUGINS_TEST_PLUGIN_H
 
-#include <map>
-
-using std::map;
 using std::string;
 
 class Plugin

=== modified file 'plugins/Test/pluginsdk.cpp'
--- plugins/Test/pluginsdk.cpp	2012-11-11 17:43:20 +0000
+++ plugins/Test/pluginsdk.cpp	2012-11-11 18:37:03 +0000
@@ -1,8 +1,6 @@
 /* This file compiles the plugin SDK. Normally the relevant files would be included directly in the
 project; but it's impractical in the DC++ repository (would need some decent symlink support). */
 
-#include "version.h"
-
 #include <pluginsdk/Config.cpp>
 #include <pluginsdk/Core.cpp>
 #include <pluginsdk/Hooks.cpp>

=== removed file 'pluginsdk/c/pluginsdk/version.h'
--- pluginsdk/c/pluginsdk/version.h	2012-11-04 19:15:24 +0000
+++ pluginsdk/c/pluginsdk/version.h	1970-01-01 00:00:00 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2012 Jacek Sieka, arnetheduck on gmail point com
- *
- * 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.
- */
-
-/* Information about the plugin - fill this out! */
-
-#ifndef PLUGINSDK_VERSION_H
-#define PLUGINSDK_VERSION_H
-
-/* UUID/GUID for this plugin project */
-#define PLUGIN_GUID "..."
-
-/* Name of the plugin */
-#define PLUGIN_NAME "..."
-
-/* Author of the plugin */
-#define PLUGIN_AUTHOR "..."
-
-/* Short description of the plugin */
-#define PLUGIN_DESC "..."
-
-/* Version of the plugin (note: not API version) */
-#define PLUGIN_VERSION 1.0
-
-/* Plugin website, set to "N/A" if none */
-#define PLUGIN_WEB "N/A"
-
-#endif

=== modified file 'pluginsdk/cpp/pluginsdk/Config.cpp'
--- pluginsdk/cpp/pluginsdk/Config.cpp	2012-11-11 16:28:14 +0000
+++ pluginsdk/cpp/pluginsdk/Config.cpp	2012-11-11 18:37:03 +0000
@@ -25,13 +25,14 @@
 namespace dcapi {
 
 DCConfigPtr Config::config;
+string Config::guid;
 
-bool Config::init() {
+bool Config::init(string pluginGuid) {
 	if(!Core::handle()) { return false; }
-	init(reinterpret_cast<DCConfigPtr>(Core::handle()->query_interface(DCINTF_CONFIG, DCINTF_CONFIG_VER)));
+	init(reinterpret_cast<DCConfigPtr>(Core::handle()->query_interface(DCINTF_CONFIG, DCINTF_CONFIG_VER)), move(pluginGuid));
 	return config;
 }
-void Config::init(DCConfigPtr coreConfig) { config = coreConfig; }
+void Config::init(DCConfigPtr coreConfig, string pluginGuid) { config = coreConfig; guid = move(pluginGuid); }
 DCConfigPtr Config::handle() { return config; }
 
 void Config::setConfig(const char* name, const char* value) { setConfig<ConfigStr>(name, CFG_TYPE_STRING, value); }

=== modified file 'pluginsdk/cpp/pluginsdk/Config.h'
--- pluginsdk/cpp/pluginsdk/Config.h	2012-11-11 16:28:14 +0000
+++ pluginsdk/cpp/pluginsdk/Config.h	2012-11-11 18:37:03 +0000
@@ -33,8 +33,8 @@
 class Config
 {
 public:
-	static bool init();
-	static void init(DCConfigPtr coreConfig);
+	static bool init(string pluginGuid);
+	static void init(DCConfigPtr coreConfig, string pluginGuid);
 	static DCConfigPtr handle();
 
 	static void setConfig(const char* name, const char* value);
@@ -58,15 +58,17 @@
 	template<typename ConfigT, typename RetT> static RetT getConfig(const char* name, ConfigType type);
 
 	static DCConfigPtr config;
+
+	static string guid;
 };
 
 template<typename ConfigT, typename ValueT> void Config::setConfig(const char* name, ConfigType type, ValueT value) {
 	ConfigT val = { type, value };
-	config->set_cfg(PLUGIN_GUID, name, reinterpret_cast<ConfigValuePtr>(&val));
+	config->set_cfg(guid.c_str(), name, reinterpret_cast<ConfigValuePtr>(&val));
 }
 
 template<typename ConfigT, typename RetT> RetT Config::getConfig(const char* name, ConfigType type) {
-	auto cfg = config->get_cfg(PLUGIN_GUID, name, type);
+	auto cfg = config->get_cfg(guid.c_str(), name, type);
 	RetT ret(reinterpret_cast<ConfigT>(cfg)->value);
 	config->release(cfg);
 	return ret;

=== modified file 'pluginsdk/cpp/pluginsdk/Queue.cpp'
--- pluginsdk/cpp/pluginsdk/Queue.cpp	2012-11-11 16:57:44 +0000
+++ pluginsdk/cpp/pluginsdk/Queue.cpp	2012-11-11 18:37:03 +0000
@@ -28,7 +28,7 @@
 
 bool Queue::init() {
 	if(!Core::handle()) { return false; }
-	init(reinterpret_cast<DCQueuePtr>(Core::handle()->query_interface(DCINTF_QUEUE, DCINTF_QUEUE_VER)));
+	init(reinterpret_cast<DCQueuePtr>(Core::handle()->query_interface(DCINTF_DCPP_QUEUE, DCINTF_DCPP_QUEUE_VER)));
 	return queue;
 }
 void Queue::init(DCQueuePtr coreQueue) { queue = coreQueue; }

=== removed file 'pluginsdk/cpp/pluginsdk/version.h'
--- pluginsdk/cpp/pluginsdk/version.h	2012-11-04 19:15:24 +0000
+++ pluginsdk/cpp/pluginsdk/version.h	1970-01-01 00:00:00 +0000
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2012 Jacek Sieka, arnetheduck on gmail point com
- *
- * 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.
- */
-
-/* Information about the plugin - fill this out! */
-
-#ifndef PLUGINSDK_VERSION_H
-#define PLUGINSDK_VERSION_H
-
-/* UUID/GUID for this plugin project */
-#define PLUGIN_GUID "..."
-
-/* Name of the plugin */
-#define PLUGIN_NAME "..."
-
-/* Author of the plugin */
-#define PLUGIN_AUTHOR "..."
-
-/* Short description of the plugin */
-#define PLUGIN_DESC "..."
-
-/* Version of the plugin (note: not API version) */
-#define PLUGIN_VERSION 1.0
-
-/* Plugin website, set to "N/A" if none */
-#define PLUGIN_WEB "N/A"
-
-#endif

=== added directory 'pluginsdk/cpp/projects'
=== added directory 'pluginsdk/cpp/projects/vs2012'
=== added file 'pluginsdk/cpp/projects/vs2012/Plugin.sln'
--- pluginsdk/cpp/projects/vs2012/Plugin.sln	1970-01-01 00:00:00 +0000
+++ pluginsdk/cpp/projects/vs2012/Plugin.sln	2012-11-11 18:37:03 +0000
@@ -0,0 +1,20 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2012
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin", "Plugin.vcxproj", "{B5273AD8-8E53-46CD-8797-65FE814DBFB0}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{B5273AD8-8E53-46CD-8797-65FE814DBFB0}.Debug|Win32.ActiveCfg = Debug|Win32
+		{B5273AD8-8E53-46CD-8797-65FE814DBFB0}.Debug|Win32.Build.0 = Debug|Win32
+		{B5273AD8-8E53-46CD-8797-65FE814DBFB0}.Release|Win32.ActiveCfg = Release|Win32
+		{B5273AD8-8E53-46CD-8797-65FE814DBFB0}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

=== added file 'pluginsdk/cpp/projects/vs2012/Plugin.vcxproj'
--- pluginsdk/cpp/projects/vs2012/Plugin.vcxproj	1970-01-01 00:00:00 +0000
+++ pluginsdk/cpp/projects/vs2012/Plugin.vcxproj	2012-11-11 18:37:03 +0000
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{B5273AD8-8E53-46CD-8797-65FE814DBFB0}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <PlatformToolset>v110</PlatformToolset>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;PLUGIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <WarningLevel>Level4</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../../</AdditionalIncludeDirectories>
+      <DisableSpecificWarnings>4800</DisableSpecificWarnings>
+    </ClCompile>
+    <Link>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;PLUGIN_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <WarningLevel>Level4</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <AdditionalIncludeDirectories>../../</AdditionalIncludeDirectories>
+      <DisableSpecificWarnings>4800</DisableSpecificWarnings>
+    </ClCompile>
+    <Link>
+      <TargetMachine>MachineX86</TargetMachine>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\pluginsdk\Config.cpp" />
+    <ClCompile Include="..\..\pluginsdk\Connections.cpp" />
+    <ClCompile Include="..\..\pluginsdk\Core.cpp" />
+    <ClCompile Include="..\..\pluginsdk\Hooks.cpp" />
+    <ClCompile Include="..\..\pluginsdk\Hubs.cpp" />
+    <ClCompile Include="..\..\pluginsdk\Logger.cpp" />
+    <ClCompile Include="..\..\pluginsdk\Queue.cpp" />
+    <ClCompile Include="..\..\pluginsdk\Tagger.cpp" />
+    <ClCompile Include="..\..\pluginsdk\UI.cpp" />
+    <ClCompile Include="..\..\pluginsdk\Util.cpp" />
+    <ClCompile Include="..\..\src\main.cpp" />
+    <ClCompile Include="..\..\src\Plugin.cpp" />
+    <ClCompile Include="..\..\src\stdafx.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\..\src\Plugin.def" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\pluginsdk\Config.h" />
+    <ClInclude Include="..\..\pluginsdk\Connections.h" />
+    <ClInclude Include="..\..\pluginsdk\Core.h" />
+    <ClInclude Include="..\..\pluginsdk\Hooks.h" />
+    <ClInclude Include="..\..\pluginsdk\Hubs.h" />
+    <ClInclude Include="..\..\pluginsdk\Logger.h" />
+    <ClInclude Include="..\..\pluginsdk\PluginDefs.h" />
+    <ClInclude Include="..\..\pluginsdk\Queue.h" />
+    <ClInclude Include="..\..\pluginsdk\Tagger.h" />
+    <ClInclude Include="..\..\pluginsdk\UI.h" />
+    <ClInclude Include="..\..\pluginsdk\Util.h" />
+    <ClInclude Include="..\..\src\Plugin.h" />
+    <ClInclude Include="..\..\src\resource.h" />
+    <ClInclude Include="..\..\src\stdafx.h" />
+    <ClInclude Include="..\..\src\version.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\..\src\resource.rc" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file

=== added file 'pluginsdk/cpp/projects/vs2012/Plugin.vcxproj.filters'
--- pluginsdk/cpp/projects/vs2012/Plugin.vcxproj.filters	1970-01-01 00:00:00 +0000
+++ pluginsdk/cpp/projects/vs2012/Plugin.vcxproj.filters	2012-11-11 18:37:03 +0000
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003";>
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+    </Filter>
+    <Filter Include="Source Files\Plugin SDK">
+      <UniqueIdentifier>{06f1f0f7-e8f5-48f2-999e-e53a04056b83}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\Plugin SDK">
+      <UniqueIdentifier>{ff6b64da-cee7-4033-bcef-4b0545314cbe}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\src\main.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\Plugin.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\stdafx.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\pluginsdk\Config.cpp">
+      <Filter>Source Files\Plugin SDK</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\pluginsdk\Connections.cpp">
+      <Filter>Source Files\Plugin SDK</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\pluginsdk\Core.cpp">
+      <Filter>Source Files\Plugin SDK</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\pluginsdk\Hooks.cpp">
+      <Filter>Source Files\Plugin SDK</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\pluginsdk\Hubs.cpp">
+      <Filter>Source Files\Plugin SDK</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\pluginsdk\Logger.cpp">
+      <Filter>Source Files\Plugin SDK</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\pluginsdk\Queue.cpp">
+      <Filter>Source Files\Plugin SDK</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\pluginsdk\UI.cpp">
+      <Filter>Source Files\Plugin SDK</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\pluginsdk\Util.cpp">
+      <Filter>Source Files\Plugin SDK</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\pluginsdk\Tagger.cpp">
+      <Filter>Source Files\Plugin SDK</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\..\src\Plugin.def">
+      <Filter>Source Files</Filter>
+    </None>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\src\Plugin.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\resource.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\stdafx.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\version.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\pluginsdk\Config.h">
+      <Filter>Header Files\Plugin SDK</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\pluginsdk\Connections.h">
+      <Filter>Header Files\Plugin SDK</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\pluginsdk\Core.h">
+      <Filter>Header Files\Plugin SDK</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\pluginsdk\Hooks.h">
+      <Filter>Header Files\Plugin SDK</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\pluginsdk\Hubs.h">
+      <Filter>Header Files\Plugin SDK</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\pluginsdk\Logger.h">
+      <Filter>Header Files\Plugin SDK</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\pluginsdk\Queue.h">
+      <Filter>Header Files\Plugin SDK</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\pluginsdk\UI.h">
+      <Filter>Header Files\Plugin SDK</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\pluginsdk\Util.h">
+      <Filter>Header Files\Plugin SDK</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\pluginsdk\Tagger.h">
+      <Filter>Header Files\Plugin SDK</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\pluginsdk\PluginDefs.h">
+      <Filter>Header Files\Plugin SDK</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\..\src\resource.rc">
+      <Filter>Resource Files</Filter>
+    </ResourceCompile>
+  </ItemGroup>
+</Project>
\ No newline at end of file

=== added directory 'pluginsdk/cpp/src'
=== added file 'pluginsdk/cpp/src/Plugin.cpp'
--- pluginsdk/cpp/src/Plugin.cpp	1970-01-01 00:00:00 +0000
+++ pluginsdk/cpp/src/Plugin.cpp	2012-11-11 18:37:03 +0000
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2012 Jacek Sieka, arnetheduck on gmail point com
+ *
+ * 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.
+ */
+
+#include "stdafx.h"
+#include "Plugin.h"
+
+/* Include plugin SDK helpers. There are more interfaces available that can be included in the same
+fashion (check the pluginsdk directory). */
+#include <pluginsdk/Config.h>
+#include <pluginsdk/Core.h>
+#include <pluginsdk/Hooks.h>
+#include <pluginsdk/Logger.h>
+#include <pluginsdk/Util.h>
+
+/* Plugin SDK helpers are in the "dcapi" namespace; ease their calling. */
+using dcapi::Config;
+using dcapi::Core;
+using dcapi::Hooks;
+using dcapi::Logger;
+using dcapi::Util;
+
+Plugin::Plugin() {
+}
+
+Plugin::~Plugin() {
+	Hooks::clear();
+}
+
+Bool DCAPI Plugin::main(PluginState state, DCCorePtr core, dcptr_t) {
+	static Plugin* instance;
+
+	switch(state) {
+	case ON_INSTALL:
+	case ON_LOAD:
+		{
+			instance = new Plugin();
+			return instance->onLoad(core, state == ON_INSTALL) ? True : False;
+		}
+
+	case ON_UNINSTALL:
+	case ON_UNLOAD:
+		{
+			delete instance;
+			instance = nullptr;
+			return True;
+		}
+
+	default:
+		{
+			return False;
+		}
+	}
+}
+
+bool Plugin::onLoad(DCCorePtr core, bool install) {
+	/* Initialization phase. Initiate additional interfaces that you may have included from the
+	plugin SDK. */
+	Core::init(core);
+	if(!Config::init(PLUGIN_GUID) || !Hooks::init() || !Logger::init() || !Util::init()) {
+		return false;
+	}
+
+	if(install) {
+		// This only executes when the plugin has been installed for the first time.
+	}
+
+	// Start the plugin logic here; add hooks with functions from the Hooks interface.
+
+	return true;
+}

=== added file 'pluginsdk/cpp/src/Plugin.def'
--- pluginsdk/cpp/src/Plugin.def	1970-01-01 00:00:00 +0000
+++ pluginsdk/cpp/src/Plugin.def	2012-11-11 18:37:03 +0000
@@ -0,0 +1,2 @@
+EXPORTS
+	pluginInit = _pluginInit@4 @1

=== added file 'pluginsdk/cpp/src/Plugin.h'
--- pluginsdk/cpp/src/Plugin.h	1970-01-01 00:00:00 +0000
+++ pluginsdk/cpp/src/Plugin.h	2012-11-11 18:37:03 +0000
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2012 Jacek Sieka, arnetheduck on gmail point com
+ *
+ * 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.
+ */
+
+#ifndef PLUGIN_PLUGIN_H
+#define PLUGIN_PLUGIN_H
+
+using std::string;
+
+class Plugin
+{
+public:
+	static Bool DCAPI main(PluginState state, DCCorePtr core, dcptr_t);
+
+private:
+	Plugin();
+	~Plugin();
+
+	bool onLoad(DCCorePtr core, bool install);
+};
+
+#endif

=== added file 'pluginsdk/cpp/src/main.cpp'
--- pluginsdk/cpp/src/main.cpp	1970-01-01 00:00:00 +0000
+++ pluginsdk/cpp/src/main.cpp	2012-11-11 18:37:03 +0000
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2012 Jacek Sieka, arnetheduck on gmail point com
+ *
+ * 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.
+ */
+
+#include "stdafx.h"
+#include "Plugin.h"
+#include "version.h"
+
+extern "C" {
+
+// Plugin loader
+DCEXP DCMAIN DCAPI pluginInit(MetaDataPtr info) {
+	info->name = PLUGIN_NAME;
+	info->author = PLUGIN_AUTHOR;
+	info->description = PLUGIN_DESC;
+	info->web = PLUGIN_WEB;
+	info->version = PLUGIN_VERSION;
+	info->apiVersion = DCAPI_CORE_VER;
+	info->guid = PLUGIN_GUID;
+
+	return &Plugin::main;
+}
+
+#ifdef _WIN32
+BOOL APIENTRY DllMain(HINSTANCE /*hinstDLL*/, DWORD /*fdwReason*/, LPVOID /*lpvReserved*/) {
+	return TRUE;
+}
+#endif
+
+}

=== added file 'pluginsdk/cpp/src/resource.h'
--- pluginsdk/cpp/src/resource.h	1970-01-01 00:00:00 +0000
+++ pluginsdk/cpp/src/resource.h	2012-11-11 18:37:03 +0000
@@ -0,0 +1,16 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by resource.rc
+//
+#define VERSION_INFO                    1
+
+// Next default values for new objects
+// 
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        102
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1002
+#define _APS_NEXT_SYMED_VALUE           101
+#endif
+#endif

=== added file 'pluginsdk/cpp/src/resource.rc'
--- pluginsdk/cpp/src/resource.rc	1970-01-01 00:00:00 +0000
+++ pluginsdk/cpp/src/resource.rc	2012-11-11 18:37:03 +0000
@@ -0,0 +1,100 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (United States) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE 
+BEGIN
+    "resource.h\0"
+END
+
+2 TEXTINCLUDE 
+BEGIN
+    "#include ""afxres.h""\r\n"
+    "\0"
+END
+
+3 TEXTINCLUDE 
+BEGIN
+    "\r\n"
+    "\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VERSION_INFO VERSIONINFO
+ FILEVERSION 1,0,0,0
+ PRODUCTVERSION 1,0,0,0
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+    BLOCK "StringFileInfo"
+    BEGIN
+        BLOCK "080004b0"
+        BEGIN
+            VALUE "Comments", "..."
+            VALUE "FileDescription", "..."
+            VALUE "FileVersion", "1, 0, 0, 0"
+            VALUE "InternalName", "..."
+            VALUE "LegalCopyright", "..."
+            VALUE "OriginalFilename", "..."
+            VALUE "ProductName", "..."
+            VALUE "ProductVersion", "1, 0, 0, 0"
+        END
+    END
+    BLOCK "VarFileInfo"
+    BEGIN
+        VALUE "Translation", 0x800, 1200
+    END
+END
+
+#endif    // English (United States) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+

=== added file 'pluginsdk/cpp/src/stdafx.cpp'
--- pluginsdk/cpp/src/stdafx.cpp	1970-01-01 00:00:00 +0000
+++ pluginsdk/cpp/src/stdafx.cpp	2012-11-11 18:37:03 +0000
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2012 Jacek Sieka, arnetheduck on gmail point com
+ *
+ * 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.
+ */
+
+#include "stdafx.h"

=== added file 'pluginsdk/cpp/src/stdafx.h'
--- pluginsdk/cpp/src/stdafx.h	1970-01-01 00:00:00 +0000
+++ pluginsdk/cpp/src/stdafx.h	2012-11-11 18:37:03 +0000
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2012 Jacek Sieka, arnetheduck on gmail point com
+ *
+ * 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.
+ */
+
+#ifndef PLUGIN_STDAFX_H
+#define PLUGIN_STDAFX_H
+
+#ifdef _WIN32
+
+#include <windows.h>
+#include <tchar.h>
+
+#else
+
+#include <unistd.h>
+
+#endif
+
+#include <cstdio>
+#include <cstdint>
+#include <string>
+
+#include <pluginsdk/PluginDefs.h>
+
+#include "version.h"
+
+#ifdef _UNICODE
+typedef std::wstring tstring;
+#else
+typedef std::string tstring;
+#endif
+
+#endif

=== added file 'pluginsdk/cpp/src/version.h'
--- pluginsdk/cpp/src/version.h	1970-01-01 00:00:00 +0000
+++ pluginsdk/cpp/src/version.h	2012-11-11 18:37:03 +0000
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2012 Jacek Sieka, arnetheduck on gmail point com
+ *
+ * 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.
+ */
+
+/* Information about the plugin - fill this out! Don't forget to edit the resource file as well. */
+
+#ifndef PLUGIN_VERSION_H
+#define PLUGIN_VERSION_H
+
+/* UUID/GUID for this plugin project */
+#define PLUGIN_GUID "..."
+
+/* Name of the plugin */
+#define PLUGIN_NAME "..."
+
+/* Author of the plugin */
+#define PLUGIN_AUTHOR "..."
+
+/* Short description of the plugin */
+#define PLUGIN_DESC "..."
+
+/* Version of the plugin (note: not API version) */
+#define PLUGIN_VERSION 1.0
+
+/* Plugin website, set to "N/A" if none */
+#define PLUGIN_WEB "N/A"
+
+#endif