summaryrefslogtreecommitdiff
path: root/plugins/Console
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/Console
parent5c350913f011e119127baeb32a6aedeb4f0d33bc (diff)
initial commit
git-svn-id: http://svn.miranda-ng.org/main/trunk@2 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/Console')
-rw-r--r--plugins/Console/Console.c1538
-rw-r--r--plugins/Console/Console.dsp363
-rw-r--r--plugins/Console/Console.dsw33
-rw-r--r--plugins/Console/Console.optbin0 -> 49664 bytes
-rw-r--r--plugins/Console/Console.plg49
-rw-r--r--plugins/Console/Console.sln40
-rw-r--r--plugins/Console/Console.vcproj634
-rw-r--r--plugins/Console/Console.vcxproj609
-rw-r--r--plugins/Console/Console.vcxproj.filters103
-rw-r--r--plugins/Console/Console_history.txt174
-rw-r--r--plugins/Console/Console_readme.txt21
-rw-r--r--plugins/Console/commonheaders.c24
-rw-r--r--plugins/Console/commonheaders.h69
-rw-r--r--plugins/Console/gpl.txt340
-rw-r--r--plugins/Console/init.c87
-rw-r--r--plugins/Console/res/arrow.icobin0 -> 422 bytes
-rw-r--r--plugins/Console/res/btn_dn.icobin0 -> 894 bytes
-rw-r--r--plugins/Console/res/btn_up.icobin0 -> 894 bytes
-rw-r--r--plugins/Console/res/close.icobin0 -> 894 bytes
-rw-r--r--plugins/Console/res/close2.icobin0 -> 894 bytes
-rw-r--r--plugins/Console/res/console.icobin0 -> 11502 bytes
-rw-r--r--plugins/Console/res/console_dn.bmpbin0 -> 1014 bytes
-rw-r--r--plugins/Console/res/console_up.bmpbin0 -> 1014 bytes
-rw-r--r--plugins/Console/res/copy.icobin0 -> 894 bytes
-rw-r--r--plugins/Console/res/delete.icobin0 -> 894 bytes
-rw-r--r--plugins/Console/res/empty.icobin0 -> 422 bytes
-rw-r--r--plugins/Console/res/in.icobin0 -> 422 bytes
-rw-r--r--plugins/Console/res/info.icobin0 -> 422 bytes
-rw-r--r--plugins/Console/res/noscroll.icobin0 -> 894 bytes
-rw-r--r--plugins/Console/res/options.icobin0 -> 894 bytes
-rw-r--r--plugins/Console/res/out.icobin0 -> 422 bytes
-rw-r--r--plugins/Console/res/pause.icobin0 -> 894 bytes
-rw-r--r--plugins/Console/res/paused.icobin0 -> 894 bytes
-rw-r--r--plugins/Console/res/save.icobin0 -> 894 bytes
-rw-r--r--plugins/Console/res/scroll.icobin0 -> 894 bytes
-rw-r--r--plugins/Console/res/start.icobin0 -> 894 bytes
-rw-r--r--plugins/Console/res/started.icobin0 -> 894 bytes
-rw-r--r--plugins/Console/resource.h58
-rw-r--r--plugins/Console/resource.rc223
-rw-r--r--plugins/Console/version.h51
40 files changed, 4416 insertions, 0 deletions
diff --git a/plugins/Console/Console.c b/plugins/Console/Console.c
new file mode 100644
index 0000000000..96e56fa3b9
--- /dev/null
+++ b/plugins/Console/Console.c
@@ -0,0 +1,1538 @@
+/*
+
+Miranda IM: the free IM client for Microsoft* Windows*
+
+Copyright 2000-2008 Miranda ICQ/IM project,
+all portions of this codebase are copyrighted to the people
+listed in contributors.txt.
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+#include "commonheaders.h"
+
+#define MS_CONSOLE_SHOW_HIDE "Console/Show/Hide"
+
+// console toptoolbarbutton(old) integration
+#define TTB 1
+
+#define DEFAULT_WRAPLEN 90
+#define MIN_WRAPLEN 25
+#define MAX_WRAPLEN 255
+
+#define MIN_LIMIT 1000
+#define MAX_LIMIT 1000000
+
+#define IMG_EMPTY 0
+#define IMG_ARROW 1
+#define IMG_IN 2
+#define IMG_OUT 3
+#define IMG_INFO 4
+
+#define LOGICONX_SIZE 10
+#define LOGICONY_SIZE 10
+
+#define ICON_FIRST 3
+
+#define ICON_NOSCROLL 1
+#define ICON_PAUSED 2
+#define ICON_SCROLL 3
+#define ICON_STARTED 4
+
+#define HM_DUMP (WM_USER+10)
+#define HM_ADD (WM_USER+11)
+#define HM_REMOVE (WM_USER+12)
+#define HM_SETFONT (WM_USER+13)
+#define HM_SETCOLOR (WM_USER+14)
+#define HM_PAUSEALL (WM_USER+15)
+#define HM_RESTART (WM_USER+16)
+
+
+typedef struct {
+ const char* pszHead;
+ const char* pszMsg;
+} LOGMSG;
+
+
+typedef struct {
+ char szModule[128];
+ TCHAR szMsg[1];
+} DUMPMSG;
+
+
+typedef struct {
+ HWND hwnd;
+ HANDLE hList;
+ char *Module;
+ int Scroll;
+ int Paused;
+ int newline;
+} LOGWIN;
+
+
+struct MM_INTERFACE mmi;
+struct UTF8_INTERFACE utfi;
+struct LIST_INTERFACE li;
+
+static SortedList lModules = {0};
+
+static LOGWIN *pActive = NULL;
+static int tabCount = 0;
+static RECT rcTabs = {0};
+static HWND hTabs = NULL;
+static HWND hwndConsole = NULL;
+
+static HIMAGELIST gImg = NULL;
+static HFONT hfLogFont = NULL;
+
+static int gIcons = 0;
+static int gVisible = 0;
+static int gSingleMode = 0;
+static int gLimit = 0;
+static int gSeparator = 0;
+
+static DWORD gWrapLen = DEFAULT_WRAPLEN;
+
+static DWORD OutMsgs = 0;
+static DWORD InMsgs = 0;
+
+static HICON hIcons[15] = {0};
+static HANDLE hHooks[4] = {0};
+
+static HANDLE hTButton = 0;
+static HANDLE hMenu = NULL;
+
+static void LoadSettings();
+static void ShowConsole(int show);
+static INT_PTR ShowHideConsole(WPARAM wParam, LPARAM lParam);
+static int Openfile(TCHAR *outputFile, int selection);
+
+////////////////////////////////////////////////////////////////////////////////
+
+#ifdef TTB
+static HBITMAP BmpUp = NULL;
+static HBITMAP BmpDn = NULL;
+static HANDLE hTTBButt = 0;
+
+static INT_PTR HideConsoleButt(WPARAM wParam,LPARAM lParam)
+{
+ ShowConsole(0);
+ return 0;
+}
+
+static INT_PTR ShowConsoleButt(WPARAM wParam,LPARAM lParam)
+{
+ ShowConsole(1);
+ return 0;
+}
+
+static int OnTTBLoaded(WPARAM wParam,LPARAM lParam)
+{
+
+ if (IsWindow(hwndConsole))
+ {
+ TTBButton ttbb = {0};
+ int state = IsWindowVisible(hwndConsole);
+
+ CreateServiceFunction("Console/Hide", HideConsoleButt);
+ CreateServiceFunction("Console/Show", ShowConsoleButt);
+
+ BmpUp = LoadBitmap(hInst,MAKEINTRESOURCE(IDB_CONSOLE_UP));
+ BmpDn = LoadBitmap(hInst,MAKEINTRESOURCE(IDB_CONSOLE_DOWN));
+
+ ttbb.cbSize = sizeof(ttbb);
+ ttbb.hbBitmapUp = BmpUp;
+ ttbb.hbBitmapDown = BmpDn;
+ ttbb.dwFlags=(state?TTBBF_PUSHED:0)|TTBBF_VISIBLE|TTBBF_SHOWTOOLTIP;
+ ttbb.pszServiceDown = "Console/Show";
+ ttbb.pszServiceUp = "Console/Hide";
+ ttbb.name = Translate("Show/Hide Console");
+ hTTBButt = (HANDLE)CallService(MS_TTB_ADDBUTTON, (WPARAM)&ttbb, 0);
+
+ if (hTTBButt)
+ {
+ CallService(MS_TTB_SETBUTTONOPTIONS,MAKEWPARAM(TTBO_TIPNAME,hTTBButt),
+ (LPARAM)(state?Translate("Hide Console"):Translate("Show Console")));
+
+ CallService(MS_TTB_SETBUTTONSTATE, (WPARAM)hTTBButt, (LPARAM)(state?TTBST_PUSHED:TTBST_RELEASED));
+ }
+ }
+ return 0;
+}
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+
+void ScrollDown(LOGWIN * dat) {
+ if (dat->Scroll)
+ ListView_EnsureVisible(dat->hList, ListView_GetItemCount( dat->hList ) - 1, FALSE);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+static void ShowConsole(int show)
+{
+ HWND hwnd = NULL;
+
+ if (!hwndConsole || !pActive) return;
+
+ gVisible = show;
+
+ if (show) {
+ hwnd = GetForegroundWindow();
+ if ( InMsgs == OutMsgs )
+ ScrollDown( pActive );
+ }
+ ShowWindow(hwndConsole, (show)?SW_SHOW:SW_HIDE);
+ DBWriteContactSettingByte(NULL,"Console","Show",(BYTE)((show)?1:0));
+
+ if (hwnd)
+ SetForegroundWindow(hwnd);
+
+ if (show)
+ RedrawWindow(pActive->hList, NULL, NULL, RDW_INVALIDATE | RDW_FRAME |RDW_UPDATENOW | RDW_ERASE);
+
+ if (hMenu)
+ {
+ CLISTMENUITEM mi = {0};
+
+ mi.cbSize = sizeof(mi);
+ mi.ptszName=(show)?TranslateT("Hide Console"):TranslateT("Show Console");
+ mi.flags = CMIM_NAME | CMIF_TCHAR;;
+ CallService(MS_CLIST_MODIFYMENUITEM, (WPARAM)hMenu, (LPARAM)&mi);
+ }
+
+ if (hTButton)
+ {
+ CallService(MS_TB_SETBUTTONSTATEBYID, (WPARAM)"console_btn", (show)?TBST_PUSHED:TBST_RELEASED);
+ }
+
+#ifdef TTB
+ if (hTTBButt)
+ {
+ CallService(MS_TTB_SETBUTTONSTATE, (WPARAM)hTTBButt, (show)?TTBST_PUSHED:TTBST_RELEASED);
+ CallService(MS_TTB_SETBUTTONOPTIONS,MAKEWPARAM(TTBO_TIPNAME,hTTBButt),
+ (LPARAM)(show?Translate("Hide Console"):Translate("Show Console")));
+ }
+#endif
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+static INT_PTR ShowHideConsole(WPARAM wParam, LPARAM lParam)
+{
+ if (hwndConsole)
+ ShowConsole(!IsWindowVisible(hwndConsole));
+
+ return 0;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+int LogResize(HWND hwnd,LPARAM lParam,UTILRESIZECONTROL *urc)
+{
+ switch(urc->wId) {
+ case IDC_LIST:
+ ListView_SetColumnWidth(GetDlgItem(hwnd, IDC_LIST), 0, urc->dlgNewSize.cx - 25);
+ return RD_ANCHORX_WIDTH|RD_ANCHORY_HEIGHT;
+ case IDC_STARTALL:
+ case IDC_PAUSEALL:
+ case IDC_CLOSE:
+ return RD_ANCHORX_RIGHT|RD_ANCHORY_TOP;
+ default:
+ return RD_ANCHORX_LEFT|RD_ANCHORY_TOP;
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+typedef struct
+{
+ UINT control;
+ UINT icon;
+ int type;
+ TCHAR *tooltip;
+} controlinfo;
+
+
+static controlinfo ctrls[] =
+{
+ // IDC_SCROLL & IDC_PAUSE must be first
+ {IDC_SCROLL, IDI_SCROLL, BUTTONSETASFLATBTN, _T("Scrolling (Ctrl+Q)")},
+ {IDC_PAUSE, IDI_STARTED, BUTTONSETASFLATBTN, _T("Pause logging(Ctrl+P)")},
+ {IDC_SAVE, IDI_SAVE, BUTTONSETASFLATBTN, _T("Save log to file (Ctrl+S)")},
+ {IDC_COPY, IDI_COPY, BUTTONSETASFLATBTN, _T("Copy selected log (Ctrl+C)")},
+ {IDC_DELETE, IDI_DELETE, BUTTONSETASFLATBTN, _T("Delete selected (Del)")},
+ {IDC_OPTIONS, IDI_OPTIONS, BUTTONSETASFLATBTN, _T("Log options (Ctrl+O)")},
+ {IDC_STARTALL, IDI_START, BUTTONSETASFLATBTN, _T("Start logging in all tabs")},
+ {IDC_PAUSEALL, IDI_PAUSE, BUTTONSETASFLATBTN, _T("Pause logging in all tabs")},
+ {IDC_CLOSE, IDI_CLOSE, BUTTONSETASFLATBTN, _T("Close tab (Ctrl+W)")},
+};
+
+////////////////////////////////////////////////////////////////////////////////
+
+static LRESULT CALLBACK SubclassProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
+{
+ int ctrl = GetKeyState(VK_CONTROL)&0x8000;
+
+ switch (msg) {
+
+ case WM_KEYDOWN:
+ if ( wParam == VK_DELETE && !ctrl) {
+ SendMessage(GetParent(hwnd), WM_COMMAND, IDC_DELETE, 0);
+ break;
+ }
+
+ if (wParam == VK_LEFT && ctrl)
+ {
+ NMHDR nmhdr = {0};
+ int tab = TabCtrl_GetCurSel(hTabs);
+
+ if (tab == 0)
+ tab = TabCtrl_GetItemCount(hTabs)-1;
+ else
+ tab--;
+
+ TabCtrl_SetCurSel(hTabs, tab);
+ nmhdr.code = TCN_SELCHANGE;
+ SendMessage(hwndConsole, WM_NOTIFY, IDC_TABS, (LPARAM)&nmhdr);
+ break;
+ }
+
+ if (wParam == VK_RIGHT && ctrl)
+ {
+ NMHDR nmhdr = {0};
+ int tab = TabCtrl_GetCurSel(hTabs);
+ int count = TabCtrl_GetItemCount(hTabs);
+ tab = (tab + 1) % count;
+
+ TabCtrl_SetCurSel(hTabs, tab);
+ nmhdr.code = TCN_SELCHANGE;
+ SendMessage(hwndConsole, WM_NOTIFY, IDC_TABS, (LPARAM)&nmhdr);
+ break;
+ }
+
+ break;
+
+ case WM_CHAR:
+/*
+ {
+ char t[32];
+ sprintf(t,"%u\n",wParam);
+ OutputDebugStringA(t);
+ }
+*/
+ // CTRL
+ if ( !(GetKeyState(VK_CONTROL)&0x8000) )
+ break;
+
+ switch(wParam) {
+
+ case 1: // Ctrl+A
+ if ( ListView_GetSelectedCount(hwnd) != (UINT)ListView_GetItemCount(hwnd) )
+ ListView_SetItemState(hwnd, -1, LVIS_SELECTED, LVIS_SELECTED);
+ return 0;
+
+ case 3: // Ctrl+D
+ SendMessage(GetParent(hwnd), WM_COMMAND, IDC_COPY, 0);
+ return 0;
+
+ case 15: // Ctrl+O
+ SendMessage(GetParent(hwnd), WM_COMMAND, IDC_OPTIONS, 0);
+ return 0;
+
+ case 16: // Ctrl+P
+ SendMessage(GetParent(hwnd), WM_COMMAND, IDC_PAUSE, 0);
+ return 0;
+
+ case 17: // Ctrl+Q
+ SendMessage(GetParent(hwnd), WM_COMMAND, IDC_SCROLL, 0);
+ return 0;
+
+ case 19: // Ctrl+S
+ SendMessage(GetParent(hwnd), WM_COMMAND, IDC_SAVE, 0);
+ return 0;
+
+ case 23: // Ctrl+W
+ SendMessage(GetParent(hwnd), WM_COMMAND, IDC_CLOSE, 0);
+ return 0;
+ }
+ break;
+ }
+ return CallWindowProc((WNDPROC)GetWindowLong(hwnd, GWLP_USERDATA),hwnd,msg,wParam,lParam);
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+static INT_PTR CALLBACK LogDlgProc(HWND hwndDlg,UINT message,WPARAM wParam,LPARAM lParam)
+{
+
+ LOGWIN *dat = (LOGWIN*)GetWindowLong(hwndDlg, GWLP_USERDATA);
+
+ switch(message) {
+ case WM_INITDIALOG:
+ {
+ dat = (LOGWIN*)lParam;
+
+ dat->hwnd = hwndDlg;
+ dat->Scroll = 1;
+ dat->Paused = 0;
+ dat->hList = GetDlgItem(hwndDlg, IDC_LIST);
+
+ SetWindowLong(hwndDlg, GWLP_USERDATA, (LONG)dat);
+ SetWindowLong(dat->hList, GWLP_USERDATA, SetWindowLong(dat->hList,GWLP_WNDPROC,(LONG)SubclassProc));
+
+ // init buttons
+ {
+ int i;
+ HWND hwnd;
+ for(i = 0; i < SIZEOF(ctrls); i++) {
+ hwnd = GetDlgItem(hwndDlg,ctrls[i].control);
+ SendMessage(hwnd, ctrls[i].type, 0, 0);
+ SendMessage(hwnd, BUTTONADDTOOLTIP,(WPARAM)TranslateTS(ctrls[i].tooltip), BATF_TCHAR);
+ SendMessage(hwnd, BM_SETIMAGE,IMAGE_ICON,(LPARAM)hIcons[i+ICON_FIRST]);
+ }
+ }
+
+ CheckDlgButton(hwndDlg,IDC_SCROLL,dat->Scroll?BST_CHECKED:BST_UNCHECKED);
+ SendDlgItemMessage(hwndDlg,IDC_SCROLL,BM_SETIMAGE,IMAGE_ICON,(LPARAM)hIcons[(dat->Scroll?ICON_SCROLL:ICON_NOSCROLL)]);
+
+ if (gSingleMode)
+ {
+ ShowWindow(GetDlgItem(hwndDlg, IDC_PAUSEALL), SW_HIDE);
+ ShowWindow(GetDlgItem(hwndDlg, IDC_STARTALL), SW_HIDE);
+ ShowWindow(GetDlgItem(hwndDlg, IDC_CLOSE), SW_HIDE);
+ }
+
+ // init listview
+ {
+ LVITEM lvi = {0};
+ LVCOLUMN sLC;
+ //ListView_SetUnicodeFormat(dat->hList, FALSE);
+ ListView_SetImageList(dat->hList, gImg, LVSIL_SMALL);
+ sLC.mask = LVCF_FMT | LVCF_WIDTH;
+ sLC.fmt = LVCFMT_LEFT;
+ sLC.cx = 630;
+ ListView_InsertColumn(dat->hList,0,&sLC);
+ ListView_SetExtendedListViewStyle(dat->hList, LVS_EX_FULLROWSELECT);
+
+ lvi.mask = LVIF_TEXT;
+ if (gIcons)
+ {
+ lvi.mask |= LVIF_IMAGE;
+ lvi.iImage = IMG_INFO;
+ }
+
+ lvi.pszText = TranslateT("*** Console started ***");
+ ListView_InsertItem(dat->hList,&lvi);
+ }
+
+ SendMessage(hwndDlg, WM_SIZE, 0, 0);
+ break;
+ }
+ case HM_DUMP:
+ {
+ // lParam = DUMPMSG
+ if (!lParam) break;
+ if (dat && !dat->Paused)
+ {
+ LVITEM lvi = {0};
+ int last = 0x7fffffff;
+ TCHAR szBreak;
+ DWORD len, tmplen;
+ DWORD wraplen = gWrapLen;
+ TCHAR *str = ((DUMPMSG*)lParam)->szMsg;
+
+ lvi.iItem = 0x7fffffff;
+
+ str = _tcstok(str, _T("\n"));
+
+ if (gIcons && str != NULL)
+ {
+ lvi.mask = LVIF_TEXT | LVIF_IMAGE;
+
+ if (_tcsstr(str, _T("Data received")))
+ {
+ if (gSeparator) ListView_InsertItem(dat->hList, &lvi);
+ lvi.iImage = IMG_IN;
+ }
+ else
+ if (_tcsstr(str, _T("Data sent")))
+ {
+ if (gSeparator) ListView_InsertItem(dat->hList, &lvi);
+ lvi.iImage = IMG_OUT;
+ }
+ else
+ {
+ if (gSeparator && dat->newline)
+ {
+ ListView_InsertItem(dat->hList, &lvi);
+ dat->newline = 0;
+ }
+ lvi.iImage = IMG_INFO;
+ }
+ } else
+ lvi.mask = LVIF_TEXT;
+
+ while (str != NULL)
+ {
+ lvi.pszText = &str[0];
+ tmplen = len = (DWORD)_tcslen(lvi.pszText);
+
+ while(len > wraplen)
+ {
+ szBreak = lvi.pszText[wraplen];
+ lvi.pszText[wraplen] = 0;
+ last = ListView_InsertItem(dat->hList, &lvi);
+ lvi.pszText[wraplen] = szBreak;
+ len -= wraplen;
+ lvi.pszText = &str[0] + tmplen - len;
+
+ dat->newline = 1;
+ lvi.iImage = IMG_EMPTY;
+ }
+
+ if (len && lvi.pszText[len-1] == '\r')
+ lvi.pszText[len-1] = 0;
+
+ last = ListView_InsertItem(dat->hList, &lvi);
+
+ str = _tcstok(NULL, _T("\n"));
+
+ if (str) dat->newline = 1;
+ lvi.iImage = IMG_EMPTY;
+ }
+
+
+ if ( gVisible && dat == pActive && dat->Scroll == 1 )
+ ListView_EnsureVisible(dat->hList, last, FALSE);
+
+ if (last > gLimit)
+ {
+ int idx = last - gLimit + gLimit/4; // leave only 75% of LIMIT
+
+ while (idx >= 0)
+ {
+ ListView_DeleteItem(dat->hList, idx);
+ idx--;
+ }
+ }
+ }
+
+ free((DUMPMSG*)lParam);
+ return TRUE;
+ }
+ case WM_SIZE:
+ {
+ UTILRESIZEDIALOG urd={0};
+ urd.cbSize=sizeof(urd);
+ urd.hInstance=hInst;
+ urd.hwndDlg=hwndDlg;
+ urd.lpTemplate=MAKEINTRESOURCEA(IDD_LOG);
+ urd.pfnResizer=LogResize;
+ SetWindowPos(hwndDlg, HWND_TOP, rcTabs.left, rcTabs.top, rcTabs.right - rcTabs.left, rcTabs.bottom - rcTabs.top, SWP_SHOWWINDOW);
+ CallService(MS_UTILS_RESIZEDIALOG,0,(LPARAM)&urd);
+ break;
+ }
+ case WM_COMMAND:
+ {
+ switch(LOWORD(wParam))
+ {
+ if (!dat) break;
+
+ case IDC_PAUSE:
+ {
+ LVITEM lvi = {0};
+ dat->Paused = !(dat->Paused);
+ lvi.mask = LVIF_TEXT | LVIF_IMAGE;
+ lvi.iImage = IMG_INFO;
+ lvi.iItem = 0x7FFFFFFF;
+ lvi.pszText = (dat->Paused) ? TranslateT("*** Console paused ***") : TranslateT("*** Console resumed ***");
+ ListView_InsertItem(dat->hList,&lvi);
+ CheckDlgButton(hwndDlg,IDC_PAUSE,(dat->Paused)?BST_CHECKED:BST_UNCHECKED);
+ SendDlgItemMessage(hwndDlg,IDC_PAUSE,BM_SETIMAGE,IMAGE_ICON,(LPARAM)hIcons[((dat->Paused)?ICON_PAUSED:ICON_STARTED)]);
+ break;
+ }
+ case IDC_SCROLL:
+ {
+ dat->Scroll = !(dat->Scroll);
+ CheckDlgButton(hwndDlg,IDC_SCROLL,(dat->Scroll)?BST_CHECKED:BST_UNCHECKED);
+ SendDlgItemMessage(hwndDlg,IDC_SCROLL,BM_SETIMAGE,IMAGE_ICON,(LPARAM)hIcons[((dat->Scroll)?ICON_SCROLL:ICON_NOSCROLL)]);
+ break;
+ }
+ case IDC_COPY:
+ {
+ int idx = 0;
+ TCHAR szText[128];
+ TCHAR *src, *dst, *buf;
+ int flags = LVNI_BELOW;
+ int count = ListView_GetSelectedCount(dat->hList);
+
+ if (count)
+ flags |= LVNI_SELECTED;
+ else
+ count = ListView_GetItemCount(dat->hList);
+
+ dst = buf = malloc((count*(sizeof(szText)+1)+1)*sizeof(TCHAR));
+ if (!buf) break;
+
+ while ((idx = ListView_GetNextItem(dat->hList,idx,flags)) > 0)
+ {
+ ListView_GetItemText(dat->hList, idx, 0, szText, sizeof(szText)-1);
+ src = szText;
+ while (*dst++ = *src++);
+ dst--;
+ *dst++ = '\r';
+ *dst++ = '\n';
+ *dst = 0;
+ }
+
+ if (dst - buf > 0 && OpenClipboard(hwndDlg)) {
+ HGLOBAL hClipboardData;
+ TCHAR* pchData;
+ EmptyClipboard();
+ if (hClipboardData = GlobalAlloc(GMEM_DDESHARE, (dst-buf+1)*sizeof(TCHAR))) {
+ pchData = (TCHAR*)GlobalLock(hClipboardData);
+ _tcscpy(pchData, buf);
+ GlobalUnlock(hClipboardData);
+ #ifdef UNICODE
+ SetClipboardData(CF_UNICODETEXT,hClipboardData);
+ #else
+ SetClipboardData(CF_TEXT,hClipboardData);
+ #endif
+ }
+ CloseClipboard();
+ }
+ free(buf);
+ break;
+ }
+ case IDC_DELETE:
+ {
+ int idx = 0;
+ int count = ListView_GetSelectedCount(dat->hList);
+
+ if ( !count ) break;
+
+ if ( count == ListView_GetItemCount(dat->hList) ) {
+ LVITEM lvi = {0};
+ ListView_DeleteAllItems(dat->hList);
+ lvi.mask = LVIF_TEXT | LVIF_IMAGE;
+ lvi.iImage = IMG_INFO;
+ lvi.pszText = TranslateT("*** Console cleared ***");
+ ListView_InsertItem(dat->hList,&lvi);
+ dat->newline = 0;
+ break;
+ }
+
+ while ((idx = ListView_GetNextItem(dat->hList,idx,LVNI_BELOW|LVNI_SELECTED)) > 0)
+ {
+ ListView_DeleteItem(dat->hList,idx);
+ idx--;
+ }
+ break;
+ }
+ case IDC_SAVE:
+ {
+ FILE *fp;
+ TCHAR szFile[MAX_PATH];
+
+ if (!Openfile(szFile,ListView_GetSelectedCount(dat->hList))) break;
+
+ fp = _tfopen(szFile, _T("wt"));
+ if (fp) {
+ int idx = 0;
+ TCHAR szText[128];
+ int flags = LVNI_BELOW;
+ if (ListView_GetSelectedCount(dat->hList))
+ flags |= LVNI_SELECTED;
+
+ while ((idx = ListView_GetNextItem(dat->hList,idx,flags)) > 0)
+ {
+ ListView_GetItemText(dat->hList, idx, 0, szText, sizeof(szText)-1);
+ _ftprintf(fp, _T("%s\n"), szText);
+ }
+ fclose(fp);
+ }
+ break;
+ }
+ case IDC_OPTIONS:
+ CallServiceSync(MS_NETLIB_LOGWIN,0,0);
+ break;
+ case IDC_STARTALL:
+ SendMessage(hwndConsole, HM_PAUSEALL, 0, 0);
+ break;
+ case IDC_PAUSEALL:
+ SendMessage(hwndConsole, HM_PAUSEALL, 0, 1);
+ break;
+ case IDC_CLOSE:
+ if (tabCount > 1)
+ SendMessage(hwndDlg, WM_CLOSE, 0, 0);
+ break;
+ default:
+ break;
+ }
+ break;
+ }
+ case WM_CLOSE:
+ DestroyWindow(hwndDlg);
+ break;
+ case WM_DESTROY:
+ SetWindowLong(dat->hList, GWLP_WNDPROC, GetWindowLong(dat->hList,GWLP_USERDATA));
+ SendMessage(hwndConsole, HM_REMOVE, 0, (LPARAM)dat);
+ break;
+ }
+
+ return FALSE;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+int ConsoleResize(HWND hwnd,LPARAM lParam,UTILRESIZECONTROL *urc)
+{
+ switch(urc->wId) {
+ case IDC_TABS:
+ return RD_ANCHORX_WIDTH|RD_ANCHORY_HEIGHT;
+ default:
+ return RD_ANCHORX_LEFT|RD_ANCHORY_TOP;
+ }
+}
+
+
+static INT_PTR CALLBACK ConsoleDlgProc(HWND hwndDlg,UINT message,WPARAM wParam,LPARAM lParam)
+{
+ switch(message) {
+ case WM_INITDIALOG:
+ {
+ char Title[512];
+ char ProfileName[513];
+ char ProfilePath[513];
+ ProfileName[512] = 0;
+ ProfilePath[512] = 0;
+
+ hTabs = GetDlgItem(hwndDlg, IDC_TABS);
+ //TabCtrl_SetMinTabWidth(hTabs, 100);
+
+ // restore position
+ {
+ SAVEWINDOWPOS swp;
+ swp.hwnd=hwndDlg; swp.hContact=NULL; swp.szModule="Console"; swp.szNamePrefix="Console";
+ CallService(MS_UTILS_RESTOREWINDOWPOSITION,RWPF_NOACTIVATE,(LPARAM)&swp);
+ ShowWindow(hwndDlg,SW_HIDE);
+ }
+
+ if (CallService(MS_DB_GETPROFILENAME,(WPARAM)512,(LPARAM)ProfileName))
+ ProfileName[0] = 0;
+
+ if (CallService(MS_DB_GETPROFILEPATH,(WPARAM)512,(LPARAM)ProfilePath))
+ ProfilePath[0] = 0;
+
+ mir_snprintf(Title, sizeof(Title), "%s - %s\\%s", Translate("Miranda Console"), ProfilePath, ProfileName);
+
+ SetWindowTextA(hwndDlg, Title);
+ SendMessage(hwndDlg,WM_SETICON,ICON_BIG,(LPARAM)hIcons[0]);
+
+ hwndConsole = hwndDlg;
+ SendMessage(hwndDlg, HM_ADD, 0, 0);
+ PostMessage(hwndDlg, WM_SIZE, 0, 0);
+ break;
+ }
+ case HM_DUMP:
+ {
+ // lParam = DUMPMSG
+ int idx;
+ LOGWIN *lw;
+ LOGWIN lw2;
+ DUMPMSG *dumpMsg = (DUMPMSG*)lParam;
+
+ if (!pActive) break;
+
+ if (!gSingleMode)
+ {
+ lw2.Module = dumpMsg->szModule;
+ if (!li.List_GetIndex(&lModules, &lw2, &idx))
+ SendMessage(hwndDlg, HM_ADD, (WPARAM)idx, (LPARAM)dumpMsg->szModule);
+
+ lw = (LOGWIN*)lModules.items[idx];
+ }
+ else
+ lw = pActive;
+
+ if (lw->hwnd)
+ SendMessage(lw->hwnd, HM_DUMP, wParam, lParam);
+ else
+ PostMessage(hwndDlg, HM_DUMP, wParam, lParam); // loop msg until window will be ready
+
+ return TRUE;
+ }
+ case HM_ADD:
+ {
+ // wParam = index, lParam = module name
+ LOGWIN *lw;
+ COLORREF col;
+ TCITEM tci = {0};
+ int idx = (int)wParam;
+ char *str = (char*)lParam;
+
+ if (!str) str = ""; // startup window
+
+ lw = (LOGWIN*)mir_calloc( sizeof(LOGWIN) );
+ lw->Module = (char*)mir_strdup(str);
+ li.List_Insert(&lModules, lw, idx);
+
+ if (!gSingleMode && lParam)
+ {
+ tci.mask = TCIF_PARAM | TCIF_TEXT;
+ tci.lParam = (LPARAM)lw;
+#ifdef _UNICODE
+ tci.pszText = mir_a2u(lw->Module);
+ idx = TabCtrl_InsertItem(hTabs, tabCount, &tci);
+ mir_free(tci.pszText);
+#else
+ tci.pszText = lw->Module;
+ idx = TabCtrl_InsertItem(hTabs, tabCount, &tci);
+#endif
+ tabCount++;
+ }
+
+ GetClientRect(hTabs, &rcTabs);
+ TabCtrl_AdjustRect(hTabs, FALSE, &rcTabs);
+
+ CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_LOG), hwndDlg, LogDlgProc, (LPARAM)lw);
+ ShowWindow(lw->hwnd, (tabCount > 1)?SW_HIDE:SW_SHOWNOACTIVATE);
+
+ if (pActive)
+ {
+ col = ListView_GetBkColor(pActive->hList);
+ ListView_SetBkColor(lw->hList, col);
+ ListView_SetTextBkColor(lw->hList, col);
+
+ col = ListView_GetTextColor(pActive->hList);
+ ListView_SetTextColor(lw->hList, col);
+
+ if (hfLogFont)
+ SendMessage(lw->hList, WM_SETFONT, (WPARAM)hfLogFont, (LPARAM)TRUE);
+ }
+
+ // hide startup window
+ if (tabCount == 1)
+ {
+ ShowWindow(pActive->hwnd, SW_HIDE);
+ PostMessage(pActive->hwnd, WM_CLOSE, 0, 0);
+ pActive = lw;
+ }
+
+ if (!pActive)
+ pActive = lw;
+
+ return TRUE;
+ }
+ case HM_REMOVE:
+ {
+ // lParam = LOGWIN
+ LOGWIN *lw = (LOGWIN*)lParam;
+
+ if (!lw) break;
+
+ if (lw == pActive)
+ {
+ int tab = TabCtrl_GetCurSel(hTabs);
+ if (tab >= 0)
+ {
+ TCITEM tci={0};
+
+ TabCtrl_DeleteItem(hTabs, tab);
+ tabCount--;
+ if (tabCount)
+ {
+ tab--;
+ if (tab < 0 ) tab = 0;
+ TabCtrl_SetCurSel(hTabs, tab);
+
+ tci.mask = TCIF_PARAM;
+ TabCtrl_GetItem(hTabs, tab, &tci);
+ pActive = (LOGWIN*)tci.lParam;
+ SendMessage(pActive->hwnd, WM_SIZE, 0, 0);
+ ScrollDown(pActive);
+ ShowWindow(pActive->hwnd, SW_SHOWNOACTIVATE);
+ SetFocus(pActive->hList);
+ }
+ else
+ pActive = NULL;
+ }
+ }
+
+ li.List_RemovePtr(&lModules, lw);
+ mir_free(lw->Module);
+ mir_free(lw);
+ return TRUE;
+ }
+ case HM_SETFONT:
+ {
+ // wParam = font, lParam = font color
+ int i;
+ LOGWIN *lw;
+ for ( i = 0; i < lModules.realCount; i++ )
+ {
+ lw = (LOGWIN*)lModules.items[i];
+ ListView_SetTextColor(lw->hList, (COLORREF)lParam);
+ if (wParam)
+ SendMessage(lw->hList, WM_SETFONT, wParam, (LPARAM)TRUE);
+ }
+ return TRUE;
+ }
+ case HM_SETCOLOR:
+ {
+ // wParam = font, lParam = background color
+ int i;
+ LOGWIN *lw;
+ for ( i = 0; i < lModules.realCount; i++ )
+ {
+ lw = (LOGWIN*)lModules.items[i];
+ ListView_SetBkColor(lw->hList, (COLORREF)lParam);
+ ListView_SetTextBkColor(lw->hList, (COLORREF)lParam);
+ if (wParam)
+ SendMessage(lw->hList, WM_SETFONT, wParam, (LPARAM)TRUE);
+ }
+ return TRUE;
+ }
+ case HM_PAUSEALL:
+ {
+ // lParam = 1 to pause, 0 to start
+ int i;
+ LOGWIN *lw;
+ for ( i = 0; i < lModules.realCount; i++ )
+ {
+ lw = (LOGWIN*)lModules.items[i];
+ if (lw->Paused != (int)lParam)
+ SendMessage(lw->hwnd, WM_COMMAND, IDC_PAUSE, 0);
+ }
+ return TRUE;
+ }
+ case HM_RESTART:
+ {
+ if (pActive)
+ {
+ pActive = NULL;
+ PostMessage(hwndDlg, HM_RESTART, 0, 0);
+ return TRUE;
+ }
+ // close all tabs
+ if (!lParam)
+ {
+ LOGWIN *lw;
+ TabCtrl_DeleteAllItems(hTabs);
+ while ( lModules.realCount )
+ {
+ lw = (LOGWIN*)lModules.items[0];
+ SendMessage(lw->hwnd, WM_CLOSE, 0, 0);
+ }
+ tabCount = 0;
+ PostMessage(hwndDlg, HM_RESTART, 0, 1);
+ return TRUE;
+ }
+
+ LoadSettings();
+ SendMessage(hwndDlg, HM_ADD, 0, 0);
+ PostMessage(hwndDlg, WM_SIZE, 0, 0);
+ return TRUE;
+ }
+ case WM_SETFOCUS:
+ if ( pActive ) {
+ SetFocus(pActive->hList);
+ }
+ return TRUE;
+ case WM_NOTIFY:
+ switch(wParam) {
+ case IDC_TABS:
+ {
+ LPNMHDR lpnmhdr = (LPNMHDR)lParam;
+ if (lpnmhdr->code == TCN_SELCHANGE)
+ {
+ int newTab = TabCtrl_GetCurSel(hTabs);
+ if (newTab >= 0 )
+ {
+ TCITEM tci={0};
+ HWND hOld = pActive->hwnd;
+
+ tci.mask = TCIF_PARAM;
+
+ if (!TabCtrl_GetItem(hTabs, newTab, &tci)) break;
+
+ pActive = (LOGWIN*)tci.lParam;
+
+ SendMessage(pActive->hwnd, WM_SIZE, 0, 0);
+ ScrollDown(pActive);
+ ShowWindow(hOld, SW_HIDE);
+ ShowWindow(pActive->hwnd, SW_SHOWNOACTIVATE);
+ SetFocus(pActive->hList);
+ } else
+ SendMessage(pActive->hwnd, WM_SIZE, 0, 0);
+ }
+ break;
+ }
+ }
+ break;
+ case WM_SIZE:
+ {
+ UTILRESIZEDIALOG urd={0};
+ urd.cbSize=sizeof(urd);
+ urd.hInstance=hInst;
+ urd.hwndDlg=hwndDlg;
+ urd.lpTemplate=MAKEINTRESOURCEA(IDD_CONSOLE);
+ urd.pfnResizer=ConsoleResize;
+ CallService(MS_UTILS_RESIZEDIALOG,0,(LPARAM)&urd);
+
+ GetClientRect(hTabs, &rcTabs);
+ TabCtrl_AdjustRect(hTabs, FALSE, &rcTabs);
+
+ if ( pActive )
+ SendMessage(pActive->hwnd, WM_SIZE, 0, 0);
+ break;
+ }
+ case WM_GETMINMAXINFO:
+ {
+ MINMAXINFO *mmi=(MINMAXINFO*)lParam;
+ mmi->ptMinTrackSize.x=400;
+ mmi->ptMinTrackSize.y=200;
+ break;
+ }
+ case WM_CLOSE:
+ if ( lParam != 1 ) {
+ Utils_SaveWindowPosition(hwndDlg,NULL,"Console","Console");
+ ShowConsole(0);
+ return TRUE;
+ } else
+ DestroyWindow(hwndDlg);
+ break;
+ case WM_DESTROY:
+ pActive = NULL;
+ if (hfLogFont) DeleteObject(hfLogFont);
+ PostQuitMessage(0);
+ break;
+ }
+
+ return FALSE;
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+
+
+void __cdecl ConsoleThread(void* arg)
+{
+ MSG msg;
+ HWND hwnd;
+
+ hwnd = CreateDialog(hInst,MAKEINTRESOURCE(IDD_CONSOLE),NULL,ConsoleDlgProc);
+
+ if (!hwnd) return;
+
+ while( GetMessage(&msg, NULL, 0, 0) > 0 )
+ {
+ switch(msg.message) {
+ case HM_DUMP:
+ OutMsgs++;
+ break;
+ }
+
+ if ( IsDialogMessage(hwnd, &msg) )
+ continue;
+
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+
+ hwndConsole = NULL;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static int OnFastDump(WPARAM wParam,LPARAM lParam)
+{
+ if ( pActive )
+ {
+ LOGMSG *logMsg = (LOGMSG*)lParam;
+ DWORD headlen = (DWORD)strlen(logMsg->pszHead);
+ DWORD msglen = (DWORD)strlen(logMsg->pszMsg);
+ DWORD len = (headlen + msglen + 1) * sizeof(TCHAR) + sizeof(DUMPMSG);
+ DUMPMSG *dumpMsg = (DUMPMSG*)malloc( len );
+ TCHAR *str = dumpMsg->szMsg;
+
+ strncpy(dumpMsg->szModule, ((NETLIBUSER*)wParam)->szDescriptiveName, sizeof(dumpMsg->szModule))[ sizeof(dumpMsg->szModule)-1 ] = 0;
+
+#ifdef _UNICODE
+ {
+ wchar_t *ucs2;
+
+ ucs2 = mir_a2u( logMsg->pszHead );
+ wcscpy(str, ucs2);
+ mir_free(ucs2);
+
+ // try to detect utf8
+ ucs2 = mir_utf8decodeW( logMsg->pszMsg );
+ if ( !ucs2 )
+ ucs2 = mir_a2u( logMsg->pszMsg );
+
+ wcscat( str, ucs2 );
+ mir_free( ucs2 );
+ }
+#else
+ memcpy( str, logMsg->pszHead, headlen );
+ memcpy( str + headlen, logMsg->pszMsg, msglen + 1 );
+
+ // try to detect utf8
+ mir_utf8decode( str + headlen, NULL );
+#endif
+ InMsgs++;
+ PostMessage(hwndConsole, HM_DUMP, 0, (LPARAM)dumpMsg);
+ }
+ return 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static void LoadSettings()
+{
+ gIcons = DBGetContactSettingByte(NULL, "Console", "ShowIcons", 1);
+ gSeparator = DBGetContactSettingByte(NULL, "Console", "Separator", 1);
+ gSingleMode = DBGetContactSettingByte(NULL, "Console", "SingleMode", 0);
+
+ gWrapLen = DBGetContactSettingByte(NULL, "Console", "Wrap", DEFAULT_WRAPLEN);
+ if ( gWrapLen < MIN_WRAPLEN ) gWrapLen = DEFAULT_WRAPLEN;
+
+ gLimit = DBGetContactSettingDword(NULL, "Console", "Limit", MAX_LIMIT);
+ if (gLimit > MAX_LIMIT) gLimit = MAX_LIMIT;
+ if (gLimit < MIN_LIMIT) gLimit = MIN_LIMIT;
+}
+
+
+static void SaveSettings(HWND hwndDlg)
+{
+ int len = GetDlgItemInt(hwndDlg, IDC_WRAP, NULL, FALSE);
+ if (len < MIN_WRAPLEN )
+ len = MIN_WRAPLEN;
+ else
+ if (len > MAX_WRAPLEN)
+ len = MAX_WRAPLEN;
+
+ gWrapLen = len;
+ SetDlgItemInt(hwndDlg, IDC_WRAP, gWrapLen, FALSE);
+ DBWriteContactSettingByte(NULL, "Console", "Wrap", (BYTE)len);
+
+ len = GetDlgItemInt(hwndDlg, IDC_LIMIT, NULL, FALSE);
+ if (len < MIN_LIMIT )
+ len = MIN_LIMIT;
+ else
+ if (len > MAX_LIMIT)
+ len = MAX_LIMIT;
+
+ gLimit = len;
+ SetDlgItemInt(hwndDlg, IDC_LIMIT, gLimit, FALSE);
+ DBWriteContactSettingDword(NULL, "Console", "Limit", len);
+
+ DBWriteContactSettingByte(NULL, "Console", "SingleMode", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_SINGLE));
+ DBWriteContactSettingByte(NULL, "Console", "Separator", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_SEPARATOR));
+ DBWriteContactSettingByte(NULL, "Console", "ShowIcons", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_SHOWICONS));
+
+ DBWriteContactSettingByte(NULL, "Console", "ShowAtStart", (BYTE)IsDlgButtonChecked(hwndDlg, IDC_START));
+}
+
+
+static INT_PTR CALLBACK OptDlgProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ switch(msg) {
+ case WM_INITDIALOG:
+ TranslateDialogDefault(hwndDlg);
+ CheckDlgButton(hwndDlg, IDC_START, DBGetContactSettingByte(NULL, "Console", "ShowAtStart", 0));
+ CheckDlgButton(hwndDlg, IDC_SINGLE, gSingleMode);
+ CheckDlgButton(hwndDlg, IDC_SHOWICONS, gIcons);
+ CheckDlgButton(hwndDlg, IDC_SEPARATOR, gSeparator);
+ SetDlgItemInt(hwndDlg, IDC_WRAP, gWrapLen, FALSE);
+ SetDlgItemInt(hwndDlg, IDC_LIMIT, gLimit, FALSE);
+ break;
+ case WM_COMMAND:
+ switch (LOWORD(wParam)) {
+ case IDC_RESTART:
+ {
+ if (!pActive) break;
+ SaveSettings(hwndDlg);
+ PostMessage(hwndConsole, HM_RESTART, 0, 0);
+ break;
+ }
+ case IDC_LIMIT:
+ case IDC_WRAP:
+ if (HIWORD(wParam) != EN_CHANGE || (HWND) lParam != GetFocus())
+ return FALSE;
+ SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
+ break;
+ case IDC_START:
+ case IDC_SEPARATOR:
+ case IDC_SHOWICONS:
+ case IDC_SINGLE:
+ SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
+ break;
+ }
+ break;
+ case WM_NOTIFY:
+ switch(((LPNMHDR)lParam)->idFrom)
+ {
+ case 0:
+ switch (((LPNMHDR)lParam)->code)
+ {
+ case PSN_APPLY:
+ {
+ SaveSettings(hwndDlg);
+ break;
+ }
+ }
+ break;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+
+static int OptInit(WPARAM wParam,LPARAM lParam)
+{
+ OPTIONSDIALOGPAGE odp={0};
+ odp.cbSize = sizeof(odp);
+ odp.position = 0;
+ odp.hInstance = hInst;
+ odp.pszTemplate = MAKEINTRESOURCEA(IDD_OPTIONS);
+ odp.ptszGroup = TranslateT("Network");
+ odp.ptszTitle = TranslateT("Console");
+ odp.pfnDlgProc = OptDlgProc;
+ odp.flags = ODPF_BOLDGROUPS | ODPF_TCHAR;
+ odp.expertOnlyControls = NULL;
+ CallService(MS_OPT_ADDPAGE, wParam, (LPARAM)&odp);
+ return 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static int OnColourChange(WPARAM wParam,LPARAM lParam)
+{
+ if (hwndConsole)
+ {
+ ColourID cid = {0};
+ COLORREF col;
+
+ cid.cbSize=sizeof(cid);
+ strcpy(cid.group,"Console");
+ strcpy(cid.name,"Background");
+ strcpy(cid.dbSettingsGroup,"Console");
+ strcpy(cid.setting,"BgColor");
+
+ col = (COLORREF)CallService(MS_COLOUR_GET,(WPARAM)&cid,0);
+ if (col != -1)
+ SendMessage(hwndConsole, HM_SETCOLOR, (WPARAM)hfLogFont, (LPARAM)col);
+ }
+ return 0;
+}
+
+
+static int OnFontChange(WPARAM wParam,LPARAM lParam)
+{
+ if (hwndConsole)
+ {
+ COLORREF col;
+ HFONT hf = NULL;
+ LOGFONT LogFont={0};
+ FontIDT fid={0};
+ fid.cbSize=sizeof(fid);
+
+ _tcscpy(fid.group,_T("Console"));
+ _tcscpy(fid.name,TranslateT("Text"));
+
+ col = (COLORREF)CallService(MS_FONT_GETT,(WPARAM)&fid,(LPARAM)&LogFont);
+
+ if (LogFont.lfHeight != 0)
+ {
+ hf=CreateFontIndirect(&LogFont);
+
+ SendMessage(hwndConsole, HM_SETFONT, (WPARAM)hf, (LPARAM)col);
+
+ if (hfLogFont)
+ DeleteObject(hfLogFont);
+ hfLogFont = hf;
+ }
+ }
+ return 0;
+}
+
+static int OnSystemModulesLoaded(WPARAM wParam,LPARAM lParam)
+{
+ int i = 1;
+ if ( !hHooks[0] )
+ hHooks[0] = HookEvent( ME_NETLIB_FASTDUMP, OnFastDump );
+
+ CreateServiceFunction(MS_CONSOLE_SHOW_HIDE, ShowHideConsole);
+
+
+ if (ServiceExists(MS_FONT_REGISTERT))
+ {
+ FontIDT fid={0};
+
+ fid.cbSize=sizeof(fid);
+ _tcscpy(fid.group,_T("Console"));
+ _tcscpy(fid.name,TranslateT("Text"));
+ strcpy(fid.dbSettingsGroup,"Console");
+ strcpy(fid.prefix,"ConsoleFont");
+
+ _tcscpy(fid.backgroundGroup,_T("Console"));
+ _tcscpy(fid.backgroundName,_T("Background"));
+
+ fid.flags = FIDF_DEFAULTVALID;
+
+ fid.deffontsettings.charset = DEFAULT_CHARSET;
+ fid.deffontsettings.colour = RGB(0, 0, 0);
+ fid.deffontsettings.size = 10;
+ fid.deffontsettings.style = 0;
+ _tcsncpy(fid.deffontsettings.szFace, _T("Courier"), LF_FACESIZE);
+
+ CallService(MS_FONT_REGISTERT,(WPARAM)&fid,0);
+
+ hHooks[i++] = HookEvent(ME_FONT_RELOAD,OnFontChange);
+ }
+
+ if (ServiceExists(MS_COLOUR_REGISTERT))
+ {
+ ColourIDT cid = {0};
+
+ cid.cbSize=sizeof(cid);
+ _tcscpy(cid.group,_T("Console"));
+ _tcscpy(cid.name,_T("Background"));
+ strcpy(cid.dbSettingsGroup,"Console");
+ strcpy(cid.setting,"BgColor");
+
+ cid.defcolour = RGB(255,255,255);
+
+ CallService(MS_COLOUR_REGISTERT,(WPARAM)&cid,0);
+
+ hHooks[i++] = HookEvent(ME_COLOUR_RELOAD, OnColourChange);
+ }
+
+ if (ServiceExists(MS_HOTKEY_REGISTER))
+ {
+ HOTKEYDESC hkd = {0};
+
+ hkd.cbSize=sizeof(hkd);
+
+ hkd.pszName = "Console_Show_Hide";
+ hkd.pszDescription = Translate("Show/Hide Console");
+ hkd.pszSection = "Main";
+ hkd.pszService = MS_CONSOLE_SHOW_HIDE;
+ hkd.DefHotKey = HOTKEYCODE(HOTKEYF_EXT, 'C');
+
+ CallService(MS_HOTKEY_REGISTER,(WPARAM)0,(LPARAM)&hkd);
+ }
+
+ if (ServiceExists(MS_TB_ADDBUTTON))
+ {
+ SKINICONDESC sid={0};
+ TBButton tbb = {0};
+ char szModuleFileName[MAX_PATH]={0};
+
+ GetModuleFileNameA(hInst,szModuleFileName,MAX_PATH);
+
+ sid.cbSize = sizeof(sid);
+ sid.pszSection = Translate("Console");
+ sid.pszDefaultFile = szModuleFileName;
+
+ sid.pszDescription = Translate("Show");
+ sid.pszName = "Console_Up";
+ sid.iDefaultIndex = -IDI_BTN_UP;
+ CallService(MS_SKIN2_ADDICON,0,(LPARAM)&sid);
+
+ sid.pszDescription = Translate("Hide");
+ sid.pszName = "Console_Down";
+ sid.iDefaultIndex = -IDI_BTN_DN;
+ CallService(MS_SKIN2_ADDICON,0,(LPARAM)&sid);
+
+ tbb.cbSize = sizeof(TBButton);
+ tbb.pszButtonID = "console_btn";
+ tbb.pszButtonName = Translate("Show/Hide Console");
+ tbb.pszServiceName = MS_CONSOLE_SHOW_HIDE;
+ tbb.hPrimaryIconHandle = (HANDLE)CallService(MS_SKIN2_GETICONHANDLE,0, (LPARAM)"Console_Up");
+ tbb.hSecondaryIconHandle = (HANDLE)CallService(MS_SKIN2_GETICONHANDLE,0, (LPARAM)"Console_Down");
+ tbb.pszTooltipUp = Translate("Show Console");
+ tbb.pszTooltipDn = Translate("Hide Console");
+ tbb.tbbFlags = TBBF_VISIBLE|TBBF_SHOWTOOLTIP;
+ tbb.defPos = 20000;
+ hTButton = (HANDLE)CallService(MS_TB_ADDBUTTON,0, (LPARAM)&tbb);
+ }
+
+ if (hwndConsole && IsWindow(hwndConsole))
+ {
+ CLISTMENUITEM mi={0};
+#ifdef TTB
+ hHooks[i++] = HookEvent(ME_TTB_MODULELOADED, OnTTBLoaded);
+#endif
+ mi.cbSize=sizeof(mi);
+ mi.flags=CMIF_TCHAR;
+ mi.hIcon=hIcons[0];
+ mi.ptszPopupName=TranslateT("&Help");
+ mi.popupPosition=2000090000;
+ mi.position=1000000000;
+ mi.ptszName=(IsWindowVisible(hwndConsole))?TranslateT("Hide Console"):TranslateT("Show Console");
+ mi.pszService=MS_CONSOLE_SHOW_HIDE;
+ hMenu = (HANDLE)CallService(MS_CLIST_ADDMAINMENUITEM,0,(LPARAM)&mi);
+
+ OnFontChange(0,0);
+ OnColourChange(0,0);
+
+ if (DBGetContactSettingByte(NULL,"Console","ShowAtStart",0) || DBGetContactSettingByte(NULL,"Console","Show",1))
+ ShowConsole(1);
+ else
+ ShowConsole(0);
+ }
+
+ return 0;
+}
+
+static int PreshutdownConsole(WPARAM wParam,LPARAM lParam)
+{
+ int i;
+
+ if (hwndConsole) {
+ PostMessage(hwndConsole, WM_CLOSE, 0, 1 );
+ }
+
+ for (i=0;i<SIZEOF(hHooks);i++) {
+ if (hHooks[i]) UnhookEvent(hHooks[i]);
+ }
+
+ return 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static int stringCompare( LOGWIN *lw1, LOGWIN *lw2 )
+{
+ return strcmp( lw1->Module, lw2->Module );
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+static UINT logicons[] = {IDI_EMPTY, IDI_ARROW, IDI_IN, IDI_OUT, IDI_INFO};
+
+
+void InitConsole()
+{
+ int i;
+ HICON hi;
+
+ mir_getMMI(&mmi);
+ mir_getUTFI(&utfi);
+ mir_getLI(&li);
+
+ lModules.sortFunc = stringCompare;
+ lModules.increment = 5;
+
+ hIcons[0] = LoadIcon(hInst, MAKEINTRESOURCE(IDI_CONSOLE));
+ hIcons[1] = (HICON)LoadImage(hInst,MAKEINTRESOURCE(IDI_NOSCROLL),IMAGE_ICON,GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),0);
+ hIcons[2] = (HICON)LoadImage(hInst,MAKEINTRESOURCE(IDI_PAUSED),IMAGE_ICON,GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),0);
+
+ for(i = 0; i < SIZEOF(ctrls); i++) {
+ hIcons[i+ICON_FIRST] = (HICON)LoadImage(hInst,MAKEINTRESOURCE(ctrls[i].icon),IMAGE_ICON,GetSystemMetrics(SM_CXSMICON),GetSystemMetrics(SM_CYSMICON),0);
+ }
+
+ gImg = ImageList_Create(LOGICONX_SIZE, LOGICONY_SIZE, ILC_COLOR24 | ILC_MASK, SIZEOF(logicons), 0);
+
+ for(i = 0; i < SIZEOF(logicons); i++)
+ {
+ hi = (HICON)LoadImage(hInst,MAKEINTRESOURCE(logicons[i]),IMAGE_ICON,LOGICONX_SIZE,LOGICONY_SIZE,0);
+ if (hi)
+ {
+ ImageList_AddIcon(gImg, hi);
+ DestroyIcon(hi);
+ }
+ }
+
+ LoadSettings();
+
+ mir_forkthread(ConsoleThread, 0);
+
+ HookEvent(ME_SYSTEM_PRESHUTDOWN, PreshutdownConsole);
+ HookEvent(ME_SYSTEM_MODULESLOADED, OnSystemModulesLoaded);
+ HookEvent(ME_OPT_INITIALISE, OptInit);
+
+ hHooks[0] = HookEvent( ME_NETLIB_FASTDUMP, OnFastDump );
+}
+
+void ShutdownConsole(void)
+{
+ int i;
+
+ li.List_Destroy(&lModules);
+
+ if (gImg) ImageList_Destroy(gImg);
+
+ for(i = 0; i < SIZEOF(hIcons); i++) {
+ if (hIcons[i]) DestroyIcon(hIcons[i]);
+ }
+
+#ifdef TBB
+ if (BmpUp) DeleteObject(BmpUp);
+ if (BmpDn) DeleteObject(BmpDn);
+#endif
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+TCHAR *addstring(TCHAR *str, TCHAR *add) {
+ _tcscpy(str,add);
+ return str + _tcslen(add) + 1;
+}
+
+
+static int Openfile(TCHAR *outputFile, int selection)
+{
+ OPENFILENAME ofn = {0};
+ TCHAR filename[MAX_PATH+2] = _T("");
+ TCHAR *title;
+
+ TCHAR *filter, *tmp, *tmp1, *tmp2;
+ tmp1 = TranslateT("Text Files (*.txt)");
+ tmp2 = TranslateT("All Files");
+ filter = tmp = (TCHAR*)_alloca((_tcslen(tmp1)+_tcslen(tmp2)+11)*sizeof(TCHAR));
+ tmp = addstring(tmp, tmp1);
+ tmp = addstring(tmp, _T("*.TXT"));
+ tmp = addstring(tmp, tmp2);
+ tmp = addstring(tmp, _T("*"));
+ *tmp = 0;
+
+ if (selection)
+ title = TranslateT("Save selection to file");
+ else
+ title = TranslateT("Save log to file");
+
+ ofn.lStructSize = sizeof(ofn);
+ ofn.lpstrFile = filename;
+ ofn.lpstrFilter = filter;
+ ofn.Flags = OFN_HIDEREADONLY | OFN_SHAREAWARE | OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT;
+ ofn.lpstrTitle = title;
+ ofn.nMaxFile = MAX_PATH;
+ ofn.lpstrDefExt = _T("txt");
+
+ if (!GetSaveFileName(&ofn))
+ return 0;
+ _tcscpy(outputFile, filename);
+ return 1;
+}
+
+////////////////////////////////////////////////////////////////////////////////
diff --git a/plugins/Console/Console.dsp b/plugins/Console/Console.dsp
new file mode 100644
index 0000000000..292f47e196
--- /dev/null
+++ b/plugins/Console/Console.dsp
@@ -0,0 +1,363 @@
+# Microsoft Developer Studio Project File - Name="Console" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=Console - Win32 Debug
+!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 "Console.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 "Console.mak" CFG="Console - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "Console - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Console - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Console - Win32 Debug Unicode" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "Console - Win32 Release Unicode" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName "Perforce Project"
+# PROP Scc_LocalPath "."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "Console - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Debug"
+# PROP BASE Intermediate_Dir ".\Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir ".\Debug"
+# PROP Intermediate_Dir ".\Debug"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "Console_EXPORTS" /D "_MBCS" /FR /Yu"Commonheaders.h" /GZ /c
+# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "Console_EXPORTS" /D "_MBCS" /FR /Yu"Commonheaders.h" /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /i "..\..\include" /d "_DEBUG"
+# ADD RSC /l 0x409 /i "..\..\include" /d "_DEBUG"
+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 /subsystem:windows /dll /incremental:no /map /debug /machine:IX86 /out:"..\..\Bin\Debug\plugins\Console.dll" /pdbtype:sept
+# SUBTRACT BASE LINK32 /pdb:none
+# ADD 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 /subsystem:windows /dll /incremental:no /map /debug /machine:IX86 /out:"..\..\Bin\Debug\plugins\Console.dll" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "Console - 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 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MD /W3 /GX /Ox /Ob2 /Gy /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "Console_EXPORTS" /D "_MBCS" /FR /Yu"Commonheaders.h" /GF /c
+# ADD CPP /nologo /MD /W3 /Zi /Ox /Ot /Os /Ob2 /Gf /Gy /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "Console_EXPORTS" /D "_MBCS" /FR /Yu"Commonheaders.h" /GF /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /i "..\..\include" /d "NDEBUG"
+# ADD RSC /l 0x409 /i "..\..\include" /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 /subsystem:windows /dll /map /machine:IX86 /out:"..\..\bin\release\plugins\Console.dll" /pdbtype:sept /ALIGN:4096
+# SUBTRACT BASE LINK32 /pdb:none
+# ADD 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 /subsystem:windows /dll /map /machine:IX86 /out:"..\..\bin\release\plugins\Console.dll" /pdbtype:sept /ALIGN:4096
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "Console - Win32 Debug Unicode"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "$(ConfigurationName)"
+# PROP BASE Intermediate_Dir "$(ConfigurationName)"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug_Unicode"
+# PROP Intermediate_Dir "Debug_Unicode"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../include" /D "_UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "Console_EXPORTS" /FR /Fp".\Debug/Console.pch" /Yu"Commonheaders.h" /Fo".\Debug/" /Fd".\Debug/" /GZ /c
+# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /I "../../include" /D "_UNICODE" /D "UNICODE" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "Console_EXPORTS" /FR /Fp".\Debug/Console.pch" /Yu"Commonheaders.h" /Fo".\Debug/" /Fd".\Debug/" /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /i "..\..\include" /d "_DEBUG"
+# ADD RSC /l 0x409 /i "..\..\include" /d "_DEBUG"
+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 /subsystem:windows /dll /incremental:no /pdb:".\Debug\Console.pdb" /map:".\Debug\Console.map" /debug /machine:IX86 /out:"..\..\Bin\Debug Unicode\plugins\Console.dll" /implib:".\Debug/Console.lib" /pdbtype:sept
+# SUBTRACT BASE LINK32 /pdb:none
+# ADD 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 /subsystem:windows /dll /incremental:no /pdb:".\Debug\Console.pdb" /map:".\Debug\Console.map" /debug /machine:IX86 /out:"..\..\Bin\Debug Unicode\plugins\Console.dll" /implib:".\Debug/Console.lib" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none
+
+!ELSEIF "$(CFG)" == "Console - Win32 Release Unicode"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "$(ConfigurationName)"
+# PROP BASE Intermediate_Dir "$(ConfigurationName)"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_Unicode"
+# PROP Intermediate_Dir "Release_Unicode"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /Ox /Ob2 /Gy /I "../../include" /D "_UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "Console_EXPORTS" /FR /Fo".\Release/" /GF /c
+# ADD CPP /nologo /MD /W3 /Zi /Ox /Og /Gf /Gy /I "../../include" /D "_UNICODE" /D "UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "Console_EXPORTS" /Fr /Fo".\Release/" /Fd".\Release/" /c
+# SUBTRACT CPP /YX /Yc /Yu
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /i "..\..\include" /d "NDEBUG"
+# ADD RSC /l 0x409 /i "..\..\include" /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 /subsystem:windows /dll /pdb:".\Release\Console.pdb" /map /machine:IX86 /out:"..\..\bin\release unicode\plugins\Console.dll" /implib:".\Release/Console.lib" /pdbtype:sept /ALIGN:4096
+# SUBTRACT BASE LINK32 /pdb:none
+# ADD 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 /subsystem:windows /dll /map /debug /machine:IX86 /out:"Release_Unicode\Plugins\Console.dll" /implib:".\Release/Console.lib"
+# SUBTRACT LINK32 /pdb:none
+
+!ENDIF
+
+# Begin Target
+
+# Name "Console - Win32 Debug"
+# Name "Console - Win32 Release"
+# Name "Console - Win32 Debug Unicode"
+# Name "Console - Win32 Release Unicode"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=Commonheaders.c
+DEP_CPP_COMMO=\
+ ".\Commonheaders.h"\
+ ".\m_toolbar.h"\
+ ".\m_toptoolbar.h"\
+ ".\version.h"\
+ {$(INCLUDE)}"m_button.h"\
+ {$(INCLUDE)}"m_clist.h"\
+ {$(INCLUDE)}"m_clui.h"\
+ {$(INCLUDE)}"m_database.h"\
+ {$(INCLUDE)}"m_fontservice.h"\
+ {$(INCLUDE)}"m_hotkeys.h"\
+ {$(INCLUDE)}"m_icolib.h"\
+ {$(INCLUDE)}"m_langpack.h"\
+ {$(INCLUDE)}"m_netlib.h"\
+ {$(INCLUDE)}"m_options.h"\
+ {$(INCLUDE)}"m_plugins.h"\
+ {$(INCLUDE)}"m_system.h"\
+ {$(INCLUDE)}"m_utils.h"\
+ {$(INCLUDE)}"newpluginapi.h"\
+ {$(INCLUDE)}"statusmodes.h"\
+ {$(INCLUDE)}"win2k.h"\
+
+
+!IF "$(CFG)" == "Console - Win32 Debug"
+
+# ADD CPP /nologo /GX /Od /FR /Yc"Commonheaders.h" /GZ
+
+!ELSEIF "$(CFG)" == "Console - Win32 Release"
+
+# ADD CPP /nologo /GX /O2 /FR /Yc"Commonheaders.h"
+
+!ELSEIF "$(CFG)" == "Console - Win32 Debug Unicode"
+
+# ADD CPP /nologo /GX /Od /FR /Yc"Commonheaders.h" /GZ
+
+!ELSEIF "$(CFG)" == "Console - Win32 Release Unicode"
+
+# ADD CPP /nologo /GX /O2 /FR
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=Console.c
+DEP_CPP_CONSO=\
+ ".\Commonheaders.h"\
+ ".\m_toolbar.h"\
+ ".\m_toptoolbar.h"\
+ ".\version.h"\
+ {$(INCLUDE)}"m_button.h"\
+ {$(INCLUDE)}"m_clist.h"\
+ {$(INCLUDE)}"m_clui.h"\
+ {$(INCLUDE)}"m_database.h"\
+ {$(INCLUDE)}"m_fontservice.h"\
+ {$(INCLUDE)}"m_hotkeys.h"\
+ {$(INCLUDE)}"m_icolib.h"\
+ {$(INCLUDE)}"m_langpack.h"\
+ {$(INCLUDE)}"m_netlib.h"\
+ {$(INCLUDE)}"m_options.h"\
+ {$(INCLUDE)}"m_plugins.h"\
+ {$(INCLUDE)}"m_system.h"\
+ {$(INCLUDE)}"m_utils.h"\
+ {$(INCLUDE)}"newpluginapi.h"\
+ {$(INCLUDE)}"statusmodes.h"\
+ {$(INCLUDE)}"win2k.h"\
+
+
+!IF "$(CFG)" == "Console - Win32 Debug"
+
+# ADD CPP /nologo /GX /Od /FR /GZ
+
+!ELSEIF "$(CFG)" == "Console - Win32 Release"
+
+# ADD CPP /nologo /GX /O2 /FR
+
+!ELSEIF "$(CFG)" == "Console - Win32 Debug Unicode"
+
+# ADD CPP /nologo /GX /Od /FR /GZ
+
+!ELSEIF "$(CFG)" == "Console - Win32 Release Unicode"
+
+# ADD CPP /nologo /GX /O2 /FR
+
+!ENDIF
+
+# End Source File
+# Begin Source File
+
+SOURCE=.\init.c
+DEP_CPP_INIT_=\
+ ".\Commonheaders.h"\
+ ".\m_toolbar.h"\
+ ".\m_toptoolbar.h"\
+ ".\version.h"\
+ {$(INCLUDE)}"m_button.h"\
+ {$(INCLUDE)}"m_clist.h"\
+ {$(INCLUDE)}"m_clui.h"\
+ {$(INCLUDE)}"m_database.h"\
+ {$(INCLUDE)}"m_fontservice.h"\
+ {$(INCLUDE)}"m_hotkeys.h"\
+ {$(INCLUDE)}"m_icolib.h"\
+ {$(INCLUDE)}"m_langpack.h"\
+ {$(INCLUDE)}"m_netlib.h"\
+ {$(INCLUDE)}"m_options.h"\
+ {$(INCLUDE)}"m_plugins.h"\
+ {$(INCLUDE)}"m_system.h"\
+ {$(INCLUDE)}"m_utils.h"\
+ {$(INCLUDE)}"newpluginapi.h"\
+ {$(INCLUDE)}"statusmodes.h"\
+ {$(INCLUDE)}"win2k.h"\
+
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=Commonheaders.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\resource.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\version.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=.\res\btn_dn.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\res\btn_up.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\res\close.ico
+# End Source File
+# Begin Source File
+
+SOURCE=Res\console.ico
+# End Source File
+# Begin Source File
+
+SOURCE=Res\console_dn.bmp
+# End Source File
+# Begin Source File
+
+SOURCE=Res\console_up.bmp
+# End Source File
+# Begin Source File
+
+SOURCE=.\Res\copy.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\Res\delete.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\res\noscroll.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\Res\options.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\res\pause.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\res\paused.ico
+# End Source File
+# Begin Source File
+
+SOURCE=resource.rc
+# End Source File
+# Begin Source File
+
+SOURCE=.\Res\Save.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\res\scroll.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\res\start.ico
+# End Source File
+# Begin Source File
+
+SOURCE=.\res\started.ico
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/plugins/Console/Console.dsw b/plugins/Console/Console.dsw
new file mode 100644
index 0000000000..3250410365
--- /dev/null
+++ b/plugins/Console/Console.dsw
@@ -0,0 +1,33 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "Console"=Console.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+ begin source code control
+ Perforce Project
+ .
+ end source code control
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/plugins/Console/Console.opt b/plugins/Console/Console.opt
new file mode 100644
index 0000000000..8c2c90007d
--- /dev/null
+++ b/plugins/Console/Console.opt
Binary files differ
diff --git a/plugins/Console/Console.plg b/plugins/Console/Console.plg
new file mode 100644
index 0000000000..60b675e88e
--- /dev/null
+++ b/plugins/Console/Console.plg
@@ -0,0 +1,49 @@
+<html>
+<body>
+<pre>
+<h1>Build Log</h1>
+<h3>
+--------------------Configuration: Console - Win32 Release Unicode--------------------
+</h3>
+<h3>Command Lines</h3>
+Creating command line "rc.exe /l 0x409 /fo"Release_Unicode/resource.res" /i "..\..\include" /d "NDEBUG" "D:\Sources\svn.miranda.im\console\trunk\resource.rc""
+Creating temporary file "C:\Temp\RSPB728.tmp" with contents
+[
+/nologo /MD /W3 /GX /Zi /O2 /I "../../include" /D "_UNICODE" /D "UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "Console_EXPORTS" /FR"Release_Unicode/" /Fo".\Release/" /Fd".\Release/" /c
+"D:\Sources\svn.miranda.im\console\trunk\Commonheaders.c"
+"D:\Sources\svn.miranda.im\console\trunk\Console.c"
+]
+Creating command line "cl.exe @C:\Temp\RSPB728.tmp"
+Creating temporary file "C:\Temp\RSPB729.tmp" with contents
+[
+/nologo /MD /W3 /Zi /Ox /Og /Gf /Gy /I "../../include" /D "_UNICODE" /D "UNICODE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_USRDLL" /D "Console_EXPORTS" /Fr"Release_Unicode/" /Fo".\Release/" /Fd".\Release/" /c
+"D:\Sources\svn.miranda.im\console\trunk\init.c"
+]
+Creating command line "cl.exe @C:\Temp\RSPB729.tmp"
+Creating temporary file "C:\Temp\RSPB72A.tmp" with contents
+[
+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 /subsystem:windows /dll /incremental:no /pdb:"Release_Unicode/Console.pdb" /map:"Release_Unicode/Console.map" /debug /machine:IX86 /out:"Release_Unicode\Plugins\Console.dll" /implib:".\Release/Console.lib"
+.\Release\Commonheaders.obj
+.\Release\Console.obj
+.\Release\init.obj
+.\Release_Unicode\resource.res
+]
+Creating command line "link.exe @C:\Temp\RSPB72A.tmp"
+<h3>Output Window</h3>
+Compiling resources...
+Compiling...
+Commonheaders.c
+Console.c
+Generating Code...
+Compiling...
+init.c
+Linking...
+ Creating library .\Release/Console.lib and object .\Release/Console.exp
+
+
+
+<h3>Results</h3>
+Console.dll - 0 error(s), 0 warning(s)
+</pre>
+</body>
+</html>
diff --git a/plugins/Console/Console.sln b/plugins/Console/Console.sln
new file mode 100644
index 0000000000..838788927a
--- /dev/null
+++ b/plugins/Console/Console.sln
@@ -0,0 +1,40 @@
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Console", "Console.vcxproj", "{A231E008-2D1A-4F24-95DD-59F56F85A499}"
+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
+ {A231E008-2D1A-4F24-95DD-59F56F85A499}.Debug Unicode|Win32.ActiveCfg = Debug Unicode|Win32
+ {A231E008-2D1A-4F24-95DD-59F56F85A499}.Debug Unicode|Win32.Build.0 = Debug Unicode|Win32
+ {A231E008-2D1A-4F24-95DD-59F56F85A499}.Debug Unicode|x64.ActiveCfg = Debug Unicode|x64
+ {A231E008-2D1A-4F24-95DD-59F56F85A499}.Debug Unicode|x64.Build.0 = Debug Unicode|x64
+ {A231E008-2D1A-4F24-95DD-59F56F85A499}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A231E008-2D1A-4F24-95DD-59F56F85A499}.Debug|Win32.Build.0 = Debug|Win32
+ {A231E008-2D1A-4F24-95DD-59F56F85A499}.Debug|x64.ActiveCfg = Debug|x64
+ {A231E008-2D1A-4F24-95DD-59F56F85A499}.Debug|x64.Build.0 = Debug|x64
+ {A231E008-2D1A-4F24-95DD-59F56F85A499}.Release Unicode|Win32.ActiveCfg = Release Unicode|Win32
+ {A231E008-2D1A-4F24-95DD-59F56F85A499}.Release Unicode|Win32.Build.0 = Release Unicode|Win32
+ {A231E008-2D1A-4F24-95DD-59F56F85A499}.Release Unicode|x64.ActiveCfg = Release Unicode|x64
+ {A231E008-2D1A-4F24-95DD-59F56F85A499}.Release Unicode|x64.Build.0 = Release Unicode|x64
+ {A231E008-2D1A-4F24-95DD-59F56F85A499}.Release|Win32.ActiveCfg = Release|Win32
+ {A231E008-2D1A-4F24-95DD-59F56F85A499}.Release|Win32.Build.0 = Release|Win32
+ {A231E008-2D1A-4F24-95DD-59F56F85A499}.Release|x64.ActiveCfg = Release|x64
+ {A231E008-2D1A-4F24-95DD-59F56F85A499}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(DPCodeReviewSolutionGUID) = preSolution
+ DPCodeReviewSolutionGUID = {00000000-0000-0000-0000-000000000000}
+ EndGlobalSection
+EndGlobal
diff --git a/plugins/Console/Console.vcproj b/plugins/Console/Console.vcproj
new file mode 100644
index 0000000000..2acdd7274b
--- /dev/null
+++ b/plugins/Console/Console.vcproj
@@ -0,0 +1,634 @@
+<?xml version="1.0" encoding="windows-1251"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9,00"
+ Name="Console"
+ ProjectGUID="{A231E008-2D1A-4F24-95DD-59F56F85A499}"
+ RootNamespace="Console"
+ SccProjectName="Perforce Project"
+ SccLocalPath="."
+ TargetFrameworkVersion="131072"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/Console.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;Console_EXPORTS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderThrough="Commonheaders.h"
+ PrecompiledHeaderFile=".\Debug/Console.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="../../Bin/Debug/plugins/Console.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile=".\Debug/Console.pdb"
+ GenerateMapFile="true"
+ MapFileName=".\Debug/Console.map"
+ OptimizeForWindows98="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary=".\Debug/Console.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|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <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/Console.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="3"
+ InlineFunctionExpansion="2"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;Console_EXPORTS"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderThrough="Commonheaders.h"
+ PrecompiledHeaderFile=".\Release/Console.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/ALIGN:4096"
+ OutputFile="../../bin/release/plugins/Console.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ ProgramDatabaseFile=".\Release/Console.pdb"
+ GenerateMapFile="true"
+ OptimizeForWindows98="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary=".\Release/Console.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|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="true"
+ SuppressStartupBanner="true"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/Console.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ PreprocessorDefinitions="_UNICODE;WIN32;_DEBUG;_WINDOWS;_USRDLL;Console_EXPORTS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderThrough="Commonheaders.h"
+ PrecompiledHeaderFile=".\Debug/Console.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ OutputFile="../../Bin/Debug Unicode/plugins/Console.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile=".\Debug/Console.pdb"
+ GenerateMapFile="true"
+ MapFileName=".\Debug/Console.map"
+ OptimizeForWindows98="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary=".\Debug/Console.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|Win32"
+ OutputDirectory="$(ConfigurationName)"
+ IntermediateDirectory="$(ConfigurationName)"
+ ConfigurationType="2"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ 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/Console.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="3"
+ InlineFunctionExpansion="2"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ PreprocessorDefinitions="_UNICODE;WIN32;NDEBUG;_WINDOWS;_USRDLL;Console_EXPORTS"
+ StringPooling="true"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="2"
+ PrecompiledHeaderThrough="Commonheaders.h"
+ PrecompiledHeaderFile=".\Release/Console.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalOptions="/ALIGN:4096"
+ OutputFile="../../bin/release unicode/plugins/Console.dll"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ ProgramDatabaseFile=".\Release/Console.pdb"
+ GenerateMapFile="true"
+ OptimizeForWindows98="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ ImportLibrary=".\Release/Console.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>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+ >
+ <File
+ RelativePath="Commonheaders.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;Console_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ UsePrecompiledHeader="1"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;Console_EXPORTS;$(NoInherit)"
+ UsePrecompiledHeader="1"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug Unicode|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ BasicRuntimeChecks="3"
+ UsePrecompiledHeader="1"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release Unicode|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ UsePrecompiledHeader="1"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="Console.c"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;Console_EXPORTS;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;Console_EXPORTS;$(NoInherit)"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug Unicode|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release Unicode|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories="../../include;../ExternalAPI"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath=".\init.c"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl"
+ >
+ <File
+ RelativePath="Commonheaders.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=".\res\btn_dn.ico"
+ >
+ </File>
+ <File
+ RelativePath=".\res\btn_up.ico"
+ >
+ </File>
+ <File
+ RelativePath=".\res\close.ico"
+ >
+ </File>
+ <File
+ RelativePath="Res\console.ico"
+ >
+ </File>
+ <File
+ RelativePath="Res\console_dn.bmp"
+ >
+ </File>
+ <File
+ RelativePath="Res\console_up.bmp"
+ >
+ </File>
+ <File
+ RelativePath=".\Res\copy.ico"
+ >
+ </File>
+ <File
+ RelativePath=".\Res\delete.ico"
+ >
+ </File>
+ <File
+ RelativePath=".\res\noscroll.ico"
+ >
+ </File>
+ <File
+ RelativePath=".\Res\noscroll3.ico"
+ >
+ </File>
+ <File
+ RelativePath=".\Res\options.ico"
+ >
+ </File>
+ <File
+ RelativePath=".\res\pause.ico"
+ >
+ </File>
+ <File
+ RelativePath=".\res\paused.ico"
+ >
+ </File>
+ <File
+ RelativePath="resource.rc"
+ >
+ </File>
+ <File
+ RelativePath=".\Res\Save.ico"
+ >
+ </File>
+ <File
+ RelativePath=".\res\scroll.ico"
+ >
+ </File>
+ <File
+ RelativePath=".\Res\scroll3.ico"
+ >
+ </File>
+ <File
+ RelativePath=".\res\start.ico"
+ >
+ </File>
+ <File
+ RelativePath=".\res\started.ico"
+ >
+ </File>
+ <File
+ RelativePath=".\res\working.ico"
+ >
+ </File>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
diff --git a/plugins/Console/Console.vcxproj b/plugins/Console/Console.vcxproj
new file mode 100644
index 0000000000..d18b89b277
--- /dev/null
+++ b/plugins/Console/Console.vcxproj
@@ -0,0 +1,609 @@
+<?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">
+ <ProjectGuid>{A231E008-2D1A-4F24-95DD-59F56F85A499}</ProjectGuid>
+ <RootNamespace>Console</RootNamespace>
+ <SccProjectName>
+ </SccProjectName>
+ <SccLocalPath>
+ </SccLocalPath>
+ </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>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ </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 Unicode|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
+ <UseOfMfc>false</UseOfMfc>
+ <CharacterSet>MultiByte</CharacterSet>
+ </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" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </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" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </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" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </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" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </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" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </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" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </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" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </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" />
+ <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup>
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">$(SolutionDir)$(Configuration)/Plugins\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">$(SolutionDir)$(Configuration)/Obj/$(ProjectName)\</IntDir>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">false</LinkIncremental>
+ <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">false</LinkIncremental>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)/Plugins\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)/Obj/$(ProjectName)\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">$(SolutionDir)$(Configuration)/Plugins\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">$(SolutionDir)$(Configuration)/Obj/$(ProjectName)\</IntDir>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)/Plugins\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)/Obj/$(ProjectName)\</IntDir>
+ <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>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)64/Plugins\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(SolutionDir)$(Configuration)64/Obj/$(ProjectName)\</IntDir>
+ <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>
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)64/Plugins\</OutDir>
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(SolutionDir)$(Configuration)64/Obj/$(ProjectName)\</IntDir>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>.\Debug/Console.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;Console_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PrecompiledHeaderFile>Commonheaders.h</PrecompiledHeaderFile>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateMapFile>true</GenerateMapFile>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TypeLibraryName>.\Debug/Console.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;Console_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PrecompiledHeaderFile>Commonheaders.h</PrecompiledHeaderFile>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateMapFile>true</GenerateMapFile>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>.\Release/Console.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;Console_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PrecompiledHeaderFile>Commonheaders.h</PrecompiledHeaderFile>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateMapFile>true</GenerateMapFile>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TypeLibraryName>.\Release/Console.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;Console_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PrecompiledHeaderFile>Commonheaders.h</PrecompiledHeaderFile>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateMapFile>true</GenerateMapFile>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TargetEnvironment>Win32</TargetEnvironment>
+ <TypeLibraryName>.\Debug/Console.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_UNICODE;WIN32;_DEBUG;_WINDOWS;_USRDLL;Console_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PrecompiledHeaderFile>Commonheaders.h</PrecompiledHeaderFile>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateMapFile>true</GenerateMapFile>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">
+ <Midl>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TypeLibraryName>.\Debug/Console.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Disabled</Optimization>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_UNICODE;WIN32;_DEBUG;_WINDOWS;_USRDLL;Console_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PrecompiledHeaderFile>Commonheaders.h</PrecompiledHeaderFile>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <CompileAs>Default</CompileAs>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <GenerateMapFile>true</GenerateMapFile>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </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/Console.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_UNICODE;WIN32;NDEBUG;_WINDOWS;_USRDLL;Console_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PrecompiledHeaderFile>Commonheaders.h</PrecompiledHeaderFile>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateMapFile>true</GenerateMapFile>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <TargetMachine>MachineX86</TargetMachine>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">
+ <Midl>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <MkTypLibCompatible>true</MkTypLibCompatible>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <TypeLibraryName>.\Release/Console.tlb</TypeLibraryName>
+ <HeaderFileName>
+ </HeaderFileName>
+ </Midl>
+ <ClCompile>
+ <Optimization>Full</Optimization>
+ <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions>_UNICODE;WIN32;NDEBUG;_WINDOWS;_USRDLL;Console_EXPORTS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <StringPooling>true</StringPooling>
+ <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <PrecompiledHeader>Use</PrecompiledHeader>
+ <PrecompiledHeaderFile>Commonheaders.h</PrecompiledHeaderFile>
+ <BrowseInformation>true</BrowseInformation>
+ <WarningLevel>Level3</WarningLevel>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <CompileAs>Default</CompileAs>
+ <ForceConformanceInForLoopScope>true</ForceConformanceInForLoopScope>
+ <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ </ClCompile>
+ <ResourceCompile>
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <Culture>0x0409</Culture>
+ <AdditionalIncludeDirectories>../../include;../ExternalAPI;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ResourceCompile>
+ <Link>
+ <SuppressStartupBanner>true</SuppressStartupBanner>
+ <GenerateMapFile>true</GenerateMapFile>
+ <RandomizedBaseAddress>false</RandomizedBaseAddress>
+ <DataExecutionPrevention>
+ </DataExecutionPrevention>
+ <ImportLibrary>$(IntDir)$(TargetName).lib</ImportLibrary>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ <OptimizeReferences>true</OptimizeReferences>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
+ </Link>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClCompile Include="Commonheaders.c">
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">Disabled</Optimization>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">EnableFastChecks</BasicRuntimeChecks>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">EnableFastChecks</BasicRuntimeChecks>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">Create</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">Create</PrecompiledHeader>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">true</BrowseInformation>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;Console_EXPORTS</PreprocessorDefinitions>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;Console_EXPORTS</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+ <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>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">Create</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">Create</PrecompiledHeader>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">true</BrowseInformation>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;Console_EXPORTS</PreprocessorDefinitions>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;Console_EXPORTS</PreprocessorDefinitions>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</BrowseInformation>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</BrowseInformation>
+ </ClCompile>
+ <ClCompile Include="Console.c">
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">Disabled</Optimization>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">EnableFastChecks</BasicRuntimeChecks>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|Win32'">true</BrowseInformation>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug Unicode|x64'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Disabled</Optimization>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Disabled</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;Console_EXPORTS</PreprocessorDefinitions>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;Console_EXPORTS</PreprocessorDefinitions>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">EnableFastChecks</BasicRuntimeChecks>
+ <BasicRuntimeChecks Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">EnableFastChecks</BasicRuntimeChecks>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</BrowseInformation>
+ <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>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Release Unicode|Win32'">true</BrowseInformation>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Release Unicode|x64'">true</BrowseInformation>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MaxSpeed</Optimization>
+ <Optimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">MaxSpeed</Optimization>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|x64'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;Console_EXPORTS</PreprocessorDefinitions>
+ <PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|x64'">WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;Console_EXPORTS</PreprocessorDefinitions>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</BrowseInformation>
+ <BrowseInformation Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</BrowseInformation>
+ </ClCompile>
+ <ClCompile Include="init.c" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="Commonheaders.h" />
+ <ClInclude Include="resource.h" />
+ <ClInclude Include="version.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <None Include="res\btn_dn.ico" />
+ <None Include="res\btn_up.ico" />
+ <None Include="res\close.ico" />
+ <None Include="Res\console.ico" />
+ <None Include="Res\console_dn.bmp" />
+ <None Include="Res\console_up.bmp" />
+ <None Include="Res\copy.ico" />
+ <None Include="Res\delete.ico" />
+ <None Include="res\noscroll.ico" />
+ <None Include="Res\noscroll3.ico" />
+ <None Include="Res\options.ico" />
+ <None Include="res\pause.ico" />
+ <None Include="res\paused.ico" />
+ <None Include="Res\Save.ico" />
+ <None Include="res\scroll.ico" />
+ <None Include="Res\scroll3.ico" />
+ <None Include="res\start.ico" />
+ <None Include="res\started.ico" />
+ <None Include="res\working.ico" />
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="resource.rc" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/plugins/Console/Console.vcxproj.filters b/plugins/Console/Console.vcxproj.filters
new file mode 100644
index 0000000000..7a841a2920
--- /dev/null
+++ b/plugins/Console/Console.vcxproj.filters
@@ -0,0 +1,103 @@
+<?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>{94e1a2e5-64bb-4574-a01b-61fbe40e73e2}</UniqueIdentifier>
+ <Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{a5d1caa4-5b85-489a-bedc-9709b86d7dc0}</UniqueIdentifier>
+ <Extensions>h;hpp;hxx;hm;inl</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{1e71008e-a4e4-44c1-a0a9-d5fd17cd53f2}</UniqueIdentifier>
+ <Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="Commonheaders.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="Console.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="init.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="Commonheaders.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>
+ <None Include="res\btn_dn.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\btn_up.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\close.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="Res\console.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="Res\console_dn.bmp">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="Res\console_up.bmp">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="Res\copy.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="Res\delete.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\noscroll.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="Res\noscroll3.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="Res\options.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\pause.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\paused.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="Res\Save.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\scroll.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="Res\scroll3.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\start.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\started.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ <None Include="res\working.ico">
+ <Filter>Resource Files</Filter>
+ </None>
+ </ItemGroup>
+ <ItemGroup>
+ <ResourceCompile Include="resource.rc">
+ <Filter>Resource Files</Filter>
+ </ResourceCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/plugins/Console/Console_history.txt b/plugins/Console/Console_history.txt
new file mode 100644
index 0000000000..0801dc00cd
--- /dev/null
+++ b/plugins/Console/Console_history.txt
@@ -0,0 +1,174 @@
+PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND...
+ONLY MORAL SUPPORT IN SPECIAL CASES CAN BE PROVIDED 8-)
+--------------------------------------------------------------------------------
+
+v7.2
+
+[+] console hot restart (to apply new options)
+[+] always show at start option
+[*] other small changes
+
+
+v7.1
+
+[+] switch tabs with CTRL+Left/Right
+[+] log size limitation
+[+] icons in log
+[+] event separation with empty line
+[-] create "(NULL)" tab only on demand
+[*] dumping optimization
+[*] small changes to compile in VC6
+
+
+v7.0
+
+[+] tabbed mode support (tab for every NETLIB user)
+[+] toolbar button for clist modern
+[+] options page
+[*] other small changes
+
+
+v6.6
+
+[+] logging pause button
+[*] log scrolling hotkey was changed to Ctrl+Q
+[*] more translatable strings
+[-] fixed tooltips on buttons
+
+
+v6.5
+
+[+] global hotkey to show/hide console (Win+C by default)
+[+] common shortcuts in console (Ctrl+C/S/D/A/O, Del)
+[*] trying to hook netlib log on load
+[*] hi-res console icon
+
+
+v6.4
+
+[-] some bugfixes (unicode version only)
+
+
+v6.3
+
+[!] NETLIB was removed. using netlib log hook.
+[+] unicode support
+[+] ansi / utf8 autodetection and conversion
+[+] faster startup/shutdown/dumping
+[+] variable line wrap length
+
+
+v6.0 - 6.2
+
+[!] internal builds
+
+
+v5.4
+
+[-] workaround for "\r" in console window
+[*] small speed improvements in netlib log dump
+[*] merge with SVN (netlib module)
+
+
+v5.3
+
+[*] PluginInfoEx was added, some code was replaced with core services (thanx Jazzy$)
+[*] merge with SVN (netlib module)
+
+
+v5.2
+
+[*] merge with SVN (netlib module)
+[*] fix for crash on exit (miranda 0.7 core issue)
+[+] save and restore console window position
+
+
+v5.1
+
+[-] filter settings were not saved
+
+
+v5.0
+
+[+] buttons to copy/delete/save log, open options
+[+] ability to select colors and font (fontservice needed)
+[*] long lines (>90 chars) are wraped
+[+] list-view auto width
+[*] destoying all services before unload to prevent crashes
+
+
+v4.0
+
+[*] merged with lastest netlib
+
+
+v3.3
+
+[-] packet dumps still were not shown in some cases
+[+] small optimizations
+
+
+v3.2
+
+[-] fixed huge memory leak
+[-] packet dumps were not shown if logging to file was off
+
+
+v3.1
+
+[!] listview control console window. richedit is too slow
+
+
+v3.0
+
+[!] richedit control console window!
+
+v2.0
+
+[?]
+
+v1.9
+
+[+] abitity to remember last console state
+
+v1.8
+
+[+] profile path is shown in console title
+
+v1.7
+
+[?]
+
+
+v1.6
+
+[-] fixed AV on msg from NULL (thanx sh8an)
+[*] attempt to fix windows shutdown issues with opened miranda
+
+v1.5
+
+[+] ability to log only custom protocols (netlibusers)
+[-] console window startup workaround to prevent crashes and other bugs
+
+v1.4
+
+[+] console window writes log even in hidden state (if Log to Console is checked)
+[+] ability to hide/show console from main menu and toptoolbar button
+[+] open outgoing connections with delay is now optional
+[*] console startup code was rewritten
+[-] pressing Ctrl+C or Ctrl+Break in console window do not close Miranda any more
+[-] now console window always appears on top
+
+v1.3
+
+[+] console window from 0.3x netlib
+[+] console buffer is 100 times larger
+[+] console text convertion to OEM codepage
+[-] close button now always disabled
+[*] some changes to unloading
+
+--------------------------------------------------------------------------------
+[!] important note
+[+] added feature
+[*] improved/changed feature
+[-] bug fixed
diff --git a/plugins/Console/Console_readme.txt b/plugins/Console/Console_readme.txt
new file mode 100644
index 0000000000..6d66f9b061
--- /dev/null
+++ b/plugins/Console/Console_readme.txt
@@ -0,0 +1,21 @@
+Console window plugin for Netlib logging.
+
+It is designed for Miranda developers & advanced users! 8-)
+
+
+v7 introduced tabs support. Single window mode is also avaliable.
+It can be switched in options. Icons and other stuff is avaliable.
+
+v6 is based on the code of v5 but without NETLIB. it uses new netlib log hook instead.
+Netlib filters are still in Log Options but they are not part of console any more :).
+
+Also:
++ faster startup/shutdown/dumping
++ unicode support
++ ansi / utf8 autodetection and conversion
++ variable line wrap length
+
+Console window can be opened/closed with:
+ - (Top)ToolBar button
+ - MainMenu->Help->Show/Hide Console
+ - Hotkey using service "Console/Show/Hide" \ No newline at end of file
diff --git a/plugins/Console/commonheaders.c b/plugins/Console/commonheaders.c
new file mode 100644
index 0000000000..cbfb79d624
--- /dev/null
+++ b/plugins/Console/commonheaders.c
@@ -0,0 +1,24 @@
+/*
+
+Miranda IM: the free IM client for Microsoft* Windows*
+
+Copyright 2000-2008 Miranda ICQ/IM project,
+all portions of this codebase are copyrighted to the people
+listed in contributors.txt.
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+#include "commonheaders.h" \ No newline at end of file
diff --git a/plugins/Console/commonheaders.h b/plugins/Console/commonheaders.h
new file mode 100644
index 0000000000..05a5d964fe
--- /dev/null
+++ b/plugins/Console/commonheaders.h
@@ -0,0 +1,69 @@
+/*
+
+Miranda IM: the free IM client for Microsoft* Windows*
+
+Copyright 2000-2008 Miranda ICQ/IM project,
+all portions of this codebase are copyrighted to the people
+listed in contributors.txt.
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+
+#define _WIN32_WINNT 0x0501
+
+#pragma comment( lib, "comctl32.lib")
+
+#include <windows.h>
+#include <stdio.h>
+#include <time.h>
+#include <stddef.h>
+#include <process.h>
+#include <commctrl.h>
+#include <Richedit.h>
+#include <malloc.h>
+#include <tchar.h>
+#include <io.h>
+#include <fcntl.h>
+
+#define MIRANDA_VER 0x0800
+
+#include <newpluginapi.h>
+#include <win2k.h>
+#include <m_system.h>
+#include <m_utils.h>
+#include <m_netlib.h>
+#include <m_database.h>
+#include <m_options.h>
+#include <m_langpack.h>
+#include <m_clui.h>
+#include <m_clist.h>
+#include <m_langpack.h>
+#include <m_button.h>
+#include <m_fontservice.h>
+#include <m_hotkeys.h>
+#include <m_icolib.h>
+#include "m_toolbar.h"
+#include "m_toptoolbar.h"
+#include "resource.h"
+
+#include "version.h"
+
+HINSTANCE hInst;
+
+void InitConsole();
+void ShutdownConsole();
+
+#define MS_NETLIB_LOGWIN "Netlib/Log/Win"
diff --git a/plugins/Console/gpl.txt b/plugins/Console/gpl.txt
new file mode 100644
index 0000000000..45645b4b53
--- /dev/null
+++ b/plugins/Console/gpl.txt
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/plugins/Console/init.c b/plugins/Console/init.c
new file mode 100644
index 0000000000..56c1dd48ec
--- /dev/null
+++ b/plugins/Console/init.c
@@ -0,0 +1,87 @@
+/*
+
+Miranda IM: the free IM client for Microsoft* Windows*
+
+Copyright 2000-2008 Miranda ICQ/IM project,
+all portions of this codebase are copyrighted to the people
+listed in contributors.txt.
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+#include "commonheaders.h"
+
+PLUGINLINK *pluginLink;
+DWORD mirandaVer;
+
+
+PLUGININFOEX pluginInfoEx={
+ sizeof(PLUGININFOEX),
+ __PLUGIN_NAME,
+ __VERSION_DWORD,
+ __PLUGIN_LONGDESC,
+ __PLUGIN_AUTHOR,
+ __PLUGIN_EMAIL,
+ __PLUGIN_RIGHTS,
+ __PLUGIN_URL,
+ UNICODE_AWARE,
+ 0,
+ MIID_CONSOLE
+};
+
+
+BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
+{
+ hInst = hinstDLL;
+ return TRUE;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+__declspec(dllexport) PLUGININFOEX* MirandaPluginInfoEx(DWORD mirandaVersion)
+{
+ mirandaVer = mirandaVersion;
+ return &pluginInfoEx;
+}
+
+// we implement service mode interface
+static const MUUID interfaces[] = {MIID_LOGWINDOW, MIID_LAST};
+__declspec(dllexport) const MUUID* MirandaPluginInterfaces(void)
+{
+ return interfaces;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+int __declspec(dllexport) Load(PLUGINLINK *link)
+{
+ pluginLink = link;
+
+ if (mirandaVer < PLUGIN_MAKE_VERSION(0,8,0,3))
+ return -1;
+ else
+ {
+ InitCommonControls();
+ InitConsole();
+ return 0;
+ }
+}
+
+
+int __declspec(dllexport) Unload(void)
+{
+ ShutdownConsole();
+ return 0;
+}
diff --git a/plugins/Console/res/arrow.ico b/plugins/Console/res/arrow.ico
new file mode 100644
index 0000000000..56d058b466
--- /dev/null
+++ b/plugins/Console/res/arrow.ico
Binary files differ
diff --git a/plugins/Console/res/btn_dn.ico b/plugins/Console/res/btn_dn.ico
new file mode 100644
index 0000000000..f86cdc6701
--- /dev/null
+++ b/plugins/Console/res/btn_dn.ico
Binary files differ
diff --git a/plugins/Console/res/btn_up.ico b/plugins/Console/res/btn_up.ico
new file mode 100644
index 0000000000..d885ea0a80
--- /dev/null
+++ b/plugins/Console/res/btn_up.ico
Binary files differ
diff --git a/plugins/Console/res/close.ico b/plugins/Console/res/close.ico
new file mode 100644
index 0000000000..81237d01f8
--- /dev/null
+++ b/plugins/Console/res/close.ico
Binary files differ
diff --git a/plugins/Console/res/close2.ico b/plugins/Console/res/close2.ico
new file mode 100644
index 0000000000..7e9bd8a095
--- /dev/null
+++ b/plugins/Console/res/close2.ico
Binary files differ
diff --git a/plugins/Console/res/console.ico b/plugins/Console/res/console.ico
new file mode 100644
index 0000000000..7252e62c7a
--- /dev/null
+++ b/plugins/Console/res/console.ico
Binary files differ
diff --git a/plugins/Console/res/console_dn.bmp b/plugins/Console/res/console_dn.bmp
new file mode 100644
index 0000000000..33bb07c0f2
--- /dev/null
+++ b/plugins/Console/res/console_dn.bmp
Binary files differ
diff --git a/plugins/Console/res/console_up.bmp b/plugins/Console/res/console_up.bmp
new file mode 100644
index 0000000000..2cdbb8d0cc
--- /dev/null
+++ b/plugins/Console/res/console_up.bmp
Binary files differ
diff --git a/plugins/Console/res/copy.ico b/plugins/Console/res/copy.ico
new file mode 100644
index 0000000000..c27f61f7f5
--- /dev/null
+++ b/plugins/Console/res/copy.ico
Binary files differ
diff --git a/plugins/Console/res/delete.ico b/plugins/Console/res/delete.ico
new file mode 100644
index 0000000000..7d931ad91e
--- /dev/null
+++ b/plugins/Console/res/delete.ico
Binary files differ
diff --git a/plugins/Console/res/empty.ico b/plugins/Console/res/empty.ico
new file mode 100644
index 0000000000..567bbe8692
--- /dev/null
+++ b/plugins/Console/res/empty.ico
Binary files differ
diff --git a/plugins/Console/res/in.ico b/plugins/Console/res/in.ico
new file mode 100644
index 0000000000..ceda4e6fca
--- /dev/null
+++ b/plugins/Console/res/in.ico
Binary files differ
diff --git a/plugins/Console/res/info.ico b/plugins/Console/res/info.ico
new file mode 100644
index 0000000000..bf6ada76a5
--- /dev/null
+++ b/plugins/Console/res/info.ico
Binary files differ
diff --git a/plugins/Console/res/noscroll.ico b/plugins/Console/res/noscroll.ico
new file mode 100644
index 0000000000..76c97c8be7
--- /dev/null
+++ b/plugins/Console/res/noscroll.ico
Binary files differ
diff --git a/plugins/Console/res/options.ico b/plugins/Console/res/options.ico
new file mode 100644
index 0000000000..2dbffa5e47
--- /dev/null
+++ b/plugins/Console/res/options.ico
Binary files differ
diff --git a/plugins/Console/res/out.ico b/plugins/Console/res/out.ico
new file mode 100644
index 0000000000..96425d3a1b
--- /dev/null
+++ b/plugins/Console/res/out.ico
Binary files differ
diff --git a/plugins/Console/res/pause.ico b/plugins/Console/res/pause.ico
new file mode 100644
index 0000000000..6e177a1210
--- /dev/null
+++ b/plugins/Console/res/pause.ico
Binary files differ
diff --git a/plugins/Console/res/paused.ico b/plugins/Console/res/paused.ico
new file mode 100644
index 0000000000..2d077bd4ed
--- /dev/null
+++ b/plugins/Console/res/paused.ico
Binary files differ
diff --git a/plugins/Console/res/save.ico b/plugins/Console/res/save.ico
new file mode 100644
index 0000000000..4bb07fb8d2
--- /dev/null
+++ b/plugins/Console/res/save.ico
Binary files differ
diff --git a/plugins/Console/res/scroll.ico b/plugins/Console/res/scroll.ico
new file mode 100644
index 0000000000..abf4595f0e
--- /dev/null
+++ b/plugins/Console/res/scroll.ico
Binary files differ
diff --git a/plugins/Console/res/start.ico b/plugins/Console/res/start.ico
new file mode 100644
index 0000000000..9272803384
--- /dev/null
+++ b/plugins/Console/res/start.ico
Binary files differ
diff --git a/plugins/Console/res/started.ico b/plugins/Console/res/started.ico
new file mode 100644
index 0000000000..3bc0da2db4
--- /dev/null
+++ b/plugins/Console/res/started.ico
Binary files differ
diff --git a/plugins/Console/resource.h b/plugins/Console/resource.h
new file mode 100644
index 0000000000..e0b9ed225a
--- /dev/null
+++ b/plugins/Console/resource.h
@@ -0,0 +1,58 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by resource.rc
+//
+#define IDB_CONSOLE_UP 100
+#define IDB_CONSOLE_DOWN 101
+#define IDD_MSG 111
+#define IDD_CONSOLE 112
+#define IDD_LOG 113
+#define IDD_OPTIONS 114
+#define IDI_COPY 402
+#define IDI_NOSCROLL 403
+#define IDI_SCROLL 404
+#define IDI_SAVE 405
+#define IDI_DELETE 406
+#define IDI_OPTIONS 407
+#define IDI_PAUSED 408
+#define IDI_STARTED 409
+#define IDI_BTN_UP 410
+#define IDI_BTN_DN 411
+#define IDI_CLOSE 412
+#define IDI_START 413
+#define IDI_PAUSE 414
+#define IDI_IN 415
+#define IDI_OUT 416
+#define IDI_ARROW 417
+#define IDI_INFO 418
+#define IDI_EMPTY 419
+#define IDC_TABS 1000
+#define IDC_LIST 1001
+#define IDC_SAVE 1002
+#define IDC_PAUSE 1003
+#define IDC_SCROLL 1004
+#define IDC_COPY 1005
+#define IDC_DELETE 1006
+#define IDC_OPTIONS 1007
+#define IDI_CONSOLE 1008
+#define IDC_CLOSE 1009
+#define IDC_PAUSEALL 1010
+#define IDC_STARTALL 1011
+#define IDC_SINGLE 1012
+#define IDC_WRAP 1013
+#define IDC_SHOWICONS 1014
+#define IDC_SEPARATOR 1015
+#define IDC_LIMIT 1016
+#define IDC_START 1017
+#define IDC_RESTART 1018
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 115
+#define _APS_NEXT_COMMAND_VALUE 40000
+#define _APS_NEXT_CONTROL_VALUE 1019
+#define _APS_NEXT_SYMED_VALUE 102
+#endif
+#endif
diff --git a/plugins/Console/resource.rc b/plugins/Console/resource.rc
new file mode 100644
index 0000000000..d6f054e2c6
--- /dev/null
+++ b/plugins/Console/resource.rc
@@ -0,0 +1,223 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include <windows.h>
+#include <winres.h>
+#include <tchar.h>
+#include <m_button.h>
+#include <version.h>
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_CONSOLE DIALOGEX 0, 0, 335, 257
+STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_MAXIMIZEBOX |
+ WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
+CAPTION "Console "
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
+BEGIN
+ CONTROL "",IDC_TABS,"SysTabControl32",TCS_FOCUSNEVER |
+ WS_CLIPSIBLINGS | WS_TABSTOP,0,0,335,257
+END
+
+IDD_LOG DIALOGEX 0, 0, 335, 257
+STYLE DS_SETFONT | DS_CONTROL | WS_CHILD | WS_CLIPCHILDREN
+FONT 10, "Courier", 0, 0, 0x1
+BEGIN
+ CONTROL "List1",IDC_LIST,"SysListView32",LVS_REPORT |
+ LVS_SHAREIMAGELISTS | LVS_NOCOLUMNHEADER |
+ LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,0,18,335,239
+ CONTROL "&S",IDC_SAVE,"MButtonClass",WS_TABSTOP,0,1,14,16,
+ 0x18000000L
+ CONTROL "&P",IDC_PAUSE,"MButtonClass",WS_TABSTOP,16,1,14,16,
+ 0x18000000L
+ CONTROL "&Q",IDC_SCROLL,"MButtonClass",WS_TABSTOP,32,1,14,16,
+ 0x18000000L
+ CONTROL "&C",IDC_COPY,"MButtonClass",WS_TABSTOP,48,1,14,16,
+ 0x18000000L
+ CONTROL "&D",IDC_DELETE,"MButtonClass",WS_TABSTOP,64,1,14,16,
+ 0x18000000L
+ CONTROL "&O",IDC_OPTIONS,"MButtonClass",WS_TABSTOP,80,1,14,16,
+ 0x18000000L
+ CONTROL "",IDC_STARTALL,"MButtonClass",WS_TABSTOP,278,1,14,16,
+ 0x18000000L
+ CONTROL "",IDC_PAUSEALL,"MButtonClass",WS_TABSTOP,294,1,14,16,
+ 0x18000000L
+ CONTROL "&W",IDC_CLOSE,"MButtonClass",WS_TABSTOP,320,1,14,16,
+ 0x18000000L
+END
+
+IDD_OPTIONS DIALOGEX 0, 0, 314, 239
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_CHILD | WS_VISIBLE
+EXSTYLE WS_EX_CONTROLPARENT
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
+BEGIN
+ CONTROL "Single window mode*",IDC_SINGLE,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,8,9,297,10
+ CONTROL "Show icons in log*",IDC_SHOWICONS,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,8,24,297,10
+ CONTROL "New lines between events*",IDC_SEPARATOR,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,8,39,297,10
+ CONTROL "Always show at start",IDC_START,"Button",
+ BS_AUTOCHECKBOX | WS_TABSTOP,8,54,297,10
+ EDITTEXT IDC_WRAP,8,69,23,11,ES_RIGHT | ES_NUMBER
+ EDITTEXT IDC_LIMIT,8,86,59,11,ES_RIGHT | ES_NUMBER
+ LTEXT "Lines wrap length [25-255]",IDC_STATIC,35,70,272,10
+ LTEXT "Log size limit [1 000 - 1 000 000 lines]",IDC_STATIC,71,
+ 86,236,10
+ LTEXT "* Restart needed",IDC_STATIC,8,106,296,10
+ PUSHBUTTON "Save settings and restart console",IDC_RESTART,12,129,
+ 287,17
+END
+
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include <windows.h>\r\n"
+ "#include <winres.h>\r\n"
+ "#include <tchar.h>\r\n"
+ "#include <m_button.h>\r\n"
+ "#include <version.h>\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 0,0,7,2
+ PRODUCTVERSION 0,0,7,2
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x40004L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "000004b0"
+ BEGIN
+ VALUE "FileDescription", "Console log window for Miranda 0.8.0.3+"
+ VALUE "FileVersion", "0.0.7.2"
+ VALUE "InternalName", "Console"
+ VALUE "LegalCopyright", "© 2005-2009 Bio"
+ VALUE "OriginalFilename", "Console.dll"
+ VALUE "ProductName", "Console"
+ VALUE "ProductVersion", "0.0.7.2"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0, 1200
+ END
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDI_COPY ICON "Res\\copy.ico"
+IDI_CONSOLE ICON "res\\console.ico"
+IDI_NOSCROLL ICON "Res\\noscroll.ico"
+IDI_SCROLL ICON "Res\\scroll.ico"
+IDI_SAVE ICON "Res\\save.ico"
+IDI_DELETE ICON "Res\\delete.ico"
+IDI_OPTIONS ICON "Res\\options.ico"
+IDI_PAUSED ICON "Res\\paused.ico"
+IDI_STARTED ICON "Res\\started.ico"
+IDI_BTN_UP ICON "Res\\btn_up.ico"
+IDI_BTN_DN ICON "Res\\btn_dn.ico"
+IDI_CLOSE ICON "Res\\close.ico"
+IDI_PAUSE ICON "Res\\pause.ico"
+IDI_START ICON "Res\\start.ico"
+IDI_IN ICON "Res\\in.ico"
+IDI_OUT ICON "Res\\out.ico"
+IDI_ARROW ICON "Res\\arrow.ico"
+IDI_INFO ICON "Res\\info.ico"
+IDI_EMPTY ICON "Res\\empty.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Bitmap
+//
+
+IDB_CONSOLE_UP BITMAP "res\\console_up.bmp"
+IDB_CONSOLE_DOWN BITMAP "res\\console_dn.bmp"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ IDD_CONSOLE, DIALOG
+ BEGIN
+ BOTTOMMARGIN, 256
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+#endif // English (U.S.) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
diff --git a/plugins/Console/version.h b/plugins/Console/version.h
new file mode 100644
index 0000000000..f7a19ef2ce
--- /dev/null
+++ b/plugins/Console/version.h
@@ -0,0 +1,51 @@
+/*
+
+Miranda IM: the free IM client for Microsoft* Windows*
+
+Copyright 2000-2008 Miranda ICQ/IM project,
+all portions of this codebase are copyrighted to the people
+listed in contributors.txt.
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+
+#define __FILEVERSION_STRING 0,0,7,2
+#define __VERSION_STRING "0.0.7.2"
+#define __VERSION_DWORD 0x00000702
+
+
+#define __PLUGIN_DESC "Console log window for Miranda 0.8.0.3+"
+#define __PLUGIN_LONGDESC __PLUGIN_DESC ". Compiled by Bio. Enjoy! 8-) [ Built "__DATE__" "__TIME__" ]"
+#define __PLUGIN_AUTHOR "Bio"
+#define __PLUGIN_EMAIL "bio@msx.ru"
+#define __PLUGIN_RIGHTS "© 2005-2009 Bio"
+#define __PLUGIN_FILE "Console.dll"
+#define __PLUGIN_SHORTNAME "Console"
+
+
+#ifdef _UNICODE
+ // {23D4F302-D513-45b7-9027-445F29557311}
+ #define MIID_CONSOLE { 0x23d4f302, 0xd513, 0x45b7, { 0x90, 0x27, 0x44, 0x5f, 0x29, 0x55, 0x73, 0x11 }}
+ #define __PLUGIN_NAME __PLUGIN_SHORTNAME " (Unicode)"
+ #define __PLUGIN_URL "http://addons.miranda-im.org/details.php?action=viewfile&id=3791"
+#endif
+
+#ifndef _UNICODE
+ // {798A94B8-74F4-46fc-978B-353D22BD485E}
+ #define MIID_CONSOLE { 0x798a94b8, 0x74f4, 0x46fc, { 0x97, 0x8b, 0x35, 0x3d, 0x22, 0xbd, 0x48, 0x5e }}
+ #define __PLUGIN_NAME __PLUGIN_SHORTNAME " (ANSI)"
+ #define __PLUGIN_URL "http://addons.miranda-im.org/details.php?action=viewfile&id=3789"
+#endif