From 6f8f9d1405f64ca8218a6b83b83e01e3ece3c9ea Mon Sep 17 00:00:00 2001 From: mataes2007 Date: Sun, 15 May 2011 15:17:43 +0000 Subject: added QuickMessages plugin added webOSD plugin git-svn-id: http://miranda-plugins.googlecode.com/svn/trunk@106 e753b5eb-9565-29b2-b5c5-2cc6f99dfbcb --- wbOSD/buildnumber.h | 6 + wbOSD/events.cpp | 218 +++++++++++++++++++++ wbOSD/lpgen.pl | 212 ++++++++++++++++++++ wbOSD/main.cpp | 105 ++++++++++ wbOSD/options.cpp | 426 +++++++++++++++++++++++++++++++++++++++++ wbOSD/pack.cmd | 31 +++ wbOSD/readme | 84 ++++++++ wbOSD/resource.h | 57 ++++++ wbOSD/wbOSD-translation.txt | 42 ++++ wbOSD/wbOSD.cpp | 332 ++++++++++++++++++++++++++++++++ wbOSD/wbOSD.dep | 24 +++ wbOSD/wbOSD.dsp | 200 +++++++++++++++++++ wbOSD/wbOSD.dsw | 29 +++ wbOSD/wbOSD.h | 144 ++++++++++++++ wbOSD/wbOSD.mak | 336 ++++++++++++++++++++++++++++++++ wbOSD/wbOSD.rc | 188 ++++++++++++++++++ wbOSD/wbOSD.vcproj | 191 ++++++++++++++++++ wbOSD/wbOSD_10.vcxproj | 182 ++++++++++++++++++ wbOSD/wbOSD_10.vcxproj.filters | 44 +++++ wbOSD/wbOSD_9.vcproj | 423 ++++++++++++++++++++++++++++++++++++++++ 20 files changed, 3274 insertions(+) create mode 100644 wbOSD/buildnumber.h create mode 100644 wbOSD/events.cpp create mode 100644 wbOSD/lpgen.pl create mode 100644 wbOSD/main.cpp create mode 100644 wbOSD/options.cpp create mode 100644 wbOSD/pack.cmd create mode 100644 wbOSD/readme create mode 100644 wbOSD/resource.h create mode 100644 wbOSD/wbOSD-translation.txt create mode 100644 wbOSD/wbOSD.cpp create mode 100644 wbOSD/wbOSD.dep create mode 100644 wbOSD/wbOSD.dsp create mode 100644 wbOSD/wbOSD.dsw create mode 100644 wbOSD/wbOSD.h create mode 100644 wbOSD/wbOSD.mak create mode 100644 wbOSD/wbOSD.rc create mode 100644 wbOSD/wbOSD.vcproj create mode 100644 wbOSD/wbOSD_10.vcxproj create mode 100644 wbOSD/wbOSD_10.vcxproj.filters create mode 100644 wbOSD/wbOSD_9.vcproj (limited to 'wbOSD') diff --git a/wbOSD/buildnumber.h b/wbOSD/buildnumber.h new file mode 100644 index 0000000..b777277 --- /dev/null +++ b/wbOSD/buildnumber.h @@ -0,0 +1,6 @@ +#ifndef _BUILDNUMBER_ +#define BUILDNUMBER 0 +#define __FILEVERSION_STRING 0,2,1,0 +#define __VERSION_STRING "0.2.1.0" +#define __VERSION_DWORD 0x20100 +#endif //_BUILDNUMBER_ diff --git a/wbOSD/events.cpp b/wbOSD/events.cpp new file mode 100644 index 0000000..34dd361 --- /dev/null +++ b/wbOSD/events.cpp @@ -0,0 +1,218 @@ +/* +Wannabe OSD +This plugin tries to become miranda's standard OSD ;-) + +(C) 2005 Andrej Krutak + +Distributed under GNU's GPL 2 or later +*/ + +#include "wbOSD.h" +#include + +extern HWND hwnd; +extern HANDLE hHookContactStatusChanged; + +void logmsg2(char *str) +{ + FILE *f=fopen("c:\\logm.txt", "a"); + fprintf(f, "%s\n", str); + fclose(f); +} + +void showmsgwnd(unsigned int param) +{ + logmsg("showmsgwnd"); + if (DBGetContactSettingByte(NULL,THIS_MODULE, "showMessageWindow", DEFAULT_SHOWMSGWIN)) + CallService(MS_MSG_SENDMESSAGE, (WPARAM)param, 0); +} + +LRESULT ShowOSD(TCHAR *str, int timeout, COLORREF color, HANDLE user) +{ + osdmsg om; + + logmsg("ShowOSD"); + + if (!hwnd) + return 0; + + if (timeout==0) + timeout=DBGetContactSettingDword(NULL,THIS_MODULE, "timeout", DEFAULT_TIMEOUT); + om.text=str; + om.timeout=timeout; + om.color=color; + om.param=(unsigned int)user; + om.callback=showmsgwnd; + + return SendMessage(hwnd, WM_USER+4, (WPARAM)&om, 0); +} + +int ProtoAck(WPARAM wparam,LPARAM lparam) +{ + ACKDATA *ack=(ACKDATA *)lparam; + + logmsg("ProtoAck"); + + if (!DBGetContactSettingByte(NULL,THIS_MODULE, "a_user", DEFAULT_ANNOUNCESTATUS)) + return 0; + + if (!(DBGetContactSettingDword(NULL,THIS_MODULE,"showWhen", DEFAULT_SHOWWHEN)&(1<<(DBGetContactSettingWord(NULL, "CList", "Status", ID_STATUS_OFFLINE)-ID_STATUS_OFFLINE)))) + return 0; + + if ( ack->type == ACKTYPE_STATUS ) { + if (!DBGetContactSettingByte(NULL,THIS_MODULE, "showMyStatus", DEFAULT_SHOWMYSTATUS)) + return 0; + + if ( ack->result == ACKRESULT_SUCCESS && (LPARAM)ack->hProcess != ack->lParam ) { + DWORD ann = DBGetContactSettingDword( NULL, THIS_MODULE, "announce", DEFAULT_ANNOUNCE ); + if ( ann & ( 1 << ( ack->lParam - ID_STATUS_OFFLINE ))) { + TCHAR* ptszName = (TCHAR*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)ack->hContact, GCDNF_TCHAR); + TCHAR buffer[512]; + mir_sntprintf(buffer, SIZEOF(buffer), TranslateT("%s is %s"), ptszName, TranslateTS(statusValues[ack->lParam-ID_STATUS_OFFLINE].szDescr)); + ShowOSD(buffer, 0, DBGetContactSettingDword(NULL,THIS_MODULE, "clr_status", DEFAULT_CLRSTATUS), ack->hContact); + } } } + + return 0; +} + +int ContactSettingChanged(WPARAM wParam,LPARAM lParam) +{ + DBCONTACTWRITESETTING *cws=(DBCONTACTWRITESETTING*)lParam; + WORD newStatus = 0,oldStatus = 0; + DWORD dwStatuses = 0; + + logmsg("ContactSettingChanged1"); + + if((HANDLE)wParam==NULL || lstrcmpA(cws->szSetting,"Status")) return 0; + + newStatus = cws->value.wVal; + oldStatus = DBGetContactSettingRangedWord((HANDLE)wParam,"UserOnline","OldStatus2",ID_STATUS_OFFLINE, ID_STATUS_MIN, ID_STATUS_MAX); + + if (oldStatus == newStatus) return 0; + + logmsg("ContactSettingChanged2"); + + DBWriteContactSettingWord((HANDLE)wParam,"UserOnline","OldStatus2",(WORD)newStatus); + + if(CallService(MS_IGNORE_ISIGNORED,wParam,IGNOREEVENT_USERONLINE)) return 0; + + dwStatuses = MAKELPARAM(oldStatus, newStatus); + NotifyEventHooks(hHookContactStatusChanged, (WPARAM)wParam, (LPARAM)dwStatuses); + + return 0; +} + +int ContactStatusChanged(WPARAM wParam, LPARAM lParam) +{ + WORD oldStatus = LOWORD(lParam); + WORD newStatus = HIWORD(lParam); + DWORD ann=DBGetContactSettingDword(NULL,THIS_MODULE,"announce", DEFAULT_ANNOUNCE); + char buffer[512]; +#if defined(_UNICODE) + wchar_t bufferW[512]; +#endif + + logmsg("ContactStatusChanged1"); + + if (!DBGetContactSettingByte(NULL,THIS_MODULE, "a_user", DEFAULT_ANNOUNCESTATUS)) + return 0; + + if (!(DBGetContactSettingDword(NULL,THIS_MODULE,"showWhen", DEFAULT_SHOWWHEN)&(1<<(DBGetContactSettingWord(NULL, "CList", "Status", ID_STATUS_OFFLINE)-ID_STATUS_OFFLINE)))) + return 0; + + if (!(ann&(1<<(newStatus-ID_STATUS_OFFLINE))) ) + return 0; + + logmsg("ContactStatusChanged2"); + + if (DBGetContactSettingByte((HANDLE)wParam,"CList","NotOnList",0) || + DBGetContactSettingByte((HANDLE)wParam,"CList","Hidden",0) || + (CallService(MS_IGNORE_ISIGNORED,wParam,IGNOREEVENT_USERONLINE) && newStatus==ID_STATUS_ONLINE) + ) + return 0; + + mir_snprintf(buffer, sizeof(buffer), Translate("%s is %s"), (char*)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, wParam, 0), Translate(statusValues[newStatus-ID_STATUS_OFFLINE].szDescr)); +#if defined(_UNICODE) + MultiByteToWideChar(CP_ACP, 0, buffer, -1, bufferW, 511); + bufferW[511] = 0; + ShowOSD(bufferW, 0, DBGetContactSettingDword(NULL,THIS_MODULE, "clr_status", DEFAULT_CLRSTATUS), (HANDLE)wParam); +#else + ShowOSD(buffer, 0, DBGetContactSettingDword(NULL,THIS_MODULE, "clr_status", DEFAULT_CLRSTATUS), (HANDLE)wParam); +#endif + return 0; +} + +int HookedNewEvent(WPARAM wParam, LPARAM lParam) +{ + logmsg("HookedNewEvent1"); + + DBEVENTINFO dbe; + dbe.cbSize = sizeof(dbe); + dbe.cbBlob = CallService(MS_DB_EVENT_GETBLOBSIZE, (WPARAM) lParam, 0); + if (dbe.cbBlob == -1) + return 0; + + dbe.pBlob = (PBYTE) malloc(dbe.cbBlob); + CallService(MS_DB_EVENT_GET, (WPARAM)lParam, (LPARAM)&dbe); + + if (dbe.flags & DBEF_SENT || dbe.eventType == 25368) + return 0; + + if (DBGetContactSettingByte(NULL,THIS_MODULE, "messages", DEFAULT_ANNOUNCEMESSAGES)==0) + return 0; + + if (!(DBGetContactSettingDword(NULL,THIS_MODULE,"showWhen", DEFAULT_SHOWWHEN)&(1<<(DBGetContactSettingWord(NULL, "CList", "Status", ID_STATUS_OFFLINE)-ID_STATUS_OFFLINE)))) + return 0; + + logmsg("HookedNewEvent2"); + + TCHAR buf[512]; + _tcscpy(buf, DEFAULT_MESSAGEFORMAT); + + DBVARIANT dbv; + if(!DBGetContactSettingTString(NULL,THIS_MODULE,"message_format",&dbv)) { + _tcscpy(buf, dbv.ptszVal); + DBFreeVariant(&dbv); + } + + int i1=-1, i2=-1; + TCHAR* pbuf = buf; + while (*pbuf) { + if (*pbuf=='%') { + if (*(pbuf+1)=='n') { + if (i1==-1) + i1=1; + else i2=1; + *(pbuf+1)='s'; + } else if (*(pbuf+1)=='m') { + if (i1==-1) + i1=2; + else i2=2; + *(pbuf+1)='s'; + } else if (*(pbuf+1)=='l') { + *pbuf=0x0d; + *(pbuf+1)=0x0a; + } + } + pbuf++; + } + + TCHAR *c1 = 0, *c2 = 0; + if ( i1 == 1 ) + c1 = mir_tstrdup(( TCHAR* )CallService(MS_CLIST_GETCONTACTDISPLAYNAME, wParam, GCDNF_TCHAR)); + else if ( i1 == 2 ) + c1 = DbGetEventTextT( &dbe, 0 ); + + if ( i2 == 1 ) + c2 = mir_tstrdup(( TCHAR* )CallService(MS_CLIST_GETCONTACTDISPLAYNAME, wParam, GCDNF_TCHAR)); + else if ( i2 == 2 ) + c2 = DbGetEventTextT( &dbe, 0 ); + + TCHAR buffer[512]; + mir_sntprintf(buffer, SIZEOF(buffer), buf, c1, c2); + ShowOSD(buffer, 0, DBGetContactSettingDword(NULL,THIS_MODULE, "clr_msg", DEFAULT_CLRMSG), (HANDLE)wParam); + + mir_free( c1 ); + mir_free( c2 ); + return 0; +} diff --git a/wbOSD/lpgen.pl b/wbOSD/lpgen.pl new file mode 100644 index 0000000..6593868 --- /dev/null +++ b/wbOSD/lpgen.pl @@ -0,0 +1,212 @@ +#!/usr/bin/perl + +use POSIX; +use File::Find; +use strict; + +my $rootdir = ''; +my %hash = (); +my $clines = 0; + +my $version = '0.7svn'; +my $time = localtime(); + +if (@ARGV && $ARGV[0] eq "version") { + shift @ARGV; + # 1st arg version major i.e. 07 for "0.7" + if (@ARGV) { + my $vermaj = shift @ARGV; + if ($vermaj =~ /^([0-9]*)([0-9])$/) { + if ($1 eq "") { + $version = $2; + } else { + $version = "$1.$2"; + } + } else { + $version = $vermaj; + } + } + # 2nd arg version minor i.e. 1 for "0.7.1" + if (@ARGV) { + my $vermin = shift @ARGV; + if ($vermin =~ /^[0-9]+$/) { + $version .= ".$vermin"; + } else { + $version .= $vermin; + } + } + # 3rd arg build number i.e. 36 for "0.7.1 build 36" + if (@ARGV) { + my $build = shift @ARGV; + if ($build =~ /^[0-9]+$/) { + $version .= " build $build"; + } else { + $version .= $build; + } + } +} + +#Language Files +if (!@ARGV) { + create_langfile( + '../../miranda', + '../../miranda/i18n/langpack_english.txt', + 'English (US)', '0809', + 'Miranda IM Development Team', + 'project-info@miranda-im.org', + 'Scriver,avs,chat,clist,clist_nicer,db3x,db3x_mmap,dbrw,advaimg,import,modernb,mwclist,png2dib,srmm,tabsrmm,AimOscar,Gadu-Gadu,IRC,IcqOscarJ,JabberG,MSN,Yahoo'); +} +elsif ($ARGV[0] eq "core") { + create_langfile('../../miranda/src', + '../../miranda/i18n/core-translation.txt', + 'English (US)', '0809', + 'Miranda IM Development Team', + 'project-info@miranda-im.org'); +} +elsif ($ARGV[0] eq "srmm") { + create_langfile('../../miranda/plugins/SRMM/', + '../../miranda/plugins/SRMM/Docs/srmm-translation.txt', + 'English (US)', '0809', + 'Miranda IM Development Team', + 'project-info@miranda-im.org'); +} +elsif ($ARGV[0] eq "import") { + create_langfile('../../miranda/plugins/Import/', + '../../miranda/plugins/Import/docs/import-translation.txt', + 'English (US)', '0809', + 'Miranda IM Development Team', + 'project-info@miranda-im.org'); +} +elsif ($ARGV[0] eq "wbOSD") { + create_langfile('./', + 'wbOSD-translation.txt', + 'English (US)', '0809', + 'Andrej Krutak', + 'andree182 {at} gmail (dot) com'); +} +else { + print "Error: Unknown module $ARGV[0]\n"; + exit 1; +} + +sub create_langfile { + $rootdir = shift(@_); + my $outfile = shift(@_); + my $lang = shift(@_); + my $locale = shift(@_); + my $author = shift(@_); + my $email = shift(@_); + my $plugins = @_ ? shift(@_) : ''; + %hash = (); + my %common = (); + $clines = 0; + print "Building language file for $rootdir:\n"; + find({ wanted => \&csearch, preprocess => \&pre_dir }, $rootdir); + find({ wanted => \&rcsearch, preprocess => \&pre_dir }, $rootdir); + open(WRITE, "> $outfile") or die; + print WRITE < $common{$a}) } keys %common; + print WRITE "; Common strings that belong to many files\n;["; + print WRITE join "]\n;[", @sorted; + print WRITE "]\n"; + + my $file = ''; + foreach my $trans (sort { ($hash{$a} eq $hash{$b}) ? ($a cmp $b) : ($hash{$a} cmp $hash{$b}) } keys %hash) { + if ($hash{$trans} ne $file) { + $file = $hash{$trans}; + print WRITE "\n; $file\n"; + } + print WRITE ";[$trans]\n"; + } + + close(WRITE); + print " $outfile is complete ($clines)\n\n"; +} + +sub pre_dir { + # avoid parsing some ext SDKs + my @files = (); + return @files if ( + $File::Find::name =~/..\/extplugins/ or + $File::Find::name =~/freeimage\/Source/ or + $File::Find::name =~/dbrw\/sqlite3/); + @files = grep { not /^\.\.?$/ } @_; + return sort @files; +} + +sub append_str { + my $str = shift(@_); + my $found = shift(@_); + $str = substr($str, 1, length($str) - 2); + if (length($str) gt 0 and $str ne "List1" and $str ne "Tree1" and $str =~ /[a-zA-Z]+/g) { + my $path = $File::Find::name; + $path =~ s/(\.\.\/)+miranda\///; + if (!$hash{$str}) { + $hash{$str} = $path; + $clines ++; + return 1; + } elsif ($hash{$str} ne $path) { + if ($hash{$str} =~ /^\d+$/) { + $hash{$str} ++; + } else { + $hash{$str} = 1; + } + } + } + return 0; +} + +sub csearch { + if (-f $_ and ($_ =~ m/\.c(pp)?$/i or $_ =~ m/\.h(pp)?$/i)) { + my $found = 0; + my $file = $_; + print " Processing $_ "; + open(READ, "< $_") or return; + my $all = ''; + while (my $lines = ) { + $all = $all.$lines; + } + close(READ); + $_ = $all; + while (/(?:Button_SetIcon_IcoLib|Translate[A-Z]{0,2}|LPGENT?|ICQTranslateUtfStatic)\s*\(\s*(\".*?\")\s*[,\)]/g) { + $found += append_str($1, $found); + } + print "($found)\n"; + } +} + +sub rcsearch { + if ( -f $_ and $_ =~ m/\.rc$/i) { + my $found = 0; + my $file = $_; + print " Processing $_ "; + open(READ, "< $_") or return; + my $all = ''; + while (my $lines = ) { + $all = $all.$lines; + } + close(READ); + $_ = $all; + while (/\s*(?:CONTROL|(?:DEF)?PUSHBUTTON|[LRC]TEXT|GROUPBOX|CAPTION|MENUITEM|POPUP)\s*(\".*?\")/g) { + $found += append_str($1, $found); + } + print "($found)\n"; + } +} diff --git a/wbOSD/main.cpp b/wbOSD/main.cpp new file mode 100644 index 0000000..4a888dd --- /dev/null +++ b/wbOSD/main.cpp @@ -0,0 +1,105 @@ +/* +Wannabe OSD +This plugin tries to become miranda's standard OSD ;-) + +(C) 2005 Andrej Krutak + +Distributed under GNU's GPL 2 or later +*/ + +#include "wbOSD.h" +#include "buildnumber.h" + +HINSTANCE hI; +MM_INTERFACE mmi; + +HWND hwnd=0; +HANDLE hservosda; +PLUGINLINK *pluginLink; +HANDLE hHookedNewEvent, hHookedInit, hProtoAck, hContactSettingChanged, hHookContactStatusChanged, hContactStatusChanged, hpluginShutDown; +HINSTANCE hUser32; +BOOL (WINAPI*pSetLayeredWindowAttributes)(HWND, COLORREF, BYTE, DWORD); + +void logmsg2(char *str); +int MainInit(WPARAM wparam,LPARAM lparam); + +///////////////////////////////////////////////////////////////////////////////////////// + +extern "C" int __declspec(dllexport)Load(PLUGINLINK *link) +{ + pluginLink=link; + mir_getMMI( &mmi ); + + logmsg("Load"); + pSetLayeredWindowAttributes=0; + +#ifndef FORCE_9XDRAWING + hUser32=LoadLibraryA("user32.dll"); +#else + hUser32=0; +#endif + + if (hUser32) { + pSetLayeredWindowAttributes=(BOOL(WINAPI*)(HWND, COLORREF, BYTE, DWORD))GetProcAddress(hUser32, "SetLayeredWindowAttributes"); + if (!pSetLayeredWindowAttributes) { + FreeLibrary(hUser32); + hUser32=0; + } + } + + hHookedInit = HookEvent(ME_SYSTEM_MODULESLOADED, MainInit); + return 0; +} + +///////////////////////////////////////////////////////////////////////////////////////// + +extern "C" __declspec(dllexport) int Unload(void) +{ + logmsg("Unload"); + UnhookEvent(hpluginShutDown); + UnhookEvent(hProtoAck); + UnhookEvent(hContactSettingChanged); + UnhookEvent(hContactStatusChanged); + UnhookEvent(hHookedNewEvent); + UnhookEvent(hHookedInit); + + if (hUser32) + FreeLibrary(hUser32); + pSetLayeredWindowAttributes=0; + + DestroyServiceFunction(hservosda); + DestroyHookableEvent(hHookContactStatusChanged); + return 0; +} + +///////////////////////////////////////////////////////////////////////////////////////// + +static PLUGININFO pluginInfo={ + sizeof(PLUGININFO), + #ifdef UNICODE + "WannaBe OSD (Unicode)", + #else + "WannaBe OSD", + #endif + __VERSION_DWORD, + "Show new message/status change info using onscreen display", + "Andrej Krutak", + "andree182 {at} gmail (dot) com", + "©2005 Andrej Krutak", + "http://urtax.ms.mff.cuni.cz/~andree/", + UNICODE_AWARE, + 0 +}; + +extern "C" __declspec(dllexport) PLUGININFO* MirandaPluginInfo(DWORD mirandaVersion) +{ + return &pluginInfo; +} + +///////////////////////////////////////////////////////////////////////////////////////// + +BOOL WINAPI DllMain(HINSTANCE hinst,DWORD fdwReason,LPVOID lpvReserved) +{ + hI = hinst; + return 1; +} diff --git a/wbOSD/options.cpp b/wbOSD/options.cpp new file mode 100644 index 0000000..16106c8 --- /dev/null +++ b/wbOSD/options.cpp @@ -0,0 +1,426 @@ +/* +Wannabe OSD +This plugin tries to become miranda's standard OSD ;-) + +(C) 2005 Andrej Krutak + +Distributed under GNU's GPL 2 or later +*/ + +#include "wbOSD.h" + +COLORREF pencustcolors[16]; + +const static osdmsg defstr={_T(""), 0, RGB(0, 0, 0), 0, 0}; + +void FillCheckBoxTree(HWND hwndTree,const struct CheckBoxValues_t *values,int nValues,DWORD style) +{ + logmsg("FillCheckBoxTree"); + + TVINSERTSTRUCT tvis; + tvis.hParent = NULL; + tvis.hInsertAfter = TVI_LAST; + tvis.item.mask = TVIF_PARAM|TVIF_TEXT|TVIF_STATE; + for ( int i=0; i < nValues; i++ ) { + tvis.item.lParam = values[i].style - ID_STATUS_OFFLINE; + tvis.item.pszText = TranslateTS( values[i].szDescr ); + tvis.item.stateMask = TVIS_STATEIMAGEMASK; + tvis.item.state = INDEXTOSTATEIMAGEMASK(( style & ( 1 << tvis.item.lParam )) != 0 ? 2 : 1 ); + TreeView_InsertItem( hwndTree, &tvis ); + } +} + +DWORD MakeCheckBoxTreeFlags(HWND hwndTree) +{ + DWORD flags=0; + TVITEM tvi; + + logmsg("MakeCheckBoxTreeFlags"); + + tvi.mask=TVIF_HANDLE|TVIF_PARAM|TVIF_STATE; + tvi.hItem=TreeView_GetRoot(hwndTree); + while(tvi.hItem) { + TreeView_GetItem(hwndTree,&tvi); + if(((tvi.state&TVIS_STATEIMAGEMASK)>>12==2)) flags|=1<align=DBGetContactSettingByte(NULL,THIS_MODULE, "align", DEFAULT_ALIGN); + ps->salign=DBGetContactSettingByte(NULL,THIS_MODULE, "salign", DEFAULT_SALIGN); + ps->altShadow=DBGetContactSettingByte(NULL,THIS_MODULE, "altShadow", DEFAULT_ALTSHADOW); + ps->transparent=DBGetContactSettingByte(NULL,THIS_MODULE, "transparent", DEFAULT_TRANPARENT); + ps->showShadow=DBGetContactSettingByte(NULL,THIS_MODULE, "showShadow", DEFAULT_SHOWSHADOW); + ps->messages=DBGetContactSettingByte(NULL,THIS_MODULE, "messages", DEFAULT_ANNOUNCEMESSAGES); + ps->a_user=DBGetContactSettingByte(NULL,THIS_MODULE, "a_user", DEFAULT_ANNOUNCESTATUS); + ps->distance=DBGetContactSettingByte(NULL,THIS_MODULE, "distance", DEFAULT_DISTANCE); + ps->winx=DBGetContactSettingDword(NULL,THIS_MODULE, "winx", DEFAULT_WINX); + ps->winy=DBGetContactSettingDword(NULL,THIS_MODULE, "winy", DEFAULT_WINY); + ps->winxpos=DBGetContactSettingDword(NULL,THIS_MODULE, "winxpos", DEFAULT_WINXPOS); + ps->winypos=DBGetContactSettingDword(NULL,THIS_MODULE, "winypos", DEFAULT_WINYPOS); + ps->alpha=DBGetContactSettingByte(NULL,THIS_MODULE, "alpha", DEFAULT_ALPHA); + ps->showmystatus=DBGetContactSettingByte(NULL,THIS_MODULE, "showMyStatus", DEFAULT_SHOWMYSTATUS); + ps->timeout=DBGetContactSettingDword(NULL,THIS_MODULE, "timeout", DEFAULT_TIMEOUT); + ps->clr_msg=DBGetContactSettingDword(NULL,THIS_MODULE, "clr_msg", DEFAULT_CLRMSG); + ps->clr_status=DBGetContactSettingDword(NULL,THIS_MODULE, "clr_status", DEFAULT_CLRSTATUS); + ps->clr_shadow=DBGetContactSettingDword(NULL,THIS_MODULE, "clr_shadow", DEFAULT_CLRSHADOW); + ps->bkclr=DBGetContactSettingDword(NULL,THIS_MODULE, "bkclr", DEFAULT_BKCLR); + + ps->showMsgWindow=DBGetContactSettingByte(NULL,THIS_MODULE, "showMessageWindow", DEFAULT_SHOWMSGWIN); + ps->showWhen=DBGetContactSettingDword(NULL,THIS_MODULE,"showWhen", DEFAULT_SHOWWHEN); + + _tcscpy(ps->msgformat, DEFAULT_MESSAGEFORMAT); + if ( !DBGetContactSettingTString( NULL, THIS_MODULE, "message_format", &dbv )) { + _tcscpy(ps->msgformat, dbv.ptszVal); + DBFreeVariant(&dbv); + } + + ps->announce=DBGetContactSettingDword(NULL,THIS_MODULE,"announce", DEFAULT_ANNOUNCE); + + ps->lf.lfHeight=DBGetContactSettingDword(NULL,THIS_MODULE, "fntHeight", DEFAULT_FNT_HEIGHT); + ps->lf.lfWidth=DBGetContactSettingDword(NULL,THIS_MODULE, "fntWidth", DEFAULT_FNT_WIDTH); + ps->lf.lfEscapement=DBGetContactSettingDword(NULL,THIS_MODULE, "fntEscapement", DEFAULT_FNT_ESCAPEMENT); + ps->lf.lfOrientation=DBGetContactSettingDword(NULL,THIS_MODULE, "fntOrientation", DEFAULT_FNT_ORIENTATION); + ps->lf.lfWeight=DBGetContactSettingDword(NULL,THIS_MODULE, "fntWeight", DEFAULT_FNT_WEIGHT); + ps->lf.lfItalic=DBGetContactSettingByte(NULL,THIS_MODULE, "fntItalic", DEFAULT_FNT_ITALIC); + ps->lf.lfUnderline=DBGetContactSettingByte(NULL,THIS_MODULE, "fntUnderline", DEFAULT_FNT_UNDERLINE); + ps->lf.lfStrikeOut=DBGetContactSettingByte(NULL,THIS_MODULE, "fntStrikeout", DEFAULT_FNT_STRIKEOUT); + ps->lf.lfCharSet=DBGetContactSettingByte(NULL,THIS_MODULE, "fntCharSet", DEFAULT_FNT_CHARSET); + ps->lf.lfOutPrecision=DBGetContactSettingByte(NULL,THIS_MODULE, "fntOutPrecision", DEFAULT_FNT_OUTPRECISION); + ps->lf.lfClipPrecision=DBGetContactSettingByte(NULL,THIS_MODULE, "fntClipPrecision", DEFAULT_FNT_CLIPRECISION); + ps->lf.lfQuality=DBGetContactSettingByte(NULL,THIS_MODULE, "fntQuality", DEFAULT_FNT_QUALITY); + ps->lf.lfPitchAndFamily=DBGetContactSettingByte(NULL,THIS_MODULE, "fntPitchAndFamily", DEFAULT_FNT_PITCHANDFAM); + strcpy(ps->lf.lfFaceName, DEFAULT_FNT_FACENAME); + if(!DBGetContactSetting(NULL,THIS_MODULE,"fntFaceName",&dbv)) { + strcpy(ps->lf.lfFaceName, dbv.pszVal); + DBFreeVariant(&dbv); + } +} + +void saveDBSettings(plgsettings *ps) +{ + logmsg("saveDBSettings"); + + DBWriteContactSettingByte(NULL,THIS_MODULE,"showShadow", ps->showShadow); + DBWriteContactSettingByte(NULL,THIS_MODULE,"altShadow",ps->altShadow); + DBWriteContactSettingByte(NULL,THIS_MODULE,"distance",ps->distance); + + DBWriteContactSettingDword(NULL,THIS_MODULE,"winx",ps->winx); + DBWriteContactSettingDword(NULL,THIS_MODULE,"winy",ps->winy); + DBWriteContactSettingDword(NULL,THIS_MODULE,"winxpos", ps->winxpos); + DBWriteContactSettingDword(NULL,THIS_MODULE,"winypos", ps->winypos); + + DBWriteContactSettingByte(NULL,THIS_MODULE,"alpha",ps->alpha); + DBWriteContactSettingDword(NULL,THIS_MODULE,"timeout", ps->timeout); + + DBWriteContactSettingByte(NULL,THIS_MODULE,"transparent",ps->transparent); + DBWriteContactSettingByte(NULL,THIS_MODULE,"messages",ps->messages); + DBWriteContactSettingByte(NULL,THIS_MODULE,"a_user",ps->a_user); + DBWriteContactSettingTString(NULL,THIS_MODULE, "message_format", ps->msgformat); + + DBWriteContactSettingByte(NULL,THIS_MODULE,"align",ps->align); + DBWriteContactSettingByte(NULL,THIS_MODULE,"salign",ps->salign); + + DBWriteContactSettingByte(NULL,THIS_MODULE,"showMyStatus",ps->showmystatus); + + DBWriteContactSettingDword(NULL,THIS_MODULE,"clr_msg", ps->clr_msg); + DBWriteContactSettingDword(NULL,THIS_MODULE,"clr_shadow", ps->clr_shadow); + DBWriteContactSettingDword(NULL,THIS_MODULE,"clr_status", ps->clr_status); + DBWriteContactSettingDword(NULL,THIS_MODULE,"bkclr", ps->bkclr); + + DBWriteContactSettingDword(NULL,THIS_MODULE, "fntHeight", ps->lf.lfHeight); + DBWriteContactSettingDword(NULL,THIS_MODULE, "fntWidth", ps->lf.lfWidth); + DBWriteContactSettingDword(NULL,THIS_MODULE, "fntEscapement", ps->lf.lfEscapement); + DBWriteContactSettingDword(NULL,THIS_MODULE, "fntOrientation", ps->lf.lfOrientation); + DBWriteContactSettingDword(NULL,THIS_MODULE, "fntWeight", ps->lf.lfWeight); + DBWriteContactSettingByte(NULL,THIS_MODULE, "fntItalic", ps->lf.lfItalic); + DBWriteContactSettingByte(NULL,THIS_MODULE, "fntUnderline", ps->lf.lfUnderline); + DBWriteContactSettingByte(NULL,THIS_MODULE, "fntStrikeout", ps->lf.lfStrikeOut); + DBWriteContactSettingByte(NULL,THIS_MODULE, "fntCharSet", ps->lf.lfCharSet); + DBWriteContactSettingByte(NULL,THIS_MODULE, "fntOutPrecision", ps->lf.lfOutPrecision); + DBWriteContactSettingByte(NULL,THIS_MODULE, "fntClipPrecision", ps->lf.lfClipPrecision); + DBWriteContactSettingByte(NULL,THIS_MODULE, "fntQuality", ps->lf.lfQuality); + DBWriteContactSettingByte(NULL,THIS_MODULE, "fntPitchAndFamily", ps->lf.lfPitchAndFamily); + DBWriteContactSettingString(NULL,THIS_MODULE, "fntFaceName", ps->lf.lfFaceName); + + DBWriteContactSettingDword(NULL,THIS_MODULE,"announce", ps->announce); + + DBWriteContactSettingByte(NULL,THIS_MODULE, "showMessageWindow", ps->showMsgWindow); + DBWriteContactSettingDword(NULL,THIS_MODULE,"showWhen", ps->showWhen); +} + +BOOL CALLBACK OptDlgProc(HWND hDlg,UINT msg,WPARAM wparam,LPARAM lparam) +{ + RECT rect; + plgsettings *ps; //0: current; 1: original + + logmsg("OptDlgProc"); + + switch(msg){ + case WM_INITDIALOG: + logmsg("OptDlgProc::INITDIALOG"); + TranslateDialogDefault(hDlg); + + ps=(plgsettings*)malloc(sizeof(plgsettings)*2); + loadDBSettings(&ps[0]); + ps[1]=ps[0]; + SetWindowLong(hDlg, GWL_USERDATA, (LONG)ps); + SetWindowLong(hwnd, GWL_STYLE, (LONG)(pSetLayeredWindowAttributes?0:WS_CLIPSIBLINGS)|WS_POPUP|WS_SIZEBOX); + SetWindowPos(hwnd, 0, 0, 0, 0, 0, SWP_NOZORDER|SWP_NOSIZE|SWP_NOMOVE|SWP_NOACTIVATE|SWP_FRAMECHANGED); + + SetWindowLong(GetDlgItem(hDlg,IDC_TREE1),GWL_STYLE,GetWindowLong(GetDlgItem(hDlg,IDC_TREE1),GWL_STYLE)|TVS_NOHSCROLL|TVS_CHECKBOXES); + SetWindowLong(GetDlgItem(hDlg,IDC_TREE2),GWL_STYLE,GetWindowLong(GetDlgItem(hDlg,IDC_TREE1),GWL_STYLE)|TVS_NOHSCROLL|TVS_CHECKBOXES); + + CheckDlgButton(hDlg, IDC_RADIO1+ps->align-1, BST_CHECKED); + CheckDlgButton(hDlg, IDC_RADIO10+9-ps->salign, BST_CHECKED); + CheckDlgButton(hDlg, IDC_CHECK1, ps->altShadow); + CheckDlgButton(hDlg, IDC_CHECK2, ps->showMsgWindow); + CheckDlgButton(hDlg, IDC_CHECK3, ps->transparent); + CheckDlgButton(hDlg, IDC_CHECK4, ps->showShadow); + CheckDlgButton(hDlg, IDC_CHECK5, ps->messages); + + SetDlgItemText(hDlg, IDC_EDIT2, ps->msgformat); + + CheckDlgButton(hDlg, IDC_CHECK6, ps->a_user); + CheckDlgButton(hDlg, IDC_CHECK7, ps->showmystatus); + SetDlgItemInt(hDlg, IDC_EDIT1, ps->distance, 0); + + SendDlgItemMessage(hDlg, IDC_SLIDER1, TBM_SETRANGE, (WPARAM)0, MAKELONG(0, 255)); + SendDlgItemMessage(hDlg, IDC_SLIDER1, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)ps->alpha); + + { + TCHAR buf[20]; + mir_sntprintf(buf, SIZEOF(buf), _T("%d %%"), ps->alpha*100/255); + SetDlgItemText(hDlg, IDC_ALPHATXT, buf); + } + + SetDlgItemInt(hDlg, IDC_EDIT5, ps->timeout, 0); + FillCheckBoxTree(GetDlgItem(hDlg, IDC_TREE1), statusValues, SIZEOF(statusValues), ps->announce); + FillCheckBoxTree(GetDlgItem(hDlg, IDC_TREE2), statusValues, SIZEOF(statusValues), ps->showWhen); + return 0; + + case WM_HSCROLL: + if (LOWORD(wparam)==SB_ENDSCROLL||LOWORD(wparam)==SB_THUMBPOSITION||LOWORD(wparam)==SB_ENDSCROLL) + return 0; + ps=(plgsettings*)GetWindowLong(hDlg, GWL_USERDATA); + ps->alpha=SendDlgItemMessage(hDlg, IDC_SLIDER1, TBM_GETPOS, 0, 0); + { + TCHAR buf[20]; + mir_sntprintf(buf, SIZEOF(buf), _T("%d %%"), ps->alpha*100/255); + SetDlgItemText(hDlg, IDC_ALPHATXT, buf); + } + goto xxx; + case WM_DESTROY: + logmsg("OptDlgProc::DESTROY"); + ps=(plgsettings*)GetWindowLong(hDlg, GWL_USERDATA); + ps[0]=ps[1]; + saveDBSettings(&ps[0]); + + SetWindowLong(hwnd, GWL_STYLE, (LONG)(pSetLayeredWindowAttributes?0:WS_CLIPSIBLINGS)|WS_POPUP); + SetWindowPos(hwnd, 0, 0, 0, 0, 0, SWP_NOZORDER|SWP_NOSIZE|SWP_NOMOVE|SWP_NOACTIVATE|SWP_FRAMECHANGED); + + SetWindowPos(hwnd, 0, ps->winxpos, ps->winypos, ps->winx, ps->winy, SWP_NOZORDER|SWP_NOACTIVATE); + if (pSetLayeredWindowAttributes) + pSetLayeredWindowAttributes(hwnd, ps->bkclr, ps->alpha, (ps->transparent?LWA_COLORKEY:0)|LWA_ALPHA); + + free((void*)GetWindowLong(hDlg, GWL_USERDATA)); + return 0; + case WM_COMMAND: + logmsg("OptDlgProc::COMMAND"); + ps=(plgsettings*)GetWindowLong(hDlg, GWL_USERDATA); + switch (LOWORD(wparam)) { + case IDC_BUTTON7: + MessageBox(hDlg, _T("Variables:\n %n : Nick\n %m : Message\n %l : New line"), _T("Help"), MB_ICONINFORMATION|MB_OK); + return 0; + case IDC_BUTTON5: + SendMessage(hwnd, WM_USER+1, (WPARAM)_T("miranda is gr8 and this is a long message ;-)"), 0); + break; + case IDC_BUTTON1: + selectFont(hDlg, &(ps->lf)); + break; + case IDC_BUTTON2: + selectColor(hDlg, &ps->clr_status); + break; + case IDC_BUTTON6: + selectColor(hDlg, &ps->clr_msg); + break; + case IDC_BUTTON3: + selectColor(hDlg, &ps->clr_shadow); + break; + case IDC_BUTTON4: + selectColor(hDlg, &ps->bkclr); + break; + case IDC_CHECK4: + ps->showShadow=IsDlgButtonChecked(hDlg, IDC_CHECK4); + break; + case IDC_CHECK1: + ps->altShadow=IsDlgButtonChecked(hDlg, IDC_CHECK1); + break; + case IDC_CHECK2: + ps->showMsgWindow=IsDlgButtonChecked(hDlg, IDC_CHECK2); + case IDC_EDIT1: + ps->distance=GetDlgItemInt(hDlg, IDC_EDIT1, 0, 0); + break; + case IDC_EDIT5: + ps->timeout=GetDlgItemInt(hDlg, IDC_EDIT5, 0, 0); + break; + case IDC_CHECK3: + ps->transparent=IsDlgButtonChecked(hDlg, IDC_CHECK3); + break; + case IDC_CHECK5: + ps->messages=IsDlgButtonChecked(hDlg, IDC_CHECK5); + break; + case IDC_CHECK6: + ps->a_user=IsDlgButtonChecked(hDlg, IDC_CHECK6); + break; + case IDC_CHECK7: + ps->showmystatus=IsDlgButtonChecked(hDlg, IDC_CHECK7); + break; + case IDC_RADIO1: + case IDC_RADIO2: + case IDC_RADIO3: + case IDC_RADIO4: + case IDC_RADIO5: + case IDC_RADIO6: + case IDC_RADIO7: + case IDC_RADIO8: + case IDC_RADIO9: + if (IsDlgButtonChecked(hDlg, LOWORD(wparam))) + ps->align=LOWORD(wparam)-IDC_RADIO1+1; + break; + case IDC_RADIO10: + case IDC_RADIO11: + case IDC_RADIO12: + case IDC_RADIO13: + case IDC_RADIO14: + case IDC_RADIO15: + case IDC_RADIO16: + case IDC_RADIO17: + case IDC_RADIO18: + if (IsDlgButtonChecked(hDlg, LOWORD(wparam))) + ps->salign=10-(LOWORD(wparam)-IDC_RADIO10+1); + break; + } +xxx: + saveDBSettings(ps); + SetWindowPos(hwnd, 0, 0, 0, ps->winx, ps->winy, SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE); + if (pSetLayeredWindowAttributes) + pSetLayeredWindowAttributes(hwnd, DBGetContactSettingDword(NULL,THIS_MODULE, "bkclr", DEFAULT_BKCLR), DBGetContactSettingByte(NULL,THIS_MODULE, "alpha", DEFAULT_ALPHA), (DBGetContactSettingByte(NULL,THIS_MODULE, "transparent", DEFAULT_TRANPARENT)?LWA_COLORKEY:0)|LWA_ALPHA); + InvalidateRect(hwnd, 0, TRUE); + SendMessage(GetParent(hDlg),PSM_CHANGED,0,0); + + return 0; + + case WM_NOTIFY: + logmsg("OptDlgProc::NOTIFY"); + switch(((LPNMHDR)lparam)->code){ + case TVN_SETDISPINFO: + case NM_CLICK: + case NM_RETURN: + case TVN_SELCHANGED: + if (((LPNMHDR)lparam)->idFrom==IDC_TREE1) + SendMessage(GetParent(hDlg),PSM_CHANGED,0,0); + break; + case PSN_APPLY: + ps=(plgsettings*)GetWindowLong(hDlg, GWL_USERDATA); + + GetWindowRect(hwnd, &rect); + ps->winx=rect.right-rect.left; + ps->winy=rect.bottom-rect.top; + ps->winxpos=rect.left; + ps->winypos=rect.top; + ps->announce=MakeCheckBoxTreeFlags(GetDlgItem(hDlg, IDC_TREE1)); + ps->showWhen=MakeCheckBoxTreeFlags(GetDlgItem(hDlg, IDC_TREE2)); + GetDlgItemText(hDlg, IDC_EDIT2, ps->msgformat, 255); + ps[1]=ps[0]; //apply current settings at closing + + saveDBSettings(ps); + if (pSetLayeredWindowAttributes) + pSetLayeredWindowAttributes(hwnd, DBGetContactSettingDword(NULL,THIS_MODULE, "bkclr", DEFAULT_BKCLR), DBGetContactSettingByte(NULL,THIS_MODULE, "alpha", DEFAULT_ALPHA), (DBGetContactSettingByte(NULL,THIS_MODULE, "transparent", DEFAULT_TRANPARENT)?LWA_COLORKEY:0)|LWA_ALPHA); + InvalidateRect(hwnd, 0, TRUE); + break; + } + break; + } + + return 0; +} + +int OptionsInit(WPARAM wparam,LPARAM lparam) +{ + OPTIONSDIALOGPAGE odp; + + logmsg("OptionsInit"); + ZeroMemory(&odp,sizeof(odp)); + odp.cbSize=sizeof(odp); + odp.position=150000000; + odp.pszGroup="Plugins"; + odp.groupPosition=950000000; + odp.hInstance=hI; + odp.pszTemplate=MAKEINTRESOURCEA(IDD_DIALOG1); + odp.pszTitle="OSD"; + odp.pfnDlgProc=(DLGPROC)OptDlgProc; + odp.flags=ODPF_BOLDGROUPS; + CallService(MS_OPT_ADDPAGE,wparam,(LPARAM)&odp); + return 0; +} diff --git a/wbOSD/pack.cmd b/wbOSD/pack.cmd new file mode 100644 index 0000000..bd37e4d --- /dev/null +++ b/wbOSD/pack.cmd @@ -0,0 +1,31 @@ +@echo off +nmake -f wbOSD.mak CFG="wbOSD - Win32 Release" +if errorlevel 1 ( + echo "Make failed" + goto :eof ) +nmake -f wbOSD.mak CFG="wbOSD - Win32 Release Unicode" +if errorlevel 1 ( + echo "Make failed" + goto :eof ) + +del "%temp%\wbOSD.zip" > nul +del "%temp%\wbOSDW.zip" > nul +del "%temp%\wbOSDSrc.zip" > nul +del *.user > nul + +for /F "tokens=1-6 delims=, " %%i in (buildnumber.h) do call :Translate %%i %%j %%k %%l %%m %%n + +"%PROGRAMFILES%\7-zip\7z.exe" a -tzip -r- -mx=9 "%temp%\wbOSD.zip" ./Release/wbOSD.dll wbOSD-translation.txt +"%PROGRAMFILES%\7-zip\7z.exe" a -tzip -r- -mx=9 "%temp%\wbOSDW.zip" ./Release_Unicode/wbOSD.dll wbOSD-translation.txt + +rd /S /Q Release +rd /S /Q Release_Unicode + +"%PROGRAMFILES%\7-zip\7z.exe" a -tzip -r0 -mx=9 "%temp%\wbOSDSrc.zip" -xr!.svn -x!*.cmd +goto :eof + +:Translate +if %2 == __FILEVERSION_STRING ( + perl lpgen.pl wbOSD version %3 %4 %5 %6 ) + +goto :eof diff --git a/wbOSD/readme b/wbOSD/readme new file mode 100644 index 0000000..09815bf --- /dev/null +++ b/wbOSD/readme @@ -0,0 +1,84 @@ +Wannabe (Miranda's) OSD +(c)2005 Andrej Krutak +Distribute under the GNU GPL 2.0 license + +======================================================= + +Hello there, I'm happy you are trying out my OSD plugin... I've just started +to make it (in fact, it's the first miranda plugin i ever made ;-) so please +excuse bugs etc. (but you may report them, of course ;-) + +The plugin is trying to implement all the functionality of the 'old' OSD plugin. +However, I never got to it's documentation, so I can't tell if everything's gonna +work the way it should... Let me know :o) + +And I'll be happy if you send some suggestions/code parts etc., but please, +send it into the forum of this project on miranda's web ;-) + + + +------| Short tips: |---------------------------------- + +Moving the OSD: +Simply drag it by pressing left mouse button and then move the cursor ;-) +Note that only position changes done while settings dialog is shown are +saved. + +Closing the actual OSD: +Press the right button over the OSD - that will close the OSD and +show a message window for the contact who caused the OSD activity. + + + +------| Changelog: |----------------------------------- + +0.2.0.5 + New: Enable/disable OSD announces for specific own statuses + Fix: User interface improvemets... + Fix: used 100% of the processor time sometimes + +0.2.0.1 + Fix: Help button + Fix: Translation of status announces + +0.2.0.0 + Fix: multiline output + New: separate color for status & message announces + New: by pressing the right mouse button you can send message + New: message announce format can be customized a little + Fix: User interface improvemets... + Fix: again a little bit more compatible to win9x ;-) + Info: The unicode version might be broken, sorry if it is + +0.1.5.0 + New: unicode support (thanx to SilverCircle) + New: multiline output (thanx to SilverCircle) + (Hopefully)Fix: win9x-workaround memory leak +0.1.0.0 + New: more comfortable OSD positioning + New: possibility to not show own status changes + New: translation support + Fix: should work under win9x, however the transparency doesn't work well + Fix: some small bugfixes (e.g. saving of announce settings) ;-) + +0.0.2.0 + New: some more documentation + New: settings applied to osd instantly, saved after apply + New: user offline notification + Fix: only showing status of people in the contact list + +0.0.1.1 + Tiny little fix ;-) + +0.0.1.0 + Initial release + + + + +------| Some TODOs: |---------------------------------- + +* different color schemes for messages/online notifications etc. (in progess) +* test (and make work in case it doesn't) under other os than winxp +* add some other formatting options (not sure if it's worth the work) +* other things ;-) diff --git a/wbOSD/resource.h b/wbOSD/resource.h new file mode 100644 index 0000000..64e57a5 --- /dev/null +++ b/wbOSD/resource.h @@ -0,0 +1,57 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by wbOSD.rc +// +#define IDD_DIALOG1 101 +#define IDC_BUTTON1 1001 +#define IDC_BUTTON2 1002 +#define IDC_BUTTON3 1003 +#define IDC_BUTTON6 1004 +#define IDC_BUTTON4 1008 +#define IDC_EDIT1 1009 +#define IDC_CHECK1 1010 +#define IDC_CHECK3 1013 +#define IDC_EDIT4 1015 +#define IDC_EDIT5 1016 +#define IDC_CHECK4 1017 +#define IDC_TREE1 1018 +#define IDC_CHECK5 1019 +#define IDC_CHECK6 1020 +#define IDC_BUTTON5 1021 +#define IDC_CHECK7 1022 +#define IDC_CHECK8 1023 +#define IDC_CHECK2 1023 +#define IDC_SLIDER1 1024 +#define IDC_ALPHATXT 1025 +#define IDC_EDIT2 1027 +#define IDC_BUTTON7 1028 +#define IDC_TREE2 1029 +#define IDC_RADIO1 1101 +#define IDC_RADIO2 1102 +#define IDC_RADIO3 1103 +#define IDC_RADIO4 1104 +#define IDC_RADIO5 1105 +#define IDC_RADIO6 1106 +#define IDC_RADIO7 1107 +#define IDC_RADIO8 1108 +#define IDC_RADIO9 1109 +#define IDC_RADIO10 1120 +#define IDC_RADIO11 1121 +#define IDC_RADIO12 1122 +#define IDC_RADIO13 1123 +#define IDC_RADIO14 1124 +#define IDC_RADIO15 1125 +#define IDC_RADIO16 1126 +#define IDC_RADIO17 1127 +#define IDC_RADIO18 1128 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1029 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/wbOSD/wbOSD-translation.txt b/wbOSD/wbOSD-translation.txt new file mode 100644 index 0000000..29236a7 --- /dev/null +++ b/wbOSD/wbOSD-translation.txt @@ -0,0 +1,42 @@ +Miranda Language Pack Version 1 +Locale: 0809 +Authors: Andrej Krutak +Author-email: andree182 {at} gmail (dot) com +Last-Modified-Using: Miranda IM 0.7svn +Plugins-included: +; Generated by lpgen on Thu Jan 13 21:36:28 2011 +; Translations: 27 + +; Common strings that belong to many files +;[] + +; ./events.cpp +;[%s is %s] + +; ./wbOSD.rc +;[Align] +;[Alpha:] +;[Alternative shadow] +;[Announce] +;[Background color] +;[Dialog] +;[Format:] +;[General] +;[Other] +;[Radio1] +;[Select font] +;[Shadow] +;[Shadow align] +;[Shadow color] +;[Shadow distance:] +;[Show] +;[Show events] +;[Show message window after click] +;[Show my status changes] +;[Show testing OSD] +;[Show when my status is:] +;[Static] +;[Status changes] +;[Text color] +;[Timeout (ms):] +;[Transparent] diff --git a/wbOSD/wbOSD.cpp b/wbOSD/wbOSD.cpp new file mode 100644 index 0000000..d4f9cf7 --- /dev/null +++ b/wbOSD/wbOSD.cpp @@ -0,0 +1,332 @@ +/* +Wannabe OSD +This plugin tries to become miranda's standard OSD ;-) + +(C) 2005 Andrej Krutak + +Distributed under GNU's GPL 2 or later +*/ + +#include "wbOSD.h" + +#define WORKAROUND_9X //transparent window support on 9x workaround... +//#define FORCE_9XDRAWING + +TCHAR szClassName[] = _T("wbOSD"); +const static osdmsg defstr={_T(""), 0, RGB(0, 0, 0), 0, 0}; + +int DrawMe(HWND hwnd, TCHAR *string, COLORREF color) +{ + HDC hdc; + PAINTSTRUCT ps; + RECT rect, rect2; + HGDIOBJ oo; + UINT talign=0; + HBRUSH bkb; + int sxo, syo; + HFONT fh; + plgsettings plgs; + + logmsg("DrawMe"); + if (!string) string=_T("bullshit"); + + loadDBSettings(&plgs); + fh=CreateFontIndirectA(&(plgs.lf)); + + hdc=BeginPaint(hwnd, &ps); + SetBkMode(hdc, TRANSPARENT); + + GetClientRect(hwnd, &rect); + bkb=CreateSolidBrush(plgs.bkclr); + +#ifdef WORKAROUND_9X + //workaround for 9x, needs to get fixed... + if (!pSetLayeredWindowAttributes && DBGetContactSettingByte(NULL,THIS_MODULE, "transparent", DEFAULT_TRANPARENT)) { + HDC shdc; + + logmsg("DrawMe::w9x"); + + shdc=CreateDC(TEXT("DISPLAY"), 0, 0, 0); + GetWindowRect(hwnd, &rect2); + BitBlt(hdc, 0, 0, rect2.right-rect2.left, rect2.bottom-rect2.top, shdc, rect2.left, rect2.top, SRCCOPY); + DeleteDC(shdc); + } else +#endif + FillRect(hdc, &rect, bkb); + + DeleteObject(bkb); + + oo=SelectObject(hdc, fh); + +// rect2.left=0; +// rect2.top=0; +// DrawText(hdc, string, -1, &rect2, DT_SINGLELINE|DT_CALCRECT); + rect2 = rect; + DrawText(hdc, string, -1, &rect2, DT_WORDBREAK|DT_CALCRECT); + + if (plgs.align>=1 && plgs.align<=3) + rect.top=0; + if (plgs.align>=4 && plgs.align<=6) + rect.top=(rect.bottom-rect2.bottom)/2; + if (plgs.align>=7 && plgs.align<=9) + rect.top=rect.bottom-rect2.bottom; + + if (((plgs.align-1)%3)==0) + rect.left=0; + else if (((plgs.align-2)%3)==0) + rect.left=(rect.right-rect2.right)/2; + else if (((plgs.align-3)%3)==0) + rect.left=rect.right-rect2.right; + + rect.bottom=rect.top+rect2.bottom; + rect.right=rect.left+rect2.right; + + //draw shadow + if (plgs.showShadow) { + logmsg("DrawMe::showShadow"); + if (plgs.salign>=1 && plgs.salign<=3) syo=-plgs.distance; + if (plgs.salign>=4 && plgs.salign<=6) syo=0; + if (plgs.salign>=7 && plgs.salign<=9) syo=plgs.distance; + + if (((plgs.salign-1)%3)==0) sxo=-plgs.distance; + else if (((plgs.salign-2)%3)==0) sxo=0; + else if (((plgs.salign-3)%3)==0) sxo=plgs.distance; + + SetTextColor(hdc, plgs.clr_shadow); + if (plgs.altShadow==0) { + rect2=rect; + OffsetRect(&rect, sxo, syo); + + DrawText(hdc, string, -1, &rect2, DT_WORDBREAK|talign); + } else { + rect2=rect; + rect2.left+=plgs.distance; + DrawText(hdc, string, -1, &rect2, DT_WORDBREAK|talign); + + rect2=rect; + rect2.left-=plgs.distance; + DrawText(hdc, string, -1, &rect2, DT_WORDBREAK|talign); + + rect2=rect; + rect2.top-=plgs.distance; + DrawText(hdc, string, -1, &rect2, DT_WORDBREAK|talign); + + rect2=rect; + rect2.top+=plgs.distance; + DrawText(hdc, string, -1, &rect2, DT_WORDBREAK|talign); + + OffsetRect(&rect, sxo/2, syo/2); + } + } + + //draw text + SetTextColor(hdc, color); + DrawText(hdc, string, -1, &rect, DT_WORDBREAK); + + SelectObject(hdc, oo); + DeleteObject(fh); + EndPaint(hwnd, &ps); + + return 0; +} + +LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + osdmsg* ms; + + switch (message) { + case WM_CREATE: + logmsg("WindowProcedure::CREATE"); + SetWindowLong(hwnd, GWL_USERDATA, (LONG)&defstr); + return 0; + + case WM_DESTROY: + logmsg("WindowProcedure::DESTROY"); + return 0; + + case WM_PAINT: + logmsg("WindowProcedure::PAINT"); + + ms=(osdmsg*)GetWindowLong(hwnd, GWL_USERDATA); + if (ms) + return DrawMe(hwnd, ms->text, ms->color); + + PAINTSTRUCT ps; + BeginPaint(hwnd, &ps); + EndPaint(hwnd, &ps); + return 0; + + case WM_NCRBUTTONDOWN: + logmsg("WindowProcedure::NCRBUTTONDOWN"); + + ms = (osdmsg*)GetWindowLong(hwnd, GWL_USERDATA); + if ( ms ) { + if ( ms->callback) ms->callback(ms->param); + SendMessage(hwnd, WM_USER+3, 0, 0); + } + return 0; + + case WM_TIMER: + logmsg("WindowProcedure::TIMER"); + SendMessage(hwnd, WM_USER+3, wParam, 0); + return 0; + + case WM_USER+1: //draw text ((char *)string, (int) timeout + logmsg("WindowProcedure::USER+1"); + + ms=(osdmsg*)mir_alloc(sizeof(osdmsg)); + ms->text = mir_tstrdup((TCHAR *)wParam ); + if ( lParam == 0 ) + lParam = DBGetContactSettingDword( NULL,THIS_MODULE, "timeout", DEFAULT_TIMEOUT ); + ms->timeout = lParam; + ms->callback = 0; + ms->color = DBGetContactSettingDword(NULL,THIS_MODULE, "clr_msg", DEFAULT_CLRMSG); + ms->param = 0; + SendMessage(hwnd, WM_USER+4, (WPARAM)ms, 0); + mir_free(ms->text); + mir_free(ms); + return 0; + + case WM_USER+2: //show + logmsg("WindowProcedure::USER+2"); + SetWindowPos(hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW|SWP_NOACTIVATE); + return 0; + + case WM_USER+3: //hide + ms = ( osdmsg* )GetWindowLong(hwnd, GWL_USERDATA); + logmsg("WindowProcedure::USER+3"); + if ( !ms ) + return 0; + + logmsg("WindowProcedure::USER+3/om"); + KillTimer(hwnd, (UINT)ms); + mir_free(ms->text); + mir_free(ms); + SetWindowLong(hwnd, GWL_USERDATA, 0); + ShowWindow(hwnd, SW_HIDE); + return 0; + + case WM_USER+4: + logmsg("WindowProcedure::USER+4"); + + ms = (osdmsg*)GetWindowLong(hwnd, GWL_USERDATA); + if ( ms != 0 ) { + logmsg("WindowProcedure::USER+4/old"); + KillTimer(hwnd, (UINT)ms); + mir_free(ms->text); + mir_free(ms); + SetWindowLong(hwnd, GWL_USERDATA, 0); + if (!pSetLayeredWindowAttributes) { + logmsg("WindowProcedure::USER+4/old+9x"); + ShowWindow(hwnd, SW_HIDE); + Sleep(50); + } } + + ms =(osdmsg*)mir_alloc(sizeof(osdmsg)); + memcpy(ms, (osdmsg*)wParam, sizeof(osdmsg)); + ms->text = mir_tstrdup( ms->text ); + + SetWindowLong(hwnd, GWL_USERDATA, (LONG)ms); + SetTimer(hwnd, (UINT)ms, (int)ms->timeout, 0); + InvalidateRect(hwnd, 0, TRUE); + SendMessage(hwnd, WM_USER+2, 0, 0); + return 0; + + case WM_NCHITTEST: + { + RECT rect; + GetWindowRect(hwnd, &rect); + + logmsg("WindowProcedure::NCHITTEST"); + + if (LOWORD(lParam)>=(rect.left+5) && LOWORD(lParam)<=(rect.right-5) && + HIWORD(lParam)>=(rect.top+5) && HIWORD(lParam)<=(rect.bottom-5)) + return HTCAPTION; + return DefWindowProc (hwnd, message, wParam, lParam); + } + //here will be the doubleclick => open-message-window solution ;-) + //case WM_NCLBUTTONDBLCLK: + // CallService(MS_MSG_SENDMESSAGE, wparam,(LPARAM)&odp); + // return 0; + default: + return DefWindowProc (hwnd, message, wParam, lParam); + } + + return 0; +} + +int OSDAnnounce(WPARAM wParam, LPARAM lParam) +{ + logmsg("OSDAnnounce"); + return SendMessage(hwnd, WM_USER+1, wParam, lParam); +} + +int pluginShutDown(WPARAM wparam,LPARAM lparam) +{ + logmsg("pluginShutDown"); + if (hwnd) { + logmsg("pluginShutDown/hwnd"); + SendMessage(hwnd, WM_USER+3, 0, 0); + DestroyWindow(hwnd); + hwnd=0; + } + return 0; +} + +int MainInit(WPARAM wparam,LPARAM lparam) +{ + logmsg("MainInit"); + HookEvent(ME_OPT_INITIALISE,OptionsInit); + + WNDCLASSEX wincl; + wincl.hInstance = hI; + wincl.lpszClassName = szClassName; + wincl.lpfnWndProc = WindowProcedure; + wincl.style = CS_DBLCLKS; + wincl.cbSize = sizeof (WNDCLASSEX); + + wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION); + wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION); + wincl.hCursor = LoadCursor (NULL, IDC_ARROW); + wincl.lpszMenuName = NULL; + wincl.cbClsExtra = 0; + wincl.cbWndExtra = 0; + wincl.hbrBackground = 0; + + if ( !RegisterClassEx( &wincl )) + return 0; + + hwnd = CreateWindowEx((pSetLayeredWindowAttributes?WS_EX_LAYERED:0)|WS_EX_TOOLWINDOW, szClassName, _T("WannaBeOSD"), + (pSetLayeredWindowAttributes?0:WS_CLIPSIBLINGS) | WS_POPUP, + DBGetContactSettingDword(NULL,THIS_MODULE, "winxpos", DEFAULT_WINXPOS), + DBGetContactSettingDword(NULL,THIS_MODULE, "winypos", DEFAULT_WINYPOS), + DBGetContactSettingDword(NULL,THIS_MODULE, "winx", DEFAULT_WINX), + DBGetContactSettingDword(NULL,THIS_MODULE, "winy", DEFAULT_WINY), + HWND_DESKTOP, NULL, hI, NULL); + + SetWindowLong(hwnd, GWL_USERDATA, 0); + + if (pSetLayeredWindowAttributes) + pSetLayeredWindowAttributes(hwnd, DBGetContactSettingDword(NULL,THIS_MODULE, "bkclr", DEFAULT_BKCLR), DBGetContactSettingByte(NULL,THIS_MODULE, "alpha", DEFAULT_ALPHA), (DBGetContactSettingByte(NULL,THIS_MODULE, "transparent", DEFAULT_TRANPARENT)?LWA_COLORKEY:0)|LWA_ALPHA); + + hservosda=CreateServiceFunction("OSD/Announce", OSDAnnounce); + +#if !defined(UNICODE_SERVICE_ONLY) + hHookedNewEvent = HookEvent(ME_DB_EVENT_ADDED, HookedNewEvent); + + // try to create ME_STATUSCHANGE_CONTACTSTATUSCHANGED event... I hope it fails when newstatusnotify or equal creates it before ;-) + + hContactStatusChanged = HookEvent(ME_STATUSCHANGE_CONTACTSTATUSCHANGED,ContactStatusChanged); + if (!hContactStatusChanged) { + hHookContactStatusChanged = CreateHookableEvent(ME_STATUSCHANGE_CONTACTSTATUSCHANGED); + hContactSettingChanged = HookEvent(ME_DB_CONTACT_SETTINGCHANGED,ContactSettingChanged); + + hContactStatusChanged = HookEvent(ME_STATUSCHANGE_CONTACTSTATUSCHANGED,ContactStatusChanged); + } + hProtoAck=HookEvent(ME_PROTO_ACK,ProtoAck); +#endif + + hpluginShutDown=HookEvent(ME_SYSTEM_SHUTDOWN,pluginShutDown); + + return 0; +} diff --git a/wbOSD/wbOSD.dep b/wbOSD/wbOSD.dep new file mode 100644 index 0000000..7b3cf35 --- /dev/null +++ b/wbOSD/wbOSD.dep @@ -0,0 +1,24 @@ +# Microsoft Developer Studio Generated Dependency File, included by wbOSD.mak + +.\events.cpp : \ + "..\..\include\m_message.h"\ + + +.\main.cpp : \ + "..\..\include\m_clc.h"\ + "..\..\include\m_clist.h"\ + "..\..\include\m_contacts.h"\ + "..\..\include\m_database.h"\ + "..\..\include\m_ignore.h"\ + "..\..\include\m_langpack.h"\ + "..\..\include\m_options.h"\ + "..\..\include\m_plugins.h"\ + "..\..\include\m_protocols.h"\ + "..\..\include\m_protosvc.h"\ + "..\..\include\m_system.h"\ + "..\..\include\m_utils.h"\ + "..\..\include\newpluginapi.h"\ + "..\..\include\statusmodes.h"\ + "..\..\include\win2k.h"\ + ".\wbOSD.h"\ + diff --git a/wbOSD/wbOSD.dsp b/wbOSD/wbOSD.dsp new file mode 100644 index 0000000..212f620 --- /dev/null +++ b/wbOSD/wbOSD.dsp @@ -0,0 +1,200 @@ +# Microsoft Developer Studio Project File - Name="wbOSD" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=wbOSD - Win32 Release 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 "wbOSD.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 "wbOSD.mak" CFG="wbOSD - Win32 Release Unicode" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "wbOSD - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "wbOSD - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "wbOSD - Win32 Debug Unicode" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "wbOSD - Win32 Release Unicode" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "wbOSD - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "wbOSD_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O1 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Yu"wbOSD.h" /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40d /d "NDEBUG" +# ADD RSC /l 0x409 /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 /base:"0x32240000" /dll /machine:I386 /out:"./Release/wbOSD.dll" /filealign:512 +# SUBTRACT LINK32 /pdb:none + +!ELSEIF "$(CFG)" == "wbOSD - 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 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "wbOSD_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Yu"wbOSD.h" /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40d /d "_DEBUG" +# ADD RSC /l 0x40d /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 /nologo /dll /debug /machine:I386 /out:"./Debug/wbOSD.dll" /pdbtype:sept +# SUBTRACT LINK32 /verbose /pdb:none /map + +!ELSEIF "$(CFG)" == "wbOSD - Win32 Debug Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug_Unicode" +# PROP BASE Intermediate_Dir "Debug_Unicode" +# PROP BASE Ignore_Export_Lib 1 +# 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 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "wbOSD_EXPORTS" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "_USRDLL" /Yu"wbOSD.h" /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x40d /d "_DEBUG" +# ADD RSC /l 0x40d /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 comctl32.lib wsock.lib /nologo /dll /debug /machine:I386 /pdbtype:sept +# SUBTRACT BASE LINK32 /verbose /map +# 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 wsock.lib /nologo /dll /debug /machine:I386 /out:"./Debug_Unicode/wbOSD.dll" /pdbtype:sept +# SUBTRACT LINK32 /verbose /pdb:none /map + +!ELSEIF "$(CFG)" == "wbOSD - Win32 Release Unicode" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release_Unicode" +# PROP BASE Intermediate_Dir "Release_Unicode" +# PROP BASE Ignore_Export_Lib 1 +# 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 1 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /Zi /O1 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "wbOSD_EXPORTS" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /Zi /O1 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "_USRDLL" /D "wbOSD_EXPORTS" /Yu"wbOSD.h" /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /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 comctl32.lib wsock32.lib /nologo /base:"0x32240000" /dll /pdb:none /map /machine:I386 +# SUBTRACT BASE LINK32 /verbose +# 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 /base:"0x32240000" /dll /machine:I386 /out:"./Release_Unicode/wbOSD.dll" /filealign:512 +# SUBTRACT LINK32 /pdb:none + +!ENDIF + +# Begin Target + +# Name "wbOSD - Win32 Release" +# Name "wbOSD - Win32 Debug" +# Name "wbOSD - Win32 Debug Unicode" +# Name "wbOSD - Win32 Release Unicode" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\events.cpp +# End Source File +# Begin Source File + +SOURCE=.\main.cpp +# ADD CPP /Yc"wbOSD.h" +# End Source File +# Begin Source File + +SOURCE=.\options.cpp +# End Source File +# Begin Source File + +SOURCE=.\wbOSD.cpp +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\wbOSD.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=.\wbOSD.rc +# End Source File +# End Group +# Begin Source File + +SOURCE=.\copying.txt +# End Source File +# Begin Source File + +SOURCE=.\Notes.txt +# End Source File +# End Target +# End Project diff --git a/wbOSD/wbOSD.dsw b/wbOSD/wbOSD.dsw new file mode 100644 index 0000000..b48606c --- /dev/null +++ b/wbOSD/wbOSD.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "wbOSD"=.\wbOSD.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/wbOSD/wbOSD.h b/wbOSD/wbOSD.h new file mode 100644 index 0000000..680f791 --- /dev/null +++ b/wbOSD/wbOSD.h @@ -0,0 +1,144 @@ +/* +Wannabe OSD +This plugin tries to become miranda's standard OSD ;-) + +(C) 2005 Andrej Krutak + +Distributed under GNU's GPL 2 or later +*/ + +#define _WIN32_WINNT 0x0500 +#define _CRT_SECURE_NO_WARNINGS + +#include +#include +#include +#include +#include + +#include "resource.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define THIS_MODULE "mirandaosd" + +//SETTINGS DEFAULTS +#define DEFAULT_FNT_HEIGHT -30 +#define DEFAULT_FNT_WIDTH 0 +#define DEFAULT_FNT_ESCAPEMENT 0 +#define DEFAULT_FNT_ORIENTATION 0 +#define DEFAULT_FNT_WEIGHT 700 +#define DEFAULT_FNT_ITALIC 0 +#define DEFAULT_FNT_UNDERLINE 0 +#define DEFAULT_FNT_STRIKEOUT 0 +#define DEFAULT_FNT_CHARSET 0 +#define DEFAULT_FNT_OUTPRECISION 3 +#define DEFAULT_FNT_CLIPRECISION 2 +#define DEFAULT_FNT_QUALITY 1 +#define DEFAULT_FNT_PITCHANDFAM 49 +#define DEFAULT_FNT_FACENAME "Arial" + +#define DEFAULT_CLRMSG RGB(255, 100, 0) //fore +#define DEFAULT_CLRSTATUS RGB(40, 160, 255) //fore +#define DEFAULT_CLRSHADOW RGB(0, 0, 0) //bk +#define DEFAULT_BKCLR RGB(255, 255, 255) +#define DEFAULT_ALIGN 1 +#define DEFAULT_SALIGN 1 +#define DEFAULT_DISTANCE 2 +#define DEFAULT_ALTSHADOW 0 +#define DEFAULT_TRANPARENT 1 +#define DEFAULT_WINX 500 +#define DEFAULT_WINY 100 +#define DEFAULT_WINXPOS 10 +#define DEFAULT_WINYPOS 10 +#define DEFAULT_ALPHA 175 +#define DEFAULT_TIMEOUT 3000 +#define DEFAULT_SHOWSHADOW 1 +#define DEFAULT_ANNOUNCEMESSAGES 1 +#define DEFAULT_ANNOUNCESTATUS 1 +#define DEFAULT_ANNOUNCE 0x00000002 //status mask +#define DEFAULT_SHOWMYSTATUS 1 +#define DEFAULT_MESSAGEFORMAT _T("Message from %n: %m") +#define DEFAULT_SHOWMSGWIN 1 +#define DEFAULT_SHOWWHEN 0x00000002 + +//HOOKS +#define ME_STATUSCHANGE_CONTACTSTATUSCHANGED "Miranda/StatusChange/ContactStatusChanged" + +int ContactStatusChanged(WPARAM wParam, LPARAM lParam); +int ProtoAck(WPARAM wparam,LPARAM lparam); +int ContactSettingChanged(WPARAM wparam,LPARAM lparam); +int HookedNewEvent(WPARAM wParam, LPARAM lParam); + +//ANNOUNCING MESSAGES FROM OUTSIDE ;-) +int OSDAnnounce(WPARAM wParam, LPARAM lParam); + +struct CheckBoxValues_t { + DWORD style; + TCHAR* szDescr; +}; + +static const struct CheckBoxValues_t statusValues[]={ + {ID_STATUS_OFFLINE,_T("offline")}, + {ID_STATUS_ONLINE,_T("online")}, + {ID_STATUS_AWAY,_T("away")}, + {ID_STATUS_DND,_T("DND")}, + {ID_STATUS_NA,_T("NA")}, + {ID_STATUS_OCCUPIED,_T("occupied")}, + {ID_STATUS_FREECHAT,_T("free for chat")}, + {ID_STATUS_INVISIBLE,_T("invisible")}, + {ID_STATUS_ONTHEPHONE,_T("on the phone")}, + {ID_STATUS_OUTTOLUNCH,_T("out to lunch")} +}; + +#define ID_STATUS_MIN ID_STATUS_OFFLINE +#define ID_STATUS_MAX ID_STATUS_OUTTOLUNCH + +typedef struct _plgsettings { + int align, salign, altShadow, showShadow, a_user, distance, onlyfromlist, showmystatus; + int showMsgWindow; + int messages; //also other events... + TCHAR msgformat[256]; + int winx, winy, winxpos, winypos, alpha, transparent, timeout; + COLORREF clr_msg, clr_status, clr_shadow, bkclr; + DWORD announce, showWhen; + LOGFONTA lf; +} plgsettings; + +typedef struct _osdmsg { + TCHAR *text; + int timeout; //ms + COLORREF color; + void (*callback)(unsigned int param); + int param; +} osdmsg; + +//#define logmsg(x) logmsg2(x) + +#ifndef logmsg +#define logmsg(x) //x +#endif + +int OptionsInit(WPARAM wparam,LPARAM lparam); + +extern BOOL (WINAPI*pSetLayeredWindowAttributes)(HWND, COLORREF, BYTE, DWORD); + +void loadDBSettings(plgsettings *ps); + +extern HINSTANCE hI; +extern HWND hwnd; +extern HANDLE hservosda; +extern HANDLE hHookedNewEvent, hHookedInit, hProtoAck, hContactSettingChanged, hHookContactStatusChanged, hContactStatusChanged, hpluginShutDown; +extern HINSTANCE hUser32; + diff --git a/wbOSD/wbOSD.mak b/wbOSD/wbOSD.mak new file mode 100644 index 0000000..1c2c285 --- /dev/null +++ b/wbOSD/wbOSD.mak @@ -0,0 +1,336 @@ +# Microsoft Developer Studio Generated NMAKE File, Based on wbOSD.dsp +!IF "$(CFG)" == "" +CFG=wbOSD - Win32 Release Unicode +!MESSAGE No configuration specified. Defaulting to wbOSD - Win32 Release Unicode. +!ENDIF + +!IF "$(CFG)" != "wbOSD - Win32 Release" && "$(CFG)" != "wbOSD - Win32 Debug" && "$(CFG)" != "wbOSD - Win32 Debug Unicode" && "$(CFG)" != "wbOSD - Win32 Release 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 "wbOSD.mak" CFG="wbOSD - Win32 Release Unicode" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "wbOSD - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "wbOSD - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "wbOSD - Win32 Debug Unicode" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "wbOSD - Win32 Release 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)" == "wbOSD - Win32 Release" + +OUTDIR=.\Release +INTDIR=.\Release +# Begin Custom Macros +OutDir=.\Release +# End Custom Macros + +ALL : "$(OUTDIR)\wbOSD.dll" + + +CLEAN : + -@erase "$(INTDIR)\events.obj" + -@erase "$(INTDIR)\main.obj" + -@erase "$(INTDIR)\options.obj" + -@erase "$(INTDIR)\vc60.idb" + -@erase "$(INTDIR)\vc60.pdb" + -@erase "$(INTDIR)\wbOSD.obj" + -@erase "$(INTDIR)\wbOSD.pch" + -@erase "$(INTDIR)\wbOSD.res" + -@erase "$(OUTDIR)\wbOSD.dll" + -@erase "$(OUTDIR)\wbOSD.exp" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP_PROJ=/nologo /MD /W3 /GX /Zi /O1 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Fp"$(INTDIR)\wbOSD.pch" /Yu"wbOSD.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c +MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 +RSC_PROJ=/l 0x409 /fo"$(INTDIR)\wbOSD.res" /d "NDEBUG" +BSC32=bscmake.exe +BSC32_FLAGS=/nologo /o"$(OUTDIR)\wbOSD.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 /base:"0x32240000" /dll /incremental:no /pdb:"$(OUTDIR)\wbOSD.pdb" /machine:I386 /out:"$(OUTDIR)\wbOSD.dll" /implib:"$(OUTDIR)\wbOSD.lib" /filealign:512 +LINK32_OBJS= \ + "$(INTDIR)\events.obj" \ + "$(INTDIR)\main.obj" \ + "$(INTDIR)\options.obj" \ + "$(INTDIR)\wbOSD.obj" \ + "$(INTDIR)\wbOSD.res" + +"$(OUTDIR)\wbOSD.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "wbOSD - Win32 Debug" + +OUTDIR=.\Debug +INTDIR=.\Debug +# Begin Custom Macros +OutDir=.\Debug +# End Custom Macros + +ALL : "$(OUTDIR)\wbOSD.dll" + + +CLEAN : + -@erase "$(INTDIR)\events.obj" + -@erase "$(INTDIR)\main.obj" + -@erase "$(INTDIR)\options.obj" + -@erase "$(INTDIR)\vc60.idb" + -@erase "$(INTDIR)\vc60.pdb" + -@erase "$(INTDIR)\wbOSD.obj" + -@erase "$(INTDIR)\wbOSD.pch" + -@erase "$(INTDIR)\wbOSD.res" + -@erase "$(OUTDIR)\wbOSD.dll" + -@erase "$(OUTDIR)\wbOSD.exp" + -@erase "$(OUTDIR)\wbOSD.ilk" + -@erase "$(OUTDIR)\wbOSD.pdb" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Fp"$(INTDIR)\wbOSD.pch" /Yu"wbOSD.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c +MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 +RSC_PROJ=/l 0x40d /fo"$(INTDIR)\wbOSD.res" /d "_DEBUG" +BSC32=bscmake.exe +BSC32_FLAGS=/nologo /o"$(OUTDIR)\wbOSD.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 /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\wbOSD.pdb" /debug /machine:I386 /out:"$(OUTDIR)\wbOSD.dll" /implib:"$(OUTDIR)\wbOSD.lib" /pdbtype:sept +LINK32_OBJS= \ + "$(INTDIR)\events.obj" \ + "$(INTDIR)\main.obj" \ + "$(INTDIR)\options.obj" \ + "$(INTDIR)\wbOSD.obj" \ + "$(INTDIR)\wbOSD.res" + +"$(OUTDIR)\wbOSD.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "wbOSD - Win32 Debug Unicode" + +OUTDIR=.\Debug_Unicode +INTDIR=.\Debug_Unicode +# Begin Custom Macros +OutDir=.\Debug_Unicode +# End Custom Macros + +ALL : "$(OUTDIR)\wbOSD.dll" + + +CLEAN : + -@erase "$(INTDIR)\events.obj" + -@erase "$(INTDIR)\main.obj" + -@erase "$(INTDIR)\options.obj" + -@erase "$(INTDIR)\vc60.idb" + -@erase "$(INTDIR)\vc60.pdb" + -@erase "$(INTDIR)\wbOSD.obj" + -@erase "$(INTDIR)\wbOSD.pch" + -@erase "$(INTDIR)\wbOSD.res" + -@erase "$(OUTDIR)\wbOSD.dll" + -@erase "$(OUTDIR)\wbOSD.exp" + -@erase "$(OUTDIR)\wbOSD.ilk" + -@erase "$(OUTDIR)\wbOSD.pdb" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP_PROJ=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "_USRDLL" /Fp"$(INTDIR)\wbOSD.pch" /Yu"wbOSD.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c +MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32 +RSC_PROJ=/l 0x40d /fo"$(INTDIR)\wbOSD.res" /d "_DEBUG" +BSC32=bscmake.exe +BSC32_FLAGS=/nologo /o"$(OUTDIR)\wbOSD.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 wsock.lib /nologo /dll /incremental:yes /pdb:"$(OUTDIR)\wbOSD.pdb" /debug /machine:I386 /out:"$(OUTDIR)\wbOSD.dll" /implib:"$(OUTDIR)\wbOSD.lib" /pdbtype:sept +LINK32_OBJS= \ + "$(INTDIR)\events.obj" \ + "$(INTDIR)\main.obj" \ + "$(INTDIR)\options.obj" \ + "$(INTDIR)\wbOSD.obj" \ + "$(INTDIR)\wbOSD.res" + +"$(OUTDIR)\wbOSD.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) + $(LINK32) @<< + $(LINK32_FLAGS) $(LINK32_OBJS) +<< + +!ELSEIF "$(CFG)" == "wbOSD - Win32 Release Unicode" + +OUTDIR=.\Release_Unicode +INTDIR=.\Release_Unicode +# Begin Custom Macros +OutDir=.\Release_Unicode +# End Custom Macros + +ALL : "$(OUTDIR)\wbOSD.dll" + + +CLEAN : + -@erase "$(INTDIR)\events.obj" + -@erase "$(INTDIR)\main.obj" + -@erase "$(INTDIR)\options.obj" + -@erase "$(INTDIR)\vc60.idb" + -@erase "$(INTDIR)\vc60.pdb" + -@erase "$(INTDIR)\wbOSD.obj" + -@erase "$(INTDIR)\wbOSD.pch" + -@erase "$(INTDIR)\wbOSD.res" + -@erase "$(OUTDIR)\wbOSD.dll" + -@erase "$(OUTDIR)\wbOSD.exp" + +"$(OUTDIR)" : + if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)" + +CPP_PROJ=/nologo /MD /W3 /GX /Zi /O1 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "_USRDLL" /D "wbOSD_EXPORTS" /Fp"$(INTDIR)\wbOSD.pch" /Yu"wbOSD.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c +MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32 +RSC_PROJ=/l 0x409 /fo"$(INTDIR)\wbOSD.res" /d "NDEBUG" +BSC32=bscmake.exe +BSC32_FLAGS=/nologo /o"$(OUTDIR)\wbOSD.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 /base:"0x32240000" /dll /incremental:no /pdb:"$(OUTDIR)\wbOSD.pdb" /machine:I386 /out:"$(OUTDIR)\wbOSD.dll" /implib:"$(OUTDIR)\wbOSD.lib" /filealign:512 +LINK32_OBJS= \ + "$(INTDIR)\events.obj" \ + "$(INTDIR)\main.obj" \ + "$(INTDIR)\options.obj" \ + "$(INTDIR)\wbOSD.obj" \ + "$(INTDIR)\wbOSD.res" + +"$(OUTDIR)\wbOSD.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("wbOSD.dep") +!INCLUDE "wbOSD.dep" +!ELSE +!MESSAGE Warning: cannot find "wbOSD.dep" +!ENDIF +!ENDIF + + +!IF "$(CFG)" == "wbOSD - Win32 Release" || "$(CFG)" == "wbOSD - Win32 Debug" || "$(CFG)" == "wbOSD - Win32 Debug Unicode" || "$(CFG)" == "wbOSD - Win32 Release Unicode" +SOURCE=.\events.cpp + +"$(INTDIR)\events.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\wbOSD.pch" + + +SOURCE=.\main.cpp + +!IF "$(CFG)" == "wbOSD - Win32 Release" + +CPP_SWITCHES=/nologo /MD /W3 /GX /Zi /O1 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Fp"$(INTDIR)\wbOSD.pch" /Yc"wbOSD.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c + +"$(INTDIR)\main.obj" "$(INTDIR)\wbOSD.pch" : $(SOURCE) "$(INTDIR)" + $(CPP) @<< + $(CPP_SWITCHES) $(SOURCE) +<< + + +!ELSEIF "$(CFG)" == "wbOSD - Win32 Debug" + +CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /Fp"$(INTDIR)\wbOSD.pch" /Yc"wbOSD.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c + +"$(INTDIR)\main.obj" "$(INTDIR)\wbOSD.pch" : $(SOURCE) "$(INTDIR)" + $(CPP) @<< + $(CPP_SWITCHES) $(SOURCE) +<< + + +!ELSEIF "$(CFG)" == "wbOSD - Win32 Debug Unicode" + +CPP_SWITCHES=/nologo /MDd /W3 /Gm /GX /ZI /Od /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "_USRDLL" /Fp"$(INTDIR)\wbOSD.pch" /Yc"wbOSD.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /GZ /c + +"$(INTDIR)\main.obj" "$(INTDIR)\wbOSD.pch" : $(SOURCE) "$(INTDIR)" + $(CPP) @<< + $(CPP_SWITCHES) $(SOURCE) +<< + + +!ELSEIF "$(CFG)" == "wbOSD - Win32 Release Unicode" + +CPP_SWITCHES=/nologo /MD /W3 /GX /Zi /O1 /I "../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_UNICODE" /D "UNICODE" /D "_USRDLL" /D "wbOSD_EXPORTS" /Fp"$(INTDIR)\wbOSD.pch" /Yc"wbOSD.h" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c + +"$(INTDIR)\main.obj" "$(INTDIR)\wbOSD.pch" : $(SOURCE) "$(INTDIR)" + $(CPP) @<< + $(CPP_SWITCHES) $(SOURCE) +<< + + +!ENDIF + +SOURCE=.\options.cpp + +"$(INTDIR)\options.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\wbOSD.pch" + + +SOURCE=.\wbOSD.cpp + +"$(INTDIR)\wbOSD.obj" : $(SOURCE) "$(INTDIR)" "$(INTDIR)\wbOSD.pch" + + +SOURCE=.\wbOSD.rc + +"$(INTDIR)\wbOSD.res" : $(SOURCE) "$(INTDIR)" + $(RSC) $(RSC_PROJ) $(SOURCE) + + + +!ENDIF + diff --git a/wbOSD/wbOSD.rc b/wbOSD/wbOSD.rc new file mode 100644 index 0000000..0dad96f --- /dev/null +++ b/wbOSD/wbOSD.rc @@ -0,0 +1,188 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// Slovak resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_SKY) +#ifdef _WIN32 +LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT +#pragma code_page(1250) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_DIALOG1 DIALOGEX 0, 0, 316, 250 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION +CAPTION "Dialog" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "Radio1",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON | + WS_GROUP,21,22,8,8 + CONTROL "Radio1",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,39,22,8, + 8 + CONTROL "Radio1",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,59,22,8, + 8 + CONTROL "Radio1",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,21,33,8, + 8 + CONTROL "Radio1",IDC_RADIO5,"Button",BS_AUTORADIOBUTTON,39,33,8, + 8 + CONTROL "Radio1",IDC_RADIO6,"Button",BS_AUTORADIOBUTTON,59,33,8, + 8 + CONTROL "Radio1",IDC_RADIO7,"Button",BS_AUTORADIOBUTTON,21,45,8, + 8 + CONTROL "Radio1",IDC_RADIO8,"Button",BS_AUTORADIOBUTTON,39,45,8, + 8 + CONTROL "Radio1",IDC_RADIO9,"Button",BS_AUTORADIOBUTTON,59,45,8, + 8 + PUSHBUTTON "Select font",IDC_BUTTON1,80,17,68,14 + PUSHBUTTON "Text color",IDC_BUTTON2,175,91,68,14 + PUSHBUTTON "Background color",IDC_BUTTON4,11,182,67,14 + CONTROL "Transparent",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,11,199,72,10 + CONTROL "Radio1",IDC_RADIO10,"Button",BS_AUTORADIOBUTTON | + WS_GROUP,21,99,8,8 + CONTROL "Radio1",IDC_RADIO11,"Button",BS_AUTORADIOBUTTON,39,99,8, + 8 + CONTROL "Radio1",IDC_RADIO12,"Button",BS_AUTORADIOBUTTON,59,99,8, + 8 + CONTROL "Radio1",IDC_RADIO13,"Button",BS_AUTORADIOBUTTON,21,110, + 8,8 + CONTROL "Radio1",IDC_RADIO14,"Button",BS_AUTORADIOBUTTON,39,110, + 8,8 + CONTROL "Radio1",IDC_RADIO15,"Button",BS_AUTORADIOBUTTON,59,110, + 8,8 + CONTROL "Radio1",IDC_RADIO16,"Button",BS_AUTORADIOBUTTON,21,121, + 8,8 + CONTROL "Radio1",IDC_RADIO17,"Button",BS_AUTORADIOBUTTON,39,121, + 8,8 + CONTROL "Radio1",IDC_RADIO18,"Button",BS_AUTORADIOBUTTON,59,121, + 8,8 + PUSHBUTTON "Shadow color",IDC_BUTTON3,80,92,67,14 + CONTROL "Alternative shadow",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,13,135,133,10 + EDITTEXT IDC_EDIT1,79,148,27,14,ES_AUTOHSCROLL | ES_NUMBER + GROUPBOX "Shadow align",IDC_STATIC,13,89,62,43 + GROUPBOX "General",IDC_STATIC,6,0,150,66 + GROUPBOX "Shadow",IDC_STATIC,5,70,151,99 + GROUPBOX "Align",IDC_STATIC,13,13,61,43 + LTEXT "Shadow distance:",IDC_STATIC,10,151,64,8, + SS_PATHELLIPSIS,WS_EX_RIGHT + GROUPBOX "Other",IDC_STATIC,5,171,152,75 + LTEXT "Alpha:",IDC_STATIC,92,183,60,8,SS_PATHELLIPSIS + GROUPBOX "Announce",IDC_STATIC,162,0,150,246 + LTEXT "Timeout (ms):",IDC_STATIC,91,213,62,8,SS_PATHELLIPSIS + EDITTEXT IDC_EDIT5,91,224,27,14,ES_AUTOHSCROLL | ES_NUMBER + CONTROL "",IDC_TREE1,"SysTreeView32",TVS_DISABLEDRAGDROP | + TVS_NOTOOLTIPS | WS_BORDER | WS_TABSTOP | 0x4000,170,22, + 138,55 + CONTROL "Show",IDC_CHECK4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, + 13,80,85,10 + CONTROL "Show events",IDC_CHECK5,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,167,110,139,10 + CONTROL "Status changes",IDC_CHECK6,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,167,10,136,10 + PUSHBUTTON "Show testing OSD",IDC_BUTTON5,11,224,67,14 + CONTROL "Show my status changes",IDC_CHECK7,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,175,80,133,10 + CONTROL "Show message window after click",IDC_CHECK2,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,167,156,138,10 + CONTROL "",IDC_SLIDER1,"msctls_trackbar32",TBS_BOTH | + TBS_NOTICKS | WS_TABSTOP,87,193,45,15 + LTEXT "Static",IDC_ALPHATXT,136,195,17,8 + PUSHBUTTON "Text color",IDC_BUTTON6,175,121,68,14 + EDITTEXT IDC_EDIT2,214,137,81,14,ES_AUTOHSCROLL + LTEXT "Format:",IDC_STATIC,177,140,35,8 + PUSHBUTTON "?",IDC_BUTTON7,298,137,10,14 + CONTROL "",IDC_TREE2,"SysTreeView32",TVS_DISABLEDRAGDROP | + TVS_NOTOOLTIPS | WS_BORDER | WS_TABSTOP | 0x4000,170,182, + 138,59 + LTEXT "Show when my status is:",IDC_STATIC,168,171,139,8 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_DIALOG1, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 309 + TOPMARGIN, 7 + BOTTOMMARGIN, 243 + END +END +#endif // APSTUDIO_INVOKED + +#endif // Slovak resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// 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 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +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/wbOSD/wbOSD.vcproj b/wbOSD/wbOSD.vcproj new file mode 100644 index 0000000..a6bdec2 --- /dev/null +++ b/wbOSD/wbOSD.vcproj @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/wbOSD/wbOSD_10.vcxproj b/wbOSD/wbOSD_10.vcxproj new file mode 100644 index 0000000..606c60f --- /dev/null +++ b/wbOSD/wbOSD_10.vcxproj @@ -0,0 +1,182 @@ + + + + + Debug Unicode + Win32 + + + Debug + Win32 + + + Release Unicode + Win32 + + + Release + Win32 + + + + wbOSD + {DA450122-7F0B-45DA-9EAA-421887AD8450} + Win32Proj + + + + DynamicLibrary + Unicode + true + + + DynamicLibrary + MultiByte + true + + + DynamicLibrary + MultiByte + + + DynamicLibrary + Unicode + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + $(SolutionDir)$(Configuration)/Plugins\ + $(SolutionDir)$(Configuration)/Plugins\ + $(SolutionDir)$(Configuration)/Obj/$(ProjectName)\ + $(SolutionDir)$(Configuration)/Obj/$(ProjectName)\ + true + true + $(SolutionDir)$(Configuration)/Plugins\ + $(SolutionDir)$(Configuration)/Obj/$(ProjectName)\ + false + $(SolutionDir)$(Configuration)/Plugins\ + $(SolutionDir)$(Configuration)/Obj/$(ProjectName)\ + false + + + + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;WBOSD_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Use + Level3 + EditAndContinue + ../../include;%(AdditionalIncludeDirectories) + wbOSD.h + + + true + $(OutDir)wbOSD.pdb + Windows + $(OutDir)wbOSD.lib + MachineX86 + + + + + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;WBOSD_EXPORTS;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebugDLL + Use + Level3 + EditAndContinue + ../../include;%(AdditionalIncludeDirectories) + wbOSD.h + + + true + $(OutDir)wbOSD.pdb + Windows + $(OutDir)wbOSD.lib + MachineX86 + + + + + WIN32;NDEBUG;_WINDOWS;_USRDLL;WBOSD_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + Use + Level3 + ProgramDatabase + Full + Size + ../../include;%(AdditionalIncludeDirectories) + wbOSD.h + + + true + Windows + true + true + $(OutDir)wbOSD.lib + MachineX86 + + + + + WIN32;NDEBUG;_WINDOWS;_USRDLL;WBOSD_EXPORTS;UNICODE;_UNICODE;%(PreprocessorDefinitions) + MultiThreadedDLL + Use + Level3 + ProgramDatabase + Full + Size + true + ../../include;%(AdditionalIncludeDirectories) + wbOSD.h + + + true + Windows + true + true + $(OutDir)wbOSD.lib + MachineX86 + + + + + + Create + Create + Create + Create + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/wbOSD/wbOSD_10.vcxproj.filters b/wbOSD/wbOSD_10.vcxproj.filters new file mode 100644 index 0000000..e50c5a8 --- /dev/null +++ b/wbOSD/wbOSD_10.vcxproj.filters @@ -0,0 +1,44 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + + + Header Files + + + Resource Files + + + + + Resource Files + + + \ No newline at end of file diff --git a/wbOSD/wbOSD_9.vcproj b/wbOSD/wbOSD_9.vcproj new file mode 100644 index 0000000..acf4980 --- /dev/null +++ b/wbOSD/wbOSD_9.vcproj @@ -0,0 +1,423 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3