From 78d71d2cad6f243c6ff31d41380b8c5b58407de5 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Thu, 17 May 2012 17:37:22 +0000 Subject: added some plugins git-svn-id: http://svn.miranda-ng.org/main/trunk@20 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/UserGuide/main.c | 130 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 plugins/UserGuide/main.c (limited to 'plugins/UserGuide/main.c') diff --git a/plugins/UserGuide/main.c b/plugins/UserGuide/main.c new file mode 100644 index 0000000000..853658300c --- /dev/null +++ b/plugins/UserGuide/main.c @@ -0,0 +1,130 @@ +#include "commonheaders.h" + +struct MM_INTERFACE mmi; +HINSTANCE hInst; +PLUGINLINK *pluginLink; +HANDLE hModulesLoaded; + +PLUGININFOEX pluginInfo={ + sizeof(PLUGININFOEX), + "User Guide Plugin", + PLUGIN_MAKE_VERSION(0,0,0,1), + "This plug-in adds the main menu item used to view miranda-im pack user guide.", + "Yasnovidyashii", + "yasnovidyashii@gmail.com", + "© 2009 Mikhail Yuriev", + "http://miranda-im.org/", + 0, //not transient + 0, //doesn't replace anything built-in + // Generate your own unique id for your plugin. + // Do not use this UUID! + // Use uuidgen.exe to generate the uuuid + MIID_USERGUIDE +}; + +static INT_PTR ShowGuideFile(WPARAM wParam,LPARAM lParam) +{ + DBVARIANT dbv = {0}; + int iRes; + + LPCSTR pszEmptySting=""; + LPSTR pszDirName, pszDirNameEx, pszFileName,pszDivider; + + REPLACEVARSDATA dat = {0}; + dat.cbSize = sizeof( dat ); + dat.dwFlags = 0; + + pszDirName=(LPSTR)mir_alloc(250*sizeof(CHAR)); + pszFileName=(LPSTR)mir_alloc(250*sizeof(CHAR)); + + iRes = DBGetContactSettingString(NULL,"UserGuide","PathToHelpFile",&dbv); + + if (iRes!=0) + { + strcpy(pszDirName, "%miranda_path%\\Plugins"); + strcpy(pszFileName, "UserGuide.chm"); + } + else + if(strcmp((dbv.pszVal),pszEmptySting)==0) + { + strcpy(pszDirName, "%miranda_path%\\Plugins"); + strcpy(pszFileName, "UserGuide.chm"); + mir_free(dbv.pszVal); + } + else + { + pszDivider = strrchr(dbv.pszVal, '\\'); + if (pszDivider == NULL) + { + pszDirName = ""; + strncpy(pszFileName, dbv.pszVal, strlen(dbv.pszVal) ); + } + else + { + strncpy(pszFileName, pszDivider+1, strlen(dbv.pszVal)-strlen(pszDivider)-1); + pszFileName[strlen(dbv.pszVal)-strlen(pszDivider)-1] = 0; + strncpy(pszDirName, dbv.pszVal, pszDivider-dbv.pszVal); + pszDirName[pszDivider-dbv.pszVal] = 0; + } + mir_free(dbv.pszVal); + } + if (ServiceExists(MS_UTILS_REPLACEVARS)) + pszDirNameEx = (char *) CallService(MS_UTILS_REPLACEVARS,(WPARAM)pszDirName,(LPARAM)&dat); + else + pszDirNameEx = mir_strdup(pszDirName); + + ShellExecuteA(NULL,"open",pszFileName,NULL,pszDirNameEx,SW_SHOW); + mir_free(pszDirName); + mir_free(pszFileName); + mir_free(pszDirNameEx); + return 0; +} + +int ModulesLoaded(WPARAM wParam,LPARAM lParam) +{ + CLISTMENUITEM mi; + + CreateServiceFunction("UserGuide/ShowGuide",ShowGuideFile); + ZeroMemory(&mi,sizeof(mi)); + mi.cbSize=sizeof(mi); + mi.position=500000; + mi.flags=0; + mi.hIcon=LoadSkinnedIcon(SKINICON_OTHER_HELP); + mi.pszName=LPGEN("User Guide"); + mi.pszService="UserGuide/ShowGuide"; + CallService(MS_CLIST_ADDMAINMENUITEM,0,(LPARAM)&mi); + + return 0; +} + +BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved) +{ + hInst=hinstDLL; + return TRUE; +} + + +__declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion) +{ + return &pluginInfo; +} + +static const MUUID interfaces[] = {MIID_USERGUIDE, MIID_LAST}; +__declspec(dllexport) const MUUID* MirandaPluginInterfaces(void) +{ + return interfaces; +} + +int __declspec(dllexport) Load(PLUGINLINK *link) +{ + pluginLink=link; + mir_getMMI(&mmi); + hModulesLoaded = HookEvent(ME_SYSTEM_MODULESLOADED,ModulesLoaded); + return 0; +} + +int __declspec(dllexport) Unload(void) +{ + UnhookEvent(hModulesLoaded); + return 0; +} \ No newline at end of file -- cgit v1.2.3