← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 3020: Plugins: host name retrieval, soft dependencies (Crise)

 

------------------------------------------------------------
revno: 3020
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Thu 2012-08-02 19:49:34 +0200
message:
  Plugins: host name retrieval, soft dependencies (Crise)
modified:
  dcpp/PluginApiImpl.cpp
  dcpp/PluginApiImpl.h
  dcpp/PluginDefs.h
  dcpp/PluginManager.cpp
  plugins/Dev/Dialog.cpp
  plugins/Dev/Plugin.cpp
  plugins/Dev/Util.cpp
  plugins/Dev/Util.h
  plugins/Script/Plugin.cpp
  plugins/Script/Util.cpp
  plugins/Script/Util.h


--
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 'dcpp/PluginApiImpl.cpp'
--- dcpp/PluginApiImpl.cpp	2012-07-07 16:36:41 +0000
+++ dcpp/PluginApiImpl.cpp	2012-08-02 17:49:34 +0000
@@ -37,6 +37,7 @@
 #include "PluginManager.h"
 #include "QueueManager.h"
 #include "UserConnection.h"
+#include "version.h"
 
 namespace dcpp {
 
@@ -70,6 +71,8 @@
 	HOOK_UI_PROCESS_CHAT_CMD		
 };
 
+static const char* hostName = APPNAME;
+
 // lambdas are not used because certain compiler is being a pain about it (for now)
 DCHooks PluginApiImpl::dcHooks = {
 	DCINTF_HOOKS_VER,
@@ -173,6 +176,10 @@
 	dcCore.query_interface = &PluginApiImpl::queryInterface;
 	dcCore.release_interface = &PluginApiImpl::releaseInterface;
 
+	// Core functions
+	dcCore.has_plugin = &PluginApiImpl::isLoaded;
+	dcCore.host_name = &PluginApiImpl::hostName;
+
 	// Interfaces (since these outlast any plugin they don't need to be explictly released)
 	dcCore.register_interface(DCINTF_HOOKS, &dcHooks);
 	dcCore.register_interface(DCINTF_CONFIG, &dcConfig);
@@ -211,6 +218,14 @@
 	return PluginManager::getInstance()->releaseInterface(hInterface) ? True : False;
 }
 
+Bool PluginApiImpl::isLoaded(const char* guid) {
+	return PluginManager::getInstance()->isLoaded(guid) ? True : False;
+}
+
+const char* PluginApiImpl::hostName() {
+	return dcpp::hostName;
+}
+
 // Functions for DCHook
 hookHandle PluginApiImpl::createHook(const char* guid, DCHOOK defProc) {
 	return PluginManager::getInstance()->createHook(guid, defProc);

=== modified file 'dcpp/PluginApiImpl.h'
--- dcpp/PluginApiImpl.h	2012-07-02 18:13:18 +0000
+++ dcpp/PluginApiImpl.h	2012-08-02 17:49:34 +0000
@@ -56,6 +56,9 @@
 	static DCInterfacePtr DCAPI queryInterface(const char* guid, uint32_t version);
 	static Bool DCAPI releaseInterface(intfHandle hInterface);
 
+	static Bool DCAPI isLoaded(const char* guid);
+	static const char* DCAPI hostName();
+
 	// Functions for DCHooks
 	static hookHandle DCAPI createHook(const char* guid, DCHOOK defProc);
 	static Bool DCAPI destroyHook(hookHandle hHook);

=== modified file 'dcpp/PluginDefs.h'
--- dcpp/PluginDefs.h	2012-07-10 00:46:04 +0000
+++ dcpp/PluginDefs.h	2012-08-02 17:49:34 +0000
@@ -272,6 +272,12 @@
 	intfHandle			(DCAPI *register_interface)	(const char* guid, dcptr_t pInterface);
 	DCInterfacePtr		(DCAPI *query_interface)	(const char* guid, uint32_t version);
 	Bool				(DCAPI *release_interface)	(intfHandle hInterface);
+
+	/* Check if another plugin is loaded (for soft dependencies) */
+	Bool				(DCAPI *has_plugin)			(const char* guid);				
+
+	/* Retrieve host application name */
+	const char*			(DCAPI *host_name)			();
 } DCCore, *DCCorePtr;
 
 /* Plugin main function */

