Merge authors: poy (poy) ------------------------------------------------------------ revno: 15 [merge] committer: poy <p...@123gen.com> 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; }
_______________________________________________ Mailing list: https://launchpad.net/~linuxdcpp-team Post to : linuxdcpp-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~linuxdcpp-team More help : https://help.launchpad.net/ListHelp