summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tipper/common.h6
-rw-r--r--tipper/options.cpp103
-rw-r--r--tipper/popwin.cpp59
-rw-r--r--tipper/tipper.dep7
-rw-r--r--tipper/tipper.dsp245
-rw-r--r--tipper/tipper.dsw33
-rw-r--r--tipper/tipper.mak555
-rw-r--r--tipper/tipper.mdsp2
-rw-r--r--tipper/version.h2
9 files changed, 931 insertions, 81 deletions
diff --git a/tipper/common.h b/tipper/common.h
index bc11b16..fa8541c 100644
--- a/tipper/common.h
+++ b/tipper/common.h
@@ -23,6 +23,12 @@
#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE.
#endif
+#if defined( UNICODE ) && !defined( _UNICODE )
+#define _UNICODE
+#endif
+
+#include <tchar.h>
+
#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
// Windows Header Files:
#include <windows.h>
diff --git a/tipper/options.cpp b/tipper/options.cpp
index c6fdccd..3fe5314 100644
--- a/tipper/options.cpp
+++ b/tipper/options.cpp
@@ -31,7 +31,7 @@ void CreateDefaultItems() {
di_node->next = options.di_list;
options.di_list = di_node;
options.di_count++;
-
+
// status substitution
ds_node = (DSListNode *)malloc(sizeof(DSListNode));
_tcsncpy(ds_node->ds.name, _T("status"), LABEL_LEN);
@@ -332,11 +332,11 @@ void LoadOptions() {
options.sidebar_width = DBGetContactSettingDword(0, MODULE, "SidebarWidth", 22);
options.show_no_focus = (DBGetContactSettingByte(0, MODULE, "ShowNoFocus", 1) == 1);
- int real_count = 0;
+ int i, real_count = 0;
options.ds_list = 0;
DSListNode *ds_node;
options.ds_count = DBGetContactSettingWord(0, MODULE, "DSNumValues", 0);
- for(int i = options.ds_count - 1; i >= 0; i--) {
+ for(i = options.ds_count - 1; i >= 0; i--) {
ds_node = (DSListNode *)malloc(sizeof(DSListNode));
if(LoadDS(&ds_node->ds, i)) {
ds_node->next = options.ds_list;
@@ -350,7 +350,7 @@ void LoadOptions() {
options.di_list = 0;
DIListNode *di_node;
options.di_count = DBGetContactSettingWord(0, MODULE, "DINumValues", 0);
- for(int i = options.di_count - 1; i >= 0; i--) {
+ for(i = options.di_count - 1; i >= 0; i--) {
di_node = (DIListNode *)malloc(sizeof(DIListNode));
if(LoadDI(&di_node->di, i)) {
di_node->next = options.di_list;
@@ -376,46 +376,46 @@ void LoadOptions() {
DBDeleteContactSetting(0, MODULE, "ShowLastMessage");
// find end of list
- di_node = options.di_list;
- while(di_node && di_node->next) di_node = di_node->next;
+ di_node = options.di_list;
+ while(di_node && di_node->next) di_node = di_node->next;
// last message item
if(di_node) {
di_node->next = (DIListNode *)malloc(sizeof(DIListNode));
- di_node = di_node->next;
- } else {
- options.di_list = (DIListNode *)malloc(sizeof(DIListNode));
- di_node = options.di_list;
- }
+ di_node = di_node->next;
+ } else {
+ options.di_list = (DIListNode *)malloc(sizeof(DIListNode));
+ di_node = options.di_list;
+ }
_tcsncpy(di_node->di.label, _T("Last message: (%sys:last_msg_reltime% ago)"), LABEL_LEN);
_tcsncpy(di_node->di.value, _T("%sys:last_msg%"), VALUE_LEN);
di_node->di.line_above = di_node->di.value_newline = true;
di_node->next = 0;
- options.di_count++;
+ options.di_count++;
}
if(DBGetContactSettingByte(0, MODULE, "ShowStatusMessage", 0)) {
DBDeleteContactSetting(0, MODULE, "ShowStatusMessage");
-
- // find end of list
- di_node = options.di_list;
- while(di_node && di_node->next) di_node = di_node->next;
+
+ // find end of list
+ di_node = options.di_list;
+ while(di_node && di_node->next) di_node = di_node->next;
- // status message item
+ // status message item
if(di_node) {
- di_node->next = (DIListNode *)malloc(sizeof(DIListNode));
- di_node = di_node->next;
- } else {
- options.di_list = (DIListNode *)malloc(sizeof(DIListNode));
- di_node = options.di_list;
- }
+ di_node->next = (DIListNode *)malloc(sizeof(DIListNode));
+ di_node = di_node->next;
+ } else {
+ options.di_list = (DIListNode *)malloc(sizeof(DIListNode));
+ di_node = options.di_list;
+ }
_tcsncpy(di_node->di.label, _T("Status message:"), LABEL_LEN);
_tcsncpy(di_node->di.value, _T("%sys:status_msg%"), VALUE_LEN);
di_node->di.line_above = di_node->di.value_newline = true;
di_node->next = 0;
- options.di_count++;
+ options.di_count++;
}
options.label_valign = DBGetContactSettingWord(0, MODULE, "LabelVAlign", DT_TOP /*DT_VCENTER*/);
@@ -494,17 +494,16 @@ static BOOL CALLBACK DlgProcAddSubst(HWND hwndDlg, UINT msg, WPARAM wParam, LPAR
}
{
- int index, id;
- for(int i = 0; i < num_tfuncs; i++) {
+ int index, id, i;
+ for(i = 0; i < num_tfuncs; i++) {
index = SendDlgItemMessage(hwndDlg, IDC_CMB_TRANSLATE, CB_ADDSTRING, (WPARAM)-1, (LPARAM)TranslateTS(translations[i].name));
SendDlgItemMessage(hwndDlg, IDC_CMB_TRANSLATE, CB_SETITEMDATA, index, (LPARAM)translations[i].id);
}
- for(int i = 0; i < num_tfuncs; i++) {
+ for(i = 0; i < num_tfuncs; i++) {
id = SendDlgItemMessage(hwndDlg, IDC_CMB_TRANSLATE, CB_GETITEMDATA, i, 0);
if(id == ds->translate_func_id)
SendDlgItemMessage(hwndDlg, IDC_CMB_TRANSLATE, CB_SETCURSEL, i, 0);
}
-
}
SendMessage(hwndDlg, WMU_ENABLE_MODULE_ENTRY, 0, 0);
@@ -825,6 +824,7 @@ static BOOL CALLBACK DlgProcOpts2(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM
case WM_NOTIFY:
if (((LPNMHDR)lParam)->code == (unsigned)PSN_APPLY ) {
DIListNode *di_node;
+ int i;
while(options.di_list) {
di_node = options.di_list;
options.di_list = options.di_list->next;
@@ -833,7 +833,7 @@ static BOOL CALLBACK DlgProcOpts2(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM
DIListNode *di_value;
options.di_count = SendDlgItemMessage(hwndDlg, IDC_LST_ITEMS, LB_GETCOUNT, 0, 0);
- for(int i = options.di_count - 1; i >= 0; i--) {
+ for(i = options.di_count - 1; i >= 0; i--) {
di_node = (DIListNode *)SendDlgItemMessage(hwndDlg, IDC_LST_ITEMS, LB_GETITEMDATA, i, 0);
di_value = (DIListNode *)malloc(sizeof(DIListNode));
*di_value = *di_node;
@@ -851,7 +851,7 @@ static BOOL CALLBACK DlgProcOpts2(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM
DSListNode *ds_value;
options.ds_count = SendDlgItemMessage(hwndDlg, IDC_LST_SUBST, LB_GETCOUNT, 0, 0);
- for(int i = options.ds_count - 1; i >= 0; i--) {
+ for(i = options.ds_count - 1; i >= 0; i--) {
ds_node = (DSListNode *)SendDlgItemMessage(hwndDlg, IDC_LST_SUBST, LB_GETITEMDATA, i, 0);
ds_value = (DSListNode *)malloc(sizeof(DSListNode));
*ds_value = *ds_node;
@@ -867,14 +867,15 @@ static BOOL CALLBACK DlgProcOpts2(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM
case WM_DESTROY:
{
DIListNode *di_value;
+ int i;
int count = SendDlgItemMessage(hwndDlg, IDC_LST_ITEMS, LB_GETCOUNT, 0, 0);
- for(int i = 0; i < count; i++) {
+ for(i = 0; i < count; i++) {
di_value = (DIListNode *)SendDlgItemMessage(hwndDlg, IDC_LST_ITEMS, LB_GETITEMDATA, i, 0);
free(di_value);
}
DSListNode *ds_value;
count = SendDlgItemMessage(hwndDlg, IDC_LST_SUBST, LB_GETCOUNT, 0, 0);
- for(int i = 0; i < count; i++) {
+ for(i = 0; i < count; i++) {
ds_value = (DSListNode *)SendDlgItemMessage(hwndDlg, IDC_LST_SUBST, LB_GETITEMDATA, i, 0);
free(ds_value);
}
@@ -909,35 +910,35 @@ static BOOL CALLBACK DlgProcOpts1(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM
SendDlgItemMessage(hwndDlg, IDC_CMB_LV, CB_ADDSTRING, 0, (LPARAM)TranslateT("Top"));
SendDlgItemMessage(hwndDlg, IDC_CMB_LV, CB_ADDSTRING, 0, (LPARAM)TranslateT("Centre"));
- SendDlgItemMessage(hwndDlg, IDC_CMB_LV, CB_ADDSTRING, 0, (LPARAM)TranslateT("Bottom"));
- switch(options.label_valign) {
+ SendDlgItemMessage(hwndDlg, IDC_CMB_LV, CB_ADDSTRING, 0, (LPARAM)TranslateT("Bottom"));
+ switch(options.label_valign) {
case DT_TOP: SendDlgItemMessage(hwndDlg, IDC_CMB_LV, CB_SETCURSEL, 0, 0); break;
case DT_VCENTER: SendDlgItemMessage(hwndDlg, IDC_CMB_LV, CB_SETCURSEL, 1, 0); break;
- case DT_BOTTOM: SendDlgItemMessage(hwndDlg, IDC_CMB_LV, CB_SETCURSEL, 2, 0); break;
- }
+ case DT_BOTTOM: SendDlgItemMessage(hwndDlg, IDC_CMB_LV, CB_SETCURSEL, 2, 0); break;
+ }
SendDlgItemMessage(hwndDlg, IDC_CMB_VV, CB_ADDSTRING, 0, (LPARAM)TranslateT("Top"));
SendDlgItemMessage(hwndDlg, IDC_CMB_VV, CB_ADDSTRING, 0, (LPARAM)TranslateT("Centre"));
SendDlgItemMessage(hwndDlg, IDC_CMB_VV, CB_ADDSTRING, 0, (LPARAM)TranslateT("Bottom"));
- switch(options.value_valign) {
+ switch(options.value_valign) {
case DT_TOP: SendDlgItemMessage(hwndDlg, IDC_CMB_VV, CB_SETCURSEL, 0, 0); break;
case DT_VCENTER: SendDlgItemMessage(hwndDlg, IDC_CMB_VV, CB_SETCURSEL, 1, 0); break;
- case DT_BOTTOM: SendDlgItemMessage(hwndDlg, IDC_CMB_VV, CB_SETCURSEL, 2, 0); break;
- }
-
+ case DT_BOTTOM: SendDlgItemMessage(hwndDlg, IDC_CMB_VV, CB_SETCURSEL, 2, 0); break;
+ }
+
SendDlgItemMessage(hwndDlg, IDC_CMB_LH, CB_ADDSTRING, 0, (LPARAM)TranslateT("Left"));
SendDlgItemMessage(hwndDlg, IDC_CMB_LH, CB_ADDSTRING, 0, (LPARAM)TranslateT("Right"));
- switch(options.label_halign) {
+ switch(options.label_halign) {
case DT_LEFT: SendDlgItemMessage(hwndDlg, IDC_CMB_LH, CB_SETCURSEL, 0, 0); break;
- case DT_RIGHT: SendDlgItemMessage(hwndDlg, IDC_CMB_LH, CB_SETCURSEL, 1, 0); break;
- }
+ case DT_RIGHT: SendDlgItemMessage(hwndDlg, IDC_CMB_LH, CB_SETCURSEL, 1, 0); break;
+ }
SendDlgItemMessage(hwndDlg, IDC_CMB_VH, CB_ADDSTRING, 0, (LPARAM)TranslateT("Left"));
SendDlgItemMessage(hwndDlg, IDC_CMB_VH, CB_ADDSTRING, 0, (LPARAM)TranslateT("Right"));
- switch(options.value_halign) {
+ switch(options.value_halign) {
case DT_LEFT: SendDlgItemMessage(hwndDlg, IDC_CMB_VH, CB_SETCURSEL, 0, 0); break;
- case DT_RIGHT: SendDlgItemMessage(hwndDlg, IDC_CMB_VH, CB_SETCURSEL, 1, 0); break;
- }
+ case DT_RIGHT: SendDlgItemMessage(hwndDlg, IDC_CMB_VH, CB_SETCURSEL, 1, 0); break;
+ }
SendDlgItemMessage(hwndDlg, IDC_CMB_AV, CB_ADDSTRING, 0, (LPARAM)TranslateT("No avatar"));
if(ServiceExists(MS_AV_DRAWAVATAR)) {
@@ -1071,11 +1072,11 @@ static BOOL CALLBACK DlgProcOpts1(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM
int OptInit(WPARAM wParam, LPARAM lParam) {
OPTIONSDIALOGPAGE odp = { 0 };
-#define OPTIONPAGE_OLD_SIZE2 60
- DWORD mirVir = (DWORD)CallService(MS_SYSTEM_GETVERSION, 0, 0);
- odp.cbSize = (mirVir >= 0x00060000 ? sizeof(odp) : OPTIONPAGE_OLD_SIZE2);
- //odp.cbSize = sizeof(odp);
-
+#define OPTIONPAGE_OLD_SIZE2 60
+ DWORD mirVir = (DWORD)CallService(MS_SYSTEM_GETVERSION, 0, 0);
+ odp.cbSize = (mirVir >= 0x00060000 ? sizeof(odp) : OPTIONPAGE_OLD_SIZE2);
+ //odp.cbSize = sizeof(odp);
+
odp.flags = ODPF_BOLDGROUPS;
//odp.flags |= ODPF_UNICODE;
odp.position = -790000000;
diff --git a/tipper/popwin.cpp b/tipper/popwin.cpp
index d0f8055..4311789 100644
--- a/tipper/popwin.cpp
+++ b/tipper/popwin.cpp
@@ -70,8 +70,8 @@ LRESULT CALLBACK PopupWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPa
a2t(pwd->clcit.proto, pwd->swzTitle, TITLE_TEXT_LEN);
WORD status = CallProtoService(pwd->clcit.proto, PS_GETSTATUS, 0, 0);
- char *strptr = (char *)CallService(MS_CLIST_GETSTATUSMODEDESCRIPTION, (WPARAM)status, (LPARAM)0);
- if(strptr) {
+ char *strptr = (char *)CallService(MS_CLIST_GETSTATUSMODEDESCRIPTION, (WPARAM)status, (LPARAM)0);
+ if(strptr) {
TCHAR *swzText = a2t(strptr);
pwd->rows = (RowData *) realloc(pwd->rows, sizeof(RowData) * (pwd->row_count + 1));
@@ -104,17 +104,17 @@ LRESULT CALLBACK PopupWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPa
pwd->indent = 0;
pwd->sb_width = 0;
-
- //MessageBox(0, swzText, _T("tip"), MB_OK);
+
+ //MessageBox(0, swzText, _T("tip"), MB_OK);
TCHAR buff[2048], *swzText = pwd->clcit.text;
int buff_pos, i = 0, size = _tcslen(pwd->clcit.text);
bool top_message = false;
if(swzText[0] != _T('<')) {
- while(swzText[i] != _T('\n') && swzText[i] != _T('\r') && i < size && i < 2048) {
- buff[i] = swzText[i];
- i++;
+ while(swzText[i] != _T('\n') && swzText[i] != _T('\r') && i < size && i < 2048) {
+ buff[i] = swzText[i];
+ i++;
}
buff[i] = 0;
@@ -123,7 +123,7 @@ LRESULT CALLBACK PopupWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPa
pwd->rows[pwd->row_count].line_above = false;
pwd->rows[pwd->row_count].value_newline = true;
pwd->rows[pwd->row_count].swzLabel = _tcsdup(_T(""));
- pwd->rows[pwd->row_count].swzValue = _tcsdup(buff);
+ pwd->rows[pwd->row_count].swzValue = _tcsdup(buff);
pwd->row_count++;
top_message = true;
}
@@ -314,7 +314,7 @@ LRESULT CALLBACK PopupWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPa
// text background
//SetBkColor(ps.hdc, options.bg_col);
- SetBkMode(hdc, TRANSPARENT);
+ SetBkMode(hdc, TRANSPARENT);
// avatar
if(!pwd->text_tip && options.av_layout != PAV_NONE && pwd->av_height) {
@@ -381,7 +381,7 @@ LRESULT CALLBACK PopupWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPa
SetTextColor(ps.hdc, options.title_col);
tr.top = r.top + options.padding; tr.bottom = tr.top + pwd->tb_height - options.padding;
- DrawText(ps.hdc, pwd->swzTitle, _tcslen(pwd->swzTitle), &tr, DT_VCENTER | DT_LEFT | DT_END_ELLIPSIS | DT_SINGLELINE | DT_NOPREFIX);
+ DrawText(ps.hdc, pwd->swzTitle, _tcslen(pwd->swzTitle), &tr, DT_VCENTER | DT_LEFT | DT_END_ELLIPSIS | DT_SINGLELINE | DT_NOPREFIX);
}
// values
@@ -465,25 +465,27 @@ LRESULT CALLBACK PopupWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPa
}
return 0;
case WM_DESTROY:
- KillTimer(hwnd, ID_TIMER_CHECKMOUSE);
- KillTimer(hwnd, ID_TIMER_ANIMATE);
- ShowWindow(hwnd, SW_HIDE);
-
- DeleteObject(pwd->bkBrush);
- DeleteObject(pwd->barBrush);
- DeleteObject(pwd->bPen);
- DeleteObject(pwd->dPen);
-
- for(int i = 0; i < pwd->row_count; i++) {
- free(pwd->rows[i].swzLabel);
- free(pwd->rows[i].swzValue);
- }
- free(pwd->rows);
+ {
+ KillTimer(hwnd, ID_TIMER_CHECKMOUSE);
+ KillTimer(hwnd, ID_TIMER_ANIMATE);
+ ShowWindow(hwnd, SW_HIDE);
+
+ DeleteObject(pwd->bkBrush);
+ DeleteObject(pwd->barBrush);
+ DeleteObject(pwd->bPen);
+ DeleteObject(pwd->dPen);
- free(pwd); pwd = 0;
- SetWindowLong(hwnd, GWL_USERDATA, 0);
+ for(int i = 0; i < pwd->row_count; i++) {
+ free(pwd->rows[i].swzLabel);
+ free(pwd->rows[i].swzValue);
+ }
+ free(pwd->rows);
+ free(pwd); pwd = 0;
+ SetWindowLong(hwnd, GWL_USERDATA, 0);
+ }
break;
+
case WM_TIMER:
if(wParam == ID_TIMER_ANIMATE) {
pwd->anim_step++;
@@ -671,7 +673,7 @@ LRESULT CALLBACK PopupWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPa
smr.left = r.left + options.padding + pwd->indent;
smr.right = r.right;
if(pwd->tb_height + pwd->text_height + options.text_padding < pwd->av_height)
- smr.right -= pwd->real_av_width + 2 * options.av_padding;
+ smr.right -= pwd->real_av_width + 2 * options.av_padding;
else
smr.right -= options.padding;
if(!pwd->rows[i].value_newline) smr.right -= pwd->label_width + options.padding;
@@ -699,7 +701,7 @@ LRESULT CALLBACK PopupWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPa
else
width = max(width, wid + options.padding);
}
-
+
pwd->text_height += pwd->rows[i].total_height;
}
}
@@ -827,3 +829,4 @@ int AvatarChanged(WPARAM wParam, LPARAM lParam) {
return 0;
}
+
diff --git a/tipper/tipper.dep b/tipper/tipper.dep
new file mode 100644
index 0000000..24f57bc
--- /dev/null
+++ b/tipper/tipper.dep
@@ -0,0 +1,7 @@
+# Microsoft Developer Studio Generated Dependency File, included by tipper.mak
+
+.\resource.rc : \
+ ".\tipper.rc"\
+ ".\version.h"\
+ ".\version.rc"\
+
diff --git a/tipper/tipper.dsp b/tipper/tipper.dsp
new file mode 100644
index 0000000..e4ea204
--- /dev/null
+++ b/tipper/tipper.dsp
@@ -0,0 +1,245 @@
+# Microsoft Developer Studio Project File - Name="tipper" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=tipper - Win32 Debug Unicode
+!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 "tipper.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 "tipper.mak" CFG="tipper - Win32 Debug Unicode"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tipper - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tipper - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tipper - Win32 Release Unicode" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tipper - Win32 Debug Unicode" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""$/Miranda/miranda/plugins/tipper", FLIAAAAA"
+# PROP Scc_LocalPath "."
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tipper - 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 /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "tipper_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /Zi /O1 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TIPPER_EXPORTS" /Yu"common.h" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x419 /d "NDEBUG"
+# ADD RSC /l 0x419 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib wsock32.lib /nologo /dll /map /debug /machine:I386 /out:"../../bin/Release/Plugins/tipper.dll" /filealign:512
+# SUBTRACT LINK32 /pdb:none /incremental:yes
+
+!ELSEIF "$(CFG)" == "tipper - 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 Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "tipper_EXPORTS" /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TIPPER_EXPORTS" /FR /Yu"common.h" /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x419 /d "_DEBUG"
+# ADD RSC /l 0x419 /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 /dll /debug /machine:I386 /pdbtype:sept
+# 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 comctl32.lib wsock32.lib /nologo /dll /debug /machine:I386 /out:"../../bin/Debug/plugins/tipper.dll" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none /incremental:no
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Release Unicode"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "tipper___Win32_Release_Unicode"
+# PROP BASE Intermediate_Dir "tipper___Win32_Release_Unicode"
+# PROP BASE Ignore_Export_Lib 0
+# 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 /MD /W3 /GX /Zi /O1 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NO_GZIP" /D "PNG_NO_STDIO" /D "PNG_NO_CONSOLE_IO" /FD /c
+# SUBTRACT BASE CPP /YX
+# ADD CPP /nologo /MD /W3 /GX /Zi /O1 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "UNICODE" /D "_USRDLL" /D "TIPPER_EXPORTS" /Yu"common.h" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x419 /d "NDEBUG"
+# ADD RSC /l 0x419 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /map /debug /machine:I386 /out:"../../bin/Release/Plugins/tipper.dll" /filealign:512
+# SUBTRACT BASE LINK32 /pdb:none /incremental:yes
+# 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 comctl32.lib wsock32.lib /nologo /dll /map /debug /machine:I386 /out:"../../bin/Release Unicode/Plugins/tipper.dll" /filealign:512
+# SUBTRACT LINK32 /pdb:none /incremental:yes
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug Unicode"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "tipper___Win32_Debug_Unicode"
+# PROP BASE Intermediate_Dir "tipper___Win32_Debug_Unicode"
+# PROP BASE Ignore_Export_Lib 0
+# 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 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "NO_GZIP" /D "PNG_NO_STDIO" /D "PNG_NO_CONSOLE_IO" /FR /YX /FD /GZ /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "UNICODE" /D "_USRDLL" /D "TIPPER_EXPORTS" /FR /Yu"common.h" /FD /GZ /c
+# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x419 /d "_DEBUG"
+# ADD RSC /l 0x419 /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 /dll /debug /machine:I386 /out:"../../bin/Debug/plugins/tipper.dll" /pdbtype:sept
+# SUBTRACT BASE LINK32 /pdb:none /incremental:no
+# 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 comctl32.lib wsock32.lib /nologo /dll /debug /machine:I386 /out:"../../bin/Debug Unicode/plugins/tipper.dll" /pdbtype:sept
+# SUBTRACT LINK32 /pdb:none /incremental:no
+
+!ENDIF
+
+# Begin Target
+
+# Name "tipper - Win32 Release"
+# Name "tipper - Win32 Debug"
+# Name "tipper - Win32 Release Unicode"
+# Name "tipper - Win32 Debug Unicode"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\message_pump.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\options.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\popwin.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\str_utils.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\subst.cpp
+# End Source File
+# Begin Source File
+
+SOURCE=.\tipper.cpp
+# ADD CPP /Yc"common.h"
+# End Source File
+# Begin Source File
+
+SOURCE=.\translations.cpp
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\resource.rc
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter ""
+# Begin Source File
+
+SOURCE=.\common.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\m_tipper.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\message_pump.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\options.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\popwin.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\resource.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\str_utils.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\subst.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\tipper.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\translations.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\version.h
+# End Source File
+# End Group
+# End Target
+# End Project
diff --git a/tipper/tipper.dsw b/tipper/tipper.dsw
new file mode 100644
index 0000000..c49f741
--- /dev/null
+++ b/tipper/tipper.dsw
@@ -0,0 +1,33 @@
+Microsoft Developer Studio Workspace File, Format Version 6.00
+# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
+
+###############################################################################
+
+Project: "yapp"=.\tipper.dsp - Package Owner=<4>
+
+Package=<5>
+{{{
+ begin source code control
+ "$/Miranda/miranda/plugins/tipper", FLIAAAAA
+ .
+ end source code control
+}}}
+
+Package=<4>
+{{{
+}}}
+
+###############################################################################
+
+Global:
+
+Package=<5>
+{{{
+}}}
+
+Package=<3>
+{{{
+}}}
+
+###############################################################################
+
diff --git a/tipper/tipper.mak b/tipper/tipper.mak
new file mode 100644
index 0000000..a1c2cf0
--- /dev/null
+++ b/tipper/tipper.mak
@@ -0,0 +1,555 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on tipper.dsp
+!IF "$(CFG)" == ""
+CFG=tipper - Win32 Debug Unicode
+!MESSAGE No configuration specified. Defaulting to tipper - Win32 Debug Unicode.
+!ENDIF
+
+!IF "$(CFG)" != "tipper - Win32 Release" && "$(CFG)" != "tipper - Win32 Debug" && "$(CFG)" != "tipper - Win32 Release Unicode" && "$(CFG)" != "tipper - Win32 Debug Unicode"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!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 "tipper.mak" CFG="tipper - Win32 Debug Unicode"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "tipper - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tipper - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tipper - Win32 Release Unicode" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "tipper - Win32 Debug Unicode" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "tipper - Win32 Release"
+
+OUTDIR=.\Release
+INTDIR=.\Release
+
+ALL : "..\..\bin\Release\Plugins\tipper.dll"
+
+
+CLEAN :
+ -@erase "$(INTDIR)\message_pump.obj"
+ -@erase "$(INTDIR)\options.obj"
+ -@erase "$(INTDIR)\popwin.obj"
+ -@erase "$(INTDIR)\resource.res"
+ -@erase "$(INTDIR)\str_utils.obj"
+ -@erase "$(INTDIR)\subst.obj"
+ -@erase "$(INTDIR)\tipper.obj"
+ -@erase "$(INTDIR)\tipper.pch"
+ -@erase "$(INTDIR)\translations.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(OUTDIR)\tipper.exp"
+ -@erase "$(OUTDIR)\tipper.lib"
+ -@erase "$(OUTDIR)\tipper.map"
+ -@erase "$(OUTDIR)\tipper.pdb"
+ -@erase "..\..\bin\Release\Plugins\tipper.dll"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP_PROJ=/nologo /MD /W3 /GX /Zi /O1 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TIPPER_EXPORTS" /Fp"$(INTDIR)\tipper.pch" /Yu"common.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC_PROJ=/l 0x419 /fo"$(INTDIR)\resource.res" /d "NDEBUG"
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tipper.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib wsock32.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\tipper.pdb" /map:"$(INTDIR)\tipper.map" /debug /machine:I386 /out:"../../bin/Release/Plugins/tipper.dll" /implib:"$(OUTDIR)\tipper.lib" /filealign:512
+LINK32_OBJS= \
+ "$(INTDIR)\resource.res" \
+ "$(INTDIR)\translations.obj" \
+ "$(INTDIR)\message_pump.obj" \
+ "$(INTDIR)\options.obj" \
+ "$(INTDIR)\popwin.obj" \
+ "$(INTDIR)\str_utils.obj" \
+ "$(INTDIR)\subst.obj" \
+ "$(INTDIR)\tipper.obj"
+
+"..\..\bin\Release\Plugins\tipper.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug"
+
+OUTDIR=.\Debug
+INTDIR=.\Debug
+# Begin Custom Macros
+OutDir=.\Debug
+# End Custom Macros
+
+ALL : "..\..\bin\Debug\plugins\tipper.dll" "$(OUTDIR)\tipper.bsc"
+
+
+CLEAN :
+ -@erase "$(INTDIR)\message_pump.obj"
+ -@erase "$(INTDIR)\message_pump.sbr"
+ -@erase "$(INTDIR)\options.obj"
+ -@erase "$(INTDIR)\options.sbr"
+ -@erase "$(INTDIR)\popwin.obj"
+ -@erase "$(INTDIR)\popwin.sbr"
+ -@erase "$(INTDIR)\resource.res"
+ -@erase "$(INTDIR)\str_utils.obj"
+ -@erase "$(INTDIR)\str_utils.sbr"
+ -@erase "$(INTDIR)\subst.obj"
+ -@erase "$(INTDIR)\subst.sbr"
+ -@erase "$(INTDIR)\tipper.obj"
+ -@erase "$(INTDIR)\tipper.pch"
+ -@erase "$(INTDIR)\tipper.sbr"
+ -@erase "$(INTDIR)\translations.obj"
+ -@erase "$(INTDIR)\translations.sbr"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(OUTDIR)\tipper.bsc"
+ -@erase "$(OUTDIR)\tipper.exp"
+ -@erase "$(OUTDIR)\tipper.lib"
+ -@erase "$(OUTDIR)\tipper.pdb"
+ -@erase "..\..\bin\Debug\plugins\tipper.dll"
+ -@erase "..\..\bin\Debug\plugins\tipper.ilk"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TIPPER_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\tipper.pch" /Yu"common.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC_PROJ=/l 0x419 /fo"$(INTDIR)\resource.res" /d "_DEBUG"
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tipper.bsc"
+BSC32_SBRS= \
+ "$(INTDIR)\translations.sbr" \
+ "$(INTDIR)\message_pump.sbr" \
+ "$(INTDIR)\options.sbr" \
+ "$(INTDIR)\popwin.sbr" \
+ "$(INTDIR)\str_utils.sbr" \
+ "$(INTDIR)\subst.sbr" \
+ "$(INTDIR)\tipper.sbr"
+
+"$(OUTDIR)\tipper.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
+ $(BSC32) @<<
+ $(BSC32_FLAGS) $(BSC32_SBRS)
+<<
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib wsock32.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\tipper.pdb" /debug /machine:I386 /out:"../../bin/Debug/plugins/tipper.dll" /implib:"$(OUTDIR)\tipper.lib" /pdbtype:sept
+LINK32_OBJS= \
+ "$(INTDIR)\resource.res" \
+ "$(INTDIR)\translations.obj" \
+ "$(INTDIR)\message_pump.obj" \
+ "$(INTDIR)\options.obj" \
+ "$(INTDIR)\popwin.obj" \
+ "$(INTDIR)\str_utils.obj" \
+ "$(INTDIR)\subst.obj" \
+ "$(INTDIR)\tipper.obj"
+
+"..\..\bin\Debug\plugins\tipper.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Release Unicode"
+
+OUTDIR=.\Release_Unicode
+INTDIR=.\Release_Unicode
+
+ALL : "..\..\bin\Release Unicode\Plugins\tipper.dll"
+
+
+CLEAN :
+ -@erase "$(INTDIR)\message_pump.obj"
+ -@erase "$(INTDIR)\options.obj"
+ -@erase "$(INTDIR)\popwin.obj"
+ -@erase "$(INTDIR)\resource.res"
+ -@erase "$(INTDIR)\str_utils.obj"
+ -@erase "$(INTDIR)\subst.obj"
+ -@erase "$(INTDIR)\tipper.obj"
+ -@erase "$(INTDIR)\tipper.pch"
+ -@erase "$(INTDIR)\translations.obj"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(OUTDIR)\tipper.exp"
+ -@erase "$(OUTDIR)\tipper.lib"
+ -@erase "$(OUTDIR)\tipper.map"
+ -@erase "$(OUTDIR)\tipper.pdb"
+ -@erase "..\..\bin\Release Unicode\Plugins\tipper.dll"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP_PROJ=/nologo /MD /W3 /GX /Zi /O1 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "UNICODE" /D "_USRDLL" /D "TIPPER_EXPORTS" /Fp"$(INTDIR)\tipper.pch" /Yu"common.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC_PROJ=/l 0x419 /fo"$(INTDIR)\resource.res" /d "NDEBUG"
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tipper.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib wsock32.lib /nologo /dll /incremental:no /pdb:"$(OUTDIR)\tipper.pdb" /map:"$(INTDIR)\tipper.map" /debug /machine:I386 /out:"../../bin/Release Unicode/Plugins/tipper.dll" /implib:"$(OUTDIR)\tipper.lib" /filealign:512
+LINK32_OBJS= \
+ "$(INTDIR)\resource.res" \
+ "$(INTDIR)\translations.obj" \
+ "$(INTDIR)\message_pump.obj" \
+ "$(INTDIR)\options.obj" \
+ "$(INTDIR)\popwin.obj" \
+ "$(INTDIR)\str_utils.obj" \
+ "$(INTDIR)\subst.obj" \
+ "$(INTDIR)\tipper.obj"
+
+"..\..\bin\Release Unicode\Plugins\tipper.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug Unicode"
+
+OUTDIR=.\Debug_Unicode
+INTDIR=.\Debug_Unicode
+# Begin Custom Macros
+OutDir=.\Debug_Unicode
+# End Custom Macros
+
+ALL : "..\..\bin\Debug Unicode\plugins\tipper.dll" "$(OUTDIR)\tipper.bsc"
+
+
+CLEAN :
+ -@erase "$(INTDIR)\message_pump.obj"
+ -@erase "$(INTDIR)\message_pump.sbr"
+ -@erase "$(INTDIR)\options.obj"
+ -@erase "$(INTDIR)\options.sbr"
+ -@erase "$(INTDIR)\popwin.obj"
+ -@erase "$(INTDIR)\popwin.sbr"
+ -@erase "$(INTDIR)\resource.res"
+ -@erase "$(INTDIR)\str_utils.obj"
+ -@erase "$(INTDIR)\str_utils.sbr"
+ -@erase "$(INTDIR)\subst.obj"
+ -@erase "$(INTDIR)\subst.sbr"
+ -@erase "$(INTDIR)\tipper.obj"
+ -@erase "$(INTDIR)\tipper.pch"
+ -@erase "$(INTDIR)\tipper.sbr"
+ -@erase "$(INTDIR)\translations.obj"
+ -@erase "$(INTDIR)\translations.sbr"
+ -@erase "$(INTDIR)\vc60.idb"
+ -@erase "$(INTDIR)\vc60.pdb"
+ -@erase "$(OUTDIR)\tipper.bsc"
+ -@erase "$(OUTDIR)\tipper.exp"
+ -@erase "$(OUTDIR)\tipper.lib"
+ -@erase "$(OUTDIR)\tipper.pdb"
+ -@erase "..\..\bin\Debug Unicode\plugins\tipper.dll"
+ -@erase "..\..\bin\Debug Unicode\plugins\tipper.ilk"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "UNICODE" /D "_USRDLL" /D "TIPPER_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\tipper.pch" /Yu"common.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC_PROJ=/l 0x419 /fo"$(INTDIR)\resource.res" /d "_DEBUG"
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\tipper.bsc"
+BSC32_SBRS= \
+ "$(INTDIR)\translations.sbr" \
+ "$(INTDIR)\message_pump.sbr" \
+ "$(INTDIR)\options.sbr" \
+ "$(INTDIR)\popwin.sbr" \
+ "$(INTDIR)\str_utils.sbr" \
+ "$(INTDIR)\subst.sbr" \
+ "$(INTDIR)\tipper.sbr"
+
+"$(OUTDIR)\tipper.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
+ $(BSC32) @<<
+ $(BSC32_FLAGS) $(BSC32_SBRS)
+<<
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib wsock32.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\tipper.pdb" /debug /machine:I386 /out:"../../bin/Debug Unicode/plugins/tipper.dll" /implib:"$(OUTDIR)\tipper.lib" /pdbtype:sept
+LINK32_OBJS= \
+ "$(INTDIR)\resource.res" \
+ "$(INTDIR)\translations.obj" \
+ "$(INTDIR)\message_pump.obj" \
+ "$(INTDIR)\options.obj" \
+ "$(INTDIR)\popwin.obj" \
+ "$(INTDIR)\str_utils.obj" \
+ "$(INTDIR)\subst.obj" \
+ "$(INTDIR)\tipper.obj"
+
+"..\..\bin\Debug Unicode\plugins\tipper.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
+.c{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(INTDIR)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+
+!IF "$(NO_EXTERNAL_DEPS)" != "1"
+!IF EXISTS("tipper.dep")
+!INCLUDE "tipper.dep"
+!ELSE
+!MESSAGE Warning: cannot find "tipper.dep"
+!ENDIF
+!ENDIF
+
+
+!IF "$(CFG)" == "tipper - Win32 Release" || "$(CFG)" == "tipper - Win32 Debug" || "$(CFG)" == "tipper - Win32 Release Unicode" || "$(CFG)" == "tipper - Win32 Debug Unicode"
+SOURCE=.\message_pump.cpp
+
+!IF "$(CFG)" == "tipper - Win32 Release"
+
+
+"$(INTDIR)\message_pump.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug"
+
+
+"$(INTDIR)\message_pump.obj" "$(INTDIR)\message_pump.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Release Unicode"
+
+
+"$(INTDIR)\message_pump.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug Unicode"
+
+
+"$(INTDIR)\message_pump.obj" "$(INTDIR)\message_pump.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ENDIF
+
+SOURCE=.\options.cpp
+
+!IF "$(CFG)" == "tipper - Win32 Release"
+
+
+"$(INTDIR)\options.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug"
+
+
+"$(INTDIR)\options.obj" "$(INTDIR)\options.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Release Unicode"
+
+
+"$(INTDIR)\options.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug Unicode"
+
+
+"$(INTDIR)\options.obj" "$(INTDIR)\options.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ENDIF
+
+SOURCE=.\popwin.cpp
+
+!IF "$(CFG)" == "tipper - Win32 Release"
+
+
+"$(INTDIR)\popwin.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug"
+
+
+"$(INTDIR)\popwin.obj" "$(INTDIR)\popwin.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Release Unicode"
+
+
+"$(INTDIR)\popwin.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug Unicode"
+
+
+"$(INTDIR)\popwin.obj" "$(INTDIR)\popwin.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ENDIF
+
+SOURCE=.\str_utils.cpp
+
+!IF "$(CFG)" == "tipper - Win32 Release"
+
+
+"$(INTDIR)\str_utils.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug"
+
+
+"$(INTDIR)\str_utils.obj" "$(INTDIR)\str_utils.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Release Unicode"
+
+
+"$(INTDIR)\str_utils.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug Unicode"
+
+
+"$(INTDIR)\str_utils.obj" "$(INTDIR)\str_utils.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ENDIF
+
+SOURCE=.\subst.cpp
+
+!IF "$(CFG)" == "tipper - Win32 Release"
+
+
+"$(INTDIR)\subst.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug"
+
+
+"$(INTDIR)\subst.obj" "$(INTDIR)\subst.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Release Unicode"
+
+
+"$(INTDIR)\subst.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug Unicode"
+
+
+"$(INTDIR)\subst.obj" "$(INTDIR)\subst.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ENDIF
+
+SOURCE=.\tipper.cpp
+
+!IF "$(CFG)" == "tipper - Win32 Release"
+
+CPP_SWITCHES=/nologo /MD /W3 /GX /Zi /O1 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TIPPER_EXPORTS" /Fp"$(INTDIR)\tipper.pch" /Yc"common.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+
+"$(INTDIR)\tipper.obj" "$(INTDIR)\tipper.pch" : $(SOURCE) "$(INTDIR)"
+ $(CPP) @<<
+ $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug"
+
+CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "TIPPER_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\tipper.pch" /Yc"common.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+
+"$(INTDIR)\tipper.obj" "$(INTDIR)\tipper.sbr" "$(INTDIR)\tipper.pch" : $(SOURCE) "$(INTDIR)"
+ $(CPP) @<<
+ $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Release Unicode"
+
+CPP_SWITCHES=/nologo /MD /W3 /GX /Zi /O1 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "UNICODE" /D "_USRDLL" /D "TIPPER_EXPORTS" /Fp"$(INTDIR)\tipper.pch" /Yc"common.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+
+"$(INTDIR)\tipper.obj" "$(INTDIR)\tipper.pch" : $(SOURCE) "$(INTDIR)"
+ $(CPP) @<<
+ $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug Unicode"
+
+CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "UNICODE" /D "_USRDLL" /D "TIPPER_EXPORTS" /FR"$(INTDIR)\\" /Fp"$(INTDIR)\tipper.pch" /Yc"common.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c
+
+"$(INTDIR)\tipper.obj" "$(INTDIR)\tipper.sbr" "$(INTDIR)\tipper.pch" : $(SOURCE) "$(INTDIR)"
+ $(CPP) @<<
+ $(CPP_SWITCHES) $(SOURCE)
+<<
+
+
+!ENDIF
+
+SOURCE=.\translations.cpp
+
+!IF "$(CFG)" == "tipper - Win32 Release"
+
+
+"$(INTDIR)\translations.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug"
+
+
+"$(INTDIR)\translations.obj" "$(INTDIR)\translations.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Release Unicode"
+
+
+"$(INTDIR)\translations.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ELSEIF "$(CFG)" == "tipper - Win32 Debug Unicode"
+
+
+"$(INTDIR)\translations.obj" "$(INTDIR)\translations.sbr" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\tipper.pch"
+
+
+!ENDIF
+
+SOURCE=.\resource.rc
+
+"$(INTDIR)\resource.res" : $(SOURCE) "$(INTDIR)"
+ $(RSC) $(RSC_PROJ) $(SOURCE)
+
+
+
+!ENDIF
+
diff --git a/tipper/tipper.mdsp b/tipper/tipper.mdsp
index 6ee871f..cab97b4 100644
--- a/tipper/tipper.mdsp
+++ b/tipper/tipper.mdsp
@@ -104,6 +104,6 @@ extraResourceOptions=
1=resource.rc
[Other]
[History]
-tipper.cpp,3285
version.h,750
+tipper.cpp,3285
message_pump.cpp,4381
diff --git a/tipper/version.h b/tipper/version.h
index 657952c..765f643 100644
--- a/tipper/version.h
+++ b/tipper/version.h
@@ -4,7 +4,7 @@
#define __MAJOR_VERSION 0
#define __MINOR_VERSION 3
#define __RELEASE_NUM 0
-#define __BUILD_NUM 5
+#define __BUILD_NUM 6
#define __FILEVERSION_STRING __MAJOR_VERSION,__MINOR_VERSION,__RELEASE_NUM,__BUILD_NUM
#define __FILEVERSION_STRING_DOTS __MAJOR_VERSION.__MINOR_VERSION.__RELEASE_NUM.__BUILD_NUM