=== modified file 'dcpp/PluginManager.cpp'
--- dcpp/PluginManager.cpp	2012-07-29 22:46:08 +0000
+++ dcpp/PluginManager.cpp	2012-08-02 17:49:34 +0000
@@ -329,7 +329,7 @@
 	}
 	auto& hook = i->second;
 	{
-		Lock l(hook->cs);	// not strictly needed, for additions, due to characteristic of std::vector<..>
+		Lock l(hook->cs);
 		auto subscription = make_unique<HookSubscriber>();
 		auto pSub = subscription.get();
 		subscription->hookProc = hookProc;

=== modified file 'plugins/Dev/Dialog.cpp'
--- plugins/Dev/Dialog.cpp	2012-07-26 17:35:04 +0000
+++ plugins/Dev/Dialog.cpp	2012-08-02 17:49:34 +0000
@@ -53,7 +53,7 @@
 
 void Dialog::create(HWND parent) {
 	if(hwnd) {
-		MessageBox(parent, _T("The dev plugin hasn't been properly shut down; you better restart DC++"),
+		MessageBox(parent, Util::toT("The dev plugin hasn't been properly shut down; you better restart " + Util::appName).c_str(),
 			_T("Error creating the dev plugin's dialog"), MB_OK);
 		return;
 	}

=== modified file 'plugins/Dev/Plugin.cpp'
--- plugins/Dev/Plugin.cpp	2012-07-26 17:35:04 +0000
+++ plugins/Dev/Plugin.cpp	2012-08-02 17:49:34 +0000
@@ -69,12 +69,12 @@
 		return;
 	}
 
-	Util::initialize(utils, config, logger);
+	Util::initialize(core->host_name(), utils, config, logger);
 
 	/*if(install) {
 		// Default settings
 
-		Util::logMessage("Dev plugin installed, please restart the client to begin using the plugin.");
+		Util::logMessage("Dev plugin installed, please restart " + Util::appName + " to begin using the plugin.");
 		return;
 	}*/
 

=== modified file 'plugins/Dev/Util.cpp'
--- plugins/Dev/Util.cpp	2012-07-19 22:00:20 +0000
+++ plugins/Dev/Util.cpp	2012-08-02 17:49:34 +0000
@@ -21,6 +21,8 @@
 
 #include "version.h"
 
+string Util::appName; 
+
 DCUtilsPtr Util::utils = nullptr;
 DCConfigPtr Util::config = nullptr;
 DCLogPtr Util::logger = nullptr;

=== modified file 'plugins/Dev/Util.h'
--- plugins/Dev/Util.h	2012-07-19 22:00:20 +0000
+++ plugins/Dev/Util.h	2012-08-02 17:49:34 +0000
@@ -45,7 +45,8 @@
 class Util
 {
 public:
-	static void initialize(DCUtilsPtr coreUtils, DCConfigPtr coreConfig, DCLogPtr coreLogger) {
+	static void initialize(string coreName, DCUtilsPtr coreUtils, DCConfigPtr coreConfig, DCLogPtr coreLogger) {
+		appName = std::move(coreName);
 		utils = coreUtils;
 		config = coreConfig;
 		logger = coreLogger;
@@ -95,6 +96,8 @@
 	static string fromT(const tstring& str);
 	static tstring toT(const string& str);
 
+	static string appName;
+
 private:
 	static DCUtilsPtr utils;
 	static DCConfigPtr config;

=== modified file 'plugins/Script/Plugin.cpp'
--- plugins/Script/Plugin.cpp	2012-07-19 22:01:31 +0000
+++ plugins/Script/Plugin.cpp	2012-08-02 17:49:34 +0000
@@ -89,7 +89,7 @@
 		return;
 	}
 
-	Util::initialize(utils, config, logger);
+	Util::initialize(core->host_name(), utils, config, logger);
 
 	if(install) {
 		// Default settings
@@ -97,7 +97,7 @@
 		Util::setConfig("LuaDebug", false);
 		Util::setConfig("FormatChat", true);
 
-		Util::logMessage("Script plugin installed, please restart the client to begin using the plugin.");
+		Util::logMessage("Script plugin installed, please restart " + Util::appName + " to begin using the plugin.");
 		return;
 	}
 

=== modified file 'plugins/Script/Util.cpp'
--- plugins/Script/Util.cpp	2012-07-19 22:01:31 +0000
+++ plugins/Script/Util.cpp	2012-08-02 17:49:34 +0000
@@ -21,6 +21,8 @@
 
 #include "version.h"
 
+string Util::appName;
+
 DCUtilsPtr Util::utils = nullptr;
 DCConfigPtr Util::config = nullptr;
 DCLogPtr Util::logger = nullptr;

=== modified file 'plugins/Script/Util.h'
--- plugins/Script/Util.h	2012-07-19 22:01:31 +0000
+++ plugins/Script/Util.h	2012-08-02 17:49:34 +0000
@@ -45,7 +45,8 @@
 class Util
 {
 public:
-	static void initialize(DCUtilsPtr coreUtils, DCConfigPtr coreConfig, DCLogPtr coreLogger) {
+	static void initialize(string coreName, DCUtilsPtr coreUtils, DCConfigPtr coreConfig, DCLogPtr coreLogger) {
+		appName = std::move(coreName);
 		utils = coreUtils;
 		config = coreConfig;
 		logger = coreLogger;
@@ -100,6 +101,8 @@
 	static string fromUtf8(const string& str);
 	static string toUtf8(const string& str);
 
+	static string appName;
+
 private:
 	static DCUtilsPtr utils;
 	static DCConfigPtr config;