From ec117f17b72b96652122d1314dde0c6731177bbb Mon Sep 17 00:00:00 2001 From: "berkeviktor@aol.com" Date: Tue, 30 Mar 2010 13:17:54 +0200 Subject: [PATCH] add xtray support. graphics are in hg. --- COPYING | 340 +++ plugins/xtray/bitmaps/sd.bmp | Bin 0 -> 32824 bytes plugins/xtray/icons/banned.ico | Bin 0 -> 1406 bytes plugins/xtray/icons/chan_msg.ico | Bin 0 -> 1406 bytes plugins/xtray/icons/disconnected.ico | Bin 0 -> 1406 bytes plugins/xtray/icons/highlight-1-3.ico | Bin 0 -> 1406 bytes plugins/xtray/icons/highlight.ico | Bin 0 -> 1406 bytes plugins/xtray/icons/kicked.ico | Bin 0 -> 1406 bytes plugins/xtray/icons/priv_msg-1-2-2.ico | Bin 0 -> 1406 bytes plugins/xtray/icons/sd.ico | Bin 0 -> 24358 bytes plugins/xtray/icons/server_notice.ico | Bin 0 -> 1406 bytes plugins/xtray/icons/xchat.ico | Bin 0 -> 25670 bytes xchat-wdk.patch | 3395 +++++++++++++++++++++++- 13 files changed, 3661 insertions(+), 74 deletions(-) create mode 100644 COPYING create mode 100644 plugins/xtray/bitmaps/sd.bmp create mode 100644 plugins/xtray/icons/banned.ico create mode 100644 plugins/xtray/icons/chan_msg.ico create mode 100644 plugins/xtray/icons/disconnected.ico create mode 100644 plugins/xtray/icons/highlight-1-3.ico create mode 100644 plugins/xtray/icons/highlight.ico create mode 100644 plugins/xtray/icons/kicked.ico create mode 100644 plugins/xtray/icons/priv_msg-1-2-2.ico create mode 100644 plugins/xtray/icons/sd.ico create mode 100644 plugins/xtray/icons/server_notice.ico create mode 100644 plugins/xtray/icons/xchat.ico diff --git a/COPYING b/COPYING new file mode 100644 index 00000000..eeb586b3 --- /dev/null +++ b/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/plugins/xtray/bitmaps/sd.bmp b/plugins/xtray/bitmaps/sd.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9d6b7f954c7e191141888e5865f8e3acfd39674c GIT binary patch literal 32824 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 UObu^&ZydOB;KqT=<$&k?3r(ERYybcN literal 0 HcmV?d00001 diff --git a/plugins/xtray/icons/banned.ico b/plugins/xtray/icons/banned.ico new file mode 100644 index 0000000000000000000000000000000000000000..fef8df8c9dee2f17fdaafa01f637b86695124abb GIT binary patch literal 1406 zcmai!F=$&?6ox-j3Wf{~6sjRhi`%BLXw~9DLxvVSsE|R!D|pBtuoIq)3K~3UaH$+r z5VZyc9C(8U8#D--LBlf@RD;}VkU>xl8WdFy3W!vL1{+kY!NckQB%4AA^xpg3d+xdK zzH{z5_dQrry?vW`NxlmoNcv0!st?5y%j)5qrTOrdZV%Mh+gl9kC313dqA^&odBZG_ zgleEt*VMct24XCxV*X4hghe8l<6tQl%Vx1c0rNbpT*j(ZtX{`jEvzF318h9Trc>-{ zMmX#cjV4%MPZ5u2*x1OjwN)UU_Q+-{6be3`*Pv4A;QIp_jWMm(Ii1c7Cmbdbjgnel zClim8d-#x|>r&d;p&~zg`O%OcZTZoYA0zoOX*Rj)c8NF260Z_~T#k(Y0te5({|_@ySz=UqCrA%o_Gf|ur?yvt!V z&-3~Lwbmi+flqJTU^H!WD_!Ef-7@dztAw=wj`oLiwmUl8ip~~pPl@&v_oj6(I1Ulkm?)QHF%(@<7bWqvU^-KBComj> zVx&NWVuoKu34oFZUJ)e*G8srDAQpqQHQkY!P+m>>HRaiqbJHELtZ+C#htUXnJ!rR4 z9`#xulp4GPDCA&w7u*ymjl>?n%8FdFseIM>Oy{$X{H;^AGI`76noHE8+_LKnDc6w= zg+fMzY#;=DIAODJd z`v>;@pV-sCu;ahExVYf#?2OaXQ;v_1IXXJ}-|tt(-YBatZxk^Nmg4hIHnpnBKT->(m$Ugq;&L~L$yQ)( zULGftNePb@vwN_e+>`~7$i3j%YkRH~Tl@RLQc$+HrC)yf^Yz9@`;UYF-tx2gqPk~` p-{8%3J_gsjGlic%f<65of6pz(Kn^&0=Rcl2S?GdigFV6Ce*w?e*?Ir~ literal 0 HcmV?d00001 diff --git a/plugins/xtray/icons/chan_msg.ico b/plugins/xtray/icons/chan_msg.ico new file mode 100644 index 0000000000000000000000000000000000000000..793d050e08f04a5ba8acac1006eb04373f193c0d GIT binary patch literal 1406 zcmai!KWHOI6o)?(LJnNyAP^PT1RRst;?NNnDy~Stg#uTo*no>G1orvXLID>pR5(OF zR0ym>0UvC!g$*hMxk7<8F~o(OsE|Pr1zhMZau7izDpc4YBNYz3{C4e2;0R=9znOV& z{=Io`c3?*N?p>m^@ix4#*2f}LeIRDIqY^%wiK_o7c0eCHJ2#a|H90vsQ5|+z^kEjZ zgmS1-(UjZ~Juwtx5sit(utWlL94zNzg#uPCW1fdqt605`9Uo(@7S<8H9yT0e<1uzU zB_4N3CNnHA=SZjXtgIARTPw4<=}{=uD3=2~uR*QWAqaXj8beyG3p$-CPCQN~nIyNo zOg^2a`1mmu*Tvu3q9!{6+0l?4ZQ0S49Rt}hYBsq(J0syFc$j%eDwo2^J7kI(a+Mr; zKTok%q!Lu{8$Pvmji4LQ7&K^KwCP@VDakfZw$&;}1b&m|i!(Y$eR|CiWp9(c>NflJ z5-*PTIBMqX2;KfmcC+fqWh^8AzpIX-RivDil{!d`)pS#oTlUtRNgNE?_W#ZWr2Z z6h|!^fI@?}2jwDcZ-biyg^|=Fn46PHHkPeApXq$ok-f)MtxCyCxaN|yB(rvVA!Rz+ zL$1&!LVKV+rrG=jZ2~o}O}ec*w!Q!TZYD@QnM|MFkCs&LL^8x5xS!mgU)2l=SCi@V>cQ31@nk9?8hA$@bKSMY zNPvZPHp28|;Z_k=t5U3oiUqP+R;9>hH(V*!*xilBNs*QQ-}Gd6J$m<^zg9iJc?MsL rQT^9jaH@B4M^ea1*cRX2*1yb3_l`O=?%6Xa{;2lvx<+HYc?#>_*udP$ literal 0 HcmV?d00001 diff --git a/plugins/xtray/icons/disconnected.ico b/plugins/xtray/icons/disconnected.ico new file mode 100644 index 0000000000000000000000000000000000000000..9063e7e3aa3fe42070559ca6db362bf9afb2a6b7 GIT binary patch literal 1406 zcmajfF>4e-7zW@kh{Q%rn$!|FxT~izU5XH|F=#3?zANS$C723L=q zMx|gv^~h;d3X0H0PNPzApdLAmO2J9>$oop<)`AY|ai?fh3IXG+%MQ)#~6KXNs{I$zhOdX~rUyFPN@^R~!k1!usKALYu6b!j5odhjBZus>%?7LgKYex<+uPf*zrWwx z*w~2G)zw&DUcNh0T>a|e{mF^n@qw}P%jVASsBh)(DVy24yBr?hChxMu!)L?Yd9XWt zCO8_6Mt!h591f41`4jApMtw78v&|Qy^;c_)n@^t4J6^7hR@S?%zWj)I`#s{#X~gLp|9kf$t`_|rKD2)n@y&5&uV2rv$!oJu_WccDjKTZ> literal 0 HcmV?d00001 diff --git a/plugins/xtray/icons/highlight-1-3.ico b/plugins/xtray/icons/highlight-1-3.ico new file mode 100644 index 0000000000000000000000000000000000000000..a759145bc63cc77243e768247d08354c2b0f8a0a GIT binary patch literal 1406 zcmai!KWHOI6o)?(jx$_w2Z5-#Cc*I~wg@t~P;o^9E*!YR#RgnlA@HB9jRG!QsBnl3 z3W!*R4t%hM3L8`ia)kmiF~o(OsE|P+Dpbgde8^xfDpc4YBNYz3{6;zm9D(fYH?!}} z?!Mo=H@h&Q_UI9#W8)rtpsP=XbA2c#m{bp6OpJ#A=ypLTySw8-y)HRDJ=N$YY;jT zCy`5#Dx}DkvgFD+3bg{IW{L7unc8)Y=3SGtv<1>u$R1P5Rj9mbP(SX_uJp(RTkPj| zI4Guhb+XTK^?+KtM6+Aws$b*5R*r`|dEQSK3F-OAdOoDJJ=WT$w6<`qPqeAL_eD>1 zL_<`?vB--+q(odiGu5L@Q>{XkW3@a5q>zkSLd{oO!Xv^wJ=L-+I-(&?L{5Az=nqxg z9&|dO94XPDoKY&G0zfW+Ad3nEi3G%Au($~G^V%arp}LytYpS!U=B7PhN#SvQ4Odst zY(lMu>ZsS2K&2trhfE4~cEFE=%E;m~n3|F#>r1QFXIh`trT2uq07K6a&RjI^aMk4r!4TlFyd#MND`?OCc&0cc}dLl>bggc~br>6{A>Gu5zY5 zXpIaRgZ{i43*D{^e|3*XU_*c*Pt zKK>c|@;B_8Kd={nVn=^*b92MR#RX?)XB-_Jad>$6zu&Kdy>raImScKa-RoI(vu|3L zWBao8MvhO;&(Gz6%T}xPM5A-8z={TE4hF-oKXdbQYjeYaYzWV}_pLmccE;^sIJ|ZC zU^uvc>uzMS;p|lx%^frA8_wQXn;Dz_=H|%WSa*&YnIn61bHkTob#HHP)y=QSFCCLF zepnmpUE5oC|GmkV>NF28$G<^c{d@ea4gUMQ+4mor?M|5eni`Kk-5ZZL56v#`o1MNl Nw%tAMUiXZ9_8+~Z2|EA) literal 0 HcmV?d00001 diff --git a/plugins/xtray/icons/highlight.ico b/plugins/xtray/icons/highlight.ico new file mode 100644 index 0000000000000000000000000000000000000000..625cca9a71d86a8cc637515f166fcd83fb2b63eb GIT binary patch literal 1406 zcmai!F=!iS6vuyVDKTV7pim823a-+|B9&VY8ZtEC!G#PSuHYeqKz4FADtPdq!KE^2 z5LAN-4&0!@1`UE{&~T=PdXQ5MG6bKN1Y*gVBnDIVaL>eOGhX&v~ z>{j!4nGf?-B3ge>>m%CRJ?(8qdy6&4Bs$9bSd2tp zv_(T4h_diRPNc;XQ$2=s)ax`jP%l$K5mHdksJrS*IK-J}q*@L|U$n)cD2cBG&6%Oa;aCQcr z4m6vnj(V*RDh=Ka6mqb&1#TKtMi!sI%#1>^v0~N!O#8Ez;yt8nW%8ECHJ5}XxNSEF zQlTRsN`;&V`9MCD4%ij)LtbQs!e>LcA}Ji9t&kA%J5l~e%74GFJSqS6x>2nvS0&S# zG;QB-UBhuqXV-|wjY!09Ua~A1ym(Ut&I-a4WuaW6oT^&?{-VC)8%nJ63*XaKuowJ< zeeyH*^{?2szhOWAj_v=!#l;1ur>7hrAG5!|&)(kN|9-!6Hv3vb*j~>{%)aRk-l~J{ z8yP-5IXMXpgKoEbUo(Lr1u2O@y<+nG;mPNzFXmR~CRgFg*qr<2!)WS$RFgrQT+UrS zA74$bZe51@blX*13A{n{PL#Ei$Utde5WO^n;RP#{+f9vaO?t|cQEeM(n>#3Xh z(6IW$vuWvSp$ad8|K309jrAQd{8JgffL8+;ywX2Uvq$gU$Xl@ez6k!CnwT00Jv*f} J`pnR$$6q=!?2P~b literal 0 HcmV?d00001 diff --git a/plugins/xtray/icons/kicked.ico b/plugins/xtray/icons/kicked.ico new file mode 100644 index 0000000000000000000000000000000000000000..845a74e1ca8a2cf28a83875c61094eae6eab6fb7 GIT binary patch literal 1406 zcmai!KWH0Q9LGPVgcvd;5U7SM1=ne94JvrhkRb&RDrE3*0S_4jb=s>@!Gi}4E|o!p zs5L0yzzsLpph3_K3Y@8+8f29*q~qyhW`3JNlhUH`rdusyZ86^ zeZSwkgE{3pcbKH_ZotQS`&@)wpNKi;Rl=8Zlj;M-F6d!*cUq~`E62yjs>1=BJeY-V zLOJYGQCGVqdSW0(VlpQZ!D2DYaj=w&WinVkk9i(eEMny{R;^-<2G$b29yS zr^%MG6oLYN&8O5X5p)7-=QWxaO*+>da?<8WTd7bX@axoHv}slP^y)+M-WL1C9S+Jl zUR3v~G!AI?0y={l=c6XKwtQ~y6uFx#6Vdv6S|8Eb?&)j`I$N|kBHoeTM`9@YqAePt zB8tKjS&qM zBu9gMMo>lp0N(?zfC2;QG$fOdNWjX9?#NguuBP~!;%th!=?+*%I9y!7`8jkt&}^bO zYTE!58oYhTXJKat+!QE`Bp$)Sf+X2UT6I3t`K%?qRf<+5XE|JRiCdgoHoK6Lj%>&k zG9qLH*^oQnK*$a`kr9&5mT*NS zaZGpDh{cRZ#AchUs}48b7NN1c@I+C_m&m7z*85-74?MBoW z)6>&%SQEP4`g_vW96+k~4vpZ*5J m=DYOwL-_qJ?CReba{SS>etBbBU*3k-H~;JZcV4(AT>B3=uGxbC literal 0 HcmV?d00001 diff --git a/plugins/xtray/icons/priv_msg-1-2-2.ico b/plugins/xtray/icons/priv_msg-1-2-2.ico new file mode 100644 index 0000000000000000000000000000000000000000..7941ff77bda4c7e17135539dcb0da22c7163fce4 GIT binary patch literal 1406 zcmai!F=$&y7{`C6gak4qP^gA11y^Znk;<(H4H;VSph5-@uiznrzz%sSDroSa!KE^2 z(4avD4{y+5g9bq}sPIe;)gYxBWDrz?23eJZTtuotgAFp);Nk24Nh(cCp?CV-z5DL& zegFHudx9m^`}diZ7q{R&J$)ns)B9qHJ8I#JrCIkM%^v8--rl@Zt4Hefy82+kWoDsVzC74>q#~?(rj*K*xt^QN_k{5W%79+&#O@`xAFZxwc3bg^MZDJiW7;Dh{Z^* zuan-`Ap7(w1=ppxvqM=reCeo3M@u@o(lL~daihUar$f|<@;LFBcruQYc1UCsBnwH> z#WdM+mV#fPSSwO)mGQeiwPB6cMT_oDmz=bD(pD}U;};t=UUq0759l|>O8rCkmx zIbK%xIc^@%>icv@HHMQGcT+{~?Ur~qS0SYR541m|vpvw+mUXsBYeKB6xKG4b3`9pX z#jz*}Ph>?>JTc{CL|3&zlVjBqWu%b2YFgD*-M}Hr8e`>hBnF}*s-h@97fhx~?idCG zP>d94P|WZvC;?FPz$>7{KspVH1jOU8wx&BW70RnAzotB!a&Ec|hR2OJ3bAty3I@<|C-B!nY$6k&Q)TPlU(~mJMUk)hneXUH>?J>7AN+)U z`3v^Vuh{p$VMl*(d3nj%*%>D%CmbCead>$6zuzycyq3dRdA*`;SJB z)6<#Zyw~eJ)J$O5f-QBy@cMfC{L$$rTc55zTb*8O43Sm$vq#~rhv8sw#dLbLdi8vA zJ-xntHGA`&j;pdAcneCH7qjy0jL|qw4daL literal 0 HcmV?d00001 diff --git a/plugins/xtray/icons/sd.ico b/plugins/xtray/icons/sd.ico new file mode 100644 index 0000000000000000000000000000000000000000..ca179621e70e74c230304764551e7e5ee6adcb7e GIT binary patch literal 24358 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 literal 0 HcmV?d00001 diff --git a/plugins/xtray/icons/xchat.ico b/plugins/xtray/icons/xchat.ico new file mode 100644 index 0000000000000000000000000000000000000000..73247fd053b3006bf7c81466774e882cf4c53ba3 GIT binary patch literal 25670 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 literal 0 HcmV?d00001 diff --git a/xchat-wdk.patch b/xchat-wdk.patch index b108dc95..d638a362 100644 --- a/xchat-wdk.patch +++ b/xchat-wdk.patch @@ -1,10 +1,10 @@ -diff -Naur xchat-wdk.orig/build/build-x64.bat xchat-wdk/build/build-x64.bat +diff -ruN --strip-trailing-cr xchat-wdk.orig/build/build-x64.bat xchat-wdk/build/build-x64.bat --- xchat-wdk.orig/build/build-x64.bat 1970-01-01 01:00:00 +0100 -+++ xchat-wdk/build/build-x64.bat 2010-03-30 05:39:29 +0200 -@@ -0,0 +1,20 @@ ++++ xchat-wdk/build/build-x64.bat 2010-03-30 12:22:22 +0200 +@@ -0,0 +1,24 @@ +@echo off -+set INCLUDE=c:\WinDDK\7600.16385.1\inc\api;c:\WinDDK\7600.16385.1\inc\crt;c:\mozilla-build\build\xchat-dev64\include;c:\mozilla-build\build\openssl-0.9.8n-wdk-xchat-x64\include -+set LIB=c:\WinDDK\7600.16385.1\lib\wnet\amd64;c:\WinDDK\7600.16385.1\lib\Crt\amd64;c:\mozilla-build\build\openssl-0.9.8n-wdk-xchat-x64\lib ++set INCLUDE=c:\WinDDK\7600.16385.1\inc\api;c:\WinDDK\7600.16385.1\inc\crt;c:\WinDDK\7600.16385.1\inc\api\crt\stl70;c:\mozilla-build\build\xchat-dev64\include;c:\mozilla-build\build\openssl-1.0.0-wdk-x64\include ++set LIB=c:\WinDDK\7600.16385.1\lib\wnet\amd64;c:\WinDDK\7600.16385.1\lib\Crt\amd64;c:\mozilla-build\build\openssl-1.0.0-wdk-x64\lib +set PATH=c:\WinDDK\7600.16385.1\bin\x86\amd64;c:\WinDDK\7600.16385.1\bin\x86;c:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin;c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin;c:\mozilla-build\build\xchat-dev64\bin;c:\mozilla-build\perl-5.10-x64\bin +cd ..\src +nmake -f makefile.mak clean @@ -18,17 +18,21 @@ diff -Naur xchat-wdk.orig/build/build-x64.bat xchat-wdk/build/build-x64.bat +::cd ..\tcl +::nmake -f makefile.mak clean +::nmake -f makefile.mak ++cd ..\xtray ++nmake -f makefile.mak clean ++nmake -f makefile.mak +cd ..\..\build +set PATH=%PATH%;c:\mozilla-build\build\xchat-dev32\bin +call compile-po-files.bat ++cd ..\build +pause -diff -Naur xchat-wdk.orig/build/build-x86.bat xchat-wdk/build/build-x86.bat +diff -ruN --strip-trailing-cr xchat-wdk.orig/build/build-x86.bat xchat-wdk/build/build-x86.bat --- xchat-wdk.orig/build/build-x86.bat 1970-01-01 01:00:00 +0100 -+++ xchat-wdk/build/build-x86.bat 2010-03-30 03:29:13 +0200 -@@ -0,0 +1,19 @@ ++++ xchat-wdk/build/build-x86.bat 2010-03-30 12:22:25 +0200 +@@ -0,0 +1,23 @@ +@echo off -+set INCLUDE=c:\WinDDK\7600.16385.1\inc\api;c:\WinDDK\7600.16385.1\inc\crt;c:\mozilla-build\build\xchat-dev32\include;c:\mozilla-build\build\openssl-0.9.8n-wdk-xchat-x86\include -+set LIB=c:\WinDDK\7600.16385.1\lib\wxp\i386;c:\WinDDK\7600.16385.1\lib\Crt\i386;c:\mozilla-build\build\openssl-0.9.8n-wdk-xchat-x86\lib ++set INCLUDE=c:\WinDDK\7600.16385.1\inc\api;c:\WinDDK\7600.16385.1\inc\crt;c:\WinDDK\7600.16385.1\inc\api\crt\stl70;c:\mozilla-build\build\xchat-dev32\include;c:\mozilla-build\build\openssl-1.0.0-wdk-x86\include ++set LIB=c:\WinDDK\7600.16385.1\lib\wxp\i386;c:\WinDDK\7600.16385.1\lib\Crt\i386;c:\mozilla-build\build\openssl-1.0.0-wdk-x86\lib +set PATH=c:\WinDDK\7600.16385.1\bin\x86\x86;c:\WinDDK\7600.16385.1\bin\x86;c:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin;c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin;c:\mozilla-build\build\xchat-dev32\bin;c:\mozilla-build\mingw\bin;c:\mozilla-build\perl-5.10-x86\bin +cd ..\src +nmake -f makefile.mak clean @@ -42,10 +46,14 @@ diff -Naur xchat-wdk.orig/build/build-x86.bat xchat-wdk/build/build-x86.bat +cd ..\tcl +nmake -f makefile.mak clean +nmake -f makefile.mak ++cd ..\xtray ++nmake -f makefile.mak clean ++nmake -f makefile.mak +cd ..\..\build +call compile-po-files.bat ++cd ..\build +pause -diff -Naur xchat-wdk.orig/build/compile-po-files.bat xchat-wdk/build/compile-po-files.bat +diff -ruN --strip-trailing-cr xchat-wdk.orig/build/compile-po-files.bat xchat-wdk/build/compile-po-files.bat --- xchat-wdk.orig/build/compile-po-files.bat 1970-01-01 01:00:00 +0100 +++ xchat-wdk/build/compile-po-files.bat 2010-03-30 05:01:54 +0200 @@ -0,0 +1,87 @@ @@ -136,7 +144,7 @@ diff -Naur xchat-wdk.orig/build/compile-po-files.bat xchat-wdk/build/compile-po- + +mkdir locale\zh_TW\LC_MESSAGES +msgfmt -cvo locale\zh_TW\LC_MESSAGES\xchat.mo zh_TW.po -diff -Naur xchat-wdk.orig/build/etc/gtk-2.0/gtkrc xchat-wdk/build/etc/gtk-2.0/gtkrc +diff -ruN --strip-trailing-cr xchat-wdk.orig/build/etc/gtk-2.0/gtkrc xchat-wdk/build/etc/gtk-2.0/gtkrc --- xchat-wdk.orig/build/etc/gtk-2.0/gtkrc 1970-01-01 01:00:00 +0100 +++ xchat-wdk/build/etc/gtk-2.0/gtkrc 2010-03-29 21:26:48 +0200 @@ -0,0 +1,68 @@ @@ -208,10 +216,10 @@ diff -Naur xchat-wdk.orig/build/etc/gtk-2.0/gtkrc xchat-wdk/build/etc/gtk-2.0/gt + +widget_class "*TreeView*ComboBox*" style "msw-combobox-thickness" +widget_class "*ComboBox*GtkFrame*" style "msw-combobox-thickness" -diff -Naur xchat-wdk.orig/build/release-x64.bat xchat-wdk/build/release-x64.bat +diff -ruN --strip-trailing-cr xchat-wdk.orig/build/release-x64.bat xchat-wdk/build/release-x64.bat --- xchat-wdk.orig/build/release-x64.bat 1970-01-01 01:00:00 +0100 -+++ xchat-wdk/build/release-x64.bat 2010-03-30 03:29:41 +0200 -@@ -0,0 +1,37 @@ ++++ xchat-wdk/build/release-x64.bat 2010-03-30 12:13:32 +0200 +@@ -0,0 +1,38 @@ +@echo off +set GTK_BIN=c:\mozilla-build\build\xchat-dev64\bin +set SSL_BIN=c:\mozilla-build\build\openssl-0.9.8n-wdk-xchat-x64\bin @@ -247,12 +255,13 @@ diff -Naur xchat-wdk.orig/build/release-x64.bat xchat-wdk/build/release-x64.bat +xcopy /S /I ..\plugins\perl\xcperl.dll %XCHAT_DEST%\plugins\ +::xcopy /S /I ..\plugins\python\xcpython.dll %XCHAT_DEST%\plugins\ +::xcopy /S /I ..\plugins\tcl\xctcl.dll %XCHAT_DEST%\plugins\ ++xcopy /S /I ..\plugins\xtray\xtray.dll %XCHAT_DEST%\plugins\ +xcopy /S /I ..\po\locale %XCHAT_DEST%\locale +pause -diff -Naur xchat-wdk.orig/build/release-x86.bat xchat-wdk/build/release-x86.bat +diff -ruN --strip-trailing-cr xchat-wdk.orig/build/release-x86.bat xchat-wdk/build/release-x86.bat --- xchat-wdk.orig/build/release-x86.bat 1970-01-01 01:00:00 +0100 -+++ xchat-wdk/build/release-x86.bat 2010-03-30 03:29:45 +0200 -@@ -0,0 +1,37 @@ ++++ xchat-wdk/build/release-x86.bat 2010-03-30 12:13:37 +0200 +@@ -0,0 +1,38 @@ +@echo off +set GTK_BIN=c:\mozilla-build\build\xchat-dev32\bin +set SSL_BIN=c:\mozilla-build\build\openssl-0.9.8n-wdk-xchat-x86\bin @@ -288,23 +297,24 @@ diff -Naur xchat-wdk.orig/build/release-x86.bat xchat-wdk/build/release-x86.bat +xcopy /S /I ..\plugins\perl\xcperl.dll %XCHAT_DEST%\plugins\ +::xcopy /S /I ..\plugins\python\xcpython.dll %XCHAT_DEST%\plugins\ +xcopy /S /I ..\plugins\tcl\xctcl.dll %XCHAT_DEST%\plugins\ ++xcopy /S /I ..\plugins\xtray\xtray.dll %XCHAT_DEST%\plugins\ +xcopy /S /I ..\po\locale %XCHAT_DEST%\locale +pause -diff -Naur xchat-wdk.orig/build/test-x64.bat xchat-wdk/build/test-x64.bat +diff -ruN --strip-trailing-cr xchat-wdk.orig/build/test-x64.bat xchat-wdk/build/test-x64.bat --- xchat-wdk.orig/build/test-x64.bat 1970-01-01 01:00:00 +0100 +++ xchat-wdk/build/test-x64.bat 2010-03-30 02:24:01 +0200 @@ -0,0 +1,3 @@ +@echo off +set PATH=c:\mozilla-build\build\xchat-dev64\bin;c:\mozilla-build\perl-5.10-x64\bin;c:\mozilla-build\python-2.6-x64 +..\src\fe-gtk\xchat.exe -diff -Naur xchat-wdk.orig/build/test-x86.bat xchat-wdk/build/test-x86.bat +diff -ruN --strip-trailing-cr xchat-wdk.orig/build/test-x86.bat xchat-wdk/build/test-x86.bat --- xchat-wdk.orig/build/test-x86.bat 1970-01-01 01:00:00 +0100 +++ xchat-wdk/build/test-x86.bat 2010-03-30 02:24:19 +0200 @@ -0,0 +1,3 @@ +@echo off +set PATH=c:\mozilla-build\build\xchat-dev32\bin;c:\mozilla-build\perl-5.10-x86\bin;c:\mozilla-build\python-2.6-x86 +..\src\fe-gtk\xchat.exe -diff -Naur xchat-wdk.orig/config.h xchat-wdk/config.h +diff -ruN --strip-trailing-cr xchat-wdk.orig/config.h xchat-wdk/config.h --- xchat-wdk.orig/config.h 1970-01-01 01:00:00 +0100 +++ xchat-wdk/config.h 2010-03-30 03:18:35 +0200 @@ -0,0 +1,14 @@ @@ -322,7 +332,7 @@ diff -Naur xchat-wdk.orig/config.h xchat-wdk/config.h +#endif +#define GETTEXT_PACKAGE "xchat" +#define PACKAGE_TARNAME "xchat-2.8.6" -diff -Naur xchat-wdk.orig/config.h.w32 xchat-wdk/config.h.w32 +diff -ruN --strip-trailing-cr xchat-wdk.orig/config.h.w32 xchat-wdk/config.h.w32 --- xchat-wdk.orig/config.h.w32 2008-06-12 10:37:44 +0200 +++ xchat-wdk/config.h.w32 1970-01-01 01:00:00 +0100 @@ -1,12 +0,0 @@ @@ -338,7 +348,7 @@ diff -Naur xchat-wdk.orig/config.h.w32 xchat-wdk/config.h.w32 -#ifndef USE_IPV6 -#define socklen_t int -#endif -diff -Naur xchat-wdk.orig/plugins/perl/makefile.mak xchat-wdk/plugins/perl/makefile.mak +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/perl/makefile.mak xchat-wdk/plugins/perl/makefile.mak --- xchat-wdk.orig/plugins/perl/makefile.mak 1970-01-01 01:00:00 +0100 +++ xchat-wdk/plugins/perl/makefile.mak 2010-03-30 07:45:47 +0200 @@ -0,0 +1,29 @@ @@ -371,7 +381,7 @@ diff -Naur xchat-wdk.orig/plugins/perl/makefile.mak xchat-wdk/plugins/perl/makef + del perl.def + del *.lib + del *.exp -diff -Naur xchat-wdk.orig/plugins/perl/perl.c xchat-wdk/plugins/perl/perl.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/perl/perl.c xchat-wdk/plugins/perl/perl.c --- xchat-wdk.orig/plugins/perl/perl.c 2010-03-23 01:06:59 +0100 +++ xchat-wdk/plugins/perl/perl.c 2010-03-30 01:17:15 +0200 @@ -16,13 +16,14 @@ @@ -390,7 +400,7 @@ diff -Naur xchat-wdk.orig/plugins/perl/perl.c xchat-wdk/plugins/perl/perl.c #ifdef ENABLE_NLS #include #endif -diff -Naur xchat-wdk.orig/plugins/python/makefile.mak xchat-wdk/plugins/python/makefile.mak +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/python/makefile.mak xchat-wdk/plugins/python/makefile.mak --- xchat-wdk.orig/plugins/python/makefile.mak 1970-01-01 01:00:00 +0100 +++ xchat-wdk/plugins/python/makefile.mak 2010-03-30 07:46:04 +0200 @@ -0,0 +1,24 @@ @@ -418,7 +428,7 @@ diff -Naur xchat-wdk.orig/plugins/python/makefile.mak xchat-wdk/plugins/python/m + del python.def + del *.lib + del *.exp -diff -Naur xchat-wdk.orig/plugins/python/python.c xchat-wdk/plugins/python/python.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/python/python.c xchat-wdk/plugins/python/python.c --- xchat-wdk.orig/plugins/python/python.c 2010-03-17 09:07:51 +0100 +++ xchat-wdk/plugins/python/python.c 2010-03-30 02:59:44 +0200 @@ -51,12 +51,13 @@ @@ -446,7 +456,7 @@ diff -Naur xchat-wdk.orig/plugins/python/python.c xchat-wdk/plugins/python/pytho #else #define VERSION "0.8" #endif -diff -Naur xchat-wdk.orig/plugins/tcl/makefile.mak xchat-wdk/plugins/tcl/makefile.mak +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/tcl/makefile.mak xchat-wdk/plugins/tcl/makefile.mak --- xchat-wdk.orig/plugins/tcl/makefile.mak 1970-01-01 01:00:00 +0100 +++ xchat-wdk/plugins/tcl/makefile.mak 2010-03-30 07:46:20 +0200 @@ -0,0 +1,22 @@ @@ -472,7 +482,7 @@ diff -Naur xchat-wdk.orig/plugins/tcl/makefile.mak xchat-wdk/plugins/tcl/makefil + del $(TARGET) + del *.obj + del tcl.def -diff -Naur xchat-wdk.orig/plugins/tcl/tclplugin.c xchat-wdk/plugins/tcl/tclplugin.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/tcl/tclplugin.c xchat-wdk/plugins/tcl/tclplugin.c --- xchat-wdk.orig/plugins/tcl/tclplugin.c 2010-03-21 01:49:42 +0100 +++ xchat-wdk/plugins/tcl/tclplugin.c 2010-03-29 12:57:17 +0200 @@ -32,8 +32,6 @@ @@ -484,7 +494,3225 @@ diff -Naur xchat-wdk.orig/plugins/tcl/tclplugin.c xchat-wdk/plugins/tcl/tclplugi #endif #include "xchat-plugin.h" -diff -Naur xchat-wdk.orig/src/common/cfgfiles.c xchat-wdk/src/common/cfgfiles.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/xtray/callbacks.cpp xchat-wdk/plugins/xtray/callbacks.cpp +--- xchat-wdk.orig/plugins/xtray/callbacks.cpp 1970-01-01 01:00:00 +0100 ++++ xchat-wdk/plugins/xtray/callbacks.cpp 2005-11-06 13:24:08 +0100 +@@ -0,0 +1,729 @@ ++/* X-Tray ++ * Copyright (C) 2005 Michael Hotaling ++ * ++ * X-Tray is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * X-Tray is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with X-Tray; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++ ++#define _WIN32_IE 0x0601 ++ ++#include ++#include ++#include ++#include ++#include "utility.h" ++#include "plugin.h" ++#include "xtray.h" ++#include "xchat.h" ++#include "callbacks.h" ++#include "resource.h" ++#include "sdTray.h" ++#include "sdAlerts.h" ++ ++HWND g_hPrefTabEvents; ++HWND g_hPrefTabSettings; ++HWND g_hPrefTabAlerts; ++HWND g_hPrefTabAbout; ++bool g_bCanQuit; ++int g_iIsActive = 1; ++ ++ ++BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam) ++{ ++ TCHAR szTitle[10]; ++ GetWindowText(hWnd, szTitle, 9); ++ ++ if(_tcsstr(szTitle, _T("X-Chat ["))) ++ { ++ g_hXchatWnd = hWnd; ++ return false; ++ } ++ ++ return true; ++} ++ ++/***********************************************************************************************/ ++/******* our xchat event call back, get the name and info for each event and save it ***********/ ++/******* for our alerts later ***********/ ++/***********************************************************************************************/ ++int event_cb(char *word[], void *userdata) ++{ ++ int iEvent = (int)userdata; ++ ++ if(iEvent > 10) ++ return XCHAT_EAT_NONE; ++ ++ /***************************************************************************************/ ++ /***** if the window is minimized or if we're allowed to show alerts when its not **/ ++ /***** and if the option to show the specified alert is true and if we're even **/ ++ /***** allowed to show alerts at all then we show them (a bit confusing but it works) **/ ++ /***************************************************************************************/ ++ if(((g_iIsActive == 0) || !(g_dwPrefs & (1< 0) ++ { ++ xchat_set_context(ph, xchat_find_server(msg-1)); ++ ++ if(!xchat_get_info(ph, "away")) ++ { ++ xchat_away(g_szAway); ++ } ++ else ++ { ++ xchat_back(); ++ } ++ } ++ } ++ break; ++ } ++ ++ return 1; ++} ++ ++int CALLBACK PrefProc(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam) ++{ ++ switch(msg) ++ { ++ case WM_INITDIALOG: ++ { ++ TCITEM tci1; ++ TCITEM tci2; ++ TCITEM tci3; ++ TCITEM tci4; ++ ++ tci1.mask = TCIF_TEXT; ++ tci1.pszText = _T("Settings"); ++ tci1.cchTextMax = strlen("Settings"); ++ SendDlgItemMessage(hWnd, IDC_TAB_CONTROL, TCM_INSERTITEM, 0, (LPARAM)&tci1); ++ ++ tci2.mask = TCIF_TEXT; ++ tci2.pszText = _T("Alerts"); ++ tci2.cchTextMax = strlen("Alerts"); ++ SendDlgItemMessage(hWnd, IDC_TAB_CONTROL, TCM_INSERTITEM, 1, (LPARAM)&tci2); ++ ++ tci3.mask = TCIF_TEXT; ++ tci3.pszText = _T("Events"); ++ tci3.cchTextMax = strlen("Events"); ++ SendDlgItemMessage(hWnd, IDC_TAB_CONTROL, TCM_INSERTITEM, 2, (LPARAM)&tci3); ++ ++ tci4.mask = TCIF_TEXT; ++ tci4.pszText = _T("About"); ++ tci4.cchTextMax = strlen("About"); ++ SendDlgItemMessage(hWnd, IDC_TAB_CONTROL, TCM_INSERTITEM, 3, (LPARAM)&tci4); ++ ++ ++ /***********************************************************************************/ ++ /***********************************************************************************/ ++ /***********************************************************************************/ ++ ++ g_hPrefTabSettings = CreateDialog((HINSTANCE)g_hInstance, ++ MAKEINTRESOURCE(IDD_SETTINGS), ++ hWnd, ++ (DLGPROC)SettingsProc); ++ SetDialog(g_hPrefTabSettings, IDD_SETTINGS); ++ ++ g_hPrefTabAlerts = CreateDialog((HINSTANCE)g_hInstance, ++ MAKEINTRESOURCE(IDD_ALERTS), ++ hWnd, ++ (DLGPROC)AlertsProc); ++ SetDialog(g_hPrefTabAlerts, IDD_ALERTS); ++ ++ g_hPrefTabEvents = CreateDialog((HINSTANCE)g_hInstance, ++ MAKEINTRESOURCE(IDD_EVENTS), ++ hWnd, ++ (DLGPROC)EventsProc); ++ SetDialog(g_hPrefTabEvents, IDD_EVENTS); ++ ++ g_hPrefTabAbout = CreateDialog((HINSTANCE)g_hInstance, ++ MAKEINTRESOURCE(IDD_ABOUT), ++ hWnd, ++ (DLGPROC)AboutProc); ++ } ++ break; ++ case WM_SHOWWINDOW: ++ { ++ if(wparam) ++ { ++ SendDlgItemMessage(hWnd, IDC_TAB_CONTROL, TCM_SETCURSEL, 0, 0); ++ ShowWindow(g_hPrefTabSettings, SW_SHOW); ++ ShowWindow(g_hPrefTabAlerts, SW_HIDE); ++ ShowWindow(g_hPrefTabEvents, SW_HIDE); ++ ShowWindow(g_hPrefTabAbout, SW_HIDE); ++ } ++ } ++ break; ++ case WM_NOTIFY: ++ { ++ NMHDR *pData = (NMHDR *)lparam; ++ ++ switch(pData->code) ++ { ++ case TCN_SELCHANGE: ++ { ++ switch(SendDlgItemMessage(hWnd, IDC_TAB_CONTROL, TCM_GETCURSEL, 0, 0)) ++ { ++ case 0: ++ { ++ ShowWindow(g_hPrefTabSettings, SW_SHOW); ++ ShowWindow(g_hPrefTabAlerts, SW_HIDE); ++ ShowWindow(g_hPrefTabEvents, SW_HIDE); ++ ShowWindow(g_hPrefTabAbout, SW_HIDE); ++ } ++ break; ++ case 1: ++ { ++ ShowWindow(g_hPrefTabSettings, SW_HIDE); ++ ShowWindow(g_hPrefTabAlerts, SW_SHOW); ++ ShowWindow(g_hPrefTabEvents, SW_HIDE); ++ ShowWindow(g_hPrefTabAbout, SW_HIDE); ++ } ++ break; ++ case 2: ++ { ++ ShowWindow(g_hPrefTabSettings, SW_HIDE); ++ ShowWindow(g_hPrefTabAlerts, SW_HIDE); ++ ShowWindow(g_hPrefTabEvents, SW_SHOW); ++ ShowWindow(g_hPrefTabAbout, SW_HIDE); ++ } ++ break; ++ case 3: ++ { ++ ShowWindow(g_hPrefTabSettings, SW_HIDE); ++ ShowWindow(g_hPrefTabAlerts, SW_HIDE); ++ ShowWindow(g_hPrefTabEvents, SW_HIDE); ++ ShowWindow(g_hPrefTabAbout, SW_SHOW); ++ } ++ break; ++ } ++ } ++ break; ++ } ++ } ++ break; ++ case WM_CLOSE: ++ { ++ ShowWindow(g_hPrefTabEvents, SW_HIDE); ++ ShowWindow(g_hPrefTabSettings, SW_HIDE); ++ ShowWindow(g_hPrefTabAlerts, SW_HIDE); ++ ShowWindow(g_hPrefTabAbout, SW_HIDE); ++ ShowWindow(hWnd, SW_HIDE); ++ return TRUE; ++ } ++ break; ++ case WM_COMMAND: ++ { ++ switch(wparam) ++ { ++ case IDC_PREF_OK: ++ { ++ CheckPrefs(g_hPrefTabEvents, IDD_EVENTS); ++ CheckPrefs(g_hPrefTabSettings, IDD_SETTINGS); ++ CheckPrefs(g_hPrefTabAlerts, IDD_ALERTS); ++ ++ SavePrefs(0); ++ ++ ShowWindow(g_hPrefTabEvents, SW_HIDE); ++ ShowWindow(g_hPrefTabSettings, SW_HIDE); ++ ShowWindow(g_hPrefTabAlerts, SW_HIDE); ++ ShowWindow(g_hPrefTabAbout, SW_HIDE); ++ ShowWindow(hWnd, SW_HIDE); ++ return TRUE; ++ } ++ break; ++ case IDC_PREF_CANCEL: ++ { ++ ShowWindow(g_hPrefTabEvents, SW_HIDE); ++ ShowWindow(g_hPrefTabSettings, SW_HIDE); ++ ShowWindow(g_hPrefTabAlerts, SW_HIDE); ++ ShowWindow(g_hPrefTabAbout, SW_HIDE); ++ ShowWindow(hWnd, SW_HIDE); ++ return TRUE; ++ } ++ break; ++ case IDC_PREF_APPLY: ++ { ++ CheckPrefs(g_hPrefTabEvents, IDD_EVENTS); ++ CheckPrefs(g_hPrefTabSettings, IDD_SETTINGS); ++ CheckPrefs(g_hPrefTabAlerts, IDD_ALERTS); ++ ++ SavePrefs(0); ++ return FALSE; ++ } ++ break; ++ } ++ } ++ break; ++ case WM_DESTROY: ++ { ++ SendMessage(g_hPrefTabEvents, WM_CLOSE, 0, 0); ++ SendMessage(g_hPrefTabSettings, WM_CLOSE, 0, 0); ++ SendMessage(g_hPrefTabAbout, WM_CLOSE, 0, 0); ++ SendMessage(g_hPrefTabAlerts, WM_CLOSE, 0, 0); ++ } ++ break; ++ } ++ ++ return FALSE; ++} ++ ++/****************************************************/ ++/****************************************************/ ++/****************************************************/ ++LRESULT CALLBACK AlertsProc(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam) ++{ ++ switch(msg) ++ { ++ case WM_CLOSE: ++ { ++ DestroyWindow(hWnd); ++ return TRUE; ++ break; ++ } ++ break; ++ case WM_COMMAND: ++ { ++ switch(LOWORD(wparam)) ++ { ++ case PREF_AMAE: ++ { ++ SetToggle(hWnd, PREF_OSBWM, PREF_AMAE, TRUE); ++ SetToggle(hWnd, PREF_UWIOB, PREF_AMAE, TRUE); ++ SetToggle(hWnd, PREF_KAOI, PREF_AMAE, TRUE); ++ ++ if(IsDlgButtonChecked(hWnd, PREF_AMAE)) ++ { ++ SetToggle(hWnd, IDC_ALERT_HOTKEY, PREF_UWIOB, TRUE); ++ SetToggle(hWnd, IDC_ALERT_HOTKEY_TEXT, PREF_UWIOB, TRUE); ++ SetToggle(hWnd, IDC_ALERT_TIME, PREF_KAOI, FALSE); ++ SetToggle(hWnd, IDC_ALERT_TIME_TEXT, PREF_KAOI, FALSE); ++ } ++ else ++ { ++ SetToggle(hWnd, IDC_ALERT_HOTKEY, PREF_AMAE, TRUE); ++ SetToggle(hWnd, IDC_ALERT_HOTKEY_TEXT, PREF_AMAE, TRUE); ++ SetToggle(hWnd, IDC_ALERT_TIME, PREF_AMAE, TRUE); ++ SetToggle(hWnd, IDC_ALERT_TIME_TEXT, PREF_AMAE, TRUE); ++ } ++ } ++ break; ++ case PREF_UWIOB: ++ { ++ SetToggle(hWnd, IDC_ALERT_HOTKEY, PREF_UWIOB, TRUE); ++ SetToggle(hWnd, IDC_ALERT_HOTKEY_TEXT, PREF_UWIOB, TRUE); ++ } ++ break; ++ case PREF_KAOI: ++ { ++ SetToggle(hWnd, IDC_ALERT_TIME, PREF_KAOI, FALSE); ++ SetToggle(hWnd, IDC_ALERT_TIME_TEXT, PREF_KAOI, FALSE); ++ } ++ break; ++ } ++ break; ++ } ++ } ++ ++ return FALSE; ++} ++ ++/****************************************************/ ++/****************************************************/ ++/****************************************************/ ++LRESULT CALLBACK AboutProc(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam) ++{ ++ if(msg == WM_CLOSE) ++ { ++ DestroyWindow(hWnd); ++ return true; ++ } ++ ++ return FALSE; ++} ++ ++/*****************************************************/ ++/** Process the events for our event dialog **********/ ++/*****************************************************/ ++LRESULT CALLBACK EventsProc(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam) ++{ ++ if(msg == WM_CLOSE) ++ { ++ DestroyWindow(hWnd); ++ return true; ++ } ++ ++ return FALSE; ++} ++ ++/*****************************************************/ ++/** Process the events for our settings dialog this **/ ++/** is alot more complicated because options are **/ ++/** enabled/disabled based on the state of others **/ ++/*****************************************************/ ++LRESULT CALLBACK SettingsProc(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam) ++{ ++ if(msg == WM_CLOSE) ++ { ++ DestroyWindow(hWnd); ++ return true; ++ } ++ ++ return FALSE; ++} ++ ++/*****************************************************/ ++/** this is the hotkey message processing function **/ ++/** this window is always open and ready to be told **/ ++/** if someone has hit the hotkey, if they did, we **/ ++/** need to close out all of the tray alerts, for **/ ++/** this I wrote sdCloseAlerts, more info there **/ ++/*****************************************************/ ++LRESULT CALLBACK HotKeyProc(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam) ++{ ++ if(msg == WM_CLOSE) ++ { ++ DestroyWindow(hWnd); ++ return true; ++ } ++ else if(msg == WM_HOTKEY) ++ { ++ sdCloseAlerts(); ++ } ++ ++ return FALSE; ++} ++ +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/xtray/callbacks.h xchat-wdk/plugins/xtray/callbacks.h +--- xchat-wdk.orig/plugins/xtray/callbacks.h 1970-01-01 01:00:00 +0100 ++++ xchat-wdk/plugins/xtray/callbacks.h 2005-10-25 15:08:30 +0200 +@@ -0,0 +1,37 @@ ++/* X-Tray ++ * Copyright (C) 2005 Michael Hotaling ++ * ++ * X-Tray is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * X-Tray is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with X-Tray; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++ ++#ifndef _H_CALLBACKS_H ++#define _H_CALLBACKS_H ++ ++int event_cb (char *word[], void *userdata); ++int command_cb (char *word[], char *word_eol[], void *userdata); ++ ++LRESULT CALLBACK WindowProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); ++BOOL CALLBACK EnumWindowsProc (HWND hWnd, LPARAM lParam); ++LRESULT CALLBACK sdTrayProc (HWND hwnd, int msg); ++ ++LRESULT CALLBACK AlertProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); ++LRESULT CALLBACK HotKeyProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); ++LRESULT CALLBACK EventsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); ++LRESULT CALLBACK AboutProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); ++LRESULT CALLBACK AlertsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); ++LRESULT CALLBACK SettingsProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); ++int CALLBACK PrefProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam); ++ ++#endif +\ No newline at end of file +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/xtray/makefile.mak xchat-wdk/plugins/xtray/makefile.mak +--- xchat-wdk.orig/plugins/xtray/makefile.mak 1970-01-01 01:00:00 +0100 ++++ xchat-wdk/plugins/xtray/makefile.mak 2010-03-30 12:32:58 +0200 +@@ -0,0 +1,37 @@ ++include "..\..\src\makeinc.mak" ++ ++TARGET = xtray.dll ++ ++TRAY_OBJECTS = \ ++callbacks.obj \ ++sdAlerts.obj \ ++sdTray.obj \ ++utility.obj \ ++xchat.obj \ ++xtray.obj ++ ++CPPFLAGS = $(CPPFLAGS) /c /MD /nologo /DWIN32 /D_STL70_ /D_STATIC_CPPLIB /EHsc ++ ++all: $(TRAY_OBJECTS) $(TARGET) ++ ++xtray.def: ++ echo EXPORTS > xtray.def ++ echo xchat_plugin_init >> xtray.def ++ echo xchat_plugin_deinit >> xtray.def ++ ++.cpp.obj: ++ $(CC) $(CPPFLAGS) /c $< ++ ++res: ++ rc resource.rc ++ ++$(TARGET): $(TRAY_OBJECTS) xtray.def res ++ $(LINK) /DLL /out:$(TARGET) $(LDFLAGS) $(TRAY_OBJECTS) ntstc_msvcrt.lib $(LIBS) /def:xtray.def resource.res ++ ++clean: ++ del $(TARGET) ++ del *.obj ++ del xtray.def ++ del resource.res ++ del *.lib ++ del *.exp +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/xtray/plugin.h xchat-wdk/plugins/xtray/plugin.h +--- xchat-wdk.orig/plugins/xtray/plugin.h 1970-01-01 01:00:00 +0100 ++++ xchat-wdk/plugins/xtray/plugin.h 2005-03-22 17:20:36 +0100 +@@ -0,0 +1,335 @@ ++/* You can distribute this header with your plugins for easy compilation */ ++#ifndef XCHAT_PLUGIN_H ++#define XCHAT_PLUGIN_H ++ ++#include ++ ++#define XCHAT_IFACE_MAJOR 1 ++#define XCHAT_IFACE_MINOR 9 ++#define XCHAT_IFACE_MICRO 11 ++#define XCHAT_IFACE_VERSION ((XCHAT_IFACE_MAJOR * 10000) + \ ++ (XCHAT_IFACE_MINOR * 100) + \ ++ (XCHAT_IFACE_MICRO)) ++ ++#define XCHAT_PRI_HIGHEST 127 ++#define XCHAT_PRI_HIGH 64 ++#define XCHAT_PRI_NORM 0 ++#define XCHAT_PRI_LOW (-64) ++#define XCHAT_PRI_LOWEST (-128) ++ ++#define XCHAT_FD_READ 1 ++#define XCHAT_FD_WRITE 2 ++#define XCHAT_FD_EXCEPTION 4 ++#define XCHAT_FD_NOTSOCKET 8 ++ ++#define XCHAT_EAT_NONE 0 /* pass it on through! */ ++#define XCHAT_EAT_XCHAT 1 /* don't let xchat see this event */ ++#define XCHAT_EAT_PLUGIN 2 /* don't let other plugins see this event */ ++#define XCHAT_EAT_ALL (XCHAT_EAT_XCHAT|XCHAT_EAT_PLUGIN) /* don't let anything see this event */ ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++typedef struct _xchat_plugin xchat_plugin; ++typedef struct _xchat_list xchat_list; ++typedef struct _xchat_hook xchat_hook; ++#ifndef PLUGIN_C ++typedef struct _xchat_context xchat_context; ++#endif ++ ++#ifndef PLUGIN_C ++struct _xchat_plugin ++{ ++ /* these are only used on win32 */ ++ xchat_hook *(*xchat_hook_command) (xchat_plugin *ph, ++ const char *name, ++ int pri, ++ int (*callback) (char *word[], char *word_eol[], void *user_data), ++ const char *help_text, ++ void *userdata); ++ xchat_hook *(*xchat_hook_server) (xchat_plugin *ph, ++ const char *name, ++ int pri, ++ int (*callback) (char *word[], char *word_eol[], void *user_data), ++ void *userdata); ++ xchat_hook *(*xchat_hook_print) (xchat_plugin *ph, ++ const char *name, ++ int pri, ++ int (*callback) (char *word[], void *user_data), ++ void *userdata); ++ xchat_hook *(*xchat_hook_timer) (xchat_plugin *ph, ++ int timeout, ++ int (*callback) (void *user_data), ++ void *userdata); ++ xchat_hook *(*xchat_hook_fd) (xchat_plugin *ph, ++ int fd, ++ int flags, ++ int (*callback) (int fd, int flags, void *user_data), ++ void *userdata); ++ void *(*xchat_unhook) (xchat_plugin *ph, ++ xchat_hook *hook); ++ void (*xchat_print) (xchat_plugin *ph, ++ const char *text); ++ void (*xchat_printf) (xchat_plugin *ph, ++ const char *format, ...); ++ void (*xchat_command) (xchat_plugin *ph, ++ const char *command); ++ void (*xchat_commandf) (xchat_plugin *ph, ++ const char *format, ...); ++ int (*xchat_nickcmp) (xchat_plugin *ph, ++ const char *s1, ++ const char *s2); ++ int (*xchat_set_context) (xchat_plugin *ph, ++ xchat_context *ctx); ++ xchat_context *(*xchat_find_context) (xchat_plugin *ph, ++ const char *servname, ++ const char *channel); ++ xchat_context *(*xchat_get_context) (xchat_plugin *ph); ++ const char *(*xchat_get_info) (xchat_plugin *ph, ++ const char *id); ++ int (*xchat_get_prefs) (xchat_plugin *ph, ++ const char *name, ++ const char **string, ++ int *integer); ++ xchat_list * (*xchat_list_get) (xchat_plugin *ph, ++ const char *name); ++ void (*xchat_list_free) (xchat_plugin *ph, ++ xchat_list *xlist); ++ const char * const * (*xchat_list_fields) (xchat_plugin *ph, ++ const char *name); ++ int (*xchat_list_next) (xchat_plugin *ph, ++ xchat_list *xlist); ++ const char * (*xchat_list_str) (xchat_plugin *ph, ++ xchat_list *xlist, ++ const char *name); ++ int (*xchat_list_int) (xchat_plugin *ph, ++ xchat_list *xlist, ++ const char *name); ++ void * (*xchat_plugingui_add) (xchat_plugin *ph, ++ const char *filename, ++ const char *name, ++ const char *desc, ++ const char *version, ++ char *reserved); ++ void (*xchat_plugingui_remove) (xchat_plugin *ph, ++ void *handle); ++ int (*xchat_emit_print) (xchat_plugin *ph, ++ const char *event_name, ...); ++ int (*xchat_read_fd) (xchat_plugin *ph, ++ void *src, ++ char *buf, ++ int *len); ++ time_t (*xchat_list_time) (xchat_plugin *ph, ++ xchat_list *xlist, ++ const char *name); ++ char *(*xchat_gettext) (xchat_plugin *ph, ++ const char *msgid); ++ void (*xchat_send_modes) (xchat_plugin *ph, ++ const char **targets, ++ int ntargets, ++ int modes_per_line, ++ char sign, ++ char mode); ++ char *(*xchat_strip) (xchat_plugin *ph, ++ const char *str, ++ int len, ++ int flags); ++ void (*xchat_free) (xchat_plugin *ph, ++ void *ptr); ++}; ++#endif ++ ++ ++ ++xchat_hook * ++xchat_hook_command (xchat_plugin *ph, ++ const char *name, ++ int pri, ++ int (*callback) (char *word[], char *word_eol[], void *user_data), ++ const char *help_text, ++ void *userdata); ++ ++xchat_hook * ++xchat_hook_server (xchat_plugin *ph, ++ const char *name, ++ int pri, ++ int (*callback) (char *word[], char *word_eol[], void *user_data), ++ void *userdata); ++ ++xchat_hook * ++xchat_hook_print (xchat_plugin *ph, ++ const char *name, ++ int pri, ++ int (*callback) (char *word[], void *user_data), ++ void *userdata); ++ ++xchat_hook * ++xchat_hook_timer (xchat_plugin *ph, ++ int timeout, ++ int (*callback) (void *user_data), ++ void *userdata); ++ ++xchat_hook * ++xchat_hook_fd (xchat_plugin *ph, ++ int fd, ++ int flags, ++ int (*callback) (int fd, int flags, void *user_data), ++ void *userdata); ++ ++void * ++xchat_unhook (xchat_plugin *ph, ++ xchat_hook *hook); ++ ++void ++xchat_print (xchat_plugin *ph, ++ const char *text); ++ ++void ++xchat_printf (xchat_plugin *ph, ++ const char *format, ...); ++ ++void ++xchat_command (xchat_plugin *ph, ++ const char *command); ++ ++void ++xchat_commandf (xchat_plugin *ph, ++ const char *format, ...); ++ ++int ++xchat_nickcmp (xchat_plugin *ph, ++ const char *s1, ++ const char *s2); ++ ++int ++xchat_set_context (xchat_plugin *ph, ++ xchat_context *ctx); ++ ++xchat_context * ++xchat_find_context (xchat_plugin *ph, ++ const char *servname, ++ const char *channel); ++ ++xchat_context * ++xchat_get_context (xchat_plugin *ph); ++ ++const char * ++xchat_get_info (xchat_plugin *ph, ++ const char *id); ++ ++int ++xchat_get_prefs (xchat_plugin *ph, ++ const char *name, ++ const char **string, ++ int *integer); ++ ++xchat_list * ++xchat_list_get (xchat_plugin *ph, ++ const char *name); ++ ++void ++xchat_list_free (xchat_plugin *ph, ++ xchat_list *xlist); ++ ++const char * const * ++xchat_list_fields (xchat_plugin *ph, ++ const char *name); ++ ++int ++xchat_list_next (xchat_plugin *ph, ++ xchat_list *xlist); ++ ++const char * ++xchat_list_str (xchat_plugin *ph, ++ xchat_list *xlist, ++ const char *name); ++ ++int ++xchat_list_int (xchat_plugin *ph, ++ xchat_list *xlist, ++ const char *name); ++ ++time_t ++xchat_list_time (xchat_plugin *ph, ++ xchat_list *xlist, ++ const char *name); ++ ++void * ++xchat_plugingui_add (xchat_plugin *ph, ++ const char *filename, ++ const char *name, ++ const char *desc, ++ const char *version, ++ char *reserved); ++ ++void ++xchat_plugingui_remove (xchat_plugin *ph, ++ void *handle); ++ ++int ++xchat_emit_print (xchat_plugin *ph, ++ const char *event_name, ...); ++ ++char * ++xchat_gettext (xchat_plugin *ph, ++ const char *msgid); ++ ++void ++xchat_send_modes (xchat_plugin *ph, ++ const char **targets, ++ int ntargets, ++ int modes_per_line, ++ char sign, ++ char mode); ++ ++char * ++xchat_strip (xchat_plugin *ph, ++ const char *str, ++ int len, ++ int flags); ++ ++void ++xchat_free (xchat_plugin *ph, ++ void *ptr); ++ ++#if !defined(PLUGIN_C) && defined(WIN32) ++#ifndef XCHAT_PLUGIN_HANDLE ++#define XCHAT_PLUGIN_HANDLE (ph) ++#endif ++#define xchat_hook_command ((XCHAT_PLUGIN_HANDLE)->xchat_hook_command) ++#define xchat_hook_server ((XCHAT_PLUGIN_HANDLE)->xchat_hook_server) ++#define xchat_hook_print ((XCHAT_PLUGIN_HANDLE)->xchat_hook_print) ++#define xchat_hook_timer ((XCHAT_PLUGIN_HANDLE)->xchat_hook_timer) ++#define xchat_hook_fd ((XCHAT_PLUGIN_HANDLE)->xchat_hook_fd) ++#define xchat_unhook ((XCHAT_PLUGIN_HANDLE)->xchat_unhook) ++#define xchat_print ((XCHAT_PLUGIN_HANDLE)->xchat_print) ++#define xchat_printf ((XCHAT_PLUGIN_HANDLE)->xchat_printf) ++#define xchat_command ((XCHAT_PLUGIN_HANDLE)->xchat_command) ++#define xchat_commandf ((XCHAT_PLUGIN_HANDLE)->xchat_commandf) ++#define xchat_nickcmp ((XCHAT_PLUGIN_HANDLE)->xchat_nickcmp) ++#define xchat_set_context ((XCHAT_PLUGIN_HANDLE)->xchat_set_context) ++#define xchat_find_context ((XCHAT_PLUGIN_HANDLE)->xchat_find_context) ++#define xchat_get_context ((XCHAT_PLUGIN_HANDLE)->xchat_get_context) ++#define xchat_get_info ((XCHAT_PLUGIN_HANDLE)->xchat_get_info) ++#define xchat_get_prefs ((XCHAT_PLUGIN_HANDLE)->xchat_get_prefs) ++#define xchat_list_get ((XCHAT_PLUGIN_HANDLE)->xchat_list_get) ++#define xchat_list_free ((XCHAT_PLUGIN_HANDLE)->xchat_list_free) ++#define xchat_list_fields ((XCHAT_PLUGIN_HANDLE)->xchat_list_fields) ++#define xchat_list_str ((XCHAT_PLUGIN_HANDLE)->xchat_list_str) ++#define xchat_list_int ((XCHAT_PLUGIN_HANDLE)->xchat_list_int) ++#define xchat_list_time ((XCHAT_PLUGIN_HANDLE)->xchat_list_time) ++#define xchat_list_next ((XCHAT_PLUGIN_HANDLE)->xchat_list_next) ++#define xchat_plugingui_add ((XCHAT_PLUGIN_HANDLE)->xchat_plugingui_add) ++#define xchat_plugingui_remove ((XCHAT_PLUGIN_HANDLE)->xchat_plugingui_remove) ++#define xchat_emit_print ((XCHAT_PLUGIN_HANDLE)->xchat_emit_print) ++#define xchat_gettext ((XCHAT_PLUGIN_HANDLE)->xchat_gettext) ++#define xchat_send_modes ((XCHAT_PLUGIN_HANDLE)->xchat_send_modes) ++#define xchat_strip ((XCHAT_PLUGIN_HANDLE)->xchat_strip) ++#define xchat_free ((XCHAT_PLUGIN_HANDLE)->xchat_free) ++#endif ++ ++#ifdef __cplusplus ++} ++#endif ++#endif +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/xtray/resource.h xchat-wdk/plugins/xtray/resource.h +--- xchat-wdk.orig/plugins/xtray/resource.h 1970-01-01 01:00:00 +0100 ++++ xchat-wdk/plugins/xtray/resource.h 2005-03-22 18:54:44 +0100 +@@ -0,0 +1,47 @@ ++//{{NO_DEPENDENCIES}} ++// Microsoft Visual C++ generated include file. ++// Used by resource.rc ++// ++#define IDD_ALERTS 104 ++#define IDD_EVENTS 105 ++#define IDD_SETTINGS 106 ++#define IDD_ALERT 107 ++#define IDD_PREF 108 ++#define IDD_ABOUT 109 ++#define IDR_TRAY_MENU 110 ++#define ICO_XCHAT 111 ++#define ICO_BANNED 112 ++#define ICO_CHANMSG 113 ++#define ICO_DISCONNECTED 114 ++#define ICO_HIGHLIGHT 115 ++#define ICO_KICKED 116 ++#define ICO_PMSG 117 ++#define ICO_SNOTICE 118 ++#define IDB_SD_LOGO 119 ++#define IDC_PREF_OK 1014 ++#define IDC_PREF_CANCEL 1015 ++#define IDC_PREF_APPLY 1016 ++#define IDC_AWAY_MSG 1017 ++#define IDC_ALERT_TIME 1018 ++#define IDC_TAB_CONTROL 1019 ++#define IDC_ALERT_HOTKEY 1020 ++#define IDC_ALERT_MSG 1021 ++#define IDC_ALERT_HOTKEY_TEXT 1022 ++#define IDC_ALERT_TIME_TEXT 1023 ++#define ACT_EXIT 40001 ++#define ACT_SETTINGS 40002 ++#define ACT_AWAY 40003 ++#define ACT_BACK 40004 ++#define ACT_RESTORE 40005 ++#define IDC_STATIC -1 ++ ++// Next default values for new objects ++// ++#ifdef APSTUDIO_INVOKED ++#ifndef APSTUDIO_READONLY_SYMBOLS ++#define _APS_NEXT_RESOURCE_VALUE 120 ++#define _APS_NEXT_COMMAND_VALUE 40006 ++#define _APS_NEXT_CONTROL_VALUE 1024 ++#define _APS_NEXT_SYMED_VALUE 101 ++#endif ++#endif +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/xtray/resource.rc xchat-wdk/plugins/xtray/resource.rc +--- xchat-wdk.orig/plugins/xtray/resource.rc 1970-01-01 01:00:00 +0100 ++++ xchat-wdk/plugins/xtray/resource.rc 2010-03-30 11:32:11 +0200 +@@ -0,0 +1,318 @@ ++// Microsoft Visual C++ generated resource script. ++// ++#include "resource.h" ++ ++#define APSTUDIO_READONLY_SYMBOLS ++///////////////////////////////////////////////////////////////////////////// ++// ++// Generated from the TEXTINCLUDE 2 resource. ++// ++#define APSTUDIO_HIDDEN_SYMBOLS ++#include "windows.h" ++#undef APSTUDIO_HIDDEN_SYMBOLS ++ ++///////////////////////////////////////////////////////////////////////////// ++#undef APSTUDIO_READONLY_SYMBOLS ++ ++///////////////////////////////////////////////////////////////////////////// ++// English (U.S.) resources ++ ++#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) ++#ifdef _WIN32 ++LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US ++#pragma code_page(1252) ++#endif //_WIN32 ++ ++///////////////////////////////////////////////////////////////////////////// ++// ++// Dialog ++// ++ ++IDD_EVENTS DIALOGEX 8, 20, 216, 143 ++STYLE DS_SETFONT | DS_SETFOREGROUND | WS_CHILD ++FONT 8, "Tahoma", 0, 0, 0x0 ++BEGIN ++ GROUPBOX "X-Chat Events",IDC_STATIC,5,5,205,77 ++ CONTROL "Server Notice",9,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, ++ 145,32,55,10 ++ CONTROL "Topic Change",3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP, ++ 145,18,55,10 ++ CONTROL "Banned",4,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,18, ++ 49,10 ++ CONTROL "Kicked",5,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,32, ++ 49,10 ++ CONTROL "Killed",8,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,46, ++ 49,10 ++ CONTROL "Disconnect",10,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16, ++ 60,49,10 ++ CONTROL "Private Message",7,"Button",BS_AUTOCHECKBOX | ++ WS_TABSTOP,70,18,69,10 ++ CONTROL "CTCP",6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,70,32,69, ++ 10 ++ CONTROL "Invite",2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,70,46, ++ 69,10 ++ CONTROL "Highlight",1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,70, ++ 60,69,10 ++END ++ ++IDD_SETTINGS DIALOGEX 8, 20, 216, 143 ++STYLE DS_SETFONT | WS_CHILD ++FONT 8, "Tahoma", 0, 0, 0x0 ++BEGIN ++ GROUPBOX "Options",IDC_STATIC,5,5,205,135 ++ CONTROL "Auto away on minimize",11,"Button",BS_AUTOCHECKBOX | ++ WS_TABSTOP,16,60,100,10 ++ CONTROL "Minimize X-Chat to the system tray",12,"Button", ++ BS_AUTOCHECKBOX | WS_TABSTOP,16,18,133,10 ++ CONTROL "Minimize to the tray instead of closing",17,"Button", ++ BS_AUTOCHECKBOX | WS_TABSTOP,16,32,174,9 ++ EDITTEXT IDC_AWAY_MSG,33,86,169,50,ES_AUTOHSCROLL ++ LTEXT "Away Msg:",IDC_STATIC,27,72,35,8 ++ CONTROL "Remove X-Chat from the taskbar ( Only show in tray )", ++ 20,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,46,191,9 ++END ++ ++IDD_ALERT DIALOGEX 0, 0, 151, 28 ++STYLE DS_LOCALEDIT | DS_SETFONT | DS_NOIDLEMSG | DS_CENTER | WS_CAPTION | ++ WS_SYSMENU ++EXSTYLE WS_EX_NOPARENTNOTIFY | WS_EX_ACCEPTFILES | WS_EX_TOOLWINDOW ++CAPTION "Event Name" ++FONT 8, "Tahoma", 0, 0, 0x1 ++BEGIN ++ LTEXT "Event Text",IDC_ALERT_MSG,3,0,147,27 ++END ++ ++IDD_PREF DIALOGEX 0, 0, 233, 190 ++STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | ++ WS_SYSMENU ++CAPTION "X-Tray Preferences" ++FONT 8, "Tahoma", 0, 0, 0x0 ++BEGIN ++ DEFPUSHBUTTON "Ok",IDC_PREF_OK,57,173,50,14 ++ PUSHBUTTON "Cancel",IDC_PREF_CANCEL,115,173,50,14 ++ PUSHBUTTON "Apply",IDC_PREF_APPLY,175,173,50,14 ++ CONTROL "Tab1",IDC_TAB_CONTROL,"SysTabControl32",0x0,7,7,218,159 ++END ++ ++IDD_ABOUT DIALOGEX 8, 20, 216, 143 ++STYLE DS_SETFONT | WS_CHILD ++FONT 8, "Tahoma", 0, 0, 0x0 ++BEGIN ++ CONTROL 119,IDC_STATIC,"Static",SS_BITMAP | SS_SUNKEN | ++ WS_BORDER,3,6,88,81 ++ CTEXT "X-Tray\r\nBy: Michael Hotaling\r\n www.SinisterDevelopments.com", ++ IDC_STATIC,95,33,118,30 ++ LTEXT "Folken\r\nBasket\r\nDonatzsky\r\nDaemon404",IDC_STATIC, ++ 15,103,64,33 ++ GROUPBOX "Special Thanks To:",IDC_STATIC,3,91,89,50 ++ GROUPBOX "Version Information:",IDC_STATIC,101,92,109,49 ++ LTEXT "1.2.3 PR",IDC_STATIC,170,105,33,8,0,WS_EX_RIGHT ++ LTEXT "Compiled On: ",IDC_STATIC,110,116,46,8 ++ LTEXT "11/06/05",IDC_STATIC,174,117,30,8 ++ LTEXT "Version Number:",IDC_STATIC,110,105,54,8 ++END ++ ++IDD_ALERTS DIALOGEX 8, 20, 216, 143 ++STYLE DS_SETFONT | WS_CHILD ++FONT 8, "Tahoma", 0, 0, 0x0 ++BEGIN ++ GROUPBOX "Alerts",IDC_STATIC,5,5,205,117 ++ CONTROL "Only show alerts while minimized",14,"Button", ++ BS_AUTOCHECKBOX | WS_TABSTOP,27,46,117,10 ++ CONTROL "Use tray alerts to notify me about events",13,"Button", ++ BS_AUTOCHECKBOX | WS_TABSTOP,16,32,152,10 ++ CONTROL "Use window instead of balloons",15,"Button", ++ BS_AUTOCHECKBOX | WS_TABSTOP,27,60,141,11 ++ EDITTEXT IDC_ALERT_TIME,137,101,61,12,ES_AUTOHSCROLL | ES_NUMBER, ++ WS_EX_RIGHT ++ LTEXT "Show alert for x seconds:",IDC_ALERT_TIME_TEXT,40,103, ++ 83,9 ++ CONTROL "Alert Hotkey",IDC_ALERT_HOTKEY,"msctls_hotkey32", ++ WS_BORDER | WS_TABSTOP,137,74,61,13 ++ LTEXT "Close all alerts hotkey:",IDC_ALERT_HOTKEY_TEXT,39,75, ++ 76,10 ++ CONTROL "Leave alerts open indefinately",16,"Button", ++ BS_AUTOCHECKBOX | WS_TABSTOP,27,88,115,11 ++ CONTROL "Blink Icon to alert me about events",18,"Button", ++ BS_AUTOCHECKBOX | WS_TABSTOP,16,18,127,10 ++END ++ ++ ++///////////////////////////////////////////////////////////////////////////// ++// ++// DESIGNINFO ++// ++ ++#ifdef APSTUDIO_INVOKED ++GUIDELINES DESIGNINFO ++BEGIN ++ IDD_EVENTS, DIALOG ++ BEGIN ++ BOTTOMMARGIN, 56 ++ END ++ ++ IDD_SETTINGS, DIALOG ++ BEGIN ++ BOTTOMMARGIN, 66 ++ END ++ ++ IDD_ALERT, DIALOG ++ BEGIN ++ RIGHTMARGIN, 150 ++ BOTTOMMARGIN, 26 ++ END ++ ++ IDD_PREF, DIALOG ++ BEGIN ++ LEFTMARGIN, 7 ++ RIGHTMARGIN, 232 ++ TOPMARGIN, 7 ++ BOTTOMMARGIN, 176 ++ END ++ ++ IDD_ABOUT, DIALOG ++ BEGIN ++ LEFTMARGIN, 7 ++ RIGHTMARGIN, 209 ++ TOPMARGIN, 7 ++ BOTTOMMARGIN, 136 ++ END ++ ++ IDD_ALERTS, DIALOG ++ BEGIN ++ LEFTMARGIN, 7 ++ RIGHTMARGIN, 208 ++ TOPMARGIN, 7 ++ BOTTOMMARGIN, 136 ++ END ++END ++#endif // APSTUDIO_INVOKED ++ ++ ++#ifdef APSTUDIO_INVOKED ++///////////////////////////////////////////////////////////////////////////// ++// ++// TEXTINCLUDE ++// ++ ++1 TEXTINCLUDE ++BEGIN ++ "resource.h\0" ++END ++ ++2 TEXTINCLUDE ++BEGIN ++ "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" ++ "#include ""windows.h""\r\n" ++ "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" ++ "\0" ++END ++ ++3 TEXTINCLUDE ++BEGIN ++ "xtray.h\0" ++END ++ ++4 TEXTINCLUDE ++BEGIN ++ "\r\n" ++ "\0" ++END ++ ++#endif // APSTUDIO_INVOKED ++ ++ ++///////////////////////////////////////////////////////////////////////////// ++// ++// Version ++// ++ ++VS_VERSION_INFO VERSIONINFO ++ FILEVERSION 1,2,3,0 ++ PRODUCTVERSION 1,2,3,0 ++ FILEFLAGSMASK 0x3fL ++#ifdef _DEBUG ++ FILEFLAGS 0x1L ++#else ++ FILEFLAGS 0x0L ++#endif ++ FILEOS 0x40004L ++ FILETYPE 0x2L ++ FILESUBTYPE 0x0L ++BEGIN ++ BLOCK "StringFileInfo" ++ BEGIN ++ BLOCK "040904b0" ++ BEGIN ++ VALUE "CompanyName", "SinisterDevelopments" ++ VALUE "FileDescription", "X-Tray" ++ VALUE "FileVersion", "1, 2, 3, 0" ++ VALUE "InternalName", "X-Tray" ++ VALUE "LegalCopyright", "Copyright © 2005" ++ VALUE "OriginalFilename", "X-Tray.dll" ++ VALUE "ProductName", "X-Tray - X-Chat Win32 System Tray Plugin" ++ VALUE "ProductVersion", "1, 2, 3, 0" ++ END ++ END ++ BLOCK "VarFileInfo" ++ BEGIN ++ VALUE "Translation", 0x409, 1200 ++ END ++END ++ ++ ++///////////////////////////////////////////////////////////////////////////// ++// ++// Menu ++// ++ ++IDR_TRAY_MENU MENU ++BEGIN ++ POPUP "TRAY" ++ BEGIN ++ MENUITEM "Restore", ACT_RESTORE ++ MENUITEM SEPARATOR ++ MENUITEM "Away", 65535 ++ MENUITEM "Settings", ACT_SETTINGS ++ MENUITEM SEPARATOR ++ MENUITEM "Exit", ACT_EXIT ++ END ++END ++ ++ ++///////////////////////////////////////////////////////////////////////////// ++// ++// Icon ++// ++ ++// Icon with lowest ID value placed first to ensure application icon ++// remains consistent on all systems. ++ICO_XCHAT ICON "icons\\xchat.ico" ++ICO_BANNED ICON "icons\\banned.ico" ++ICO_CHANMSG ICON "icons\\chan_msg.ico" ++ICO_HIGHLIGHT ICON "icons\\highlight.ico" ++ICO_KICKED ICON "icons\\kicked.ico" ++ICO_PMSG ICON "icons\\priv_msg-1-2-2.ico" ++ICO_SNOTICE ICON "icons\\server_notice.ico" ++ICO_DISCONNECTED ICON "icons\\disconnected.ico" ++ ++///////////////////////////////////////////////////////////////////////////// ++// ++// Bitmap ++// ++ ++IDB_SD_LOGO BITMAP "bitmaps\\sd.bmp" ++#endif // English (U.S.) resources ++///////////////////////////////////////////////////////////////////////////// ++ ++ ++ ++#ifndef APSTUDIO_INVOKED ++///////////////////////////////////////////////////////////////////////////// ++// ++// Generated from the TEXTINCLUDE 3 resource. ++// ++xtray.h ++///////////////////////////////////////////////////////////////////////////// ++#endif // not APSTUDIO_INVOKED ++ +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/xtray/sdAlerts.cpp xchat-wdk/plugins/xtray/sdAlerts.cpp +--- xchat-wdk.orig/plugins/xtray/sdAlerts.cpp 1970-01-01 01:00:00 +0100 ++++ xchat-wdk/plugins/xtray/sdAlerts.cpp 2005-07-16 20:57:08 +0200 +@@ -0,0 +1,109 @@ ++/* X-Tray ++ * Copyright (C) 2005 Michael Hotaling ++ * ++ * X-Tray is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * X-Tray is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with X-Tray; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++ ++#include ++#include ++#include ++#include "utility.h" ++#include "resource.h" ++#include "sdAlerts.h" ++ ++int g_iAlerts = 0; ++ ++void sdSystemAlert(HINSTANCE hModule, UINT uiDialog, char *szMsg, char *szName, unsigned int iTime) ++{ ++ TCHAR wszMsg[256]; ++ TCHAR wszName[64]; ++ ++ HWND hDialog; ++ RECT rcWorkArea, rcDlg; ++ int ixPos, iyPos; ++ int iNumPerCol; ++ ++ hDialog = CreateDialog(hModule, MAKEINTRESOURCE(uiDialog), NULL, (DLGPROC)sdAlertProc); ++ ++ SystemParametersInfo(SPI_GETWORKAREA, 0, &rcWorkArea, 0); ++ GetWindowRect(hDialog, &rcDlg); ++ ++ iNumPerCol = ((rcWorkArea.bottom - rcWorkArea.top) / (rcDlg.bottom - rcDlg.top)); ++ ixPos = rcWorkArea.right - (rcDlg.right - rcDlg.left) + 1; ++ iyPos = rcWorkArea.bottom - (rcDlg.bottom - rcDlg.top); ++ ++ if((g_iAlerts >= iNumPerCol) && (iNumPerCol > 0)) ++ { ++ ixPos -= ((g_iAlerts / iNumPerCol) * (rcDlg.right - rcDlg.left)); ++ iyPos -= ((g_iAlerts - (iNumPerCol * (g_iAlerts / iNumPerCol))) * (rcDlg.bottom - rcDlg.top)); ++ } ++ else ++ { ++ iyPos -= (g_iAlerts * (rcDlg.bottom - rcDlg.top)); ++ } ++ SetWindowPos(hDialog, HWND_TOPMOST, ixPos, iyPos, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE); ++ ++ ConvertString(szName, wszName, 64); ++ ConvertString(szMsg, wszMsg, 256); ++ ++ SetWindowText(hDialog, wszName); ++ SetDlgItemText(hDialog, IDC_ALERT_MSG, wszMsg); ++ ShowWindow(hDialog, SW_SHOWNA); ++ ++ if(iTime > 0) ++ { ++ SetTimer(hDialog, 1, iTime, NULL); ++ } ++ ++ g_iAlerts++; ++} ++ ++void sdCloseAlerts() ++{ ++ PostMessage(HWND_BROADCAST, RegisterWindowMessage(TEXT("xTray:CloseAllAlertWindows")), 0, 0); ++} ++ ++LRESULT CALLBACK sdAlertProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) ++{ ++ switch(msg) ++ { ++ case WM_CLOSE: ++ if(g_iAlerts > 0){ g_iAlerts--; } ++ DestroyWindow(hwnd); ++ return TRUE; ++ break; ++ case WM_TIMER: ++ if(g_iAlerts > 0){ g_iAlerts--; } ++ AnimateWindow(hwnd, 600, AW_SLIDE | AW_HIDE | AW_VER_POSITIVE); ++ DestroyWindow(hwnd); ++ return TRUE; ++ break; ++ default: ++ if(msg == RegisterWindowMessage(TEXT("xTray:CloseAllAlertWindows"))) ++ { ++ if(g_iAlerts > 0){ g_iAlerts--; } ++ DestroyWindow(hwnd); ++ return TRUE; ++ } ++ break; ++ } ++ ++ return FALSE; ++} ++ ++int sdAlertNum() ++{ ++ return g_iAlerts; ++} +\ No newline at end of file +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/xtray/sdAlerts.h xchat-wdk/plugins/xtray/sdAlerts.h +--- xchat-wdk.orig/plugins/xtray/sdAlerts.h 1970-01-01 01:00:00 +0100 ++++ xchat-wdk/plugins/xtray/sdAlerts.h 2005-05-28 18:38:16 +0200 +@@ -0,0 +1,26 @@ ++/* X-Tray ++ * Copyright (C) 2005 Michael Hotaling ++ * ++ * X-Tray is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * X-Tray is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with X-Tray; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++ ++#ifndef _H_SDALERTS_H ++#define _H_SDALERTS_H ++ ++void sdSystemAlert (HINSTANCE, UINT, char *, char *, UINT); ++LRESULT CALLBACK sdAlertProc (HWND, UINT, WPARAM, LPARAM); ++int sdAlertNum (); ++void sdCloseAlerts (); ++#endif +\ No newline at end of file +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/xtray/sdTray.cpp xchat-wdk/plugins/xtray/sdTray.cpp +--- xchat-wdk.orig/plugins/xtray/sdTray.cpp 1970-01-01 01:00:00 +0100 ++++ xchat-wdk/plugins/xtray/sdTray.cpp 2005-07-16 20:58:58 +0200 +@@ -0,0 +1,207 @@ ++/* X-Tray ++ * Copyright (C) 2005 Michael Hotaling ++ * ++ * X-Tray is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * X-Tray is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with X-Tray; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++#define _WIN32_IE 0x601 ++#include ++#include ++#include ++#include "sdTray.h" ++#include "utility.h" ++ ++HANDLE hThread; ++iBlink *tData = NULL; ++ ++int AddIcon(HWND hwnd, UINT id, HICON hicon, char *szTip, unsigned short flags, unsigned int cbMsg) ++{ ++ NOTIFYICONDATA nidata; ++ ++ nidata.cbSize = NOTIFYICONDATA_V2_SIZE; ++ nidata.hIcon = hicon; ++ nidata.hWnd = hwnd; ++ nidata.uCallbackMessage = cbMsg; ++ nidata.uFlags = flags; ++ nidata.uID = id; ++ ++ if(szTip != NULL) ++ { ++ TCHAR *szTemp = new TCHAR[64]; ++ ++ ConvertString(szTip, szTemp, 64); ++ _tcsncpy(nidata.szTip, szTemp, 64); ++ ++ delete[] szTemp; ++ } ++ ++ return Shell_NotifyIcon(NIM_ADD, &nidata); ++} ++ ++int RemoveIcon(HWND hwnd, UINT id) ++{ ++ if(hThread != NULL) ++ { ++ TerminateThread(hThread, 0); ++ hThread = NULL; ++ ++ delete tData; ++ } ++ ++ NOTIFYICONDATA nidata; ++ ++ nidata.cbSize = NOTIFYICONDATA_V2_SIZE; ++ nidata.hWnd = hwnd; ++ nidata.uID = id; ++ ++ return Shell_NotifyIcon(NIM_DELETE, &nidata); ++} ++ ++int SetIcon(HWND hwnd, UINT id, HICON hicon) ++{ ++ NOTIFYICONDATA nidata; ++ ++ nidata.cbSize = NOTIFYICONDATA_V2_SIZE; ++ nidata.hWnd = hwnd; ++ nidata.uID = id; ++ nidata.hIcon = hicon; ++ nidata.uFlags = NIF_ICON; ++ ++ return Shell_NotifyIcon(NIM_MODIFY, &nidata); ++} ++ ++int SetTooltip(HWND hwnd, UINT id, char *szTip) ++{ ++ NOTIFYICONDATA nidata; ++ ++ nidata.cbSize = NOTIFYICONDATA_V2_SIZE; ++ nidata.hWnd = hwnd; ++ nidata.uID = id; ++ nidata.uFlags = NIF_TIP; ++ ++ if(szTip != NULL) ++ { ++ TCHAR *szTemp = new TCHAR[64]; ++ ConvertString(szTip, szTemp, 64); ++ _tcsncpy(nidata.szTip, szTemp, 64); ++ delete[] szTemp; ++ } ++ ++ return Shell_NotifyIcon(NIM_MODIFY, &nidata); ++} ++ ++int ShowBalloon(HWND hwnd, UINT id, char *szInfo, char *szTitle, UINT time, UINT infoFlags) ++{ ++ NOTIFYICONDATA nidata; ++ ++ nidata.cbSize = NOTIFYICONDATA_V2_SIZE; ++ nidata.hWnd = hwnd; ++ nidata.uID = id; ++ nidata.uFlags = NIF_INFO; ++ nidata.dwInfoFlags = infoFlags; ++ ++ if(time > 0) ++ nidata.uTimeout = time; ++ else ++ nidata.uTimeout = 500000; ++ ++ if(szInfo != NULL) ++ { ++ TCHAR *szTemp = new TCHAR[255]; ++ ++ ConvertString(szInfo, szTemp, 251); ++ szTemp[250] = 0; ++ ++ if(strlen(szInfo) > 255) ++ { ++ _sntprintf(szTemp, 255, _T("%s..."), szTemp); ++ } ++ _tcsncpy(nidata.szInfo, szTemp, 255); ++ ++ delete[] szTemp; ++ } ++ if(szTitle != NULL) ++ { ++ TCHAR *wszTitle = new TCHAR[64]; ++ ConvertString(szTitle, wszTitle, 64); ++ _tcsncpy(nidata.szInfoTitle, wszTitle, 64); ++ delete[] wszTitle; ++ } ++ ++ return Shell_NotifyIcon(NIM_MODIFY, &nidata); ++} ++ ++ ++DWORD WINAPI BlinkThread(LPVOID lpParam) ++{ ++ NOTIFYICONDATA nidata; ++ ++ nidata.cbSize = NOTIFYICONDATA_V2_SIZE; ++ nidata.hWnd = tData->hwnd; ++ nidata.uID = tData->id; ++ nidata.uFlags = NIF_ICON; ++ ++ for(UINT i = 0; i < tData->num; i++) ++ { ++ nidata.hIcon = tData->hBlink; ++ Shell_NotifyIcon(NIM_MODIFY, &nidata); ++ ++ Sleep(tData->time); ++ ++ nidata.hIcon = tData->hBase; ++ Shell_NotifyIcon(NIM_MODIFY, &nidata); ++ ++ Sleep(tData->time); ++ } ++ ++ delete tData; ++ hThread = NULL; ++ ++ return 0; ++} ++ ++int BlinkIcon(HWND hwnd, UINT id, HICON hBase, HICON hBlink, UINT time, UINT num) ++{ ++ if(hThread != NULL) ++ { ++ StopBlink(hwnd, id, hBase); ++ } ++ ++ DWORD dwThreadID; ++ tData = new iBlink; ++ ++ tData->hwnd = hwnd; ++ tData->id = id; ++ tData->hBase = hBase; ++ tData->hBlink = hBlink; ++ tData->time = time; ++ tData->num = num; ++ ++ hThread = CreateThread(NULL, 0, BlinkThread, tData, 0, &dwThreadID); ++ ++ return 0; ++} ++ ++void StopBlink(HWND hwnd, UINT id, HICON hBase) ++{ ++ if(hThread != NULL) ++ { ++ TerminateThread(hThread, 0); ++ hThread = NULL; ++ ++ delete tData; ++ } ++ ++ SetIcon(hwnd, id, hBase); ++} +\ No newline at end of file +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/xtray/sdTray.h xchat-wdk/plugins/xtray/sdTray.h +--- xchat-wdk.orig/plugins/xtray/sdTray.h 1970-01-01 01:00:00 +0100 ++++ xchat-wdk/plugins/xtray/sdTray.h 2005-05-28 19:37:18 +0200 +@@ -0,0 +1,39 @@ ++/* X-Tray ++ * Copyright (C) 2005 Michael Hotaling ++ * ++ * X-Tray is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * X-Tray is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with X-Tray; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++ ++#ifndef _H_SDTRAY_H ++#define _H_SDTRAY_H ++ ++int AddIcon (HWND, UINT, HICON, char *, unsigned short, UINT); ++int ShowBalloon (HWND, UINT, char *, char *, UINT, UINT); ++int BlinkIcon (HWND, UINT, HICON, HICON, UINT, UINT); ++int SetTooltip (HWND, UINT, char *); ++int SetIcon (HWND, UINT, HICON); ++void StopBlink (HWND, UINT, HICON); ++int RemoveIcon (HWND, UINT); ++ ++typedef struct IBLINK ++{ ++ HICON hBase; ++ HICON hBlink; ++ HWND hwnd; ++ UINT id; ++ UINT time; ++ UINT num; ++}iBlink; ++#endif +\ No newline at end of file +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/xtray/utility.cpp xchat-wdk/plugins/xtray/utility.cpp +--- xchat-wdk.orig/plugins/xtray/utility.cpp 1970-01-01 01:00:00 +0100 ++++ xchat-wdk/plugins/xtray/utility.cpp 2010-03-30 12:39:21 +0200 +@@ -0,0 +1,568 @@ ++/* X-Tray ++ * Copyright (C) 2005 Michael Hotaling ++ * ++ * X-Tray is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * X-Tray is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with X-Tray; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++ ++#include ++#include ++#include ++#include ++#include "utility.h" ++#include "plugin.h" ++#include "xtray.h" ++#include "callbacks.h" ++#include "resource.h" ++ ++TCHAR BACKUP_INI_FILE[] = _T(".\\plugins\\config\\xTray.ini"); ++struct HOTKEY g_hHotKey; ++ ++void SavePrefs(int iDlg) ++{ ++ /**************************************************************************************************/ ++ /********** allocate space for our string, and then set it to the currently logged on user ********/ ++ /**************************************************************************************************/ ++ DWORD dBuff = 257; ++ TCHAR szUser[257]; ++ ++ GetUserName(szUser, &dBuff); ++ ++ /**************************************************************************************************/ ++ /*********************** Test if the file exists, If it doesn't, Create It ************************/ ++ /**************************************************************************************************/ ++ TCHAR XTRAY_INI_FILE[1024]; ++ ++#ifdef UNICODE ++ char temp[1024]; ++ TCHAR TEMP_INI_FILE[1024]; ++ ++ _snprintf(temp, 1024, "%s\\xtray.ini", xchat_get_info(ph, "xchatdir")); ++ ConvertString(temp, TEMP_INI_FILE, 1024); ++ ++ // ok this one is really ugly ++ // it checks to see if the file exists in two locations ++ // X-Chat default config dir, if that fails it trys xchat\plugins\config ++ // if neither one exists it tries to create it in ++ // X-Chat default config dir, if that fails it trys xchat\plugins\config ++ // In either case it writes \xFF\xFE to the file ( on creation ) ++ // so that we can save unicode away messages WritePrivateProfile doesn't ++ // do this for us, though I think it really should ++ ++ if(FileExists(TEMP_INI_FILE)) ++ { ++ _tcscpy(XTRAY_INI_FILE, TEMP_INI_FILE); ++ } ++ else ++ { ++ if(FileExists(BACKUP_INI_FILE)) ++ { ++ _tcscpy(XTRAY_INI_FILE, BACKUP_INI_FILE); ++ } ++ else ++ { ++ HANDLE xTemp; ++ DWORD dwBytesTemp; ++ ++ if(xTemp = CreateFile(TEMP_INI_FILE, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL)) ++ { ++ if(GetLastError() != ERROR_ALREADY_EXISTS) ++ { ++ WriteFile(xTemp, _T("\xFF\xFE"), 4, &dwBytesTemp, NULL); ++ } ++ CloseHandle(xTemp); ++ } ++ ++ if(FileExists(TEMP_INI_FILE)) ++ { ++ _tcscpy(XTRAY_INI_FILE, TEMP_INI_FILE); ++ } ++ else ++ { ++ HANDLE xBackup; ++ DWORD dwBytesBackup; ++ ++ if(xBackup = CreateFile(TEMP_INI_FILE, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL)) ++ { ++ if(GetLastError() != ERROR_ALREADY_EXISTS) ++ { ++ WriteFile(xBackup, _T("\xFF\xFE"), 4, &dwBytesBackup, NULL); ++ } ++ ++ CloseHandle(xBackup); ++ } ++ ++ if(FileExists(BACKUP_INI_FILE)) ++ { ++ _tcscpy(XTRAY_INI_FILE, BACKUP_INI_FILE); ++ } ++ } ++ } ++ } ++ ++#else ++ _tcscpy(XTRAY_INI_FILE, BACKUP_INI_FILE); ++#endif ++ ++ WritePrivateProfileInt(szUser, _T("SETTINGS"), g_dwPrefs, XTRAY_INI_FILE); ++ WritePrivateProfileInt(szUser, _T("AOT"), g_iTime, XTRAY_INI_FILE); ++ WritePrivateProfileInt(szUser, _T("KEY"), g_hHotKey.key, XTRAY_INI_FILE); ++ WritePrivateProfileInt(szUser, _T("MOD"), g_hHotKey.mod, XTRAY_INI_FILE); ++ WritePrivateProfileString(szUser, _T("AWAY"), g_szAway, XTRAY_INI_FILE); ++} ++ ++void LoadPrefs() ++{ ++ /**************************************************************************************************/ ++ /*********************** Our Settings Section *****************************************************/ ++ /**************************************************************************************************/ ++ DWORD dBuff = 257; ++ TCHAR szUser[257]; ++ ++ GetUserName(szUser, &dBuff); ++ ++ /**************************************************************************************************/ ++ /*********************** Test if the file exists, If it doesn't, Create It ************************/ ++ /**************************************************************************************************/ ++ TCHAR XTRAY_INI_FILE[1024]; ++ ++#ifdef UNICODE ++ char temp[1024]; ++ TCHAR TEMP_INI_FILE[1024]; ++ ++ _snprintf(temp, 1024, "%s\\xtray.ini", xchat_get_info(ph, "xchatdir")); ++ ConvertString(temp, TEMP_INI_FILE, 1024); ++ ++ if(FileExists(TEMP_INI_FILE)) ++ { ++ _tcscpy(XTRAY_INI_FILE, TEMP_INI_FILE); ++ } ++ else ++ { ++ if(FileExists(BACKUP_INI_FILE)) ++ { ++ _tcscpy(XTRAY_INI_FILE, BACKUP_INI_FILE); ++ } ++ else ++ { ++ HANDLE xTemp; ++ DWORD dwBytesTemp; ++ ++ if(xTemp = CreateFile(TEMP_INI_FILE, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL)) ++ { ++ if(GetLastError() != ERROR_ALREADY_EXISTS) ++ { ++ WriteFile(xTemp, _T("\xFF\xFE"), 4, &dwBytesTemp, NULL); ++ } ++ ++ CloseHandle(xTemp); ++ } ++ ++ if(FileExists(TEMP_INI_FILE)) ++ { ++ _tcscpy(XTRAY_INI_FILE, TEMP_INI_FILE); ++ } ++ else ++ { ++ HANDLE xBackup; ++ DWORD dwBytesBackup; ++ ++ if(xBackup = CreateFile(TEMP_INI_FILE, GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL)) ++ { ++ if(GetLastError() != ERROR_ALREADY_EXISTS) ++ { ++ WriteFile(xBackup, _T("\xFF\xFE"), 4, &dwBytesBackup, NULL); ++ } ++ ++ CloseHandle(xBackup); ++ } ++ ++ if(FileExists(BACKUP_INI_FILE)) ++ { ++ _tcscpy(XTRAY_INI_FILE, BACKUP_INI_FILE); ++ } ++ } ++ } ++ } ++ ++#else ++ _tcscpy(XTRAY_INI_FILE, BACKUP_INI_FILE); ++#endif ++ ++ /**************************************************************************************************/ ++ /*************************** Get the value for each of our preferances ****************************/ ++ /**************************************************************************************************/ ++ g_dwPrefs = GetPrivateProfileInt(szUser, _T("SETTINGS"), 0, XTRAY_INI_FILE); ++ ++ // backwards compatability ++ // also allows us to set defaults if its a new installation ++ if(g_dwPrefs == 0) ++ { ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("HILIGHT"), 1, XTRAY_INI_FILE)<<1); ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("INVITE"), 1, XTRAY_INI_FILE)<<2); ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("TOPIC"), 1, XTRAY_INI_FILE)<<3); ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("BANNED"), 1, XTRAY_INI_FILE)<<4); ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("KICKED"), 1, XTRAY_INI_FILE)<<5); ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("CTCP"), 1, XTRAY_INI_FILE)<<6); ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("PMSG"), 1, XTRAY_INI_FILE)<<7); ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("KILLED"), 1, XTRAY_INI_FILE)<<8); ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("NOTICE"), 1, XTRAY_INI_FILE)<<9); ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("DISCONNECT"), 1, XTRAY_INI_FILE)<<10); ++ ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("AOM"), 0, XTRAY_INI_FILE)<<11); ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("TOT"), 1, XTRAY_INI_FILE)<<12); ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("AMAE"), 1, XTRAY_INI_FILE)<<13); ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("OSBWM"), 0, XTRAY_INI_FILE)<<14); ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("UWIOB"), 0, XTRAY_INI_FILE)<<15); ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("KAOI"), 0, XTRAY_INI_FILE)<<16); ++ g_dwPrefs |= (GetPrivateProfileInt(szUser, _T("MIOC"), 0, XTRAY_INI_FILE)<<17); ++ } ++ ++ g_hHotKey.key = GetPrivateProfileInt(szUser, _T("KEY"), 84, XTRAY_INI_FILE); ++ g_hHotKey.mod = GetPrivateProfileInt(szUser, _T("MOD"), (MOD_CONTROL | MOD_SHIFT), XTRAY_INI_FILE); ++ g_iTime = GetPrivateProfileInt(szUser, _T("AOT"), 5, XTRAY_INI_FILE); ++ ++ GetPrivateProfileString(szUser, _T("AWAY"), _T(""), g_szAway, 1024, XTRAY_INI_FILE); ++ ++ /**************************************************************************************************/ ++ /******************************** Register our hotkey with windows ********************************/ ++ /**************************************************************************************************/ ++ if(g_dwPrefs & (1< ++ * ++ * X-Tray is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * X-Tray is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with X-Tray; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++ ++#ifndef _H_UTILITY_H ++#define _H_UTILITY_H ++ ++int SetOption (HWND, unsigned int, unsigned int); ++int SetCheck (HWND, unsigned int, unsigned int); ++int SetToggle (HWND, unsigned int, unsigned int, bool); ++void ErrorDebug (LPTSTR lpszFunction); ++void SetDialog (HWND, int); ++void CheckPrefs (HWND, int); ++bool FileExists (TCHAR *); ++DWORD WINAPI HoldCloseThread (LPVOID); ++void SavePrefs (int); ++void LoadPrefs (); ++void HoldClose (); ++ ++void ConvertString(const char *in, wchar_t *out, int size); ++void ConvertString(const wchar_t *in, char *out, int size); ++void ConvertString(const char *in, char *out, int size); ++ ++int WritePrivateProfileIntA(char *, char *, int, char *); ++int WritePrivateProfileIntW(wchar_t *, wchar_t *, int, wchar_t *); ++ ++#ifdef UNICODE ++#define WritePrivateProfileInt WritePrivateProfileIntW ++#else ++#define WritePrivateProfileInt WritePrivateProfileIntA ++#endif ++ ++struct HOTKEY ++{ ++ WORD key; ++ WORD mod; ++}; ++#endif +\ No newline at end of file +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/xtray/xchat.cpp xchat-wdk/plugins/xtray/xchat.cpp +--- xchat-wdk.orig/plugins/xtray/xchat.cpp 1970-01-01 01:00:00 +0100 ++++ xchat-wdk/plugins/xtray/xchat.cpp 2005-10-24 19:35:18 +0200 +@@ -0,0 +1,319 @@ ++/* X-Tray ++ * Copyright (C) 1998, 2005 Peter Zelezny, Michael Hotaling ++ * ++ * X-Tray is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * X-Tray is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with X-Tray; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include "plugin.h" ++#include "xtray.h" ++#include "resource.h" ++#include "xchat.h" ++#include "utility.h" ++ ++// from util.c of xchat source code ( slightly modified to fit X-Tray Syntax ) ++char *xchat_strip_color (char *text) ++{ ++ int nc = 0; ++ int i = 0; ++ int col = 0; ++ int len = strlen(text); ++ char *new_str = (char *)malloc(len + 2); ++ ++ while (len > 0) ++ { ++ if ((col && isdigit(*text) && (nc < 2)) || (col && isdigit(*(text+1)) && (nc < 3) && (*text == ','))) ++ { ++ nc++; ++ ++ if(*text == ',') ++ { ++ nc = 0; ++ } ++ } ++ else ++ { ++ col = 0; ++ ++ switch (*text) ++ { ++ case '\003': /*ATTR_COLOR: */ ++ { ++ col = 1; ++ nc = 0; ++ } ++ break; ++ case '\007': /*ATTR_BEEP: */ ++ case '\017': /*ATTR_RESET: */ ++ case '\026': /*ATTR_REVERSE: */ ++ case '\002': /*ATTR_BOLD: */ ++ case '\037': /*ATTR_UNDERLINE: */ ++ break; ++ default: ++ { ++ new_str[i] = *text; ++ i++; ++ } ++ break; ++ } ++ } ++ ++ text++; ++ len--; ++ } ++ ++ new_str[i] = 0; ++ ++ return new_str; ++} ++ ++void check_special_chars (char *cmd) ++{ ++ int occur = 0; ++ int len = strlen (cmd); ++ int i = 0, j = 0; ++ char *buf; ++ ++ if (!len) ++ return; ++ ++ buf = (char *)malloc (len + 1); ++ ++ if (buf) ++ { ++ while (cmd[j]) ++ { ++ switch (cmd[j]) ++ { ++ case '%': ++ { ++ occur++; ++ ++ switch (cmd[j + 1]) ++ { ++ case 'R': ++ buf[i] = '\026'; ++ break; ++ case 'U': ++ buf[i] = '\037'; ++ break; ++ case 'B': ++ buf[i] = '\002'; ++ break; ++ case 'C': ++ buf[i] = '\003'; ++ break; ++ case 'O': ++ buf[i] = '\017'; ++ break; ++ case '%': ++ buf[i] = '%'; ++ break; ++ default: ++ buf[i] = '%'; ++ j--; ++ break; ++ } ++ ++ j++; ++ } ++ break; ++ default: ++ { ++ buf[i] = cmd[j]; ++ } ++ break; ++ } ++ ++ j++; ++ i++; ++ } ++ ++ buf[i] = 0; ++ ++ if (occur) ++ strcpy (cmd, buf); ++ ++ free (buf); ++ } ++} ++ ++void xchat_globally_away(TCHAR *tszAway) ++{ ++ char szTemp[512]; ++ char szAway[512]; ++ ++ ConvertString(tszAway, szAway, 512); ++ _snprintf(szTemp, 512, "ALLSERV AWAY %s\0", szAway); ++ check_special_chars(szTemp); ++ xchat_exec(szTemp); ++} ++ ++void xchat_away(TCHAR *tszAway) ++{ ++ char szTemp[512]; ++ char szAway[512]; ++ ++ ConvertString(tszAway, szAway, 512); ++ _snprintf(szTemp, 512, szAway); ++ check_special_chars(szTemp); ++ xchat_commandf(ph, "AWAY %s\0", szTemp); ++} ++ ++void xchat_globally_back() ++{ ++ std::vector xs; ++ std::vector::iterator xsi; ++ xchat_list *xl = xchat_list_get(ph, "channels"); ++ ++ if(xl) ++ { ++ while(xchat_list_next(ph, xl)) ++ { ++ xsi = std::find(xs.begin(), xs.end(), xchat_list_int(ph, xl, "id")); ++ ++ if((xsi == xs.end()) && ++ ((strlen(xchat_list_str(ph, xl, "server")) > 0) || ++ (strlen(xchat_list_str(ph, xl, "channel")) > 0))) ++ { ++ xs.push_back(xchat_list_int(ph, xl, "id")); ++ xchat_set_context(ph, (xchat_context *)xchat_list_str(ph, xl, "context")); ++ xchat_back(); ++ } ++ } ++ ++ xchat_list_free(ph, xl); ++ } ++} ++ ++ ++ ++void xchat_back() ++{ ++ if(xchat_get_info(ph, "away")) ++ { ++ xchat_command(ph, "BACK"); ++ } ++} ++ ++HMENU setServerMenu() ++{ ++ HMENU sTemp = CreateMenu(); ++ TCHAR wszServer[128]; ++ TCHAR wszNick[128]; ++ TCHAR wszMenuEntry[256]; ++ ++ std::vector xs; ++ std::vector::iterator xsi; ++ xchat_list *xl = xchat_list_get(ph, "channels"); ++ ++ AppendMenu(sTemp, MF_STRING, ACT_AWAY, _T("Set Globally Away")); ++ AppendMenu(sTemp, MF_STRING, ACT_BACK, _T("Set Globally Back")); ++ AppendMenu(sTemp, MF_SEPARATOR, 0, NULL); ++ ++ if(xl) ++ { ++ while(xchat_list_next(ph, xl)) ++ { ++ xsi = std::find(xs.begin(), xs.end(), xchat_list_int(ph, xl, "id")); ++ ++ if( (xsi == xs.end()) && ++ ((strlen(xchat_list_str(ph, xl, "server")) > 0) || ++ (strlen(xchat_list_str(ph, xl, "channel")) > 0))) ++ { ++ xchat_set_context(ph, (xchat_context *)xchat_list_str(ph, xl, "context")); ++ xs.push_back(xchat_list_int(ph, xl, "id")); ++ ++ char *network = _strdup(xchat_list_str(ph, xl, "network")); ++ char *server = _strdup(xchat_list_str(ph, xl, "server")); ++ char *nick = _strdup(xchat_get_info(ph, "nick")); ++ ++ if(network != NULL) ++ { ++ ConvertString(network, wszServer, 128); ++ } ++ else ++ { ++ ConvertString(server, wszServer, 128); ++ } ++ ++ if(server != NULL) ++ { ++ ConvertString(nick, wszNick, 128); ++ _sntprintf(wszMenuEntry, 256, _T("%s @ %s\0"), wszNick, wszServer); ++ ++ if(!xchat_get_info(ph, "away")) ++ { ++ AppendMenu(sTemp, MF_STRING, (xchat_list_int(ph, xl, "id") + 1), wszMenuEntry); ++ } ++ else ++ { ++ AppendMenu(sTemp, (MF_CHECKED | MF_STRING), (xchat_list_int(ph, xl, "id") + 1), wszMenuEntry); ++ } ++ } ++ ++ free(network); ++ free(server); ++ free(nick); ++ } ++ } ++ ++ xchat_list_free(ph, xl); ++ } ++ ++ return sTemp; ++} ++ ++struct _xchat_context *xchat_find_server(int find_id) ++{ ++ xchat_context *xc; ++ xchat_list *xl = xchat_list_get(ph, "channels"); ++ int id; ++ ++ if(!xl) ++ return NULL; ++ ++ while(xchat_list_next(ph, xl)) ++ { ++ id = xchat_list_int(ph, xl, "id"); ++ ++ if(id == -1) ++ { ++ return NULL; ++ } ++ else if(id == find_id) ++ { ++ xc = (xchat_context *)xchat_list_str(ph, xl, "context"); ++ ++ xchat_list_free(ph, xl); ++ ++ return xc; ++ } ++ } ++ ++ xchat_list_free(ph, xl); ++ ++ return NULL; ++} ++ ++void xchat_exec(char *command) ++{ ++ xchat_set_context(ph, xchat_find_context(ph, NULL, NULL)); ++ xchat_command(ph, command); ++} +\ No newline at end of file +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/xtray/xchat.h xchat-wdk/plugins/xtray/xchat.h +--- xchat-wdk.orig/plugins/xtray/xchat.h 1970-01-01 01:00:00 +0100 ++++ xchat-wdk/plugins/xtray/xchat.h 2005-10-24 19:36:42 +0200 +@@ -0,0 +1,32 @@ ++/* X-Tray ++ * Copyright (C) 2005 Michael Hotaling ++ * ++ * X-Tray is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * X-Tray is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with X-Tray; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++ ++#ifndef _H_XCHAT_H ++#define _H_XCHAT_H ++ ++void xchat_exec (char *); ++char *xchat_strip_color (char *); ++void xchat_parse (char *); ++struct _xchat_context *xchat_find_server (int); ++void xchat_globally_away (TCHAR *); ++void xchat_away (TCHAR *); ++void xchat_globally_back (); ++void xchat_back (); ++HMENU setServerMenu (); ++ ++#endif +\ No newline at end of file +diff -ruN --strip-trailing-cr xchat-wdk.orig/plugins/xtray/xtray.cpp xchat-wdk/plugins/xtray/xtray.cpp +--- xchat-wdk.orig/plugins/xtray/xtray.cpp 1970-01-01 01:00:00 +0100 ++++ xchat-wdk/plugins/xtray/xtray.cpp 2010-03-30 12:41:58 +0200 +@@ -0,0 +1,226 @@ ++/* X-Tray ++ * Copyright (C) 2005 Michael Hotaling ++ * ++ * X-Tray is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * X-Tray is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with X-Tray; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++ ++#define _WIN32_IE 0x0601 ++ ++#include ++#include ++#include ++#include ++#include "resource.h" ++#include "callbacks.h" ++#include "plugin.h" ++#include "utility.h" ++#include "xtray.h" ++#include "sdTray.h" ++#include "sdAlerts.h" ++#include "plugin.h" ++ ++/*****************************************************/ ++/**** Don't want to pollute the namespace do we? *****/ ++/*****************************************************/ ++std::list g_vHooks; ++ ++/*****************************************************/ ++/************ Global Identifiers *********************/ ++/*****************************************************/ ++WNDPROC g_hOldProc; ++xchat_plugin *ph; ++ ++/*****************************************************/ ++/***************** Resources *************************/ ++/*****************************************************/ ++HWND g_hXchatWnd; ++HWND g_hHotkeyWnd; ++HWND g_hPrefDlg; ++HMENU g_hTrayMenu; ++HICON g_hIcons[11]; ++HANDLE g_hInstance; ++/*****************************************************/ ++/***************** Preferences ***********************/ ++/*****************************************************/ ++unsigned int g_dwPrefs; ++TCHAR g_szAway[512]; ++int g_iTime; ++ ++ ++BOOL WINAPI DllMain(HANDLE hModule, DWORD fdwReason, LPVOID lpVoid) ++{ ++ if((fdwReason == DLL_PROCESS_ATTACH) || (fdwReason == DLL_THREAD_ATTACH)) ++ { ++ g_hInstance = hModule; ++ } ++ ++ return TRUE; ++} ++ ++int xchat_plugin_init(xchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg) ++{ ++ ph = plugin_handle; ++ ++ *plugin_name = "X-Tray"; ++ *plugin_desc = "Minimize X-Chat to the windows systemtray"; ++ *plugin_version = "1.2.3 PR"; ++ ++ /***************************************************************************************************************************/ ++ /************************* Load our preferances from xTray.ini *************************************************************/ ++ /***************************************************************************************************************************/ ++ LoadPrefs(); ++ ++ /***************************************************************************************************************************/ ++ /************************* Finds the xChat window and saves it for later use ***********************************************/ ++ /***************************************************************************************************************************/ ++ g_hXchatWnd = (HWND)xchat_get_info(ph, "win_ptr"); ++ ++ if(g_hXchatWnd == NULL) ++ { ++ EnumThreadWindows(GetCurrentThreadId(), EnumWindowsProc, 0); ++ } ++ ++ g_hOldProc = (WNDPROC)GetWindowLongPtr(g_hXchatWnd, GWLP_WNDPROC); ++ SetWindowLong(g_hXchatWnd, GWLP_WNDPROC, (long)WindowProc); ++ ++ /***************************************************************************************************************************/ ++ /************************* Grab the xChat Icon, Load our menu, create the window to receive the hotkey messages ***********/ ++ /************************* and register the windows message so we know if explorer crashes ***********/ ++ /***************************************************************************************************************************/ ++ g_hTrayMenu = GetSubMenu(LoadMenu((HINSTANCE)g_hInstance, MAKEINTRESOURCE(IDR_TRAY_MENU)), 0); ++ g_hHotkeyWnd = CreateDialog((HINSTANCE)g_hInstance, MAKEINTRESOURCE(IDD_ALERT), NULL, (DLGPROC)HotKeyProc); ++ g_hPrefDlg = CreateDialog((HINSTANCE)g_hInstance, MAKEINTRESOURCE(IDD_PREF), g_hXchatWnd, (DLGPROC)PrefProc); ++ ++ g_hIcons[0] = (HICON)LoadImage((HINSTANCE)g_hInstance, MAKEINTRESOURCE(ICO_XCHAT), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); ++ g_hIcons[1] = (HICON)LoadImage((HINSTANCE)g_hInstance, MAKEINTRESOURCE(ICO_CHANMSG), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); ++ g_hIcons[2] = (HICON)LoadImage((HINSTANCE)g_hInstance, MAKEINTRESOURCE(ICO_HIGHLIGHT), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); ++ g_hIcons[5] = (HICON)LoadImage((HINSTANCE)g_hInstance, MAKEINTRESOURCE(ICO_BANNED), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); ++ g_hIcons[6] = (HICON)LoadImage((HINSTANCE)g_hInstance, MAKEINTRESOURCE(ICO_KICKED), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); ++ g_hIcons[8] = (HICON)LoadImage((HINSTANCE)g_hInstance, MAKEINTRESOURCE(ICO_PMSG), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); ++ g_hIcons[10]= (HICON)LoadImage((HINSTANCE)g_hInstance, MAKEINTRESOURCE(ICO_SNOTICE), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); ++ g_hIcons[11]= (HICON)LoadImage((HINSTANCE)g_hInstance, MAKEINTRESOURCE(ICO_DISCONNECTED), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR); ++ ++ /***************************************************************************************************************************/ ++ /************************* Add our icon to the tray ************************************************************************/ ++ /***************************************************************************************************************************/ ++ char szVersion[64]; ++ _snprintf(szVersion, 64, "X-Chat [%s]", xchat_get_info(ph, "version")); ++ AddIcon(g_hXchatWnd, 1, g_hIcons[0], szVersion, (NIF_ICON | NIF_MESSAGE | NIF_TIP), WM_TRAYMSG); ++ ++ /***************************************************************************************************************************/ ++ /***************************************************************************************************************************/ ++ /***************************************************************************************************************************/ ++ if(g_dwPrefs & (1< ++ * ++ * X-Tray is free software; you can redistribute it and/or modify ++ * it under the terms of the GNU General Public License as published by ++ * the Free Software Foundation; either version 2 of the License, or ++ * (at your option) any later version. ++ * ++ * X-Tray is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with X-Tray; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ++ */ ++ ++#ifndef _XTRAY_H ++#define _XTRAY_H ++ ++/******************** Globals *************************/ ++extern HWND g_hXchatWnd; ++extern HWND g_hHotkeyWnd; ++extern HWND g_hPrefDlg; ++extern HMENU g_hTrayMenu; ++extern HICON g_hIcons[11]; ++extern HANDLE g_hInstance; ++extern unsigned int g_dwPrefs; ++extern TCHAR g_szAway[512]; ++extern int g_iTime; ++extern WNDPROC g_hOldProc; ++extern struct _xchat_plugin *ph; ++/******************************************************/ ++ ++/******************** Messages ************************/ ++#define WM_TRAYMSG WM_APP ++/******************************************************/ ++ ++/********************* Events *************************/ ++#define CHAN_HILIGHT 1 ++#define CHAN_INVITE 2 ++#define CHAN_TOPIC_CHANGE 3 ++#define CHAN_BANNED 4 ++#define CHAN_KICKED 5 ++ ++#define CTCP_GENERIC 6 ++#define PMSG_RECEIVE 7 ++ ++#define SERV_KILLED 8 ++#define SERV_NOTICE 9 ++#define SERV_DISCONNECT 10 ++ ++#define PREF_AOM 11 // away on minimize ++#define PREF_TOT 12 // Tray on Taskbar ++#define PREF_AMAE 13 // alert me about events ++#define PREF_OSBWM 14 // Only Show Balloon When Minimized ++#define PREF_UWIOB 15 // Use Window Instead of Balloon ++#define PREF_KAOI 16 // Keep alerts open indefinately ++#define PREF_MIOC 17 // Minimize instead of close ++#define PREF_BLINK 18 // blink icon ++#define PREF_CICO 19 // change icon - not implemented ++#define PREF_DNSIT 20 // Do not show in taskbar ++/******************************************************/ ++#endif +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/cfgfiles.c xchat-wdk/src/common/cfgfiles.c --- xchat-wdk.orig/src/common/cfgfiles.c 2009-01-02 06:56:12 +0100 +++ xchat-wdk/src/common/cfgfiles.c 2010-03-29 12:57:41 +0200 @@ -17,7 +17,6 @@ @@ -495,7 +3723,7 @@ diff -Naur xchat-wdk.orig/src/common/cfgfiles.c xchat-wdk/src/common/cfgfiles.c #include #include #include -diff -Naur xchat-wdk.orig/src/common/chanopt.c xchat-wdk/src/common/chanopt.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/chanopt.c xchat-wdk/src/common/chanopt.c --- xchat-wdk.orig/src/common/chanopt.c 2008-06-15 06:40:29 +0200 +++ xchat-wdk/src/common/chanopt.c 2010-03-29 12:58:02 +0200 @@ -3,7 +3,6 @@ @@ -506,7 +3734,7 @@ diff -Naur xchat-wdk.orig/src/common/chanopt.c xchat-wdk/src/common/chanopt.c #include #include #include -diff -Naur xchat-wdk.orig/src/common/ctcp.c xchat-wdk/src/common/ctcp.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/ctcp.c xchat-wdk/src/common/ctcp.c --- xchat-wdk.orig/src/common/ctcp.c 2006-10-03 06:11:54 +0200 +++ xchat-wdk/src/common/ctcp.c 2010-03-29 12:57:58 +0200 @@ -18,7 +18,6 @@ @@ -517,7 +3745,7 @@ diff -Naur xchat-wdk.orig/src/common/ctcp.c xchat-wdk/src/common/ctcp.c #include #include "xchat.h" -diff -Naur xchat-wdk.orig/src/common/dcc.c xchat-wdk/src/common/dcc.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/dcc.c xchat-wdk/src/common/dcc.c --- xchat-wdk.orig/src/common/dcc.c 2007-02-06 05:45:13 +0100 +++ xchat-wdk/src/common/dcc.c 2010-03-29 13:17:58 +0200 @@ -31,7 +31,6 @@ @@ -537,7 +3765,7 @@ diff -Naur xchat-wdk.orig/src/common/dcc.c xchat-wdk/src/common/dcc.c #else /* this fstat() shouldn't really fail */ if ((dcc->fp == -1 ? stat (dcc->destfile_fs, &st_a) : fstat (dcc->fp, &st_a)) == -1) -diff -Naur xchat-wdk.orig/src/common/dirent.h xchat-wdk/src/common/dirent.h +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/dirent.h xchat-wdk/src/common/dirent.h --- xchat-wdk.orig/src/common/dirent.h 1970-01-01 01:00:00 +0100 +++ xchat-wdk/src/common/dirent.h 2009-12-15 23:10:54 +0100 @@ -0,0 +1,230 @@ @@ -771,7 +3999,7 @@ diff -Naur xchat-wdk.orig/src/common/dirent.h xchat-wdk/src/common/dirent.h + + +#endif /*DIRENT_H*/ -diff -Naur xchat-wdk.orig/src/common/identd.c xchat-wdk/src/common/identd.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/identd.c xchat-wdk/src/common/identd.c --- xchat-wdk.orig/src/common/identd.c 2004-05-24 15:47:58 +0200 +++ xchat-wdk/src/common/identd.c 2010-03-29 18:04:55 +0200 @@ -1,6 +1,10 @@ @@ -794,12 +4022,12 @@ diff -Naur xchat-wdk.orig/src/common/identd.c xchat-wdk/src/common/identd.c identd_start (char *username) { DWORD tid; -diff -Naur xchat-wdk.orig/src/common/identd.h xchat-wdk/src/common/identd.h +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/identd.h xchat-wdk/src/common/identd.h --- xchat-wdk.orig/src/common/identd.h 1970-01-01 01:00:00 +0100 +++ xchat-wdk/src/common/identd.h 2010-03-29 18:05:16 +0200 @@ -0,0 +1 @@ +void identd_start (char *username); -diff -Naur xchat-wdk.orig/src/common/ignore.c xchat-wdk/src/common/ignore.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/ignore.c xchat-wdk/src/common/ignore.c --- xchat-wdk.orig/src/common/ignore.c 2006-04-15 09:00:39 +0200 +++ xchat-wdk/src/common/ignore.c 2010-03-29 12:58:18 +0200 @@ -19,7 +19,6 @@ @@ -810,7 +4038,7 @@ diff -Naur xchat-wdk.orig/src/common/ignore.c xchat-wdk/src/common/ignore.c #include #include #include -diff -Naur xchat-wdk.orig/src/common/inbound.c xchat-wdk/src/common/inbound.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/inbound.c xchat-wdk/src/common/inbound.c --- xchat-wdk.orig/src/common/inbound.c 2008-03-19 05:28:57 +0100 +++ xchat-wdk/src/common/inbound.c 2010-03-29 12:58:16 +0200 @@ -21,7 +21,6 @@ @@ -821,7 +4049,7 @@ diff -Naur xchat-wdk.orig/src/common/inbound.c xchat-wdk/src/common/inbound.c #include #define WANTARPA -diff -Naur xchat-wdk.orig/src/common/inet.h xchat-wdk/src/common/inet.h +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/inet.h xchat-wdk/src/common/inet.h --- xchat-wdk.orig/src/common/inet.h 2005-09-03 12:57:48 +0200 +++ xchat-wdk/src/common/inet.h 2010-03-29 15:36:39 +0200 @@ -24,9 +24,8 @@ @@ -835,7 +4063,7 @@ diff -Naur xchat-wdk.orig/src/common/inet.h xchat-wdk/src/common/inet.h #endif #define set_blocking(sok) { \ -diff -Naur xchat-wdk.orig/src/common/makefile.mak xchat-wdk/src/common/makefile.mak +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/makefile.mak xchat-wdk/src/common/makefile.mak --- xchat-wdk.orig/src/common/makefile.mak 1970-01-01 01:00:00 +0100 +++ xchat-wdk/src/common/makefile.mak 2010-03-29 13:02:00 +0200 @@ -0,0 +1,13 @@ @@ -852,7 +4080,7 @@ diff -Naur xchat-wdk.orig/src/common/makefile.mak xchat-wdk/src/common/makefile. +clean: + del *.obj + del xchatcommon.lib -diff -Naur xchat-wdk.orig/src/common/msproxy.c xchat-wdk/src/common/msproxy.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/msproxy.c xchat-wdk/src/common/msproxy.c --- xchat-wdk.orig/src/common/msproxy.c 2006-04-16 17:32:17 +0200 +++ xchat-wdk/src/common/msproxy.c 2010-03-29 12:58:13 +0200 @@ -26,7 +26,6 @@ @@ -863,7 +4091,7 @@ diff -Naur xchat-wdk.orig/src/common/msproxy.c xchat-wdk/src/common/msproxy.c #include #define WANTSOCKET -diff -Naur xchat-wdk.orig/src/common/network.c xchat-wdk/src/common/network.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/network.c xchat-wdk/src/common/network.c --- xchat-wdk.orig/src/common/network.c 2006-04-16 10:11:26 +0200 +++ xchat-wdk/src/common/network.c 2010-03-29 12:58:40 +0200 @@ -21,7 +21,6 @@ @@ -874,7 +4102,7 @@ diff -Naur xchat-wdk.orig/src/common/network.c xchat-wdk/src/common/network.c #include #include "../../config.h" /* grab USE_IPV6 and LOOKUPD defines */ -diff -Naur xchat-wdk.orig/src/common/notify.c xchat-wdk/src/common/notify.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/notify.c xchat-wdk/src/common/notify.c --- xchat-wdk.orig/src/common/notify.c 2008-06-08 09:58:58 +0200 +++ xchat-wdk/src/common/notify.c 2010-03-29 12:58:37 +0200 @@ -22,7 +22,6 @@ @@ -885,7 +4113,7 @@ diff -Naur xchat-wdk.orig/src/common/notify.c xchat-wdk/src/common/notify.c #include #include "xchat.h" -diff -Naur xchat-wdk.orig/src/common/outbound.c xchat-wdk/src/common/outbound.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/outbound.c xchat-wdk/src/common/outbound.c --- xchat-wdk.orig/src/common/outbound.c 2009-01-02 06:56:12 +0100 +++ xchat-wdk/src/common/outbound.c 2010-03-29 12:58:34 +0200 @@ -32,7 +32,6 @@ @@ -896,7 +4124,7 @@ diff -Naur xchat-wdk.orig/src/common/outbound.c xchat-wdk/src/common/outbound.c #include #include #include -diff -Naur xchat-wdk.orig/src/common/proto-irc.c xchat-wdk/src/common/proto-irc.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/proto-irc.c xchat-wdk/src/common/proto-irc.c --- xchat-wdk.orig/src/common/proto-irc.c 2008-05-25 07:36:25 +0200 +++ xchat-wdk/src/common/proto-irc.c 2010-03-29 12:58:59 +0200 @@ -18,7 +18,6 @@ @@ -907,7 +4135,7 @@ diff -Naur xchat-wdk.orig/src/common/proto-irc.c xchat-wdk/src/common/proto-irc. #include #include #include -diff -Naur xchat-wdk.orig/src/common/server.c xchat-wdk/src/common/server.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/server.c xchat-wdk/src/common/server.c --- xchat-wdk.orig/src/common/server.c 2008-02-17 09:54:55 +0100 +++ xchat-wdk/src/common/server.c 2010-03-29 17:36:30 +0200 @@ -26,7 +26,6 @@ @@ -949,7 +4177,7 @@ diff -Naur xchat-wdk.orig/src/common/server.c xchat-wdk/src/common/server.c /* connect() successed */ -diff -Naur xchat-wdk.orig/src/common/servlist.c xchat-wdk/src/common/servlist.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/servlist.c xchat-wdk/src/common/servlist.c --- xchat-wdk.orig/src/common/servlist.c 2009-10-25 10:21:58 +0100 +++ xchat-wdk/src/common/servlist.c 2010-03-29 12:58:54 +0200 @@ -21,7 +21,6 @@ @@ -960,7 +4188,7 @@ diff -Naur xchat-wdk.orig/src/common/servlist.c xchat-wdk/src/common/servlist.c #include "xchat.h" #include -diff -Naur xchat-wdk.orig/src/common/ssl.c xchat-wdk/src/common/ssl.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/ssl.c xchat-wdk/src/common/ssl.c --- xchat-wdk.orig/src/common/ssl.c 2007-03-28 10:35:06 +0200 +++ xchat-wdk/src/common/ssl.c 2010-03-30 00:55:39 +0200 @@ -17,6 +17,9 @@ @@ -973,7 +4201,7 @@ diff -Naur xchat-wdk.orig/src/common/ssl.c xchat-wdk/src/common/ssl.c #include /* SSL_() */ #include /* ERR_() */ #include /* asctime() */ -diff -Naur xchat-wdk.orig/src/common/text.c xchat-wdk/src/common/text.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/text.c xchat-wdk/src/common/text.c --- xchat-wdk.orig/src/common/text.c 2009-12-31 03:19:50 +0100 +++ xchat-wdk/src/common/text.c 2010-03-29 15:02:51 +0200 @@ -19,13 +19,11 @@ @@ -1045,7 +4273,7 @@ diff -Naur xchat-wdk.orig/src/common/text.c xchat-wdk/src/common/text.c close (fh); } -diff -Naur xchat-wdk.orig/src/common/util.c xchat-wdk/src/common/util.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/util.c xchat-wdk/src/common/util.c --- xchat-wdk.orig/src/common/util.c 2008-02-07 02:50:37 +0100 +++ xchat-wdk/src/common/util.c 2010-03-30 03:24:31 +0200 @@ -17,10 +17,11 @@ @@ -1119,7 +4347,7 @@ diff -Naur xchat-wdk.orig/src/common/util.c xchat-wdk/src/common/util.c return verbuf; } -diff -Naur xchat-wdk.orig/src/common/xchat.c xchat-wdk/src/common/xchat.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/xchat.c xchat-wdk/src/common/xchat.c --- xchat-wdk.orig/src/common/xchat.c 2008-06-08 09:58:58 +0200 +++ xchat-wdk/src/common/xchat.c 2010-03-29 12:59:15 +0200 @@ -22,7 +22,6 @@ @@ -1130,7 +4358,7 @@ diff -Naur xchat-wdk.orig/src/common/xchat.c xchat-wdk/src/common/xchat.c #define WANTSOCKET #include "inet.h" -diff -Naur xchat-wdk.orig/src/common/xchat.h xchat-wdk/src/common/xchat.h +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/common/xchat.h xchat-wdk/src/common/xchat.h --- xchat-wdk.orig/src/common/xchat.h 2008-08-29 12:59:11 +0200 +++ xchat-wdk/src/common/xchat.h 2010-03-30 03:24:19 +0200 @@ -12,12 +12,14 @@ @@ -1158,7 +4386,7 @@ diff -Naur xchat-wdk.orig/src/common/xchat.h xchat-wdk/src/common/xchat.h #include #define F_OK 0 #define X_OK 1 -diff -Naur xchat-wdk.orig/src/fe-gtk/banlist.c xchat-wdk/src/fe-gtk/banlist.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/banlist.c xchat-wdk/src/fe-gtk/banlist.c --- xchat-wdk.orig/src/fe-gtk/banlist.c 2008-09-01 11:28:58 +0200 +++ xchat-wdk/src/fe-gtk/banlist.c 2010-03-29 12:59:40 +0200 @@ -21,7 +21,6 @@ @@ -1169,7 +4397,7 @@ diff -Naur xchat-wdk.orig/src/fe-gtk/banlist.c xchat-wdk/src/fe-gtk/banlist.c #include #include -diff -Naur xchat-wdk.orig/src/fe-gtk/chanlist.c xchat-wdk/src/fe-gtk/chanlist.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/chanlist.c xchat-wdk/src/fe-gtk/chanlist.c --- xchat-wdk.orig/src/fe-gtk/chanlist.c 2008-02-24 04:46:02 +0100 +++ xchat-wdk/src/fe-gtk/chanlist.c 2010-03-29 12:59:37 +0200 @@ -19,7 +19,6 @@ @@ -1180,7 +4408,7 @@ diff -Naur xchat-wdk.orig/src/fe-gtk/chanlist.c xchat-wdk/src/fe-gtk/chanlist.c #include #include -diff -Naur xchat-wdk.orig/src/fe-gtk/editlist.c xchat-wdk/src/fe-gtk/editlist.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/editlist.c xchat-wdk/src/fe-gtk/editlist.c --- xchat-wdk.orig/src/fe-gtk/editlist.c 2006-03-13 09:33:45 +0100 +++ xchat-wdk/src/fe-gtk/editlist.c 2010-03-29 12:59:34 +0200 @@ -19,7 +19,6 @@ @@ -1191,7 +4419,7 @@ diff -Naur xchat-wdk.orig/src/fe-gtk/editlist.c xchat-wdk/src/fe-gtk/editlist.c #include #include #include -diff -Naur xchat-wdk.orig/src/fe-gtk/fe-gtk.c xchat-wdk/src/fe-gtk/fe-gtk.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/fe-gtk.c xchat-wdk/src/fe-gtk/fe-gtk.c --- xchat-wdk.orig/src/fe-gtk/fe-gtk.c 2008-02-29 03:19:00 +0100 +++ xchat-wdk/src/fe-gtk/fe-gtk.c 2010-03-30 04:22:55 +0200 @@ -21,7 +21,6 @@ @@ -1236,7 +4464,7 @@ diff -Naur xchat-wdk.orig/src/fe-gtk/fe-gtk.c xchat-wdk/src/fe-gtk/fe-gtk.c return 0; } -diff -Naur xchat-wdk.orig/src/fe-gtk/fe-gtk.h xchat-wdk/src/fe-gtk/fe-gtk.h +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/fe-gtk.h xchat-wdk/src/fe-gtk/fe-gtk.h --- xchat-wdk.orig/src/fe-gtk/fe-gtk.h 2008-06-08 09:58:58 +0200 +++ xchat-wdk/src/fe-gtk/fe-gtk.h 2010-03-29 17:52:49 +0200 @@ -4,7 +4,7 @@ @@ -1248,7 +4476,7 @@ diff -Naur xchat-wdk.orig/src/fe-gtk/fe-gtk.h xchat-wdk/src/fe-gtk/fe-gtk.h #else #define DISPLAY_NAME "XChat" #endif -diff -Naur xchat-wdk.orig/src/fe-gtk/fkeys.c xchat-wdk/src/fe-gtk/fkeys.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/fkeys.c xchat-wdk/src/fe-gtk/fkeys.c --- xchat-wdk.orig/src/fe-gtk/fkeys.c 2008-02-24 06:09:34 +0100 +++ xchat-wdk/src/fe-gtk/fkeys.c 2010-03-29 12:59:56 +0200 @@ -20,7 +20,6 @@ @@ -1259,7 +4487,7 @@ diff -Naur xchat-wdk.orig/src/fe-gtk/fkeys.c xchat-wdk/src/fe-gtk/fkeys.c #include #include #include -diff -Naur xchat-wdk.orig/src/fe-gtk/gtkutil.c xchat-wdk/src/fe-gtk/gtkutil.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/gtkutil.c xchat-wdk/src/fe-gtk/gtkutil.c --- xchat-wdk.orig/src/fe-gtk/gtkutil.c 2009-07-18 14:38:10 +0200 +++ xchat-wdk/src/fe-gtk/gtkutil.c 2010-03-29 12:59:54 +0200 @@ -22,7 +22,6 @@ @@ -1270,7 +4498,7 @@ diff -Naur xchat-wdk.orig/src/fe-gtk/gtkutil.c xchat-wdk/src/fe-gtk/gtkutil.c #include #include "fe-gtk.h" -diff -Naur xchat-wdk.orig/src/fe-gtk/joind.c xchat-wdk/src/fe-gtk/joind.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/joind.c xchat-wdk/src/fe-gtk/joind.c --- xchat-wdk.orig/src/fe-gtk/joind.c 2006-12-26 05:56:55 +0100 +++ xchat-wdk/src/fe-gtk/joind.c 2010-03-29 13:00:16 +0200 @@ -9,7 +9,6 @@ @@ -1281,7 +4509,25 @@ diff -Naur xchat-wdk.orig/src/fe-gtk/joind.c xchat-wdk/src/fe-gtk/joind.c #include #include -diff -Naur xchat-wdk.orig/src/fe-gtk/makefile.mak xchat-wdk/src/fe-gtk/makefile.mak +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/maingui.c xchat-wdk/src/fe-gtk/maingui.c +--- xchat-wdk.orig/src/fe-gtk/maingui.c 2008-06-08 09:58:58 +0200 ++++ xchat-wdk/src/fe-gtk/maingui.c 2010-03-30 12:57:53 +0200 +@@ -1320,12 +1320,12 @@ + gtk_button_box_set_layout (GTK_BUTTON_BOX (dialog_action_area1), + GTK_BUTTONBOX_END); + +- if (minimize_button) ++ /*if (minimize_button) + { + button = gtk_button_new_with_mnemonic (_("_Minimize to Tray")); + gtk_widget_show (button); + gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, 1); +- } ++ }*/ + + button = gtk_button_new_from_stock ("gtk-cancel"); + gtk_widget_show (button); +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/makefile.mak xchat-wdk/src/fe-gtk/makefile.mak --- xchat-wdk.orig/src/fe-gtk/makefile.mak 1970-01-01 01:00:00 +0100 +++ xchat-wdk/src/fe-gtk/makefile.mak 2010-03-30 07:45:37 +0200 @@ -0,0 +1,37 @@ @@ -1322,7 +4568,7 @@ diff -Naur xchat-wdk.orig/src/fe-gtk/makefile.mak xchat-wdk/src/fe-gtk/makefile. + del $(PROG) + del xchat.rc + del xchat.RES -diff -Naur xchat-wdk.orig/src/fe-gtk/menu.c xchat-wdk/src/fe-gtk/menu.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/menu.c xchat-wdk/src/fe-gtk/menu.c --- xchat-wdk.orig/src/fe-gtk/menu.c 2008-06-10 14:05:00 +0200 +++ xchat-wdk/src/fe-gtk/menu.c 2010-03-29 13:00:13 +0200 @@ -22,7 +22,6 @@ @@ -1333,7 +4579,7 @@ diff -Naur xchat-wdk.orig/src/fe-gtk/menu.c xchat-wdk/src/fe-gtk/menu.c #ifdef WIN32 #include -diff -Naur xchat-wdk.orig/src/fe-gtk/palette.c xchat-wdk/src/fe-gtk/palette.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/palette.c xchat-wdk/src/fe-gtk/palette.c --- xchat-wdk.orig/src/fe-gtk/palette.c 2006-03-13 09:33:45 +0100 +++ xchat-wdk/src/fe-gtk/palette.c 2010-03-29 13:00:11 +0200 @@ -20,7 +20,6 @@ @@ -1344,7 +4590,7 @@ diff -Naur xchat-wdk.orig/src/fe-gtk/palette.c xchat-wdk/src/fe-gtk/palette.c #include #include #include -diff -Naur xchat-wdk.orig/src/fe-gtk/plugin-tray.c xchat-wdk/src/fe-gtk/plugin-tray.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/plugin-tray.c xchat-wdk/src/fe-gtk/plugin-tray.c --- xchat-wdk.orig/src/fe-gtk/plugin-tray.c 2008-08-29 12:59:11 +0200 +++ xchat-wdk/src/fe-gtk/plugin-tray.c 2010-03-29 13:00:32 +0200 @@ -1,7 +1,6 @@ @@ -1355,7 +4601,7 @@ diff -Naur xchat-wdk.orig/src/fe-gtk/plugin-tray.c xchat-wdk/src/fe-gtk/plugin-t #include "../common/xchat-plugin.h" #include "../common/xchat.h" #include "../common/xchatc.h" -diff -Naur xchat-wdk.orig/src/fe-gtk/rawlog.c xchat-wdk/src/fe-gtk/rawlog.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/rawlog.c xchat-wdk/src/fe-gtk/rawlog.c --- xchat-wdk.orig/src/fe-gtk/rawlog.c 2008-02-24 06:09:34 +0100 +++ xchat-wdk/src/fe-gtk/rawlog.c 2010-03-29 13:00:30 +0200 @@ -21,7 +21,6 @@ @@ -1366,7 +4612,7 @@ diff -Naur xchat-wdk.orig/src/fe-gtk/rawlog.c xchat-wdk/src/fe-gtk/rawlog.c #include #include "fe-gtk.h" -diff -Naur xchat-wdk.orig/src/fe-gtk/sexy-spell-entry.c xchat-wdk/src/fe-gtk/sexy-spell-entry.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/sexy-spell-entry.c xchat-wdk/src/fe-gtk/sexy-spell-entry.c --- xchat-wdk.orig/src/fe-gtk/sexy-spell-entry.c 2006-07-17 07:51:02 +0200 +++ xchat-wdk/src/fe-gtk/sexy-spell-entry.c 2010-03-29 14:42:33 +0200 @@ -31,6 +31,20 @@ @@ -1390,7 +4636,7 @@ diff -Naur xchat-wdk.orig/src/fe-gtk/sexy-spell-entry.c xchat-wdk/src/fe-gtk/sex /* * Bunch of poop to make enchant into a runtime dependency rather than a * compile-time dependency. This makes it so I don't have to hear the -diff -Naur xchat-wdk.orig/src/fe-gtk/xtext.c xchat-wdk/src/fe-gtk/xtext.c +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/fe-gtk/xtext.c xchat-wdk/src/fe-gtk/xtext.c --- xchat-wdk.orig/src/fe-gtk/xtext.c 2008-08-29 13:24:17 +0200 +++ xchat-wdk/src/fe-gtk/xtext.c 2010-03-29 13:00:27 +0200 @@ -42,7 +42,6 @@ @@ -1401,7 +4647,7 @@ diff -Naur xchat-wdk.orig/src/fe-gtk/xtext.c xchat-wdk/src/fe-gtk/xtext.c #include #include #include -diff -Naur xchat-wdk.orig/src/makefile.mak xchat-wdk/src/makefile.mak +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/makefile.mak xchat-wdk/src/makefile.mak --- xchat-wdk.orig/src/makefile.mak 1970-01-01 01:00:00 +0100 +++ xchat-wdk/src/makefile.mak 2010-03-29 22:22:00 +0200 @@ -0,0 +1,18 @@ @@ -1423,13 +4669,15 @@ diff -Naur xchat-wdk.orig/src/makefile.mak xchat-wdk/src/makefile.mak + del fe-gtk\xchat.rc + del fe-gtk\xchat.RES + del pixmaps\*.h -diff -Naur xchat-wdk.orig/src/makeinc.mak xchat-wdk/src/makeinc.mak +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/makeinc.mak xchat-wdk/src/makeinc.mak --- xchat-wdk.orig/src/makeinc.mak 1970-01-01 01:00:00 +0100 -+++ xchat-wdk/src/makeinc.mak 2010-03-30 07:45:32 +0200 -@@ -0,0 +1,125 @@ ++++ xchat-wdk/src/makeinc.mak 2010-03-30 12:40:15 +0200 +@@ -0,0 +1,126 @@ +#uncomment this to have an x64 build +#x64 = YES + ++CFLAGS = ++CPPFLAGS = +!ifdef x64 +############################################################# +#x64 config @@ -1438,6 +4686,7 @@ diff -Naur xchat-wdk.orig/src/makeinc.mak xchat-wdk/src/makeinc.mak +LIBS = /libpath:c:/mozilla-build/build/xchat-dev64/lib gtk-win32-2.0.lib gdk-win32-2.0.lib atk-1.0.lib gio-2.0.lib gdk_pixbuf-2.0.lib pangowin32-1.0.lib gdi32.lib pangocairo-1.0.lib pango-1.0.lib cairo.lib gobject-2.0.lib gmodule-2.0.lib glib-2.0.lib intl.lib + +LDFLAGS = /SUBSYSTEM:WINDOWS /NOLOGO msvcrt_win2003.obj ++CPPFLAGS = $(CPPFLAGS) /D_WIN64 + +PERLPATH = c:\mozilla-build\perl-5.10-x64\lib\CORE +PYTHONPATH = c:\mozilla-build\python-2.6-x64 @@ -1471,11 +4720,9 @@ diff -Naur xchat-wdk.orig/src/makeinc.mak xchat-wdk/src/makeinc.mak +#OPENSSL = YES +IPV6 = YES + -+CFLAGS = /Ox -+ +CC = cl +LINK = link -+CFLAGS = $(CFLAGS) -Dstrcasecmp=stricmp -Dstrncasecmp=strnicmp -Dstrtoull=_strtoui64 /MD /nologo /DWIN32 /DG_DISABLE_CAST_CHECKS ++CFLAGS = $(CFLAGS) /Ox -Dstrcasecmp=stricmp -Dstrncasecmp=strnicmp -Dstrtoull=_strtoui64 /MD /nologo /DWIN32 /DG_DISABLE_CAST_CHECKS +LIBS = $(LIBS) gdi32.lib shell32.lib user32.lib advapi32.lib imm32.lib ole32.lib winmm.lib + +!ifdef IPV6 @@ -1552,7 +4799,7 @@ diff -Naur xchat-wdk.orig/src/makeinc.mak xchat-wdk/src/makeinc.mak +FEGTK_OBJECTS = $(FEGTK_OBJECTS) mmx_cmod.o +CFLAGS = $(CFLAGS) -DUSE_MMX +!endif -diff -Naur xchat-wdk.orig/src/pixmaps/makefile.mak xchat-wdk/src/pixmaps/makefile.mak +diff -ruN --strip-trailing-cr xchat-wdk.orig/src/pixmaps/makefile.mak xchat-wdk/src/pixmaps/makefile.mak --- xchat-wdk.orig/src/pixmaps/makefile.mak 1970-01-01 01:00:00 +0100 +++ xchat-wdk/src/pixmaps/makefile.mak 2010-03-29 13:15:26 +0200 @@ -0,0 +1,18 @@