summaryrefslogtreecommitdiff
path: root/plugins/MenuItemEx
diff options
context:
space:
mode:
authorVadim Dashevskiy <watcherhd@gmail.com>2012-05-15 10:38:20 +0000
committerVadim Dashevskiy <watcherhd@gmail.com>2012-05-15 10:38:20 +0000
commit48540940b6c28bb4378abfeb500ec45a625b37b6 (patch)
tree2ef294c0763e802f91d868bdef4229b6868527de /plugins/MenuItemEx
parent5c350913f011e119127baeb32a6aedeb4f0d33bc (diff)
initial commit
git-svn-id: http://svn.miranda-ng.org/main/trunk@2 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/MenuItemEx')
-rw-r--r--plugins/MenuItemEx/DoIt.bat16
-rw-r--r--plugins/MenuItemEx/docs/menuex_changelog.txt122
-rw-r--r--plugins/MenuItemEx/icons/Always Visible.icobin0 -> 2038 bytes
-rw-r--r--plugins/MenuItemEx/icons/CopyID_overlay.icobin0 -> 2550 bytes
-rw-r--r--plugins/MenuItemEx/icons/CopyMirVer.icobin0 -> 2550 bytes
-rw-r--r--plugins/MenuItemEx/icons/Ignore_list.icobin0 -> 2550 bytes
-rw-r--r--plugins/MenuItemEx/icons/Never Visible.icobin0 -> 2038 bytes
-rw-r--r--plugins/MenuItemEx/icons/auth_added.icobin0 -> 2550 bytes
-rw-r--r--plugins/MenuItemEx/icons/auth_ask.icobin0 -> 2550 bytes
-rw-r--r--plugins/MenuItemEx/icons/change_proto.icobin0 -> 2550 bytes
-rw-r--r--plugins/MenuItemEx/icons/copyip_overlay.icobin0 -> 2550 bytes
-rw-r--r--plugins/MenuItemEx/icons/hide_from_list.icobin0 -> 2550 bytes
-rw-r--r--plugins/MenuItemEx/icons/msg_status.icobin0 -> 2550 bytes
-rw-r--r--plugins/MenuItemEx/icons/msg_xStatus.icobin0 -> 2550 bytes
-rw-r--r--plugins/MenuItemEx/icons/recv_files.icobin0 -> 2550 bytes
-rw-r--r--plugins/MenuItemEx/icons/salad.right.icobin0 -> 2550 bytes
-rw-r--r--plugins/MenuItemEx/icons/show_in_list.icobin0 -> 1150 bytes
-rw-r--r--plugins/MenuItemEx/images.c363
-rw-r--r--plugins/MenuItemEx/images.h8
-rw-r--r--plugins/MenuItemEx/main.c1346
-rw-r--r--plugins/MenuItemEx/menuex.dsp131
-rw-r--r--plugins/MenuItemEx/menuex.dsw29
-rw-r--r--plugins/MenuItemEx/menuex.h74
-rw-r--r--plugins/MenuItemEx/menuex.rc174
-rw-r--r--plugins/MenuItemEx/menuex.vcproj440
-rw-r--r--plugins/MenuItemEx/menuex_10.sln38
-rw-r--r--plugins/MenuItemEx/menuex_10.vcxproj554
-rw-r--r--plugins/MenuItemEx/menuex_10.vcxproj.filters44
-rw-r--r--plugins/MenuItemEx/menuex_8.vcproj500
-rw-r--r--plugins/MenuItemEx/menuex_9.vcproj958
-rw-r--r--plugins/MenuItemEx/options.c132
-rw-r--r--plugins/MenuItemEx/resource.h50
-rw-r--r--plugins/MenuItemEx/resource.rc2
-rw-r--r--plugins/MenuItemEx/version.h32
-rw-r--r--plugins/MenuItemEx/version.rc38
35 files changed, 5051 insertions, 0 deletions
diff --git a/plugins/MenuItemEx/DoIt.bat b/plugins/MenuItemEx/DoIt.bat
new file mode 100644
index 0000000000..0496f199bc
--- /dev/null
+++ b/plugins/MenuItemEx/DoIt.bat
@@ -0,0 +1,16 @@
+"%ProgramFiles%\Microsoft Visual Studio .NET 2003\Common7\IDE\devenv.exe" /REBUILD "Release" menuex.sln
+"%ProgramFiles%\Microsoft Visual Studio .NET 2003\Common7\IDE\devenv.exe" /REBUILD "Release Unicode" menuex.sln
+"%ProgramFiles%\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe" /REBUILD "Release Unicode|x64" menuex_9.sln
+if not exist plugins md plugins
+copy /Y Release\plugins\MenuEx.dll plugins\MenuEx.dll
+if exist menuitemex.zip del menuitemex.zip
+"%ProgramFiles%\7-Zip\7z.exe" a -mx9 menuitemex.zip plugins\MenuEx.dll docs\menuex_changelog.txt
+copy /Y "Release Unicode\plugins\MenuEx.dll" plugins\MenuEx.dll
+if exist menuitemexw.zip del menuitemexw.zip
+"%ProgramFiles%\7-Zip\7z.exe" a -mx9 menuitemexw.zip plugins\MenuEx.dll docs\menuex_changelog.txt
+copy /Y "Release Unicode x64\plugins\MenuEx.dll" plugins\MenuEx.dll
+if exist menuitemexxw.zip del menuitemexxw.zip
+"%ProgramFiles%\7-Zip\7z.exe" a -mx9 menuitemexxw.zip plugins\MenuEx.dll docs\menuex_changelog.txt
+del plugins\MenuEx.dll
+if exist menuitemex_src.zip del menuitemex_src.zip
+"%ProgramFiles%\7-Zip\7z.exe" a -mx9 menuitemex_src.zip *.c *.h *.rc *.vcproj *.vcxproj *.vcxproj.filters sdk\*.h icons\*.ico docs\*.txt
diff --git a/plugins/MenuItemEx/docs/menuex_changelog.txt b/plugins/MenuItemEx/docs/menuex_changelog.txt
new file mode 100644
index 0000000000..e7932a334d
--- /dev/null
+++ b/plugins/MenuItemEx/docs/menuex_changelog.txt
@@ -0,0 +1,122 @@
+Verison 1.3.0.8
+
+[+] Added ability to copy unicode status message
+[*] Authorization request fixed
+
+Verison 1.3.0.7
+
+[+] Added option to disable showing user ID in menu item.
+[+] Added option to trim too long user ID in menu item.
+
+Verison 1.3.0.6
+
+[+] Unicode in authorization requests (for Miranda 0.9.0.7 and higher)
+
+Version 1.3.0.5
+
+[*] Crash fix for disabled accounts
+
+Version 1.3.0.4
+
+[*] Unicode in CopyToClipboard function
+
+Verison 1.3.0.3
+
+[+] Support Miranda 0.7
+
+Verison 1.3.0.2
+
+[+] Added "Add item name" option for the "Copy status message" function
+[+] Added "Open ignore settings" item
+[*] Some tweaks in the options page
+
+
+Verison 1.3.0.1 [20-04-2009]
+
+***NOW IT'S WORKING ONLY WITH CORE FROM LATEST NIGHTLY BUILDS***
+[+] Added "Browse Received Files" button on Tabsrmm button bar (disabled by default)
+[+] Added ability to show popup with the copied text for various functions
+[+] Show all menu item on ctrl + click
+[+] Feature "Protocol" is replaced with "Copy to Account" (hold Ctrl key for move to account)
+[+] Show dialog with offer to send authorization request, if contact is copied/moved to another account.
+[+] Icolib support
+[+] Accounts support in various functions
+[-] "Group..." menu item was removed
+[*] New, more nice submenu in contact menu
+[*] Improved "Copy status message" function.
+[*] Added icon for "Show in list" item (icon by king_of_crunk)
+[*] New icons for "Always visible" and "Always invisible" items from clist_modern
+[*] Changed "Browse Received Files" icon
+[*] Improved Request authorization dialog:
+ - now it's translatable
+ - added caption
+ - added default request text
+ - send authorization request on ctrl + enter
+ - and some other
+[*] Options was moved into the Customise group
+[*] Fix for a gdi leak
+[*] Various bugfixes and changes
+
+
+Verison 1.2.1.14 [21-04-2008]
+
+[*] new icons based on ICE iconpack
+
+
+Verison 1.2.1.13 [10-04-2008]
+
+[*] StatusMsg function modified (no SMR needed for copy xStatus)
+
+
+Verison 1.2.1.12 [09-04-2008]
+
+[*] MIID added
+[+] CopyID copied most online contact id in MetaContact
+
+
+Verison 1.2.1.11 [25-02-2007]
+
+[*] icon fixes (from ghazan)
+
+
+Verison 1.2.1.10 [12-01-2007]
+
+[+] Option "Show alpha icon" for "Hide from list" menu item
+[+] Option "Copy MirVer"
+
+
+Verison 1.2.1.9
+
+[+] Option "Show alpha icons"
+
+
+Verison 1.2.1.8
+
+[*] add more icons
+
+
+Verison 1.2.1.7
+
+[+] Option "Copy IP"
+
+
+Verison 1.2.1.6
+
+[+] Option "Add protocol name"
+
+
+Verison 1.2.1.3
+
+[+] Option "Copy Status Message", need SMR plugin
+
+
+Verison 1.2.1.2
+
+[+] Updater support
+
+
+Verison 1.2.1.1
+
+[+] New icons
+[+] Option "Copy ID"
+[+] Option "Browse Received Files"
diff --git a/plugins/MenuItemEx/icons/Always Visible.ico b/plugins/MenuItemEx/icons/Always Visible.ico
new file mode 100644
index 0000000000..25c1a925ee
--- /dev/null
+++ b/plugins/MenuItemEx/icons/Always Visible.ico
Binary files differ
diff --git a/plugins/MenuItemEx/icons/CopyID_overlay.ico b/plugins/MenuItemEx/icons/CopyID_overlay.ico
new file mode 100644
index 0000000000..4c5bc0af9e
--- /dev/null
+++ b/plugins/MenuItemEx/icons/CopyID_overlay.ico
Binary files differ
diff --git a/plugins/MenuItemEx/icons/CopyMirVer.ico b/plugins/MenuItemEx/icons/CopyMirVer.ico
new file mode 100644
index 0000000000..9b7bc67cf9
--- /dev/null
+++ b/plugins/MenuItemEx/icons/CopyMirVer.ico
Binary files differ
diff --git a/plugins/MenuItemEx/icons/Ignore_list.ico b/plugins/MenuItemEx/icons/Ignore_list.ico
new file mode 100644
index 0000000000..5635149232
--- /dev/null
+++ b/plugins/MenuItemEx/icons/Ignore_list.ico
Binary files differ
diff --git a/plugins/MenuItemEx/icons/Never Visible.ico b/plugins/MenuItemEx/icons/Never Visible.ico
new file mode 100644
index 0000000000..131ae02580
--- /dev/null
+++ b/plugins/MenuItemEx/icons/Never Visible.ico
Binary files differ
diff --git a/plugins/MenuItemEx/icons/auth_added.ico b/plugins/MenuItemEx/icons/auth_added.ico
new file mode 100644
index 0000000000..fa37e9357c
--- /dev/null
+++ b/plugins/MenuItemEx/icons/auth_added.ico
Binary files differ
diff --git a/plugins/MenuItemEx/icons/auth_ask.ico b/plugins/MenuItemEx/icons/auth_ask.ico
new file mode 100644
index 0000000000..d8879d15bb
--- /dev/null
+++ b/plugins/MenuItemEx/icons/auth_ask.ico
Binary files differ
diff --git a/plugins/MenuItemEx/icons/change_proto.ico b/plugins/MenuItemEx/icons/change_proto.ico
new file mode 100644
index 0000000000..07c72f9287
--- /dev/null
+++ b/plugins/MenuItemEx/icons/change_proto.ico
Binary files differ
diff --git a/plugins/MenuItemEx/icons/copyip_overlay.ico b/plugins/MenuItemEx/icons/copyip_overlay.ico
new file mode 100644
index 0000000000..2823f13456
--- /dev/null
+++ b/plugins/MenuItemEx/icons/copyip_overlay.ico
Binary files differ
diff --git a/plugins/MenuItemEx/icons/hide_from_list.ico b/plugins/MenuItemEx/icons/hide_from_list.ico
new file mode 100644
index 0000000000..69fb9f91c4
--- /dev/null
+++ b/plugins/MenuItemEx/icons/hide_from_list.ico
Binary files differ
diff --git a/plugins/MenuItemEx/icons/msg_status.ico b/plugins/MenuItemEx/icons/msg_status.ico
new file mode 100644
index 0000000000..1d0607d4ad
--- /dev/null
+++ b/plugins/MenuItemEx/icons/msg_status.ico
Binary files differ
diff --git a/plugins/MenuItemEx/icons/msg_xStatus.ico b/plugins/MenuItemEx/icons/msg_xStatus.ico
new file mode 100644
index 0000000000..d057d353ff
--- /dev/null
+++ b/plugins/MenuItemEx/icons/msg_xStatus.ico
Binary files differ
diff --git a/plugins/MenuItemEx/icons/recv_files.ico b/plugins/MenuItemEx/icons/recv_files.ico
new file mode 100644
index 0000000000..d8e15aa836
--- /dev/null
+++ b/plugins/MenuItemEx/icons/recv_files.ico
Binary files differ
diff --git a/plugins/MenuItemEx/icons/salad.right.ico b/plugins/MenuItemEx/icons/salad.right.ico
new file mode 100644
index 0000000000..03dd1f4e9d
--- /dev/null
+++ b/plugins/MenuItemEx/icons/salad.right.ico
Binary files differ
diff --git a/plugins/MenuItemEx/icons/show_in_list.ico b/plugins/MenuItemEx/icons/show_in_list.ico
new file mode 100644
index 0000000000..bea1dfd738
--- /dev/null
+++ b/plugins/MenuItemEx/icons/show_in_list.ico
Binary files differ
diff --git a/plugins/MenuItemEx/images.c b/plugins/MenuItemEx/images.c
new file mode 100644
index 0000000000..aed5d99bf9
--- /dev/null
+++ b/plugins/MenuItemEx/images.c
@@ -0,0 +1,363 @@
+#include "menuex.h"
+#include "images.h"
+
+extern HINSTANCE hinstance;
+
+
+void HalfBitmap32Alpha(HBITMAP hBitmap)
+{
+ BITMAP bmp;
+ DWORD dwLen;
+ BYTE *p;
+ int x, y;
+
+ GetObject(hBitmap, sizeof(bmp), &bmp);
+
+ if (bmp.bmBitsPixel != 32)
+ return;
+
+ dwLen = bmp.bmWidth * bmp.bmHeight * (bmp.bmBitsPixel / 8);
+ p = (BYTE *)malloc(dwLen);
+ if (p == NULL)
+ return;
+ memset(p, 0, dwLen);
+
+ GetBitmapBits(hBitmap, dwLen, p);
+
+ for (y = 0; y < bmp.bmHeight; ++y) {
+ BYTE *px = p + bmp.bmWidth * 4 * y;
+
+ for (x = 0; x < bmp.bmWidth; ++x)
+ {
+ px[3]>>=1;
+ px += 4;
+ }
+ }
+
+ SetBitmapBits(hBitmap, dwLen, p);
+
+ free(p);
+}
+
+
+// Make a bitmap all transparent, but only if it is a 32bpp
+//void MakeBmpTransparent(HBITMAP hBitmap)
+//{
+// BITMAP bmp;
+// DWORD dwLen;
+// BYTE *p;
+//
+// GetObject(hBitmap, sizeof(bmp), &bmp);
+//
+// if (bmp.bmBitsPixel != 32)
+// return;
+//
+// dwLen = bmp.bmWidth * bmp.bmHeight * (bmp.bmBitsPixel / 8);
+// p = (BYTE *)malloc(dwLen);
+// if (p == NULL)
+// return;
+//
+// memset(p, 0, dwLen);
+// SetBitmapBits(hBitmap, dwLen, p);
+//
+// free(p);
+//}
+
+
+// Correct alpha from bitmaps loaded without it (it cames with 0 and should be 255)
+void CorrectBitmap32Alpha(HBITMAP hBitmap, BOOL force)
+{
+ BITMAP bmp;
+ DWORD dwLen;
+ BYTE *p;
+ int x, y;
+ BOOL fixIt;
+
+ GetObject(hBitmap, sizeof(bmp), &bmp);
+
+ if (bmp.bmBitsPixel != 32)
+ return;
+
+ dwLen = bmp.bmWidth * bmp.bmHeight * (bmp.bmBitsPixel / 8);
+ p = (BYTE *)malloc(dwLen);
+ if (p == NULL)
+ return;
+ memset(p, 0, dwLen);
+
+ GetBitmapBits(hBitmap, dwLen, p);
+
+ fixIt = TRUE;
+ for (y = 0; fixIt && y < bmp.bmHeight; ++y) {
+ BYTE *px = p + bmp.bmWidth * 4 * y;
+
+ for (x = 0; fixIt && x < bmp.bmWidth; ++x)
+ {
+ if (px[3] != 0 && !force)
+ {
+ fixIt = FALSE;
+ }
+ else
+ {
+ if (px[0] != 0 || px[1] != 0 || px[2] != 0)
+ px[3] = 255;
+ }
+
+ px += 4;
+ }
+ }
+
+ if (fixIt)
+ SetBitmapBits(hBitmap, dwLen, p);
+
+ free(p);
+}
+
+
+HBITMAP CopyBitmapTo32(HBITMAP hBitmap)
+{
+ BITMAPINFO RGB32BitsBITMAPINFO;
+ BYTE * ptPixels;
+ HBITMAP hDirectBitmap;
+
+ BITMAP bmp;
+ DWORD dwLen;
+ BYTE *p;
+
+ GetObject(hBitmap, sizeof(bmp), &bmp);
+
+ dwLen = bmp.bmWidth * bmp.bmHeight * 4;
+ p = (BYTE *)malloc(dwLen);
+ if (p == NULL)
+ return NULL;
+
+ // Create bitmap
+ ZeroMemory(&RGB32BitsBITMAPINFO, sizeof(BITMAPINFO));
+ RGB32BitsBITMAPINFO.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
+ RGB32BitsBITMAPINFO.bmiHeader.biWidth = bmp.bmWidth;
+ RGB32BitsBITMAPINFO.bmiHeader.biHeight = bmp.bmHeight;
+ RGB32BitsBITMAPINFO.bmiHeader.biPlanes = 1;
+ RGB32BitsBITMAPINFO.bmiHeader.biBitCount = 32;
+
+ hDirectBitmap = CreateDIBSection(NULL,
+ (BITMAPINFO *)&RGB32BitsBITMAPINFO,
+ DIB_RGB_COLORS,
+ (void **)&ptPixels,
+ NULL, 0);
+
+ // Copy data
+ if (bmp.bmBitsPixel != 32)
+ {
+ HDC hdcOrig, hdcDest;
+ HBITMAP oldOrig, oldDest;
+
+ hdcOrig = CreateCompatibleDC(NULL);
+ oldOrig = (HBITMAP) SelectObject(hdcOrig, hBitmap);
+
+ hdcDest = CreateCompatibleDC(NULL);
+ oldDest = (HBITMAP) SelectObject(hdcDest, hDirectBitmap);
+
+ BitBlt(hdcDest, 0, 0, bmp.bmWidth, bmp.bmHeight, hdcOrig, 0, 0, SRCCOPY);
+
+ SelectObject(hdcDest, oldDest);
+ DeleteObject(hdcDest);
+ SelectObject(hdcOrig, oldOrig);
+ DeleteObject(hdcOrig);
+
+ // Set alpha
+ CorrectBitmap32Alpha(hDirectBitmap, FALSE);
+ }
+ else
+ {
+ GetBitmapBits(hBitmap, dwLen, p);
+ SetBitmapBits(hDirectBitmap, dwLen, p);
+ }
+
+ free(p);
+
+ return hDirectBitmap;
+}
+
+
+//HBITMAP CreateBitmap32(int cx, int cy)
+//{
+// BITMAPINFO RGB32BitsBITMAPINFO;
+// UINT * ptPixels;
+// HBITMAP DirectBitmap;
+//
+// ZeroMemory(&RGB32BitsBITMAPINFO,sizeof(BITMAPINFO));
+// RGB32BitsBITMAPINFO.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
+// RGB32BitsBITMAPINFO.bmiHeader.biWidth=cx;//bm.bmWidth;
+// RGB32BitsBITMAPINFO.bmiHeader.biHeight=cy;//bm.bmHeight;
+// RGB32BitsBITMAPINFO.bmiHeader.biPlanes=1;
+// RGB32BitsBITMAPINFO.bmiHeader.biBitCount=32;
+//
+// DirectBitmap = CreateDIBSection(NULL,
+// (BITMAPINFO *)&RGB32BitsBITMAPINFO,
+// DIB_RGB_COLORS,
+// (void **)&ptPixels,
+// NULL, 0);
+// return DirectBitmap;
+//}
+
+
+BOOL MakeBitmap32(HBITMAP *hBitmap)
+{
+ BITMAP bmp;
+
+ GetObject(*hBitmap, sizeof(bmp), &bmp);
+
+ if (bmp.bmBitsPixel != 32) {
+ // Convert to 32 bpp
+ HBITMAP hBmpTmp = CopyBitmapTo32(*hBitmap);
+ DeleteObject(*hBitmap);
+ *hBitmap = hBmpTmp;
+ }
+
+ return TRUE;
+}
+
+
+//#define GET_PIXEL(__P__, __X__, __Y__) ( __P__ + width * 4 * (__Y__) + 4 * (__X__) )
+
+//BOOL MakeGrayscale(HBITMAP *hBitmap)
+//{
+// BYTE *p = NULL;
+// BYTE *p1;
+// DWORD dwLen;
+// int width, height, x, y;
+// BITMAP bmp;
+//
+// GetObject(*hBitmap, sizeof(bmp), &bmp);
+// width = bmp.bmWidth;
+// height = bmp.bmHeight;
+//
+// dwLen = width * height * 4;
+// p = (BYTE *)malloc(dwLen);
+// if (p == NULL)
+// {
+// return FALSE;
+// }
+//
+// if (bmp.bmBitsPixel != 32)
+// {
+// // Convert to 32 bpp
+// HBITMAP hBmpTmp = CopyBitmapTo32(*hBitmap);
+// DeleteObject(*hBitmap);
+// *hBitmap = hBmpTmp;
+// }
+// GetBitmapBits(*hBitmap, dwLen, p);
+//
+// // Make grayscale
+// for (y = 0 ; y < height ; y++)
+// {
+// for (x = 0 ; x < width ; x++)
+// {
+// p1 = GET_PIXEL(p, x, y);
+// p1[0] = p1[1] = p1[2] = ( p1[0] + p1[1] + p1[2] ) / 3;
+// }
+// }
+//
+// dwLen = SetBitmapBits(*hBitmap, dwLen, p);
+// free(p);
+//
+// return TRUE;
+//}
+
+
+HICON MakeHalfAlphaIcon(HICON SourceIcon)
+{
+ ICONINFO TargetIconInfo;
+ BITMAP TargetBitmapInfo;
+ HICON TargetIcon, TempIcon;
+
+ TempIcon = CopyIcon(SourceIcon);
+ if ( !GetIconInfo(TempIcon, &TargetIconInfo))
+ return NULL;
+
+ if ( !GetObject(TargetIconInfo.hbmColor, sizeof(BITMAP), &TargetBitmapInfo))
+ return NULL;
+
+ MakeBitmap32(&TargetIconInfo.hbmColor);
+ HalfBitmap32Alpha(TargetIconInfo.hbmColor);
+ TargetIcon = CreateIconIndirect(&TargetIconInfo);
+
+ DestroyIcon(TempIcon);
+ DeleteObject(TargetIconInfo.hbmColor);
+ DeleteObject(TargetIconInfo.hbmMask);
+ return TargetIcon;
+}
+
+
+//HICON MakeGrayscaleIcon(HICON SourceIcon)
+//{
+// ICONINFO TargetIconInfo;
+// BITMAP TargetBitmapInfo;
+// HICON TargetIcon, TempIcon;
+//
+// TempIcon = CopyIcon(SourceIcon);
+// if (! GetIconInfo(TempIcon, &TargetIconInfo) || GetObject(TargetIconInfo.hbmColor, sizeof(BITMAP), &TargetBitmapInfo)==0) return NULL;
+//
+// MakeGrayscale(&TargetIconInfo.hbmColor);
+//
+// TargetIcon = CreateIconIndirect(&TargetIconInfo);
+// DestroyIcon(TempIcon);
+//
+// return TargetIcon;
+//}
+
+
+HICON BindOverlayIcon(HICON SourceIcon,LPCSTR OverlayIconName)
+{
+ ICONINFO OverlayIconInfo, TargetIconInfo;
+ BITMAP OverlayBitmapInfo, TargetBitmapInfo;
+ HBITMAP OldOverlayBitmap, OldTargetBitmap;
+ HICON OverlayIcon, TargetIcon, TempIcon;
+ HDC OverlayDC, TargetDC;
+ BLENDFUNCTION bf = {0,0,255,1};
+
+ TempIcon = CopyIcon(SourceIcon);
+ if ( !GetIconInfo( TempIcon, &TargetIconInfo ))
+ return NULL;
+
+ MakeBitmap32(&TargetIconInfo.hbmColor);
+ CorrectBitmap32Alpha(TargetIconInfo.hbmColor, FALSE);
+ GetObject(TargetIconInfo.hbmColor, sizeof(BITMAP), &TargetBitmapInfo);
+
+ OverlayIcon = (HICON)CallService( MS_SKIN2_GETICON, 0, (LPARAM)OverlayIconName);
+ if ( !GetIconInfo(OverlayIcon, &OverlayIconInfo) || !GetObject(OverlayIconInfo.hbmColor, sizeof(BITMAP), &OverlayBitmapInfo))
+ return NULL;
+
+ TargetDC = CreateCompatibleDC(NULL);
+ OldTargetBitmap = (HBITMAP)SelectObject(TargetDC, TargetIconInfo.hbmColor);
+
+ OverlayDC = CreateCompatibleDC(NULL);
+ OldOverlayBitmap = (HBITMAP)SelectObject(OverlayDC, OverlayIconInfo.hbmColor);
+
+ AlphaBlend(TargetDC, 0, 0, TargetBitmapInfo.bmWidth, TargetBitmapInfo.bmHeight,
+ OverlayDC, 0, 0, OverlayBitmapInfo.bmWidth, OverlayBitmapInfo.bmHeight, bf);
+
+ SelectObject(TargetDC, TargetIconInfo.hbmMask);
+ SelectObject(OverlayDC, OverlayIconInfo.hbmMask);
+
+ BitBlt(TargetDC, 0, 0, TargetBitmapInfo.bmWidth, TargetBitmapInfo.bmHeight,
+ OverlayDC, 0, 0, SRCCOPY);
+
+ TargetIcon = CreateIconIndirect(&TargetIconInfo);
+ DestroyIcon(TempIcon);
+ //DestroyIcon(OverlayIcon);
+
+ SelectObject(TargetDC, OldTargetBitmap);
+ DeleteObject(TargetIconInfo.hbmColor);
+ DeleteObject(TargetIconInfo.hbmMask);
+ DeleteDC(TargetDC);
+
+ SelectObject(OverlayDC, OldOverlayBitmap);
+ DeleteObject(OverlayIconInfo.hbmColor);
+ DeleteObject(OverlayIconInfo.hbmMask);
+ DeleteDC(OverlayDC);
+
+ return TargetIcon;
+}
+
+
+// EOF
diff --git a/plugins/MenuItemEx/images.h b/plugins/MenuItemEx/images.h
new file mode 100644
index 0000000000..e8288714f7
--- /dev/null
+++ b/plugins/MenuItemEx/images.h
@@ -0,0 +1,8 @@
+#ifndef __IMAGE_UTILS_H__
+#define __IMAGE_UTILS_H__
+
+HICON BindOverlayIcon(HICON,LPCSTR);
+//HICON MakeGrayscaleIcon(HICON);
+HICON MakeHalfAlphaIcon(HICON);
+
+#endif // __IMAGE_UTILS_H__
diff --git a/plugins/MenuItemEx/main.c b/plugins/MenuItemEx/main.c
new file mode 100644
index 0000000000..1533d6bb8a
--- /dev/null
+++ b/plugins/MenuItemEx/main.c
@@ -0,0 +1,1346 @@
+#include "menuex.h"
+#include "images.h"
+#include "version.h"
+
+#define MS_SETINVIS "MenuEx/SetInvis"
+#define MS_SETVIS "MenuEx/SetVis"
+#define MS_HIDE "MenuEx/Hide"
+#define MS_IGNORE "MenuEx/Ignore"
+#define MS_PROTO "MenuEx/ChangeProto"
+#define MS_ADDED "MenuEx/SendAdded"
+#define MS_AUTHREQ "MenuEx/SendAuthReq"
+#define MS_COPYID "MenuEx/CopyID"
+#define MS_RECVFILES "MenuEx/RecvFiles"
+#define MS_STATUSMSG "MenuEx/CopyStatusMsg"
+#define MS_COPYIP "MenuEx/CopyIP"
+#define MS_COPYMIRVER "MenuEx/CopyMirVer"
+
+
+const int vf_default = VF_VS|VF_HFL|VF_IGN|VF_CID|VF_SHOWID|VF_RECV|VF_STAT|VF_SMNAME|VF_CIDN|VF_CIP;
+
+PLUGINLINK *pluginLink;
+MUUID interfaces[] = {MIID_MENUEX, MIID_LAST};
+struct MM_INTERFACE mmi;
+HINSTANCE hinstance;
+HANDLE hmenuVis,hmenuOff,hmenuHide,hmenuIgnore,hmenuProto,hmenuAdded,hmenuAuthReq;
+HANDLE hmenuCopyID,hmenuRecvFiles,hmenuStatusMsg,hmenuCopyIP,hmenuCopyMirVer;
+static HANDLE hIgnoreItem[9], hProtoItem[MAX_PROTOS], hHooks[7], hServices[12];
+HICON hIcon[5];
+BOOL bMetaContacts, bMir_08;
+PROTOACCOUNT **accs;
+OPENOPTIONSDIALOG ood;
+int protoCount;
+static LONG_PTR OldAuthReqEditProc;
+
+struct {
+ char *module;
+ char *name;
+ TCHAR *fullName;
+ char flag;
+}
+static const statusMsg[]={
+ { "CList", "StatusMsg", LPGENT("Status message"), 1 },
+ { 0, "XStatusName", LPGENT("XStatus title"), 4 },
+ { 0, "XStatusMsg", LPGENT("XStatus message"), 2 },
+ { "AdvStatus", "tune/text", LPGENT("Listening to"), 8 },
+ { "AdvStatus", "activity/title", LPGENT("Activity title"), 8 },
+ { "AdvStatus", "activity/text", LPGENT("Activity text"), 8 }
+};
+
+struct
+{
+ TCHAR* szDescr;
+ char* szName;
+ int defIconID;
+}
+static const iconList[] = {
+ { _T("Hide from list"), "miex_hidefl", IDI_ICON0 },
+ { _T("Show in list"), "miex_showil", IDI_ICON8 },
+ { _T("Always visible"), "miex_vis", IDI_ICON1 },
+ { _T("Never visible"), "miex_invis", IDI_ICON2 },
+ { _T("Send 'You were added'"), "miex_added", IDI_ICON4 },
+ { _T("Request authorization"), "miex_authorization", IDI_ICON5 },
+ { _T("Copy to Account"), "miex_protocol", IDI_ICON6 },
+ { _T("Ignore"), "miex_ignore", IDI_ICON7 },
+ { _T("Browse Received Files"), "miex_recfiles", IDI_ICON12 },
+ { _T("Copy MirVer"), "miex_copymver", IDI_ICON13 }
+};
+
+struct
+{
+ TCHAR* szDescr;
+ char* szName;
+ int defIconID;
+}
+static const overlayIconList[] = {
+ { _T("Copy ID"), "miex_copyid", IDI_ICON3 },
+ { _T("Copy Status Message"), "miex_copysm1", IDI_ICON9 },
+ { _T("Copy xStatus Message"), "miex_copysm2", IDI_ICON10 },
+ { _T("Copy IP"), "miex_copyip", IDI_ICON11 }
+};
+
+struct {
+ TCHAR* name;
+ int type;
+ int icon;
+}
+static const ii[] = {
+ { LPGENT("All"), IGNOREEVENT_ALL, SKINICON_OTHER_FILLEDBLOB },
+ { LPGENT("Messages"), IGNOREEVENT_MESSAGE, SKINICON_EVENT_MESSAGE },
+ { LPGENT("URL"), IGNOREEVENT_URL, SKINICON_EVENT_URL },
+ { LPGENT("Files"), IGNOREEVENT_FILE, SKINICON_EVENT_FILE },
+ { LPGENT("User Online"), IGNOREEVENT_USERONLINE, SKINICON_OTHER_USERONLINE },
+ { LPGENT("Authorization"), IGNOREEVENT_AUTHORIZATION, SKINICON_OTHER_MIRANDA },
+ { LPGENT("You Were Added"), IGNOREEVENT_YOUWEREADDED, SKINICON_OTHER_ADDCONTACT },
+ { LPGENT("Typing Notify"), IGNOREEVENT_TYPINGNOTIFY, SKINICON_OTHER_TYPING }
+};
+
+PLUGININFOEX pluginInfoEx = {
+ sizeof(PLUGININFOEX),
+ MODULENAME,
+ __VERSION_DWORD,
+ __DESC,
+ __AUTHORS,
+ __EMAIL,
+ __COPYRIGHTS,
+ __WEB __PLUGIN_ID_STR,
+ UNICODE_AWARE,
+ 0,
+ MIID_MENUEX
+};
+
+struct ModSetLinkLinkItem { // code from dbe++ plugin by Bio
+ char *name;
+ BYTE *next; //struct ModSetLinkLinkItem
+};
+
+typedef struct {
+ struct ModSetLinkLinkItem *first;
+ struct ModSetLinkLinkItem *last;
+} ModuleSettingLL;
+
+int GetSetting(HANDLE hContact, const char *szModule, const char *szSetting, DBVARIANT *dbv)
+{
+ DBCONTACTGETSETTING cgs;
+
+ cgs.szModule=szModule;
+ cgs.szSetting=szSetting;
+ cgs.pValue=dbv;
+ dbv->type = 0;
+
+ return CallService(MS_DB_CONTACT_GETSETTING_STR,(WPARAM)hContact,(LPARAM)&cgs);
+}
+
+int enumModulesSettingsProc( const char *szName, LPARAM lParam)
+{
+ ModuleSettingLL *msll = (ModuleSettingLL *)lParam;
+ if (!msll->first)
+ {
+ msll->first = (struct ModSetLinkLinkItem *)malloc(sizeof(struct ModSetLinkLinkItem));
+ if (!msll->first) return 1;
+ msll->first->name = _strdup(szName);
+ msll->first->next = 0;
+ msll->last = msll->first;
+ }
+ else
+ {
+ struct ModSetLinkLinkItem *item = (struct ModSetLinkLinkItem *)malloc(sizeof(struct ModSetLinkLinkItem));
+ if (!item) return 1;
+ msll->last->next = (BYTE*)item;
+ msll->last = (struct ModSetLinkLinkItem *)item;
+ item->name = _strdup(szName);
+ item->next = 0;
+ }
+ return 0;
+}
+
+void FreeModuleSettingLL(ModuleSettingLL* msll)
+{
+ if (msll)
+ {
+ struct ModSetLinkLinkItem *item = msll->first;
+ struct ModSetLinkLinkItem *temp;
+
+ while (item)
+ {
+ if (item->name)
+ {
+ free(item->name);
+ item->name = 0;
+ }
+ temp = item;
+ item = (struct ModSetLinkLinkItem *)item->next;
+ if (temp)
+ {
+ free(temp);
+ temp = 0;
+ }
+ }
+
+ msll->first = 0;
+ msll->last = 0;
+ }
+}
+
+void RenameDbProto(HANDLE hContact, HANDLE hContactNew, char* oldName, char* newName, int delOld)
+{
+ DBVARIANT dbv;
+ ModuleSettingLL settinglist;
+ struct ModSetLinkLinkItem *setting;
+ DBCONTACTENUMSETTINGS dbces;
+
+ // enum all setting the contact has for the module
+ dbces.pfnEnumProc = enumModulesSettingsProc;
+ dbces.szModule = oldName;
+ dbces.lParam = (LPARAM)&settinglist;
+ settinglist.first = 0;
+ settinglist.last = 0;
+ CallService(MS_DB_CONTACT_ENUMSETTINGS, (WPARAM)hContact,(LPARAM)&dbces);
+
+ setting = settinglist.first;
+ while (setting)
+ {
+ if (!GetSetting(hContact,oldName,setting->name,&dbv))
+ {
+ switch (dbv.type)
+ {
+ case DBVT_BYTE:
+ DBWriteContactSettingByte(hContactNew, newName, setting->name, dbv.bVal);
+ break;
+ case DBVT_WORD:
+ DBWriteContactSettingWord(hContactNew, newName, setting->name, dbv.wVal);
+ break;
+ case DBVT_DWORD:
+ DBWriteContactSettingDword(hContactNew, newName, setting->name, dbv.dVal);
+ break;
+ case DBVT_ASCIIZ:
+ DBWriteContactSettingString(hContactNew, newName, setting->name, dbv.pszVal);
+ break;
+ case DBVT_UTF8:
+ DBWriteContactSettingStringUtf(hContactNew, newName, setting->name, dbv.pszVal);
+ break;
+ case DBVT_BLOB:
+ DBWriteContactSettingBlob(hContactNew, newName, setting->name, dbv.pbVal, dbv.cpbVal);
+ break;
+
+ }
+ if (delOld)
+ DBDeleteContactSetting(hContact, oldName, setting->name);
+ }
+ DBFreeVariant(&dbv);
+ setting = (struct ModSetLinkLinkItem *)setting->next;
+ }
+ FreeModuleSettingLL(&settinglist);
+} // end code from dbe++
+
+static void IconsInit()
+{
+ int i;
+ SKINICONDESC sid = {0};
+ TCHAR tszFile[MAX_PATH];
+ GetModuleFileName(hinstance, tszFile, MAX_PATH);
+
+ sid.cbSize = sizeof(SKINICONDESC);
+ sid.flags = SIDF_ALL_TCHAR;
+ sid.ptszDefaultFile = tszFile;
+ sid.cx = sid.cy = 16;
+ sid.ptszSection = LPGENT(MODULENAME);
+
+
+ for ( i = 0; i < SIZEOF(iconList); i++ ) {
+ sid.pszName = iconList[i].szName;
+ sid.ptszDescription = iconList[i].szDescr;
+ sid.iDefaultIndex = -iconList[i].defIconID;
+ CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid);
+ }
+
+ for ( i = 0; i < SIZEOF(overlayIconList); i++ ) {
+ sid.pszName = overlayIconList[i].szName;
+ sid.ptszDescription = overlayIconList[i].szDescr;
+ sid.iDefaultIndex = -overlayIconList[i].defIconID;
+ CallService(MS_SKIN2_ADDICON, 0, (LPARAM)&sid);
+ }
+}
+
+void ShowPopup(char* szText, TCHAR* tszText, HANDLE hContact)
+{
+ POPUPDATAT ppd = {0};
+ TCHAR* text = 0;
+
+ if (tszText)
+ text = mir_tstrdup(tszText);
+ else if (szText)
+ text = mir_a2t(szText);
+ if (!text) return;
+
+ ppd.lchIcon = LoadSkinnedIcon(SKINICON_OTHER_MIRANDA);
+ ppd.lchContact = hContact;
+ _tcsncpy(ppd.lptzContactName, (TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hContact, GCDNF_TCHAR), MAX_CONTACTNAME - 1);
+ _tcsncpy(ppd.lptzText, text, MAX_SECONDLINE - 1);
+ ppd.iSeconds = -1;
+
+ PUAddPopUpT(&ppd);
+ mir_free(text);
+}
+
+BOOL DirectoryExists(HANDLE hContact)
+{
+ int attr;
+ char path[MAX_PATH];
+ CallService(MS_FILE_GETRECEIVEDFILESFOLDER, (WPARAM)hContact, (LPARAM)&path);
+ attr = GetFileAttributesA(path);
+ return (attr!=-1) && (attr&FILE_ATTRIBUTE_DIRECTORY);
+}
+
+void CopyToClipboard(HWND hwnd,LPSTR pszMsg, LPTSTR ptszMsg)
+{
+ HGLOBAL hglbCopy;
+ LPTSTR lptstrCopy;
+ LPTSTR buf = 0;
+ if (ptszMsg)
+ buf = mir_tstrdup(ptszMsg);
+ else if (pszMsg)
+ buf = mir_a2t(pszMsg);
+
+ if (buf == 0)
+ return;
+
+ hglbCopy = GlobalAlloc(GMEM_MOVEABLE, (lstrlen(buf)+1)*sizeof(TCHAR));
+ lptstrCopy = (LPTSTR)GlobalLock(hglbCopy);
+ lstrcpy(lptstrCopy, buf);
+ mir_free(buf);
+ GlobalUnlock(hglbCopy);
+
+ OpenClipboard(NULL);
+ EmptyClipboard();
+#ifdef _UNICODE
+ SetClipboardData(CF_UNICODETEXT, hglbCopy);
+#else
+ SetClipboardData(CF_TEXT, hglbCopy);
+#endif
+ CloseClipboard();
+}
+
+BOOL isMetaContact(HANDLE hContact) {
+
+ char *proto;
+ if(bMetaContacts) {
+ proto = (char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0);
+ if( lstrcmpA(proto,"MetaContacts") == 0 ) {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+
+HANDLE getDefaultContact(HANDLE hContact) {
+
+ if(bMetaContacts) {
+ return (HANDLE)CallService(MS_MC_GETDEFAULTCONTACT,(WPARAM)hContact,0);
+ }
+ return 0;
+}
+
+
+HANDLE getMostOnline(HANDLE hContact) {
+
+ if(bMetaContacts) {
+ return (HANDLE)CallService(MS_MC_GETMOSTONLINECONTACT,(WPARAM)hContact,0);
+ }
+ return 0;
+}
+
+
+void GetID(HANDLE hContact,LPSTR szProto,LPSTR szID)
+{
+ DBVARIANT dbv_uniqueid;
+ LPSTR uID = (LPSTR) CallProtoService(szProto, PS_GETCAPS, PFLAG_UNIQUEIDSETTING, 0);
+ if ( uID == (LPSTR)CALLSERVICE_NOTFOUND )
+ uID = NULL;
+
+ *szID='\0';
+
+ if( uID && DBGetContactSetting(hContact, szProto, uID ,&dbv_uniqueid)==0 ) {
+ if (dbv_uniqueid.type ==DBVT_DWORD)
+ wsprintfA(szID, "%u", dbv_uniqueid.dVal);
+ else if (dbv_uniqueid.type ==DBVT_WORD)
+ wsprintfA(szID, "%u", dbv_uniqueid.wVal);
+ else if (dbv_uniqueid.type ==DBVT_BLOB)
+ wsprintfA(szID, "%s", dbv_uniqueid.cpbVal);
+ else
+ wsprintfA(szID, "%s", dbv_uniqueid.pszVal);
+
+ DBFreeVariant(&dbv_uniqueid);
+ }
+}
+
+int StatusMsgExists(HANDLE hContact)
+{
+ LPSTR module,msg;
+ char par[32];
+ BOOL ret=0;
+ int i;
+
+ module = (LPSTR) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0);
+ if(!module) return 0;
+
+ for(i = 0; i < SIZEOF(statusMsg); i++) {
+ if (statusMsg[i].flag & 8)
+ mir_snprintf(par, SIZEOF(par), "%s/%s", module, statusMsg[i].name);
+ else
+ strcpy(par, statusMsg[i].name);
+
+ msg = DBGetString(hContact, (statusMsg[i].module) ? statusMsg[i].module : module, par);
+ if(msg) {
+ if(strlen(msg))
+ ret |= statusMsg[i].flag;
+ mir_free(msg);
+ }
+ }
+ return ret;
+}
+
+BOOL IPExists(HANDLE hContact)
+{
+ LPSTR szProto;
+ DWORD mIP,rIP;
+
+ szProto = (LPSTR) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0);
+ if(!szProto) return 0;
+
+ mIP = DBGetContactSettingDword(hContact, szProto, "IP", 0);
+ rIP = DBGetContactSettingDword(hContact, szProto, "RealIP", 0);
+
+ return (mIP!=0 || rIP!=0);
+}
+
+BOOL MirVerExists(HANDLE hContact)
+{
+ LPSTR szProto, msg;
+ BOOL ret=0;
+
+ szProto = (LPSTR) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0);
+ if(!szProto) return 0;
+
+ msg = DBGetString(hContact,szProto,"MirVer");
+ if(msg) {
+ if(strlen(msg)) ret = 1;
+ mir_free(msg);
+ }
+
+ return ret;
+}
+
+void getIP(HANDLE hContact,LPSTR szProto,LPSTR szIP)
+{
+ char szmIP[64]={0};
+ char szrIP[64]={0};
+ DWORD mIP = DBGetContactSettingDword(hContact, szProto, "IP", 0);
+ DWORD rIP = DBGetContactSettingDword(hContact, szProto, "RealIP", 0);
+ if( mIP ) wsprintfA(szmIP, "External IP: %d.%d.%d.%d\r\n", mIP>>24,(mIP>>16)&0xFF,(mIP>>8)&0xFF,mIP&0xFF);
+ if( rIP ) wsprintfA(szrIP, "Internal IP: %d.%d.%d.%d\r\n", rIP>>24,(rIP>>16)&0xFF,(rIP>>8)&0xFF,rIP&0xFF);
+ strcpy(szIP,szrIP);
+ strcat(szIP,szmIP);
+}
+
+LPSTR getMirVer(HANDLE hContact)
+{
+ LPSTR szProto, msg;
+
+ szProto = (LPSTR) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0);
+ if(!szProto) return NULL;
+
+ msg = DBGetString(hContact,szProto,"MirVer");
+ if(msg) {
+ if(strlen(msg))
+ return msg;
+ mir_free(msg);
+ }
+
+ return NULL;
+}
+
+static LRESULT CALLBACK AuthReqEditSubclassProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
+{
+ switch(msg) {
+ case WM_CHAR:
+ if(wParam == '\n' && CTRL_IS_PRESSED) { // ctrl + ENTER
+ PostMessage(GetParent(hwnd), WM_COMMAND, IDOK, 0);
+ return 0;
+ }
+ if(wParam == 1 && CTRL_IS_PRESSED) { // ctrl + a
+ SendMessage(hwnd, EM_SETSEL, 0, -1);
+ return 0;
+ }
+ break;
+ case WM_SETFOCUS:
+ SendMessage(hwnd, EM_SETSEL, 0, -1);
+ break;
+ }
+ return CallWindowProc((WNDPROC)OldAuthReqEditProc,hwnd,msg,wParam,lParam);
+}
+
+INT_PTR CALLBACK AuthReqWndProc(HWND hdlg,UINT msg,WPARAM wparam,LPARAM lparam)
+{
+ static HANDLE hcontact;
+
+ switch(msg){
+ case WM_INITDIALOG:
+ TranslateDialogDefault(hdlg);
+ OldAuthReqEditProc = SetWindowLongPtr(GetDlgItem(hdlg, IDC_REASON), GWLP_WNDPROC, (LONG_PTR)AuthReqEditSubclassProc);
+ SendDlgItemMessage(hdlg, IDC_REASON, EM_LIMITTEXT, (WPARAM)255, 0);
+ SetDlgItemText(hdlg, IDC_REASON, TranslateT("Please authorize me to add you to my contact list."));
+ hcontact=(HANDLE)lparam;
+ break;
+
+ case WM_COMMAND:
+ switch(LOWORD(wparam)) {
+ case IDOK:
+ {
+ char szReason[256] = {0};
+#ifdef _UNICODE
+ WCHAR wszReason[256] = {0};
+
+ if (CallService(MS_SYSTEM_GETVERSION, 0, 0) < 0x00090007)
+ {
+ GetDlgItemTextA(hdlg,IDC_REASON,szReason,255);
+ CallContactService(hcontact,PSS_AUTHREQUEST,0,(LPARAM)szReason);
+ }
+ else
+ {
+ GetDlgItemText(hdlg,IDC_REASON,wszReason,255);
+ CallContactService(hcontact,PSS_AUTHREQUESTW,0,(LPARAM)wszReason);
+ }
+#else
+ GetDlgItemTextA(hdlg,IDC_REASON,szReason,255);
+ CallContactService(hcontact,PSS_AUTHREQUEST,0,(LPARAM)szReason);
+#endif
+ } // fall through
+ case IDCANCEL:
+ DestroyWindow(hdlg);
+ break;
+ }
+ break;
+ }
+
+ return 0;
+}
+
+BOOL isVisSupport(HANDLE hContact)
+{
+ char *szProto=(char*)CallService(MS_PROTO_GETCONTACTBASEPROTO,(WPARAM)hContact,0);
+ if(szProto==NULL) return 0;
+ return CallProtoService(szProto,PS_GETCAPS,PFLAGNUM_1,0)&PF1_INVISLIST;
+}
+
+BOOL isInvSupport(HANDLE hContact)
+{
+ char *szProto=(char*)CallService(MS_PROTO_GETCONTACTBASEPROTO,(WPARAM)hContact,0);
+ if(szProto==NULL) return 0;
+ return CallProtoService(szProto,PS_GETCAPS,PFLAGNUM_1,0)&PF1_VISLIST;
+}
+
+BOOL isProtoOnline(char *szProto)
+{
+//#ifdef _DEBUG
+// return TRUE;
+//#else
+ DWORD protoStatus;
+ protoStatus = CallProtoService(szProto,PS_GETSTATUS,0,0);
+ return (protoStatus > ID_STATUS_OFFLINE && protoStatus < ID_STATUS_IDLE);
+
+//#endif
+}
+
+INT_PTR onSendAuthRequest(WPARAM wparam,LPARAM lparam)
+{
+ DWORD flags;
+ char *szProto;
+
+ szProto=(char *)CallService(MS_PROTO_GETCONTACTBASEPROTO,wparam,0);
+
+ flags=CallProtoService(szProto,PS_GETCAPS,PFLAGNUM_4,0);
+ if (flags&PF4_NOCUSTOMAUTH)
+ CallContactService((HANDLE)wparam,PSS_AUTHREQUEST,0, (LPARAM)"");
+ else
+ CreateDialogParam(hinstance,MAKEINTRESOURCE(IDD_AUTHREQ),(HWND)CallService(MS_CLUI_GETHWND,0,0),AuthReqWndProc,(LPARAM)wparam);
+
+ return 0;
+}
+
+INT_PTR onSendAdded(WPARAM wparam,LPARAM lparam)
+{
+ CallContactService((HANDLE)wparam,PSS_ADDED,0,0);
+ return 0;
+}
+
+// set the invisible-flag in db
+INT_PTR onSetInvis(WPARAM wparam,LPARAM lparam)
+{
+ CallContactService((HANDLE)wparam,PSS_SETAPPARENTMODE,(DBGetContactSettingWord((HANDLE)wparam,(const char*)CallService(MS_PROTO_GETCONTACTBASEPROTO,wparam,0),"ApparentMode",0)==ID_STATUS_OFFLINE)?0:ID_STATUS_OFFLINE,0);
+ return 0;
+}
+
+// set visible-flag in db
+INT_PTR onSetVis(WPARAM wparam,LPARAM lparam)
+{
+ CallContactService((HANDLE)wparam,PSS_SETAPPARENTMODE,(DBGetContactSettingWord((HANDLE)wparam,(const char*)CallService(MS_PROTO_GETCONTACTBASEPROTO,wparam,0),"ApparentMode",0)==ID_STATUS_ONLINE)?0:ID_STATUS_ONLINE,0);
+ return 0;
+}
+
+INT_PTR onHide(WPARAM wparam,LPARAM lparam)
+{
+ DBWriteContactSettingByte((HANDLE)wparam,"CList","Hidden",(byte)!DBGetContactSettingByte((HANDLE)wparam,"CList","Hidden",0));
+ CallService(MS_CLUI_SORTLIST,0,0);
+ return 0;
+}
+
+void ShowItem(CLISTMENUITEM *cli, HANDLE hmenu)
+{
+ cli->flags=CMIM_FLAGS | CMIF_TCHAR;
+ CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)hmenu,(LPARAM)cli);
+}
+
+void HideItem(CLISTMENUITEM *cli,HANDLE hmenu)
+{
+ cli->flags|=CMIF_HIDDEN;
+ CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)hmenu,(LPARAM)cli);
+}
+
+// following 4 functions should be self-explanatory
+void ModifyVisibleSet(CLISTMENUITEM *cli,int mode,BOOL alpha)
+{
+ cli->flags |= CMIM_ICON;
+ cli->hIcon = (mode) ? hIcon[1] : (alpha?hIcon[3] : LoadSkinnedIcon(SKINICON_OTHER_SMALLDOT));
+ CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hmenuVis, (LPARAM)cli);
+}
+
+void ModifyInvisSet(CLISTMENUITEM *cli,int mode,BOOL alpha)
+{
+ cli->flags |= CMIM_ICON;
+ cli->hIcon = (mode) ? hIcon[2] : (alpha ? hIcon[4] : LoadSkinnedIcon(SKINICON_OTHER_SMALLDOT));
+ CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hmenuOff, (LPARAM)cli);
+}
+
+void ModifyHidden(CLISTMENUITEM *cli,int mode)
+{
+ cli->flags |= CMIM_ICON | CMIM_NAME;
+ cli->hIcon = (mode) ?
+ (HICON)CallService( MS_SKIN2_GETICON, 0, (LPARAM)"miex_showil") :
+ (HICON)CallService( MS_SKIN2_GETICON, 0, (LPARAM)"miex_hidefl");
+ cli->ptszName = mode ? LPGENT("Show in list") : LPGENT("Hide from list");
+ CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hmenuHide, (LPARAM)cli);
+}
+
+void ModifyCopyID(CLISTMENUITEM *cli, HANDLE hContact, BOOL bShowID, BOOL bTrimID)
+{
+ LPSTR szProto;
+ char szID[256];
+ TCHAR buffer[256];
+ HICON hIconCID;
+ HANDLE hC;
+
+ cli->flags|=CMIM_ICON|CMIM_NAME;
+
+ if(isMetaContact(hContact)) {
+ hC = getMostOnline(hContact);
+ if( !hContact ) hC = getDefaultContact(hContact);
+ hContact = hC;
+ }
+
+ szProto = (LPSTR) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0);
+ if(!szProto) {
+ HideItem(cli,hmenuCopyID);
+ return;
+ }
+ hIconCID = (HICON) CallProtoService(szProto, PS_LOADICON, PLI_PROTOCOL|PLIF_SMALL, 0);
+ cli->hIcon = BindOverlayIcon(hIconCID, "miex_copyid");
+ DestroyIcon(hIconCID);
+ hIconCID = cli->hIcon;
+
+ GetID(hContact,szProto,(LPSTR)&szID);
+ if(szID[0])
+ {
+ if (bShowID)
+ {
+ TCHAR* tmp;
+
+ if (bTrimID && (strlen(szID) > MAX_IDLEN))
+ {
+ szID[MAX_IDLEN - 2] = szID[MAX_IDLEN - 1] = szID[MAX_IDLEN] = '.';
+ szID[MAX_IDLEN + 1] = 0;
+ }
+ tmp = mir_a2t(szID);
+ mir_sntprintf(buffer, SIZEOF(buffer), _T("%s [%s]"), TranslateT("Copy ID"), tmp);
+ mir_free(tmp);
+
+ cli->ptszName = (TCHAR*)&buffer;
+ }
+ else
+ cli->ptszName = _T("Copy ID");
+ }
+ else {
+ cli->flags=CMIM_FLAGS|CMIF_HIDDEN;
+ }
+ CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)hmenuCopyID,(LPARAM)cli);
+ DestroyIcon(hIconCID);
+}
+
+void ModifyStatusMsg(CLISTMENUITEM *cli,HANDLE hContact)
+{
+ LPSTR szProto;
+ HICON hIconSMsg;
+
+ cli->flags|=CMIM_ICON;
+
+ szProto = (LPSTR) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0);
+ if(!szProto) {
+ HideItem(cli,hmenuStatusMsg);
+ return;
+ }
+
+ hIconSMsg = (HICON) CallProtoService(szProto, PS_LOADICON, PLI_PROTOCOL|PLIF_SMALL, 0);
+ cli->hIcon = BindOverlayIcon(hIconSMsg, (StatusMsgExists(hContact)&2) ? "miex_copysm2" : "miex_copysm1");
+ DestroyIcon(hIconSMsg);
+ hIconSMsg = cli->hIcon;
+
+ CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)hmenuStatusMsg,(LPARAM)cli);
+ DestroyIcon(hIconSMsg);
+}
+
+void ModifyCopyIP(CLISTMENUITEM *cli,HANDLE hContact)
+{
+ LPSTR szProto;
+ HICON hIconCIP;
+
+ cli->flags |= CMIM_ICON;
+
+ szProto = (LPSTR) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0);
+ if(!szProto) {
+ HideItem(cli,hmenuCopyIP);
+ return;
+ }
+
+ hIconCIP = (HICON) CallProtoService(szProto, PS_LOADICON, PLI_PROTOCOL|PLIF_SMALL, 0);
+
+ cli->hIcon = BindOverlayIcon(hIconCIP, "miex_copyip");
+ DestroyIcon(hIconCIP);
+ hIconCIP = cli->hIcon;
+
+ CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)hmenuCopyIP,(LPARAM)cli);
+ DestroyIcon(hIconCIP);
+}
+
+void ModifyCopyMirVer(CLISTMENUITEM *cli,HANDLE hContact)
+{
+ LPSTR msg;
+ cli->flags|=CMIM_ICON;
+ cli->hIcon=NULL;
+ if(ServiceExists(MS_FP_GETCLIENTICON)) {
+ msg = getMirVer(hContact);
+ if(msg) {
+ cli->hIcon = (HICON)CallService(MS_FP_GETCLIENTICON,(WPARAM)msg,(LPARAM)1);
+ mir_free(msg);
+ }
+ }
+ if(!cli->hIcon) cli->hIcon = hIcon[0];
+ CallService(MS_CLIST_MODIFYMENUITEM,(WPARAM)hmenuCopyMirVer,(LPARAM)cli);
+}
+
+INT_PTR onCopyID(WPARAM wparam,LPARAM lparam)
+{
+ LPSTR szProto;
+ char szID[128] = {0}, buffer[256] = {0};
+ HANDLE hContact ,hC;
+ PROTOACCOUNT* pa;
+
+ hContact = (HANDLE)wparam;
+ if(isMetaContact(hContact)) {
+ hC = getMostOnline(hContact);
+ if( !hContact ) hC = getDefaultContact(hContact);
+ hContact = hC;
+ }
+ if ((szProto = (LPSTR) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0)) == NULL)
+ return 0;
+
+ GetID(hContact,szProto,(LPSTR)&szID);
+
+ if(DBGetContactSettingWord(NULL,VISPLG,"flags",vf_default)&VF_CIDN) {
+ if (bMir_08)
+ pa = (PROTOACCOUNT*)CallService(MS_PROTO_GETACCOUNT, 0, (LPARAM)szProto);
+
+ if (bMir_08 && !pa->bOldProto)
+ mir_snprintf(buffer, SIZEOF(buffer), "%s: %s", pa->szProtoName, szID);
+ else
+ mir_snprintf(buffer, SIZEOF(buffer), "%s: %s", szProto, szID);
+ }
+ else
+ strcpy(buffer, szID);
+
+ CopyToClipboard((HWND)lparam, buffer, 0);
+ if(CTRL_IS_PRESSED && ServiceExists(MS_POPUP_ADDPOPUP))
+ ShowPopup(buffer, 0, hContact);
+
+ return 0;
+}
+
+INT_PTR onCopyStatusMsg(WPARAM wparam,LPARAM lparam)
+{
+ LPSTR module;
+ LPTSTR msg;
+ char par[32];
+ TCHAR buffer[2048];
+ int i;
+ WORD flags=DBGetContactSettingWord(NULL,VISPLG,"flags",vf_default);
+
+ module = (LPSTR) CallService(MS_PROTO_GETCONTACTBASEPROTO, wparam, 0);
+ if(!module) return 0;
+
+ buffer[0]=0;
+ for(i = 0; i < SIZEOF(statusMsg); i++) {
+ if (statusMsg[i].flag & 8)
+ mir_snprintf(par, SIZEOF(par), "%s/%s", module, statusMsg[i].name);
+ else
+ strcpy(par, statusMsg[i].name);
+
+ msg = DBGetStringT((HANDLE)wparam, (statusMsg[i].module) ? statusMsg[i].module : module, par);
+ if(msg)
+ {
+ if(_tcsclen(msg))
+ {
+ if (flags&VF_SMNAME)
+ {
+ _tcsncat (buffer, TranslateTS(statusMsg[i].fullName), (SIZEOF(buffer) - _tcsclen(buffer) - 1));
+ _tcsncat (buffer, _T(": "), (SIZEOF(buffer) - _tcsclen(buffer) - 1));
+ }
+ _tcsncat(buffer, msg, (SIZEOF(buffer) - _tcsclen(buffer) - 1));
+ _tcsncat(buffer, _T("\r\n"), (SIZEOF(buffer) - _tcsclen(buffer) - 1));
+ }
+ mir_free(msg);
+ }
+ }
+
+ CopyToClipboard((HWND)lparam, 0, buffer);
+ if(CTRL_IS_PRESSED && ServiceExists(MS_POPUP_ADDPOPUP))
+ ShowPopup(0, buffer, (HANDLE)wparam);
+
+ return 0;
+}
+
+INT_PTR onCopyIP(WPARAM wparam,LPARAM lparam)
+{
+ LPSTR szProto;
+ char szIP[128];
+
+ szProto = (LPSTR) CallService(MS_PROTO_GETCONTACTBASEPROTO, wparam, 0);
+ getIP((HANDLE)wparam,szProto,(LPSTR)&szIP);
+
+ CopyToClipboard((HWND)lparam, szIP, 0);
+ if(CTRL_IS_PRESSED && ServiceExists(MS_POPUP_ADDPOPUP))
+ ShowPopup(szIP, 0, (HANDLE)wparam);
+
+ return 0;
+}
+
+INT_PTR onCopyMirVer(WPARAM wparam,LPARAM lparam)
+{
+ LPSTR msg = getMirVer((HANDLE)wparam);
+ if(msg) {
+ CopyToClipboard((HWND)lparam, msg, 0);
+ if(CTRL_IS_PRESSED && ServiceExists(MS_POPUP_ADDPOPUP))
+ ShowPopup(msg, 0, (HANDLE)wparam);
+
+ mir_free(msg);
+ }
+ return 0;
+}
+
+INT_PTR onRecvFiles(WPARAM wparam,LPARAM lparam)
+{
+ char path[MAX_PATH];
+ CallService(MS_FILE_GETRECEIVEDFILESFOLDER, wparam, (LPARAM)&path);
+ ShellExecuteA(0, "open", path, 0, 0, SW_SHOW);
+ return 0;
+}
+
+INT_PTR onChangeProto(WPARAM wparam,LPARAM lparam)
+{
+ HANDLE hContact, hContactNew;
+
+ hContact = (HANDLE)wparam;
+ if (!strcmp((char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, wparam, 0), (char*)lparam))
+ return 0;
+
+ if (CTRL_IS_PRESSED)
+ {
+ hContactNew = hContact;
+ RenameDbProto(hContact, hContactNew, (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0), (char*)lparam, 1);
+ CallService(MS_PROTO_REMOVEFROMCONTACT, (WPARAM)hContact, CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0));
+ CallService(MS_PROTO_ADDTOCONTACT, (WPARAM)hContactNew, lparam);
+ }
+ else
+ {
+ hContactNew = (HANDLE)CallService(MS_DB_CONTACT_ADD, 0, 0);
+ if (hContactNew)
+ {
+ CallService(MS_PROTO_ADDTOCONTACT, (WPARAM)hContactNew, lparam);
+ RenameDbProto(hContact, hContactNew, (char*)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact, 0), (char*)lparam, 0);
+ RenameDbProto(hContact, hContactNew, "CList", "CList", 0);
+ }
+ else
+ return 0;
+ }
+ if(MessageBox(NULL,(LPCTSTR)TranslateT("Do you want to send authorization request\nto new contact?"),
+ TranslateT("Miranda IM"), MB_OKCANCEL | MB_SETFOREGROUND | MB_TOPMOST) == IDOK)
+
+ onSendAuthRequest((WPARAM)hContactNew, 0);
+
+ return 0;
+}
+
+int isIgnored(HANDLE hContact, int type)
+{
+ int i = 0, all = 0;
+ if (type == IGNOREEVENT_ALL)
+ {
+ for (i = 1; i < SIZEOF(ii); i++)
+ {
+ if (isIgnored(hContact, ii[i].type))
+ all++;
+ }
+ return (all == SIZEOF(ii) - 1) ? 1 : 0; // ignoring all or not
+ }
+ else
+ return CallService(MS_IGNORE_ISIGNORED, (WPARAM)hContact, (LPARAM)type);
+}
+
+INT_PTR onIgnore(WPARAM wparam,LPARAM lparam)
+{
+ CallService(isIgnored((HANDLE)wparam, lparam) ? MS_IGNORE_UNIGNORE : MS_IGNORE_IGNORE, wparam, lparam);
+ return 0;
+}
+
+static HANDLE AddSubmenuItem(HANDLE hRoot, TCHAR* name, HICON icon, DWORD flag, char* service, int pos, int param)
+{
+ CLISTMENUITEM mi = { 0 };
+ mi.cbSize = sizeof(mi);
+ mi.hParentMenu = hRoot;
+ mi.pszPopupName = (char*)hRoot; // for Miranda 0.7
+ mi.popupPosition = param;
+ mi.position = pos;
+ mi.ptszName = name;
+ mi.hIcon = icon;
+ mi.flags = CMIF_TCHAR | CMIF_CHILDPOPUP;
+ if (flag)
+ mi.flags |= flag;
+ mi.pszService = service;
+ return ( HANDLE )CallService(MS_CLIST_ADDCONTACTMENUITEM, param, (LPARAM)&mi);
+}
+
+static void ModifySubmenuItem(HANDLE hItem, TCHAR* name, int checked, int hidden)
+{
+ CLISTMENUITEM mi = { 0 };
+ mi.cbSize = sizeof(mi);
+ mi.ptszName = name;
+ mi.flags = CMIM_FLAGS | CMIF_TCHAR;
+ if ( checked )
+ mi.flags |= CMIF_CHECKED;
+ if ( hidden )
+ mi.flags |= CMIF_HIDDEN;
+ CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hItem, (LPARAM)&mi);
+}
+
+// called when the contact-menu is built
+int BuildMenu(WPARAM wparam,LPARAM lparam)
+{
+ CLISTMENUITEM miAV={0},miNV,miHFL,miIGN,miPROTO,miADD,miREQ,miCID,miRECV,miSTAT,miCIP,miCMV;
+ WORD flags=DBGetContactSettingWord(NULL,VISPLG,"flags",vf_default);
+ int i = 0, j = 0, check = 0, all = 0, hide = 0;
+ BOOL bIsOnline = FALSE, bShowAll = CTRL_IS_PRESSED;
+ PROTOACCOUNT* pa;
+ char* pszProto;
+ pszProto = (LPSTR)CallService(MS_PROTO_GETCONTACTBASEPROTO, wparam, 0);
+ if(bMir_08)
+ pa = (PROTOACCOUNT*)CallService(MS_PROTO_GETACCOUNT, 0, (LPARAM)pszProto);
+
+ bIsOnline = isProtoOnline(pszProto);
+
+ miAV.cbSize=sizeof(CLISTMENUITEM);
+ miAV.flags=CMIM_FLAGS | CMIF_TCHAR;
+ miAV.hIcon=NULL;
+ miAV.pszContactOwner=NULL;
+ miNV=miHFL=miIGN=miPROTO=miADD=miREQ=miCID=miRECV=miSTAT=miCIP=miCMV=miAV;
+
+ if(bShowAll || flags&VF_VS) {
+ ShowItem(&miAV,hmenuVis);
+ ShowItem(&miNV,hmenuOff);
+ }
+ else {
+ HideItem(&miAV,hmenuVis);
+ HideItem(&miNV,hmenuOff);
+ }
+
+ if(bShowAll || flags&VF_HFL){
+ ShowItem(&miHFL,hmenuHide);
+ ModifyHidden(&miHFL,DBGetContactSettingByte((HANDLE)wparam,"CList","Hidden",0));
+ }
+ else HideItem(&miHFL,hmenuHide);
+
+ if(bShowAll || flags&VF_IGN)
+ {
+ ShowItem(&miIGN,hmenuIgnore);
+ for (i = 1; i < SIZEOF(ii); i++)
+ {
+ check = isIgnored((HANDLE)wparam, ii[i].type);
+ if (check)
+ all++;
+ ModifySubmenuItem(hIgnoreItem[i], ii[i].name, check, 0);
+
+ if (all == SIZEOF(ii) - 1) // ignor all
+ check = 1;
+ else
+ check = 0;
+ ModifySubmenuItem(hIgnoreItem[0], ii[i].name, check, 0);
+ }
+ }
+
+ else HideItem(&miIGN,hmenuIgnore);
+
+ if(bMir_08 && pa && (bShowAll || flags&VF_PROTO))
+ {
+ for (i = 0; i < protoCount; i++)
+ {
+ if ((!accs[i]->bIsEnabled) || (strcmp(pa->szProtoName, accs[i]->szProtoName)))
+ hide = 1;
+ else
+ {
+ hide = 0;
+ j++;
+ }
+
+ if (CallService(MS_PROTO_ISPROTOONCONTACT, wparam, (LPARAM)accs[i]->szModuleName))
+ check = 1;
+ else
+ check = 0;
+
+ ModifySubmenuItem(hProtoItem[i], accs[i]->tszAccountName, check, hide);
+ }
+ if (j > 1)
+ ShowItem(&miPROTO,hmenuProto);
+ else
+ HideItem(&miPROTO,hmenuProto);
+ }
+ else HideItem(&miPROTO,hmenuProto);
+
+ if((bShowAll || flags & VF_ADD) && bIsOnline && (bMir_08 ? IsAccountEnabled( pa ) : TRUE))
+ ShowItem(&miADD,hmenuAdded);
+ else
+ HideItem(&miADD,hmenuAdded);
+
+ if((bShowAll || flags & VF_REQ) && bIsOnline && (bMir_08 ? IsAccountEnabled( pa ) : TRUE))
+ ShowItem(&miREQ,hmenuAuthReq);
+ else
+ HideItem(&miREQ,hmenuAuthReq);
+
+ if(bShowAll || flags&VF_CID){
+ ShowItem(&miCID,hmenuCopyID);
+ ModifyCopyID(&miCID,(HANDLE)wparam, flags&VF_SHOWID, flags&VF_TRIMID);
+ }
+ else HideItem(&miCID,hmenuCopyID);
+
+ if((bShowAll || flags&VF_RECV) && DirectoryExists((HANDLE)wparam)) ShowItem(&miRECV,hmenuRecvFiles);
+ else HideItem(&miRECV,hmenuRecvFiles);
+
+ if((bShowAll || flags&VF_STAT) && StatusMsgExists((HANDLE)wparam)){
+ ShowItem(&miSTAT,hmenuStatusMsg);
+ ModifyStatusMsg(&miSTAT,(HANDLE)wparam);
+ }
+ else HideItem(&miSTAT,hmenuStatusMsg);
+
+ if((bShowAll || flags&VF_CIP) && IPExists((HANDLE)wparam)){
+ ShowItem(&miCIP,hmenuCopyIP);
+ ModifyCopyIP(&miCIP,(HANDLE)wparam);
+ }
+ else HideItem(&miCIP,hmenuCopyIP);
+
+ if((bShowAll || flags&VF_CMV) && MirVerExists((HANDLE)wparam)){
+ ShowItem(&miCMV,hmenuCopyMirVer);
+ ModifyCopyMirVer(&miCMV,(HANDLE)wparam);
+ }
+ else HideItem(&miCMV,hmenuCopyMirVer);
+
+ if(bShowAll || (flags&VF_VS))
+ {
+ int apparent=DBGetContactSettingWord((HANDLE)wparam,(const char*)CallService(MS_PROTO_GETCONTACTBASEPROTO,wparam,0),"ApparentMode",0);
+ if(isVisSupport((HANDLE)wparam)) ModifyVisibleSet(&miAV,apparent==ID_STATUS_ONLINE,flags&VF_SAI);
+ else HideItem(&miAV,hmenuVis);
+ if(isInvSupport((HANDLE)wparam)) ModifyInvisSet(&miNV,apparent==ID_STATUS_OFFLINE,flags&VF_SAI);
+ else HideItem(&miAV,hmenuOff);
+ }
+ return 0;
+}
+
+int EnumProtoSubmenu(WPARAM wparam, LPARAM lparam)
+{
+ int i;
+ int pos = 1000;
+ if (protoCount) // remove old items
+ {
+ for (i = 0; i < protoCount; i++)
+ {
+ if (hProtoItem[i])
+ {
+ CallService(MS_CLIST_REMOVECONTACTMENUITEM, (WPARAM)hProtoItem[i], 0);
+ hProtoItem[i] = 0;
+ }
+ }
+ }
+ CallService( MS_PROTO_ENUMACCOUNTS, (WPARAM)&protoCount, (LPARAM)&accs);
+ if (protoCount > MAX_PROTOS)
+ protoCount = MAX_PROTOS;
+ for (i = 0; i < protoCount; i++)
+ {
+ hProtoItem[i] = AddSubmenuItem((HGENMENU)hmenuProto, accs[i]->tszAccountName,
+ LoadSkinnedProtoIcon(accs[i]->szModuleName, ID_STATUS_ONLINE), CMIF_KEEPUNTRANSLATED,
+ MS_PROTO, pos++, (int)accs[i]->szModuleName);
+ }
+ return 0;
+}
+
+// Tabsrmm toolbar support
+static int TabsrmmButtonPressed(WPARAM wParam, LPARAM lParam)
+{
+ CustomButtonClickData *cbcd=(CustomButtonClickData *)lParam;
+
+ if(!strcmp(cbcd->pszModule, MODULENAME) && cbcd->dwButtonId == 0)
+ onRecvFiles(wParam, 0);
+
+ return 0;
+}
+
+static int TabsrmmButtonsInit(WPARAM wParam, LPARAM lParam)
+{
+ BBButton bbd = {0};
+
+ bbd.cbSize = sizeof(BBButton);
+ bbd.pszModuleName = MODULENAME;
+ bbd.dwButtonID = 0;
+ bbd.dwDefPos = 1000;
+ bbd.ptszTooltip = _T("Browse Received Files");
+ bbd.bbbFlags = BBBF_ISLSIDEBUTTON | BBBF_CANBEHIDDEN;
+ bbd.hIcon = (HANDLE)CallService(MS_SKIN2_GETICONHANDLE, 0, (LPARAM)"miex_recfiles");
+ CallService (MS_BB_ADDBUTTON, 0, (LPARAM)&bbd);
+
+ return 0;
+}
+
+static void TabsrmmButtonsModify(HANDLE hContact)
+{
+ if (!DirectoryExists(hContact))
+ {
+ BBButton bbd = {0};
+ bbd.cbSize = sizeof(BBButton);
+ bbd.dwButtonID = 0;
+ bbd.pszModuleName = MODULENAME;
+ bbd.bbbFlags = BBSF_DISABLED | BBSF_HIDDEN;
+ CallService(MS_BB_SETBUTTONSTATE, (WPARAM)hContact, (LPARAM)&bbd);
+ }
+}
+
+static int ContactWindowOpen(WPARAM wparam,LPARAM lParam)
+{
+ MessageWindowEventData *MWeventdata = (MessageWindowEventData*)lParam;
+
+ if(MWeventdata->uType == MSG_WINDOW_EVT_OPENING && MWeventdata->hContact)
+ {
+ TabsrmmButtonsModify(MWeventdata->hContact);
+ }
+ return 0;
+}
+
+// called when all modules are loaded
+static int PluginInit(WPARAM wparam,LPARAM lparam)
+{
+ int pos = 1000, i = 0;
+
+ CLISTMENUITEM mi;
+
+ IconsInit();
+
+ bMetaContacts = ServiceExists(MS_MC_GETMETACONTACT)!=0;
+ bMir_08 = ServiceExists(MS_PROTO_GETACCOUNT)!=0;
+
+ hServices[0] = CreateServiceFunction(MS_SETINVIS,onSetInvis);
+ hServices[1] = CreateServiceFunction(MS_SETVIS,onSetVis);
+ hServices[2] = CreateServiceFunction(MS_HIDE,onHide);
+ hServices[3] = CreateServiceFunction(MS_IGNORE,onIgnore);
+ if (bMir_08)
+ hServices[4] = CreateServiceFunction(MS_PROTO,onChangeProto);
+ hServices[5] = CreateServiceFunction(MS_ADDED,onSendAdded);
+ hServices[6] = CreateServiceFunction(MS_AUTHREQ,onSendAuthRequest);
+ hServices[7] = CreateServiceFunction(MS_COPYID,onCopyID);
+ hServices[8] = CreateServiceFunction(MS_RECVFILES,onRecvFiles);
+ hServices[9] = CreateServiceFunction(MS_STATUSMSG,onCopyStatusMsg);
+ hServices[10] = CreateServiceFunction(MS_COPYIP,onCopyIP);
+ hServices[11] = CreateServiceFunction(MS_COPYMIRVER,onCopyMirVer);
+
+ mi.cbSize=sizeof(CLISTMENUITEM);
+ mi.flags = CMIF_TCHAR;
+ mi.hIcon=NULL;
+ mi.pszContactOwner=NULL;
+
+ mi.position=120000;
+ mi.ptszName=LPGENT("Always visible");
+ mi.pszService=MS_SETVIS;
+ hmenuVis=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi);
+
+ mi.position++;
+ mi.ptszName=LPGENT("Never visible");
+ mi.pszService=MS_SETINVIS;
+ hmenuOff=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi);
+
+ mi.position++;
+ mi.ptszName=NULL;
+ mi.pszService=MS_HIDE;
+ hmenuHide=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi);
+
+ mi.position++;
+ mi.pszPopupName = (char*)-1; // for Miranda 0.7
+ mi.ptszName=LPGENT("Ignore");
+ mi.pszService = 0;
+ mi.flags |= CMIF_ROOTHANDLE;
+ mi.hIcon=(HICON)CallService( MS_SKIN2_GETICON, 0, (LPARAM)"miex_ignore" );
+ hmenuIgnore=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi);
+
+ hIgnoreItem[0] = AddSubmenuItem(hmenuIgnore, ii[0].name, LoadSkinnedIcon(ii[0].icon), 0, MS_IGNORE, pos, ii[0].type );
+ pos += 100000; // insert separator
+ for (i = 1; i < SIZEOF(ii); i++)
+ {
+ hIgnoreItem[i] = AddSubmenuItem(hmenuIgnore, ii[i].name, LoadSkinnedIcon(ii[i].icon), 0, MS_IGNORE, pos++, ii[i].type );
+ }
+ pos += 100000; // insert separator
+ ood.cbSize = sizeof(ood);
+ ood.pszGroup = "Events";
+ ood.pszPage = "Ignore";
+ AddSubmenuItem(hmenuIgnore, LPGENT("Open ignore settings"), (HICON)CallService( MS_SKIN2_GETICON, 0, (LPARAM)"miex_ignore"), 0, MS_OPT_OPENOPTIONS, pos, (int)&ood );
+
+ mi.pszPopupName = 0;
+ if (bMir_08)
+ {
+ mi.position++;
+ mi.ptszName=LPGENT("Copy to Account");
+ mi.pszService=MS_PROTO;
+ mi.hIcon=( HICON )CallService( MS_SKIN2_GETICON, 0, (LPARAM)"miex_protocol");
+ hmenuProto=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi);
+
+ EnumProtoSubmenu(0, 0);
+ }
+
+ mi.flags = CMIF_TCHAR;
+
+ mi.position++;
+ mi.ptszName=LPGENT("Send 'You were added'");
+ mi.pszService=MS_ADDED;
+ mi.hIcon=( HICON )CallService( MS_SKIN2_GETICON, 0, (LPARAM)"miex_added");
+ hmenuAdded=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi);
+
+ mi.position++;
+ mi.ptszName=LPGENT("Request authorization");
+ mi.pszService=MS_AUTHREQ;
+ mi.hIcon=( HICON )CallService( MS_SKIN2_GETICON, 0, (LPARAM)"miex_authorization");
+ hmenuAuthReq=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi);
+
+ mi.position++;
+ mi.ptszName=LPGENT("Copy ID");
+ mi.pszService=MS_COPYID;
+ hmenuCopyID=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi);
+
+ mi.position++;
+ mi.ptszName=LPGENT("Browse Received Files");
+ mi.pszService=MS_RECVFILES;
+ mi.hIcon=( HICON )CallService( MS_SKIN2_GETICON, 0, (LPARAM)"miex_recfiles");
+ hmenuRecvFiles=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi);
+
+ mi.position++;
+ mi.ptszName=LPGENT("Copy Status Message");
+ mi.pszService=MS_STATUSMSG;
+ mi.hIcon=NULL;//LoadIcon(hinstance, MAKEINTRESOURCE(IDI_ICON5));
+ hmenuStatusMsg=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi);
+
+ mi.position++;
+ mi.ptszName=LPGENT("Copy IP");
+ mi.pszService=MS_COPYIP;
+ hmenuCopyIP=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi);
+
+ mi.position++;
+ mi.ptszName=LPGENT("Copy MirVer");
+ mi.pszService=MS_COPYMIRVER;
+ hmenuCopyMirVer=(HANDLE)CallService(MS_CLIST_ADDCONTACTMENUITEM,0,(LPARAM)&mi);
+
+ hIcon[0] = ( HICON )CallService( MS_SKIN2_GETICON, 0, (LPARAM)"miex_copymver");
+ hIcon[1] = ( HICON )CallService( MS_SKIN2_GETICON, 0, (LPARAM)"miex_vis");
+ hIcon[2] = ( HICON )CallService( MS_SKIN2_GETICON, 0, (LPARAM)"miex_invis");
+ hIcon[3] = MakeHalfAlphaIcon(hIcon[1]);
+ hIcon[4] = MakeHalfAlphaIcon(hIcon[2]);
+
+ hHooks[0] = HookEvent(ME_CLIST_PREBUILDCONTACTMENU,BuildMenu);
+ hHooks[1] = HookEvent(ME_OPT_INITIALISE,OptionsInit);
+ if (bMir_08)
+ hHooks[2] = HookEvent(ME_PROTO_ACCLISTCHANGED, EnumProtoSubmenu);
+ hHooks[3] = HookEvent(ME_MSG_TOOLBARLOADED, TabsrmmButtonsInit);
+ if (hHooks[3])
+ {
+ hHooks[4] = HookEvent(ME_MSG_BUTTONPRESSED, TabsrmmButtonPressed);
+ hHooks[5] = HookEvent(ME_MSG_WINDOWEVENT,ContactWindowOpen);
+ }
+
+ // updater plugin support
+ if(ServiceExists(MS_UPDATE_REGISTERFL)) {
+ CallService(MS_UPDATE_REGISTERFL, (WPARAM)__PLUGIN_ID, (LPARAM)&pluginInfoEx);
+ }
+ return 0;
+}
+
+__declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion)
+{
+ return &pluginInfoEx;
+}
+
+
+__declspec(dllexport) MUUID* MirandaPluginInterfaces(void) {
+ return interfaces;
+}
+
+__declspec(dllexport)int Load(PLUGINLINK *link)
+{
+ pluginLink=link;
+ mir_getMMI( &mmi );
+ hHooks[6] = HookEvent(ME_SYSTEM_MODULESLOADED,PluginInit);
+ return 0;
+}
+
+__declspec(dllexport)int Unload(void)
+{
+ int i;
+ for (i = 0; i < SIZEOF(hHooks); i++)
+ {
+ if (hHooks[i])
+ UnhookEvent(hHooks[i]);
+ }
+ for (i = 0; i < SIZEOF(hServices); i++)
+ {
+ if (hServices[i])
+ DestroyServiceFunction(hServices[i]);
+ }
+
+ DestroyIcon( hIcon[3] );
+ DestroyIcon( hIcon[4] );
+ return 0;
+}
+
+BOOL WINAPI DllMain(HINSTANCE hinst,DWORD fdwReason,LPVOID lpvReserved)
+{
+ hinstance=hinst;
+ return 1;
+}
diff --git a/plugins/MenuItemEx/menuex.dsp b/plugins/MenuItemEx/menuex.dsp
new file mode 100644
index 0000000000..72a6292988
--- /dev/null
+++ b/plugins/MenuItemEx/menuex.dsp
@@ -0,0 +1,131 @@
+# Microsoft Developer Studio Project File - Name="MenuItemEx" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=MenuItemEx - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "menuex.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "menuex.mak" CFG="MenuItemEx - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "MenuItemEx - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "MenuItemEx - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "MenuItemEx - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 1
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "MP_MenuItemEx_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../include" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x407 /d "NDEBUG"
+# ADD RSC /l 0x419 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 user32.lib shell32.lib gdi32.lib msimg32.lib /nologo /base:"0x67100000" /dll /map /machine:I386 /filealign:0x200
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "MenuItemEx - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "MenuItemEx___Win32_Debug"
+# PROP BASE Intermediate_Dir "MenuItemEx___Win32_Debug"
+# PROP BASE Ignore_Export_Lib 1
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "release"
+# PROP Intermediate_Dir "debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /Gi /GX /O2 /YX /FD /c
+# ADD CPP /nologo /MD /W3 /Gi /GX /ZI /Od /FR /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x417 /d "NDEBUG"
+# ADD RSC /l 0x417 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 user32.lib /nologo /base:"0x67100000" /dll /map /machine:I386 /filealign:0x200
+# SUBTRACT BASE LINK32 /pdb:none
+# ADD LINK32 user32.lib /nologo /base:"0x67100000" /dll /incremental:yes /map /debug /machine:I386 /out:"../../debug/menuex.dll" /filealign:0x200
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "MenuItemEx - Win32 Release"
+# Name "MenuItemEx - Win32 Debug"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\images.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\main.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\options.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\menuex.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\resource.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# Begin Source File
+
+SOURCE=.\resource.rc
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/plugins/MenuItemEx/menuex.dsw b/plugins/MenuItemEx/menuex.dsw
new file mode 100644
index 0000000000..b2a6bcebc3
--- /dev/null
+++ b/plugins/MenuItemEx/menuex.dsw
@@ -0,0 +1,29 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "MenuItemEx"=.\menuex.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/plugins/MenuItemEx/menuex.h b/plugins/MenuItemEx/menuex.h
new file mode 100644
index 0000000000..c9f8ddda40
--- /dev/null
+++ b/plugins/MenuItemEx/menuex.h
@@ -0,0 +1,74 @@
+#ifndef MENUEX_H__
+#define MENUEX_H__
+
+#define _CRT_SECURE_NO_DEPRECATE
+#define MIRANDA_VER 0x0700
+
+#include "m_stdhdr.h"
+#include <windows.h>
+#include "resource.h"
+#include <stdio.h>
+#include "newpluginapi.h"
+#include "win2k.h"
+#include "m_system.h"
+#include "m_utils.h"
+#include "m_options.h"
+#include "m_database.h"
+#include "m_langpack.h"
+#include "m_file.h"
+#include "m_clist.h"
+#include "m_protosvc.h"
+#include "m_protomod.h"
+#include "m_clui.h"
+#include "m_ignore.h"
+#include "m_icolib.h"
+#include "m_skin.h"
+#include "m_genmenu.h"
+#include "m_popup.h"
+#include "m_message.h"
+#include "m_updater.h"
+#include "m_fingerprint.h"
+#include "m_metacontacts.h"
+#include "m_msg_buttonsbar.h"
+
+#pragma optimize("gsy",on)
+
+#define VISPLG "MenuItemEx"
+#define MODULENAME VISPLG
+
+#define MIIM_STRING 0x00000040
+
+extern PLUGINLINK *pluginLink;
+extern PLUGININFO pluginInfo;
+extern PLUGININFOEX pluginInfoEx;
+extern MUUID interfaces[];
+
+int OptionsInit(WPARAM,LPARAM);
+
+#define MAX_PROTOS 32
+#define MAX_GROUPS 32
+#define MAX_IDLEN 16
+
+#define VF_VS 0x0001
+#define VF_SMNAME 0x0002
+#define VF_HFL 0x0004
+#define VF_IGN 0x0008
+#define VF_PROTO 0x0010
+#define VF_SHOWID 0x0020
+#define VF_ADD 0x0040
+#define VF_REQ 0x0080
+#define VF_CID 0x0100
+#define VF_RECV 0x0200
+#define VF_STAT 0x0400
+#define VF_CIDN 0x0800
+#define VF_CIP 0x1000
+#define VF_SAI 0x2000
+#define VF_TRIMID 0x4000
+#define VF_CMV 0x8000
+
+#define CTRL_IS_PRESSED (GetAsyncKeyState(VK_CONTROL)&0x8000)
+
+extern const int vf_default;
+extern BOOL bMir_08;
+
+#endif
diff --git a/plugins/MenuItemEx/menuex.rc b/plugins/MenuItemEx/menuex.rc
new file mode 100644
index 0000000000..2609320a22
--- /dev/null
+++ b/plugins/MenuItemEx/menuex.rc
@@ -0,0 +1,174 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include <windows.h>
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Neutral resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
+#ifdef _WIN32
+LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
+#pragma code_page(1251)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_ICON0 ICON "icons\\hide_from_list.ico"
+IDI_ICON1 ICON "icons\\Always Visible.ico"
+IDI_ICON2 ICON "icons\\Never Visible.ico"
+IDI_ICON3 ICON "icons\\copyid_overlay.ico"
+IDI_ICON4 ICON "icons\\auth_added.ico"
+IDI_ICON5 ICON "icons\\auth_ask.ico"
+IDI_ICON6 ICON "icons\\change_proto.ico"
+IDI_ICON7 ICON "icons\\ignore_list.ico"
+IDI_ICON8 ICON "icons\\show_in_list.ico"
+IDI_ICON9 ICON "icons\\msg_status.ico"
+IDI_ICON10 ICON "icons\\msg_xstatus.ico"
+IDI_ICON11 ICON "icons\\copyip_overlay.ico"
+IDI_ICON12 ICON "icons\\recv_files.ico"
+IDI_ICON13 ICON "icons\\CopyMirVer.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_AUTHREQ DIALOGEX 0, 0, 186, 95
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP |
+ WS_VISIBLE | WS_CAPTION
+CAPTION "Enter an authorization request"
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
+BEGIN
+ DEFPUSHBUTTON "&Send",IDOK,34,74,50,14
+ PUSHBUTTON "&Cancel",IDCANCEL,98,74,50,14
+ EDITTEXT IDC_REASON,7,7,172,59,ES_MULTILINE | ES_AUTOVSCROLL |
+ ES_WANTRETURN
+END
+
+IDD_OPTIONS DIALOGEX 0, 0, 280, 183
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE
+EXSTYLE WS_EX_CONTROLPARENT
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
+BEGIN
+ GROUPBOX "Shown menu items",IDC_STATIC,7,7,266,180
+ CONTROL "Visibility",IDC_VIS,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,16,18,77,10
+ CONTROL "Show alpha icons",IDC_SHOWALPHAICONS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,162,18,104,10
+ CONTROL "Hide from list",IDC_HIDE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,16,30,77,10
+ CONTROL "Ignore",IDC_IGNORE,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,16,42,159,10
+ CONTROL "Copy to Account (Ctrl+click for move to Account)",
+ IDC_PROTOS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,54,
+ 192,10
+ CONTROL "Send 'You were added'",IDC_ADDED,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,66,158,10
+ CONTROL "Request Authorization",IDC_AUTHREQ,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,78,157,10
+ CONTROL "Browse Received Files",IDC_RECVFILES,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,90,158,10
+ CONTROL "Copy IP",IDC_COPYIP,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,16,102,157,10
+ CONTROL "Copy MirVer",IDC_COPYMIRVER,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,16,114,157,10
+ CONTROL "Copy Status Message",IDC_STATUSMSG,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,16,126,144,10
+ CONTROL "Add item name",IDC_SMNAME,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,162,126,104,10
+ CONTROL "Copy ID",IDC_COPYID,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,16,138,76,10
+ CONTROL "Add protocol name",IDC_COPYIDNAME,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,162,138,104,10
+ CONTROL "Show ID in menu item",IDC_SHOWID,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,25,150,132,10
+ CONTROL "Trim too long ID",IDC_TRIMID,"Button",BS_AUTOCHECKBOX |
+ WS_TABSTOP,162,150,104,10
+ LTEXT "* Use Ctrl+click to see popup with the copied text",
+ IDC_HINT1,15,164,249,18
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ IDD_AUTHREQ, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 179
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 64
+ END
+
+ IDD_OPTIONS, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 273
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 177
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+ "version.rc\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include <windows.h>\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+#endif // Neutral resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/plugins/MenuItemEx/menuex.vcproj b/plugins/MenuItemEx/menuex.vcproj
new file mode 100644
index 0000000000..1b3a2488a0
--- /dev/null
+++ b/plugins/MenuItemEx/menuex.vcproj
@@ -0,0 +1,440 @@
+<?xml version="1.0" encoding="windows-1251"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="MenuEx"
+ ProjectGUID="{210DD88D-649B-4695-8C5F-898A4F60A8CE}"
+ SccProjectName=""
+ SccLocalPath="">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)/Plugins"
+ IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ WholeProgramOptimization="TRUE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="3"
+ GlobalOptimizations="TRUE"
+ InlineFunctionExpansion="1"
+ FavorSizeOrSpeed="2"
+ OmitFramePointers="FALSE"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ StringPooling="TRUE"
+ ExceptionHandling="FALSE"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="3"
+ PrecompiledHeaderThrough="menuex.h"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="TRUE"
+ AdditionalOptions="/filealign:0x200"
+ AdditionalDependencies="vc7to6.lib msimg32.lib"
+ SuppressStartupBanner="TRUE"
+ AdditionalLibraryDirectories="../../lib"
+ IgnoreAllDefaultLibraries="TRUE"
+ GenerateDebugInformation="TRUE"
+ GenerateMapFile="FALSE"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ OptimizeForWindows98="1"
+ BaseAddress="0x67100000"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/menuex.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1047"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)/Plugins"
+ IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ ExceptionHandling="FALSE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ BufferSecurityCheck="TRUE"
+ UsePrecompiledHeader="3"
+ PrecompiledHeaderThrough="menuex.h"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="msimg32.lib"
+ LinkIncremental="2"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ GenerateMapFile="TRUE"
+ BaseAddress="0x67100000"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\release/menuex.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1047"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Debug Unicode|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)/Plugins"
+ IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="1">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ ExceptionHandling="FALSE"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ BufferSecurityCheck="TRUE"
+ UsePrecompiledHeader="3"
+ PrecompiledHeaderThrough="menuex.h"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="TRUE"
+ AdditionalDependencies="msimg32.lib"
+ LinkIncremental="2"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ GenerateMapFile="TRUE"
+ BaseAddress="0x67100000"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\release/menuex.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1047"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release Unicode|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)/Plugins"
+ IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE"
+ CharacterSet="1"
+ WholeProgramOptimization="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="3"
+ GlobalOptimizations="TRUE"
+ FavorSizeOrSpeed="2"
+ OmitFramePointers="FALSE"
+ OptimizeForProcessor="0"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ StringPooling="TRUE"
+ ExceptionHandling="FALSE"
+ RuntimeLibrary="2"
+ BufferSecurityCheck="TRUE"
+ UsePrecompiledHeader="3"
+ PrecompiledHeaderThrough="menuex.h"
+ WarningLevel="3"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="3"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="TRUE"
+ AdditionalOptions="/filealign:0x200"
+ AdditionalDependencies="vc7to6.lib msimg32.lib"
+ AdditionalLibraryDirectories="../../lib"
+ IgnoreAllDefaultLibraries="TRUE"
+ GenerateDebugInformation="TRUE"
+ GenerateMapFile="FALSE"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ OptimizeForWindows98="1"
+ BaseAddress="0x67100000"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/menuex.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1047"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+ <File
+ RelativePath=".\images.c">
+ </File>
+ <File
+ RelativePath="main.c">
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug Unicode|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release Unicode|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ UsePrecompiledHeader="1"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="options.c">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl">
+ <File
+ RelativePath="menuex.h">
+ </File>
+ <File
+ RelativePath="resource.h">
+ </File>
+ <File
+ RelativePath=".\version.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+ <File
+ RelativePath=".\icons\Always Visible.ico">
+ </File>
+ <File
+ RelativePath=".\icons\auth_added.ico">
+ </File>
+ <File
+ RelativePath=".\icons\auth_ask.ico">
+ </File>
+ <File
+ RelativePath=".\icons\change_proto.ico">
+ </File>
+ <File
+ RelativePath=".\icons\CopyID_overlay.ico">
+ </File>
+ <File
+ RelativePath=".\icons\copyip_overlay.ico">
+ </File>
+ <File
+ RelativePath=".\icons\CopyMirVer.ico">
+ </File>
+ <File
+ RelativePath=".\icons\hide_from_list.ico">
+ </File>
+ <File
+ RelativePath=".\icons\Ignore_list.ico">
+ </File>
+ <File
+ RelativePath=".\menuex.rc">
+ <FileConfiguration
+ Name="Release|Win32"
+ ExcludedFromBuild="TRUE">
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="TRUE">
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug Unicode|Win32"
+ ExcludedFromBuild="TRUE">
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release Unicode|Win32"
+ ExcludedFromBuild="TRUE">
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath=".\icons\msg_status.ico">
+ </File>
+ <File
+ RelativePath=".\icons\msg_xStatus.ico">
+ </File>
+ <File
+ RelativePath=".\icons\Never Visible.ico">
+ </File>
+ <File
+ RelativePath=".\icons\recv_files.ico">
+ </File>
+ <File
+ RelativePath="resource.rc">
+ </File>
+ <File
+ RelativePath=".\icons\show_in_list.ico">
+ </File>
+ <File
+ RelativePath=".\version.rc">
+ <FileConfiguration
+ Name="Release|Win32"
+ ExcludedFromBuild="TRUE">
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ ExcludedFromBuild="TRUE">
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug Unicode|Win32"
+ ExcludedFromBuild="TRUE">
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release Unicode|Win32"
+ ExcludedFromBuild="TRUE">
+ <Tool
+ Name="VCResourceCompilerTool"/>
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/plugins/MenuItemEx/menuex_10.sln b/plugins/MenuItemEx/menuex_10.sln
new file mode 100644
index 0000000000..03efc10abb
--- /dev/null
+++ b/plugins/MenuItemEx/menuex_10.sln
@@ -0,0 +1,38 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual C++ Express 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MenuEx", "menuex_10.vcxproj", "{210DD88D-649B-4695-8C5F-898A4F60A8CE}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug Unicode|Win32 = Debug Unicode|Win32
+ Debug Unicode|x64 = Debug Unicode|x64
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release Unicode|Win32 = Release Unicode|Win32
+ Release Unicode|x64 = Release Unicode|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {210DD88D-649B-4695-8C5F-898A4F60A8CE}.Debug Unicode|Win32.ActiveCfg = Debug Unicode|Win32
+ {210DD88D-649B-4695-8C5F-898A4F60A8CE}.Debug Unicode|Win32.Build.0 = Debug Unicode|Win32
+ {210DD88D-649B-4695-8C5F-898A4F60A8CE}.Debug Unicode|x64.ActiveCfg = Debug Unicode|x64
+ {210DD88D-649B-4695-8C5F-898A4F60A8CE}.Debug Unicode|x64.Build.0 = Debug Unicode|x64
+ {210DD88D-649B-4695-8C5F-898A4F60A8CE}.Debug|Win32.ActiveCfg = Debug|Win32
+ {210DD88D-649B-4695-8C5F-898A4F60A8CE}.Debug|Win32.Build.0 = Debug|Win32
+ {210DD88D-649B-4695-8C5F-898A4F60A8CE}.Debug|x64.ActiveCfg = Debug|x64
+ {210DD88D-649B-4695-8C5F-898A4F60A8CE}.Debug|x64.Build.0 = Debug|x64
+ {210DD88D-649B-4695-8C5F-898A4F60A8CE}.Release Unicode|Win32.ActiveCfg = Release Unicode|Win32
+ {210DD88D-649B-4695-8C5F-898A4F60A8CE}.Release Unicode|Win32.Build.0 = Release Unicode|Win32
+ {210DD88D-649B-4695-8C5F-898A4F60A8CE}.Release Unicode|x64.ActiveCfg = Release Unicode|x64
+ {210DD88D-649B-4695-8C5F-898A4F60A8CE}.Release Unicode|x64.Build.0 = Release Unicode|x64
+ {210DD88D-649B-4695-8C5F-898A4F60A8CE}.Release|Win32.ActiveCfg = Release|Win32
+ {210DD88D-649B-4695-8C5F-898A4F60A8CE}.Release|Win32.Build.0 = Release|Win32
+ {210DD88D-649B-4695-8C5F-898A4F60A8CE}.Release|x64.ActiveCfg = Release|x64
+ {210DD88D-649B-4695-8C5F-898A4F60A8CE}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/plugins/MenuItemEx/menuex_10.vcxproj b/plugins/MenuItemEx/menuex_10.vcxproj
new file mode 100644
index 0000000000..560d5b5d62
--- /dev/null
+++ b/plugins/MenuItemEx/menuex_10.vcxproj
@@ -0,0 +1,554 @@
+<?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 Unicode|Win32">
+ <Configuration>Debug Unicode</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug Unicode|x64">
+ <Configuration>Debug Unicode</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release Unicode|Win32">
+ <Configuration>Release Unicode</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release Unicode|x64">
+ <Configuration>Release Unicode</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectName>MenuEx</ProjectName>
+ <ProjectGuid>{210DD88D-649B-4695-8C5F-898A4F60A8CE}</ProjectGuid>
+ <RootNamespace>MenuItemEx</RootNamespace>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <PlatformToolset>v90</PlatformToolset>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)/Plugins\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)/Obj/$(ProjectName)\</IntDir>
+ <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</IgnoreImportLibrary>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)64/Plugins\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)64/Obj/$(ProjectName)\</IntDir>
+ <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</IgnoreImportLibrary>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)/Plugins\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)/Obj/$(ProjectName)\</IntDir>
+ <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</IgnoreImportLibrary>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)64/Plugins\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)64/Obj/$(ProjectName)\</IntDir>
+ <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</IgnoreImportLibrary>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">$(SolutionDir)$(Configuration)/Plugins\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">$(SolutionDir)$(Configuration)/Obj/$(ProjectName)\</IntDir>
+ <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">true</IgnoreImportLibrary>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">$(SolutionDir)$(Configuration)64/Plugins\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">$(SolutionDir)$(Configuration)64/Obj/$(ProjectName)\</IntDir>
+ <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">true</IgnoreImportLibrary>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">$(SolutionDir)$(Configuration)/Plugins\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">$(SolutionDir)$(Configuration)/Obj/$(ProjectName)\</IntDir>
+ <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">true</IgnoreImportLibrary>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">$(SolutionDir)$(Configuration)64/Plugins\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">$(SolutionDir)$(Configuration)64/Obj/$(ProjectName)\</IntDir>
+ <IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">true</IgnoreImportLibrary>
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+ <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AllRules.ruleset</CodeAnalysisRuleSet>
+ <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+ <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>.\Release/menuex.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0417</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalOptions>/filealign:0x200 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalDependencies>msimg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalManifestDependencies>type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27X86%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies)</AdditionalManifestDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateMapFile>true</GenerateMapFile>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+ <BaseAddress>0x67100000</BaseAddress>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\Release/menuex.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0417</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalOptions>/filealign:0x200 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalDependencies>msimg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <AdditionalManifestDependencies>type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27X86%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies)</AdditionalManifestDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateMapFile>true</GenerateMapFile>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+ <BaseAddress>0x67100000</BaseAddress>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>.\release/menuex.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0417</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>msimg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateMapFile>true</GenerateMapFile>
+ <BaseAddress>0x67100000</BaseAddress>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\release/menuex.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0417</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>msimg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateMapFile>true</GenerateMapFile>
+ <BaseAddress>0x67100000</BaseAddress>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>.\release/menuex.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0417</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>msimg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateMapFile>true</GenerateMapFile>
+ <BaseAddress>0x67100000</BaseAddress>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\release/menuex.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0417</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalDependencies>msimg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateMapFile>true</GenerateMapFile>
+ <BaseAddress>0x67100000</BaseAddress>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>.\Release/menuex.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0417</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalOptions>/filealign:0x200 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalDependencies>msimg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalManifestDependencies>type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27X86%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies)</AdditionalManifestDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+ <BaseAddress>0x67100000</BaseAddress>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX86</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>X64</TargetEnvironment>
+ <TypeLibraryName>.\Release/menuex.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
+ <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <StringPooling>true</StringPooling>
+ <ExceptionHandling>
+ </ExceptionHandling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>
+ </PrecompiledHeader>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0417</Culture>
+ </ResourceCompile>
+ <Link>
+ <AdditionalOptions>/filealign:0x200 %(AdditionalOptions)</AdditionalOptions>
+ <AdditionalDependencies>msimg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalManifestDependencies>type=%27Win32%27 name=%27Microsoft.Windows.Common-Controls%27 version=%276.0.0.0%27 processorArchitecture=%27X86%27 publicKeyToken=%276595b64144ccf1df%27 language=%27*%27;%(AdditionalManifestDependencies)</AdditionalManifestDependencies>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+ <BaseAddress>0x67100000</BaseAddress>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <TargetMachine>MachineX64</TargetMachine>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="images.c" />
+ <ClCompile Include="main.c">
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">Disabled</Optimization>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">Disabled</Optimization>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">MaxSpeed</Optimization>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">MaxSpeed</Optimization>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+ </ClCompile>
+ <ClCompile Include="options.c">
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">Disabled</Optimization>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">Disabled</Optimization>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">MaxSpeed</Optimization>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">MaxSpeed</Optimization>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="menuex.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="version.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="resource.rc">
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">_WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ </ResourceCompile>
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/plugins/MenuItemEx/menuex_10.vcxproj.filters b/plugins/MenuItemEx/menuex_10.vcxproj.filters
new file mode 100644
index 0000000000..195d7c544c
--- /dev/null
+++ b/plugins/MenuItemEx/menuex_10.vcxproj.filters
@@ -0,0 +1,44 @@
+<?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>{a5d3095f-4b53-4f0d-aa86-7c1c110d5f16}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{508e535b-c848-4435-acaa-246bb95fa9f9}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{520ce12c-5f98-47c6-a52a-2c46665efddd}</UniqueIdentifier>
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="images.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="main.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="options.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="menuex.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="resource.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="version.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="resource.rc">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/plugins/MenuItemEx/menuex_8.vcproj b/plugins/MenuItemEx/menuex_8.vcproj
new file mode 100644
index 0000000000..899aee49a8
--- /dev/null
+++ b/plugins/MenuItemEx/menuex_8.vcproj
@@ -0,0 +1,500 @@
+<?xml version="1.0" encoding="windows-1251"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8,00"
+ Name="MenuEx"
+ ProjectGUID="{210DD88D-649B-4695-8C5F-898A4F60A8CE}"
+ RootNamespace="MenuItemEx"
+ SccProjectName=""
+ SccLocalPath=""
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)/Plugins"
+ IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/menuex.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="3"
+ InlineFunctionExpansion="1"
+ FavorSizeOrSpeed="2"
+ OmitFramePointers="true"
+ WholeProgramOptimization="true"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ StringPooling="true"
+ ExceptionHandling="0"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1047"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="true"
+ AdditionalOptions="/filealign:0x200"
+ AdditionalDependencies="msimg32.lib"
+ LinkIncremental="0"
+ SuppressStartupBanner="true"
+ AdditionalManifestDependencies="type=&apos;Win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; processorArchitecture=&apos;X86&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos;"
+ GenerateMapFile="true"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ OptimizeForWindows98="1"
+ BaseAddress="0x67100000"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)/Plugins"
+ IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\release/menuex.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ ExceptionHandling="0"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1047"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="msimg32.lib"
+ LinkIncremental="2"
+ SuppressStartupBanner="true"
+ GenerateDebugInformation="true"
+ GenerateMapFile="true"
+ BaseAddress="0x67100000"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug Unicode|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)/Plugins"
+ IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\release/menuex.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ ExceptionHandling="0"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1047"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="msimg32.lib"
+ LinkIncremental="2"
+ SuppressStartupBanner="true"
+ GenerateDebugInformation="true"
+ GenerateMapFile="true"
+ BaseAddress="0x67100000"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release Unicode|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)/Plugins"
+ IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/menuex.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="3"
+ InlineFunctionExpansion="1"
+ FavorSizeOrSpeed="2"
+ WholeProgramOptimization="true"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ StringPooling="true"
+ ExceptionHandling="0"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1047"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="true"
+ AdditionalOptions="/filealign:0x200"
+ AdditionalDependencies="msimg32.lib"
+ LinkIncremental="0"
+ SuppressStartupBanner="true"
+ AdditionalManifestDependencies="type=&apos;Win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; processorArchitecture=&apos;X86&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos;"
+ GenerateMapFile="true"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ OptimizeForWindows98="1"
+ BaseAddress="0x67100000"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+ >
+ <File
+ RelativePath=".\images.c"
+ >
+ </File>
+ <File
+ RelativePath="main.c"
+ >
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug Unicode|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release Unicode|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="options.c"
+ >
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug Unicode|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release Unicode|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl"
+ >
+ <File
+ RelativePath="menuex.h"
+ >
+ </File>
+ <File
+ RelativePath="resource.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+ >
+ <File
+ RelativePath="resource.rc"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/plugins/MenuItemEx/menuex_9.vcproj b/plugins/MenuItemEx/menuex_9.vcproj
new file mode 100644
index 0000000000..dabc2b2e7e
--- /dev/null
+++ b/plugins/MenuItemEx/menuex_9.vcproj
@@ -0,0 +1,958 @@
+<?xml version="1.0" encoding="windows-1251"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="MenuEx"
+ ProjectGUID="{210DD88D-649B-4695-8C5F-898A4F60A8CE}"
+ RootNamespace="MenuItemEx"
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)/Plugins"
+ IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/menuex.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="3"
+ InlineFunctionExpansion="1"
+ FavorSizeOrSpeed="2"
+ WholeProgramOptimization="true"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ StringPooling="true"
+ ExceptionHandling="0"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1047"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="true"
+ AdditionalOptions="/filealign:0x200"
+ AdditionalDependencies="msimg32.lib"
+ SuppressStartupBanner="true"
+ AdditionalManifestDependencies="type=&apos;Win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; processorArchitecture=&apos;X86&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos;"
+ GenerateDebugInformation="true"
+ GenerateMapFile="false"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ OptimizeForWindows98="0"
+ LinkTimeCodeGeneration="1"
+ BaseAddress="0x67100000"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="$(IntDir)/$(TargetName).lib"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="$(SolutionDir)\$(ConfigurationName) $(PlatformName)\Plugins"
+ IntermediateDirectory="$(SolutionDir)\$(ConfigurationName) $(PlatformName)\Obj"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="3"
+ TypeLibraryName=".\Release/menuex.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="3"
+ InlineFunctionExpansion="1"
+ FavorSizeOrSpeed="2"
+ WholeProgramOptimization="true"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ StringPooling="true"
+ ExceptionHandling="0"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1047"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="true"
+ AdditionalOptions="/filealign:0x200"
+ AdditionalDependencies="msimg32.lib"
+ SuppressStartupBanner="true"
+ AdditionalManifestDependencies="type=&apos;Win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; processorArchitecture=&apos;X86&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos;"
+ GenerateDebugInformation="true"
+ GenerateMapFile="true"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ OptimizeForWindows98="0"
+ LinkTimeCodeGeneration="1"
+ BaseAddress="0x67100000"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="$(IntDir)/$(TargetName).lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)/Plugins"
+ IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\release/menuex.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ ExceptionHandling="0"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1047"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="true"
+ AdditionalDependencies="msimg32.lib"
+ SuppressStartupBanner="true"
+ GenerateDebugInformation="true"
+ GenerateMapFile="true"
+ BaseAddress="0x67100000"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="$(IntDir)/$(TargetName).lib"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="$(SolutionDir)\$(ConfigurationName) $(PlatformName)\Plugins"
+ IntermediateDirectory="$(SolutionDir)\$(ConfigurationName) $(PlatformName)\Obj"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="3"
+ TypeLibraryName=".\release/menuex.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ ExceptionHandling="0"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1047"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="true"
+ AdditionalDependencies="msimg32.lib"
+ SuppressStartupBanner="true"
+ GenerateDebugInformation="true"
+ GenerateMapFile="true"
+ BaseAddress="0x67100000"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="$(IntDir)/$(TargetName).lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug Unicode|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)/Plugins"
+ IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\release/menuex.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ ExceptionHandling="0"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="4"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1047"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="true"
+ AdditionalDependencies="msimg32.lib"
+ SuppressStartupBanner="true"
+ GenerateDebugInformation="true"
+ GenerateMapFile="true"
+ BaseAddress="0x67100000"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="$(IntDir)/$(TargetName).lib"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug Unicode|x64"
+ OutputDirectory="$(SolutionDir)\$(ConfigurationName) $(PlatformName)\Plugins"
+ IntermediateDirectory="$(SolutionDir)\$(ConfigurationName) $(PlatformName)\Obj"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="3"
+ TypeLibraryName=".\release/menuex.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ ExceptionHandling="0"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1047"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="true"
+ AdditionalDependencies="msimg32.lib"
+ OutputFile="$(OutDir)\Plugins\$(ProjectName).dll"
+ SuppressStartupBanner="true"
+ GenerateDebugInformation="true"
+ GenerateMapFile="true"
+ BaseAddress="0x67100000"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="$(IntDir)/$(TargetName).lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release Unicode|Win32"
+ OutputDirectory="$(SolutionDir)$(ConfigurationName)/Plugins"
+ IntermediateDirectory="$(SolutionDir)$(ConfigurationName)/Obj"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/menuex.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="3"
+ InlineFunctionExpansion="1"
+ FavorSizeOrSpeed="2"
+ WholeProgramOptimization="true"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ StringPooling="true"
+ ExceptionHandling="0"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1047"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="true"
+ AdditionalOptions="/filealign:0x200"
+ AdditionalDependencies="msimg32.lib"
+ AdditionalManifestDependencies="type=&apos;Win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; processorArchitecture=&apos;X86&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos;"
+ GenerateDebugInformation="true"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ LinkTimeCodeGeneration="1"
+ BaseAddress="0x67100000"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="$(IntDir)/$(TargetName).lib"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release Unicode|x64"
+ OutputDirectory="$(SolutionDir)\$(ConfigurationName) $(PlatformName)\Plugins"
+ IntermediateDirectory="$(SolutionDir)\$(ConfigurationName) $(PlatformName)\Obj"
+ ConfigurationType="2"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="3"
+ TypeLibraryName=".\Release/menuex.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="3"
+ InlineFunctionExpansion="1"
+ FavorSizeOrSpeed="2"
+ WholeProgramOptimization="true"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ StringPooling="true"
+ ExceptionHandling="0"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ Detect64BitPortabilityProblems="false"
+ DebugInformationFormat="3"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1047"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="true"
+ AdditionalOptions="/filealign:0x200"
+ AdditionalDependencies="msimg32.lib"
+ OutputFile="$(OutDir)\$(ProjectName).dll"
+ AdditionalManifestDependencies="type=&apos;Win32&apos; name=&apos;Microsoft.Windows.Common-Controls&apos; version=&apos;6.0.0.0&apos; processorArchitecture=&apos;X86&apos; publicKeyToken=&apos;6595b64144ccf1df&apos; language=&apos;*&apos;"
+ GenerateDebugInformation="true"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ LinkTimeCodeGeneration="1"
+ BaseAddress="0x67100000"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary="$(IntDir)/$(TargetName).lib"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+ >
+ <File
+ RelativePath=".\images.c"
+ >
+ </File>
+ <File
+ RelativePath="main.c"
+ >
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|x64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug Unicode|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug Unicode|x64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release Unicode|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release Unicode|x64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="options.c"
+ >
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|x64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug Unicode|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug Unicode|x64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release Unicode|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release Unicode|x64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl"
+ >
+ <File
+ RelativePath="menuex.h"
+ >
+ </File>
+ <File
+ RelativePath="resource.h"
+ >
+ </File>
+ <File
+ RelativePath=".\version.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+ >
+ <File
+ RelativePath="resource.rc"
+ >
+ <FileConfiguration
+ Name="Debug Unicode|x64"
+ >
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_WIN64"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release Unicode|x64"
+ >
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_WIN64"
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/plugins/MenuItemEx/options.c b/plugins/MenuItemEx/options.c
new file mode 100644
index 0000000000..38aff12beb
--- /dev/null
+++ b/plugins/MenuItemEx/options.c
@@ -0,0 +1,132 @@
+#include "menuex.h"
+
+
+extern HINSTANCE hinstance;
+
+struct {
+ int idc;
+ int flag;
+}
+static const checkboxes[]={
+ { IDC_COPYID, VF_CID },
+ { IDC_STATUSMSG, VF_STAT },
+ { IDC_COPYIP, VF_CIP },
+ { IDC_COPYMIRVER, VF_CMV },
+ { IDC_VIS, VF_VS },
+ { IDC_SHOWALPHAICONS, VF_SAI },
+ { IDC_HIDE, VF_HFL },
+ { IDC_IGNORE, VF_IGN },
+ { IDC_PROTOS, VF_PROTO },
+ { IDC_ADDED, VF_ADD },
+ { IDC_AUTHREQ, VF_REQ },
+ { IDC_SHOWID, VF_SHOWID },
+ { IDC_COPYIDNAME, VF_CIDN },
+ { IDC_RECVFILES, VF_RECV },
+ { IDC_SMNAME, VF_SMNAME },
+ { IDC_TRIMID, VF_TRIMID }
+};
+
+INT_PTR CALLBACK OptionsProc(HWND hdlg,UINT msg,WPARAM wparam,LPARAM lparam)
+{
+ WORD flags=DBGetContactSettingWord(NULL,VISPLG,"flags",vf_default);
+ TCHAR buffer[64] = {0};
+ int i;
+
+ switch(msg)
+ {
+ case WM_INITDIALOG:
+
+ TranslateDialogDefault(hdlg);
+
+ for (i = 0; i < SIZEOF(checkboxes); i++)
+ {
+ CheckDlgButton(hdlg, checkboxes[i].idc, (flags & checkboxes[i].flag) ? BST_CHECKED : BST_UNCHECKED);
+ }
+
+ if (ServiceExists(MS_POPUP_ADDPOPUP))
+ {
+ for (i = 0; i < 4; i++)
+ {
+ GetDlgItemText(hdlg, checkboxes[i].idc, buffer, SIZEOF(buffer) - 3);
+ _tcscat(buffer, _T(" *"));
+ SetDlgItemText(hdlg, checkboxes[i].idc, buffer);
+ }
+ }
+ else
+ ShowWindow(GetDlgItem(hdlg, IDC_HINT1), SW_HIDE);
+
+ if (!bMir_08)
+ EnableWindow(GetDlgItem(hdlg,IDC_PROTOS), 0);
+
+ SendMessage(hdlg, WM_USER + 50, 0, 0);
+ return 0;
+
+ case WM_USER+50:
+
+ EnableWindow(GetDlgItem(hdlg,IDC_SHOWALPHAICONS),
+ IsDlgButtonChecked(hdlg,IDC_VIS) == BST_CHECKED);
+ EnableWindow(GetDlgItem(hdlg,IDC_COPYIDNAME),
+ IsDlgButtonChecked(hdlg,IDC_COPYID) == BST_CHECKED);
+ EnableWindow(GetDlgItem(hdlg,IDC_SHOWID),
+ IsDlgButtonChecked(hdlg,IDC_COPYID) == BST_CHECKED);
+ EnableWindow(GetDlgItem(hdlg,IDC_TRIMID),
+ (IsDlgButtonChecked(hdlg,IDC_COPYID) == BST_CHECKED && IsDlgButtonChecked(hdlg,IDC_SHOWID) == BST_CHECKED));
+ EnableWindow(GetDlgItem(hdlg,IDC_SMNAME),
+ IsDlgButtonChecked(hdlg,IDC_STATUSMSG) == BST_CHECKED);
+ return 1;
+
+ case WM_NOTIFY:
+ switch(((LPNMHDR)lparam)->code){
+ case PSN_APPLY:
+ {
+ WORD mod_flags=0;
+
+ for (i = 0; i < SIZEOF(checkboxes); i++)
+ {
+ mod_flags |= IsDlgButtonChecked(hdlg, checkboxes[i].idc) ? checkboxes[i].flag : 0;
+ }
+
+ //DBDeleteContactSetting(NULL,VISPLG,"flags");
+ DBWriteContactSettingWord(NULL,VISPLG,"flags",mod_flags);
+
+ return 1;
+ }
+ }
+ break;
+
+ case WM_COMMAND:
+ if(HIWORD(wparam)==BN_CLICKED && GetFocus()==(HWND)lparam) {
+ SendMessage(GetParent(hdlg),PSM_CHANGED,0,0);
+ if (LOWORD(wparam) == IDC_VIS ||
+ LOWORD(wparam) == IDC_COPYID ||
+ LOWORD(wparam) == IDC_STATUSMSG ||
+ LOWORD(wparam) == IDC_SHOWID) {
+
+ SendMessage(hdlg, WM_USER + 50, 0, 0);
+ }
+ }
+ return 0;
+
+ case WM_CLOSE:
+ EndDialog(hdlg,0);
+ return 0;
+ }
+ return 0;
+}
+
+int OptionsInit(WPARAM wparam,LPARAM lparam)
+{
+ OPTIONSDIALOGPAGE odp={0};
+
+ odp.cbSize=sizeof(odp);
+ odp.position=955000000;
+ odp.hInstance=hinstance;
+ odp.pszTemplate=MAKEINTRESOURCEA(IDD_OPTIONS);
+ odp.ptszTitle= _T(MODULENAME);
+ odp.pfnDlgProc=OptionsProc;
+ odp.ptszGroup=_T("Customize");
+ odp.flags=ODPF_BOLDGROUPS | ODPF_TCHAR;
+
+ CallService(MS_OPT_ADDPAGE,wparam,(LPARAM)&odp);
+ return 0;
+}
diff --git a/plugins/MenuItemEx/resource.h b/plugins/MenuItemEx/resource.h
new file mode 100644
index 0000000000..c2f0ffea16
--- /dev/null
+++ b/plugins/MenuItemEx/resource.h
@@ -0,0 +1,50 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by menuex.rc
+//
+#define IDD_OPTIONS 101
+#define IDD_AUTHREQ 103
+#define IDI_ICON0 110
+#define IDI_ICON1 111
+#define IDI_ICON2 112
+#define IDI_ICON3 113
+#define IDI_ICON4 114
+#define IDI_ICON5 115
+#define IDI_ICON6 116
+#define IDI_ICON7 117
+#define IDI_ICON8 118
+#define IDI_ICON9 119
+#define IDI_ICON10 120
+#define IDI_ICON11 121
+#define IDI_ICON12 122
+#define IDI_ICON13 123
+#define IDC_VIS 1000
+#define IDC_REASON 1001
+#define IDC_HIDE 1002
+#define IDC_IGNORE 1003
+#define IDC_PROTOS 1004
+#define IDC_ADDED 1006
+#define IDC_AUTHREQ 1007
+#define IDC_COPYID 1008
+#define IDC_RECVFILES 1009
+#define IDC_STATUSMSG 1010
+#define IDC_COPYIDNAME 1011
+#define IDC_COPYIP 1012
+#define IDC_SHOWALPHAICONS 1013
+#define IDC_SMNAME 1014
+#define IDC_COPYMIRVER 1015
+#define IDC_HINT1 1016
+#define IDC_SHOWID 1017
+#define IDC_TRIMID 1018
+#define IDC_STATIC -1
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 124
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1017
+#define _APS_NEXT_SYMED_VALUE 125
+#endif
+#endif
diff --git a/plugins/MenuItemEx/resource.rc b/plugins/MenuItemEx/resource.rc
new file mode 100644
index 0000000000..0c167a2251
--- /dev/null
+++ b/plugins/MenuItemEx/resource.rc
@@ -0,0 +1,2 @@
+#include "menuex.rc"
+#include "version.rc"
diff --git a/plugins/MenuItemEx/version.h b/plugins/MenuItemEx/version.h
new file mode 100644
index 0000000000..12596016db
--- /dev/null
+++ b/plugins/MenuItemEx/version.h
@@ -0,0 +1,32 @@
+#define __FILEVERSION_STRING 1,3,0,8
+#define __VERSION_STRING "1.3.0.8"
+#define __VERSION_DWORD 0x01030008
+
+#if defined (_WIN64)
+#define __PLUGIN_NAME "MenuItemEx (x64) plugin for Miranda IM"
+#define __PLUGIN_ID 4304
+#define __PLUGIN_ID_STR "4304"
+#elif (_UNICODE)
+#define __PLUGIN_NAME "MenuItemEx (Unicode) plugin for Miranda IM"
+#define __PLUGIN_ID 4036
+#define __PLUGIN_ID_STR "4036"
+#else
+#define __PLUGIN_NAME "MenuItemEx plugin for Miranda IM"
+#define __PLUGIN_ID 4303
+#define __PLUGIN_ID_STR "4303"
+#endif
+
+#define __WEB "http://addons.miranda-im.org/details.php?action=viewfile&id="
+
+#define __DESC "Adds some useful options to a contacts menu."
+#define __AUTHORS "Heiko Schillinger, Baloo, Billy_Bons"
+#define __EMAIL "micron@nexgo.de, baloo@bk.ru, tatarinov.sergey@gmail.com"
+#define __COPYRIGHTS "© 2001-03 Heiko Schillinger, © 2006-08 Baloo, © 2009-10 Billy_Bons"
+
+#ifdef _UNICODE
+// {b1902a52-9114-4d7e-ac2e-b3a52e01d574}
+#define MIID_MENUEX {0xb1902a52, 0x9114, 0x4d7e, { 0xac, 0x2e, 0xb3, 0xa5, 0x2e, 0x01, 0xd5, 0x74 }}
+#else
+// {0C9B8DDC-4894-4b28-ADF2-FAC071BBBD53}
+#define MIID_MENUEX {0xc9b8ddc, 0x4894, 0x4b28, { 0xad, 0xf2, 0xfa, 0xc0, 0x71, 0xbb, 0xbd, 0x53 }}
+#endif
diff --git a/plugins/MenuItemEx/version.rc b/plugins/MenuItemEx/version.rc
new file mode 100644
index 0000000000..de21f46d67
--- /dev/null
+++ b/plugins/MenuItemEx/version.rc
@@ -0,0 +1,38 @@
+#include "version.h"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION __FILEVERSION_STRING
+ PRODUCTVERSION __FILEVERSION_STRING
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "FileDescription", __PLUGIN_NAME
+ VALUE "FileVersion", __VERSION_STRING
+ VALUE "InternalName", "menuex"
+ VALUE "LegalCopyright", __COPYRIGHTS
+ VALUE "OriginalFilename", "menuex.dll"
+ VALUE "ProductName", "menuex"
+ VALUE "ProductVersion", __VERSION_STRING
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END