← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcpp-plugin-sdk-cpp/TestPlugin] Rev 15: merge

 

Merge authors:
  poy (poy)
------------------------------------------------------------
revno: 15 [merge]
committer: poy <poy@xxxxxxxxxx>
branch nick: TestPlugin
timestamp: Mon 2013-05-13 19:47:07 +0200
message:
  merge
modified:
  .bzrignore
  doc/Plugin format (dcext).txt
  pluginsdk/PluginDefs.h
  pluginsdk/UI.cpp
  pluginsdk/UI.h
  projects/make/Makefile
  src/Plugin.cpp


--
lp:~dcplusplus-team/dcpp-plugin-sdk-cpp/TestPlugin
https://code.launchpad.net/~dcplusplus-team/dcpp-plugin-sdk-cpp/TestPlugin

Your team Dcplusplus-team is subscribed to branch lp:~dcplusplus-team/dcpp-plugin-sdk-cpp/TestPlugin.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcpp-plugin-sdk-cpp/TestPlugin/+edit-subscription
=== modified file '.bzrignore'
--- .bzrignore	2013-02-05 19:19:23 +0000
+++ .bzrignore	2013-04-28 21:08:26 +0000
@@ -12,7 +12,7 @@
 ./doc/build.bat
 ./doc/html
 ./doc/latex
-./projects/make/build
+./projects/make/build*
 ./projects/vs2010/Debug
 ./projects/vs2010/ipch
 ./projects/vs2010/Release

=== modified file 'doc/Plugin format (dcext).txt'
--- doc/Plugin format (dcext).txt	2013-04-23 18:12:02 +0000
+++ doc/Plugin format (dcext).txt	2013-05-13 17:40:06 +0000
@@ -15,8 +15,13 @@
 Shared extensions are fine for testing but impractical to distribute and to have users install.
 Therefore, a DC plugin is preferably packaged as a .dcext file.
 
-A .dcext file is an archive. Currently, it is required to be a tar file, either uncompressed or
-compressed with bzip2 or gzip. This may be expanded in the future if needed.
+A .dcext file is a ZIP archive, as defined by PKWARE's APPNOTE, either uncompressed (method 0) or
+compressed with DEFLATE (method 8), with the following restrictions:
+- No encryption.
+- No streaming / splitting / spanning.
+- No manifest file.
+- No character outside of the ASCII range in file names.
+- Extensions / extra fields and comments are allowed but shall be ignored.
 
 That archive must contain an XML file named "info.xml" at its root, whose contents shall validate
 against the schemas/dcext.xsd schema.

=== modified file 'pluginsdk/PluginDefs.h'
--- pluginsdk/PluginDefs.h	2013-04-23 18:12:02 +0000
+++ pluginsdk/PluginDefs.h	2013-05-13 17:18:05 +0000
@@ -444,11 +444,12 @@
 
 	/* Add a command identified by "name".
 	"icon" is optional; it is the path to an icon file used to illustrate the command. */
-	void		(DCAPI *add_command)				(const char* name, DCCommandFunc command, const char* icon);
+	void		(DCAPI *add_command)				(const char* guid, const char* name, DCCommandFunc command, const char* icon);
 	/* Remove a command previously added with add_command. */
-	void		(DCAPI *remove_command)				(const char* name);
+	void		(DCAPI *remove_command)				(const char* guid, const char* name);
 
 	void		(DCAPI *play_sound)					(const char* path);
+	void		(DCAPI *notify)						(const char* title, const char* message);
 } DCUI, *DCUIPtr;
 
 #ifdef __cplusplus

=== modified file 'pluginsdk/UI.cpp'
--- pluginsdk/UI.cpp	2013-04-23 18:12:02 +0000
+++ pluginsdk/UI.cpp	2013-05-13 17:27:19 +0000
@@ -25,23 +25,24 @@
 namespace dcapi {
 
 DCUIPtr UI::ui;
+string UI::guid;
 unordered_map<string, pair<UI::Command, string>> UI::commands;
 
-bool UI::init() {
+bool UI::init(string pluginGuid) {
 	if(!Core::handle()) { return false; }
-	init(reinterpret_cast<DCUIPtr>(Core::handle()->query_interface(DCINTF_DCPP_UI, DCINTF_DCPP_UI_VER)));
+	init(reinterpret_cast<DCUIPtr>(Core::handle()->query_interface(DCINTF_DCPP_UI, DCINTF_DCPP_UI_VER)), move(pluginGuid));
 	return ui;
 }
-void UI::init(DCUIPtr coreUI) { ui = coreUI; }
+void UI::init(DCUIPtr coreUI, string pluginGuid) { ui = coreUI; guid = move(pluginGuid); }
 DCUIPtr UI::handle() { return ui; }
 
 void UI::addCommand(string name, Command command, string icon) {
 	const auto& iter = commands.insert(std::make_pair(move(name), std::make_pair(command, move(icon)))).first;
-	ui->add_command(iter->first.c_str(), commandCallback, iter->second.second.c_str());
+	ui->add_command(guid.c_str(), iter->first.c_str(), commandCallback, iter->second.second.c_str());
 }
 
 void UI::removeCommand(const string& name) {
-	ui->remove_command(name.c_str());
+	ui->remove_command(guid.c_str(), name.c_str());
 	commands.erase(name);
 }
 

=== modified file 'pluginsdk/UI.h'
--- pluginsdk/UI.h	2013-04-23 18:12:02 +0000
+++ pluginsdk/UI.h	2013-05-13 17:27:19 +0000
@@ -37,8 +37,8 @@
 class UI
 {
 public:
-	static bool init();
-	static void init(DCUIPtr coreUI);
+	static bool init(string pluginGuid);
+	static void init(DCUIPtr coreUI, string pluginGuid);
 	static DCUIPtr handle();
 
 	typedef function<void ()> Command;
@@ -50,6 +50,7 @@
 
 	static DCUIPtr ui;
 
+	static string guid;
 	static unordered_map<string, pair<UI::Command, string>> commands;
 };
 

=== modified file 'projects/make/Makefile'
--- projects/make/Makefile	2013-04-26 15:16:48 +0000
+++ projects/make/Makefile	2013-05-13 17:47:07 +0000
@@ -31,7 +31,9 @@
 	src/Plugin.o \
 	src/stdafx.o
 
-ifeq ($(findstring mingw, $(shell gcc -dumpmachine)),)
+COMPILER_SPEC = $(shell $(CC) -dumpmachine)
+
+ifeq ($(findstring mingw, $(COMPILER_SPEC)),)
 	LIBEXT = .so
 else
 	CPPFLAGS += -D_WIN32_WINNT=0x502 -DWINVER=0x502 -D_WIN32_IE=0x600 \
@@ -42,7 +44,7 @@
 	OUTPUT_DIR := $(OUTPUT_DIR)-mingw
 endif
 
-ifeq ($(findstring x86_64, $(shell gcc -dumpmachine)),)
+ifeq ($(findstring x86_64, $(COMPILER_SPEC)),)
 	CPPFLAGS += -march=i686
 	OUTPUT_DIR := $(OUTPUT_DIR)-x86
 else

=== modified file 'src/Plugin.cpp'
--- src/Plugin.cpp	2013-01-29 19:15:05 +0000
+++ src/Plugin.cpp	2013-05-13 17:47:07 +0000
@@ -75,7 +75,7 @@
 	/* 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() || !Tagger::init() || !UI::init() || !Util::init()) {
+	if(!Config::init(PLUGIN_GUID) || !Hooks::init() || !Logger::init() || !Tagger::init() || !UI::init(PLUGIN_GUID) || !Util::init()) {
 		return false;
 	}