From b12ec1751d082e7d6ffee6fe5ef14f9c0370d303 Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov Date: Tue, 23 Jul 2024 16:50:48 +0700 Subject: [PATCH] 1 year later... --- .gitignore | 2 + windows/win32s/StdAfx.cpp | 17 +++++++ windows/win32s/Tinelix IRC.aps | Bin 43260 -> 43336 bytes windows/win32s/Tinelix IRC.clw | 2 +- windows/win32s/Tinelix IRC.cpp | 46 +++++++++++++++++- windows/win32s/Tinelix IRC.h | 6 ++- windows/win32s/Tinelix IRC.mak | 44 ++++++++--------- windows/win32s/Tinelix IRC.mdp | Bin 39936 -> 42496 bytes windows/win32s/Tinelix IRC.ncb | Bin 263168 -> 263168 bytes windows/win32s/Tinelix IRC.rc | 24 ++++----- windows/win32s/dialogs/AboutDlg.cpp | 6 +-- windows/win32s/dialogs/AboutDlg.h | 4 +- windows/win32s/dialogs/ConnManDlg.cpp | 4 +- windows/win32s/dialogs/ConnManDlg.h | 4 +- windows/win32s/dialogs/MainDlg.cpp | 33 +++---------- windows/win32s/dialogs/MainDlg.h | 7 +-- windows/win32s/dialogs/ProgressDlg.cpp | 6 +-- windows/win32s/dialogs/ProgressDlg.h | 4 +- windows/win32s/dialogs/StatisticsDlg.cpp | 6 +-- windows/win32s/dialogs/StatisticsDlg.h | 4 +- windows/win32s/dialogs/TextBoxDlg.cpp | 18 ++++++- windows/win32s/dialogs/TextBoxDlg.h | 18 ++++++- .../libs/IRCParser/Tinelix IRC Parser.mdp | Bin 36352 -> 35328 bytes .../libs/IRCParser/Tinelix IRC Parser.ncb | Bin 214016 -> 214016 bytes windows/win32s/tabs/AppThreadTab.cpp | 4 +- windows/win32s/tabs/AppThreadTab.h | 4 +- 26 files changed, 170 insertions(+), 93 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f874798 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +windows/win32s/Debug +windows/win32s/libs/IRCParser/Debug diff --git a/windows/win32s/StdAfx.cpp b/windows/win32s/StdAfx.cpp index 47d2e0d..0489703 100644 --- a/windows/win32s/StdAfx.cpp +++ b/windows/win32s/StdAfx.cpp @@ -2,5 +2,22 @@ // Tinelix IRC.pch will be the pre-compiled header // stdafx.obj will contain the pre-compiled type information +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) +// +// This file is part of Tinelix IRC Client. +// +// Tinelix IRC Client 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 3 of the License, or (at your option) any later version. +// Tinelix IRC Client 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, see https://www.gnu.org/licenses/. +// +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s + #include "stdafx.h" diff --git a/windows/win32s/Tinelix IRC.aps b/windows/win32s/Tinelix IRC.aps index 522c6a7479c8cffce206be2a7ee3f2649e8110c5..5f4e3917ec91a42f5c4174cec58cc557dd15b23f 100644 GIT binary patch delta 1253 zcmaJ=ZAepL6h7~DcV_iNE7$s%cd+80u!h!pf{3sysAhK$t6 zbv_~k0iP5G(cyHK!de{X3yZ5Xx2HPTFwK|2I*pP19un6@HU#B>wxAr=W4>_#=K}oL zWMyuwGYYH*+l^LMi#La76f}706cdl|%rtn~cBKbniVVQm?H)aaQ zLCJ&x_hvo!8@G7$k5XZ-;Sb9J^EC5!tr3sct3csj9GDDC;pfkCC>0&F2i{27Qyumz zK95&x$G=%^k^`b6nE!c-dppNtW#;(N;Y{H=d}r>j}={$Lc;k!DSN6 z$H$UePn1HR*QqBMQAfQ~Oi!^ApVXN31Yxw+e&QgC1%BKAbPfI>19jLxkjDVsikYxU zu`C2eFRz{8-<`{x;MD-?IpujJJA|JTgVPj#{GI*OYQGI%4oaKq+1$Y1-1a=3zQvwHP@a5@+{45eS;#f*#{e%`g zcxDbCX8=>0^?_!%u}fiqmh_30wE3tQ4I V-b_nJaVRaY4>(5n3g4y|{Q~adaMb_+ delta 1153 zcma)(OH5Ni6o$_kxCo*q7_6w!Tda?SSR;MdQV?kGt+t31N)ge@T_6jLVtHwFB~cPz zfaORuvGVXy+C&n~jV{^f0^=*PB1U&zXjGz!nrKXLT3woWCpnXu|NkccIholx_Uje9 zY{2qJv2kO?9RS%Gl8?3Z9c}OI?Fk)kvnt{4V~0Z>-EF3}BOP2cMOt+kkgU9a+#yhJ zOMZzRz$Ys^eYGB?p~)8ni`j0sfFrHC-2SFNiWSO$W?ELGlR{Z*SUJ#-76Vq$wJedj zfyDhHlYk}zg&7u*sbO~^dQ{yKT^Y;GrmfYs;#6CHscDa=F4!2_D_NELfWIc>3rHrZ z*2hKDh)YMq)d#eIzOoIlxM+h?i>W48kl$T(7r)C zMrnHRD3e>La43jo>KbaMvy+?X=TLrLodSOsLPq@zoL9x+Oopg#h>YMW#gj4(yiRBL z*B^u)I1kIzrz2fU@v6GxMl)t5GgCe-#MiQ9COsT8=P*vEi@uDBC{y0J5e=$s`~jj_ z{V?$obIhCoxB^akbn{H^3Fv@Muz(qQ)PY-@8J5%Z9ixz}1h^eJDQ2bUyH)hMN-yMQ z17uQBOccUgw2~`k#93;O8JVGmR@CT)cRctuO~*vMOV48>`+9*EVtTA4*HjUeOzH3v zKUr`-eV@CyQV0tG=O{5HVgWtj`!jma_bBDWMOHmZm7{Bg?>y=;`QjqJp$;y8yhaz| adfZ2ec$JVEKT4mtIYG-4B3>p_V%=|v3|egf diff --git a/windows/win32s/Tinelix IRC.clw b/windows/win32s/Tinelix IRC.clw index 0881c16..78dcb64 100644 --- a/windows/win32s/Tinelix IRC.clw +++ b/windows/win32s/Tinelix IRC.clw @@ -84,7 +84,7 @@ Control3=IDC_STATIC,static,1342308352 Control4=IDOK,button,1342373889 Control5=IDC_LICENSE,static,1342308352 Control6=IDC_LICENSE2,static,1342308352 -Control7=IDC_SRC_CODE_ADDR,edit,1350633600 +Control7=IDC_SRC_CODE_ADDR,edit,1350633476 Control8=IDC_SRC_CODE,static,1342308352 [DLG:IDD_TABCHAT] diff --git a/windows/win32s/Tinelix IRC.cpp b/windows/win32s/Tinelix IRC.cpp index 689d45c..173eaf2 100644 --- a/windows/win32s/Tinelix IRC.cpp +++ b/windows/win32s/Tinelix IRC.cpp @@ -54,7 +54,24 @@ CIRCApplication::CIRCApplication() CIRCApplication theApp; ///////////////////////////////////////////////////////////////////////////// -// CIRCApplication initialization +// CIRCApplication initialization +// +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) +// +// This file is part of Tinelix IRC Client. +// +// Tinelix IRC Client 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 3 of the License, or (at your option) any later version. +// Tinelix IRC Client 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, see https://www.gnu.org/licenses/. +// +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s BOOL CIRCApplication::InitInstance() { @@ -72,6 +89,33 @@ BOOL CIRCApplication::InitInstance() int nResponse = 0; CMainDlg dlg; m_pMainWnd = &dlg; + + char app_path[640]; + sprintf(app_path, GetAppPath()); + + // Loading WSAWrapper library. + // Available in https://github.com/tinelix/WSAWrapper (LGPLv2.1+) + char wsawrap_path[640]; + sprintf(wsawrap_path, "%s\\wsawrap.dll", app_path); + char ircpars_path[640]; + sprintf(ircpars_path, "%s\\ircpars.dll", app_path); + + wsaWrap = LoadLibrary(wsawrap_path); + parser = LoadLibrary(ircpars_path); + + if(!wsaWrap) { + MessageBox(NULL, "wsawrap.dll loading error", "Error", MB_OK|MB_ICONSTOP); + return FALSE; + } + + if(!parser) { + MessageBox(NULL, "ircpars.dll loading error", "Error", MB_OK|MB_ICONSTOP); + return FALSE; + } + + dlg.ImportDllFunctions(wsaWrap, parser); + + nResponse = dlg.DoModal(); if (nResponse == IDOK) diff --git a/windows/win32s/Tinelix IRC.h b/windows/win32s/Tinelix IRC.h index 66ee78b..5c6eea4 100644 --- a/windows/win32s/Tinelix IRC.h +++ b/windows/win32s/Tinelix IRC.h @@ -1,6 +1,6 @@ // Tinelix IRC.h : main header file for the Tinelix IRC application // -// Copyright © 2023 Dmitry Tretyakov (aka. Tinelix) +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) // // This file is part of Tinelix IRC Client. // @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along with this // program. If not, see https://www.gnu.org/licenses/. // -// Source code: https://github.com/tinelix/irc-client-win32s +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s #ifndef __AFXWIN_H__ #error include 'stdafx.h' before including this file for PCH @@ -34,6 +34,8 @@ class CIRCApplication : public CWinApp CIRCApplication(); BOOL CheckIsWin32s(); char* GetAppPath(); + HINSTANCE wsaWrap; + HINSTANCE parser; // Overrides // ClassWizard generated virtual function overrides diff --git a/windows/win32s/Tinelix IRC.mak b/windows/win32s/Tinelix IRC.mak index fccdf6a..719ebed 100644 --- a/windows/win32s/Tinelix IRC.mak +++ b/windows/win32s/Tinelix IRC.mak @@ -32,9 +32,9 @@ NULL=nul ################################################################################ # Begin Project # PROP Target_Last_Scanned "Tinelix IRC - Win32 Debug" +MTL=mktyplib.exe CPP=cl.exe RSC=rc.exe -MTL=mktyplib.exe !IF "$(CFG)" == "Tinelix IRC - Win32 Release" @@ -55,16 +55,16 @@ ALL : "$(OUTDIR)\tlx_irc.exe" CLEAN : -@erase ".\Release\tlx_irc.exe" - -@erase ".\Release\ConnManDlg.obj" + -@erase ".\Release\MainDlg.obj" -@erase ".\Release\Tinelix IRC.pch" - -@erase ".\Release\Tinelix IRC.obj" - -@erase ".\Release\TextBoxDlg.obj" -@erase ".\Release\ProgressDlg.obj" - -@erase ".\Release\AboutDlg.obj" - -@erase ".\Release\AppThreadTab.obj" -@erase ".\Release\StatisticsDlg.obj" + -@erase ".\Release\ConnManDlg.obj" -@erase ".\Release\StdAfx.obj" - -@erase ".\Release\MainDlg.obj" + -@erase ".\Release\Tinelix IRC.obj" + -@erase ".\Release\TextBoxDlg.obj" + -@erase ".\Release\AppThreadTab.obj" + -@erase ".\Release\AboutDlg.obj" -@erase ".\Release\Tinelix IRC.res" "$(OUTDIR)" : @@ -94,15 +94,15 @@ LINK32=link.exe LINK32_FLAGS=/nologo /subsystem:windows /incremental:no\ /pdb:"$(OUTDIR)/tlx_irc.pdb" /machine:I386 /out:"$(OUTDIR)/tlx_irc.exe" LINK32_OBJS= \ + "$(INTDIR)/MainDlg.obj" \ + "$(INTDIR)/ProgressDlg.obj" \ + "$(INTDIR)/StatisticsDlg.obj" \ "$(INTDIR)/ConnManDlg.obj" \ + "$(INTDIR)/StdAfx.obj" \ "$(INTDIR)/Tinelix IRC.obj" \ "$(INTDIR)/TextBoxDlg.obj" \ - "$(INTDIR)/ProgressDlg.obj" \ - "$(INTDIR)/AboutDlg.obj" \ "$(INTDIR)/AppThreadTab.obj" \ - "$(INTDIR)/StatisticsDlg.obj" \ - "$(INTDIR)/StdAfx.obj" \ - "$(INTDIR)/MainDlg.obj" \ + "$(INTDIR)/AboutDlg.obj" \ "$(INTDIR)/Tinelix IRC.res" "$(OUTDIR)\tlx_irc.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) @@ -132,15 +132,15 @@ CLEAN : -@erase ".\Debug\Tinelix IRC.pch" -@erase ".\Debug\vc40.idb" -@erase ".\Debug\tlx_irc.exe" + -@erase ".\Debug\AboutDlg.obj" + -@erase ".\Debug\MainDlg.obj" + -@erase ".\Debug\StdAfx.obj" + -@erase ".\Debug\ProgressDlg.obj" -@erase ".\Debug\Tinelix IRC.obj" + -@erase ".\Debug\StatisticsDlg.obj" -@erase ".\Debug\TextBoxDlg.obj" - -@erase ".\Debug\AboutDlg.obj" -@erase ".\Debug\AppThreadTab.obj" - -@erase ".\Debug\ProgressDlg.obj" -@erase ".\Debug\ConnManDlg.obj" - -@erase ".\Debug\MainDlg.obj" - -@erase ".\Debug\StatisticsDlg.obj" - -@erase ".\Debug\StdAfx.obj" -@erase ".\Debug\Tinelix IRC.res" -@erase ".\Debug\tlx_irc.ilk" -@erase ".\Debug\tlx_irc.pdb" @@ -173,15 +173,15 @@ LINK32=link.exe LINK32_FLAGS=/nologo /subsystem:windows /incremental:yes\ /pdb:"$(OUTDIR)/tlx_irc.pdb" /debug /machine:I386 /out:"$(OUTDIR)/tlx_irc.exe" LINK32_OBJS= \ + "$(INTDIR)/AboutDlg.obj" \ + "$(INTDIR)/MainDlg.obj" \ + "$(INTDIR)/StdAfx.obj" \ + "$(INTDIR)/ProgressDlg.obj" \ "$(INTDIR)/Tinelix IRC.obj" \ + "$(INTDIR)/StatisticsDlg.obj" \ "$(INTDIR)/TextBoxDlg.obj" \ - "$(INTDIR)/AboutDlg.obj" \ "$(INTDIR)/AppThreadTab.obj" \ - "$(INTDIR)/ProgressDlg.obj" \ "$(INTDIR)/ConnManDlg.obj" \ - "$(INTDIR)/MainDlg.obj" \ - "$(INTDIR)/StatisticsDlg.obj" \ - "$(INTDIR)/StdAfx.obj" \ "$(INTDIR)/Tinelix IRC.res" "$(OUTDIR)\tlx_irc.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS) diff --git a/windows/win32s/Tinelix IRC.mdp b/windows/win32s/Tinelix IRC.mdp index 5ef59cf26331ef071a70410e4c4da7cedbb65581..980950bd41c39a434cc3c1a1ea1665590fafdb28 100644 GIT binary patch literal 42496 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 Gt?YlMGM_&H diff --git a/windows/win32s/Tinelix IRC.ncb b/windows/win32s/Tinelix IRC.ncb index 86328c915aa5dd2687990e2d13d17b798a8da017..e7c1abfa4faa3359b17c6629fa1f8bdf1ea8952b 100644 GIT binary patch delta 28395 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 delta 22866 zcmeHv4R}=5wf5fo%p@~sLNW;?A^c=c0tq4H&+spigr7tvAPGY7w}Lewh(%PWs9Yu& zgz6_EdL*0Hidaf3mwN?opkpgasAy|#(QDOvt+vn~YHvZYtq5K!+;{JF&M;>PeD-_p z^F4jO=Nq0Rth4tyXYaMwde_fhdphn9cibP|Fe3PzV63LGnf>9}3HyylT73ilxTWCs z{HoPw=ETn8b3DBpzhfu&F?`N+75NTD?9T_K=d#=L(^zJN{dK?F=j_RS)Li2WJUTfL z58Q8@GQKsX;?es8`Tr77w=?zuUY5m})t425irSGa^*n0N*)pf=#ibL|JG*%xFhX~X zGCRDtP*x2#!c(H`CLd$HaoY&Sb?a9^hd~#E7A(p{8qt@5Hqm31(>@Gz2I%eh@fr5o zy%R^TU`oOa-0EEcWNYM6U*&#m3lYmzUc^Z@=7LvM@JR z%&Z0$VEr(H-66*MWUI#n*g(AH2;ST$%&hUC3t4%_X+`&DRz2tl+ON+6Z82*iXbbdD zRC^AyE(2Wz`dU0x&Fmu{V8s~L5(Bi4Szkr_Ahdr2?~8?TLpnNOi2Hu1ItXU{3LQ$& z;VngDUY~(31zn35hWjz=RrD{%gTJQQ4Q9QL_DZxLz}wXG`lG!H^n2j5df^A4Yd{ZB zeDO1@2=s6a2=qu6&STbSTo{QChb?r#3_k%q3J-nIdBAGWW6*xHdH@F0_1wxSyg{v` z5`a90CBx@q5(o@}Xj<6@@HP!AD^AkNHi#jh)ymop-z+KO%qj%k3pB?+^kagn{stt$ zk01LR&yA`NvDLu^V3A@ct$N-6X4UJGSH0_Whd=b_(p_D<*0mbrCgNR6Qx3l!WzY1% zL*I$w3S5#aSDHxtXuC!+51?~ns=je+!o^s^Dr*dqT%Cr<)d4S|LR)z z$kNQTpW;FmlWCjy9G)%bxASVb@o8QoU%sE$*e7-u$jn@kE^`M8i!(XuT^_O9UJc{z zmL&oVf0@6S<`=T>K2jmK&Ep03iw{}yS0{MBJkiL*(qGCgS@H`W#wu8!VrXT!OUne4 zP3w6?&TB%4HRvEWe#*mOmtIJ}|IEX6? z@Z3h$HGb<4GkV>D5n+w3nYeakSFc^Cjo3Kc%%D`?0AnDHP=2D9K$df$I|Z6%)=odQ zLj~}e#SE;R>OVl!f<1x1itexJO!hc9plGFcjNQO~fd?yEK?`GFW~=ZU^b`vciBFXI zE$Wc3=>R(kjZ`<}X}XDhgdV*>W;>moeRb$oZW5%WwFQ~h7KM@@S+ z{y!4{Gu>gsm7r&_e`Z54Db;=z=r$HOvNRd7y@e z^W9u?9#13Ar!g<*qbZ!1K`-YY4thENWYEj`?*h`se zRyV9t2p#g+T_KJBXrF`^6tHyDrIj@pz)l8TT3L$-J08^50sWPAu-KuXwho|`btqyV z1hsVlt*isA%-Nte54fPr!yxwW!DRC=nB5%G<^cm*j`k9E$W-P*4cLbnm9ngmwho|w ziS{Avq^Yd~XhMRsCLsY?hYEI8NLvRy?@bnnv1)eQ)aC&<^u+^fSR|y)188L)YT2BS zHV>c+L62lZ67&erqgi!GTL-i&>oA7h7Sf;snn309Py$rYKAyFN9>J0*Ilr030<4~W z*IWUkr7q0F3>ug;_oxm)rG=m;u()~9x#1Sj6WKmf!K3Pb2k1%cb@MYvk?sUNnf<%j z3>i@EgjqXH?HVv)4MKYp+ZntbORm}%#c<(r_9OFl=LPdYPhn4*Ux$#W4%dK=vWLx~ zPJ0XJW>#db)uU+y!SH;vr2*jRd7~#m zFe3;?J3%lb2!`iF5X>w+Z?qExGfU4KG(j*U2u6Q`U`7y(=Mw}oSY$PCzX1SFI}d>0 z{C4)Ed;O-7n7+(fjtQ5Pam$?Rnlz@l0Mk2vxw8E2ye50OYi-C^?(LKBR2aqbR3Fhx z`j04E{s8YS$29VRvMpECbgemZub8bR03-8o0zRCF6QDhu0DS>YkTDYW>|K!n_@U<; z|A%$l;9VX6*&*h97mgVDa4`OGB3&QuFjF*Rx1v4lQ$Ab}upMPS0ws9%L3n8V?rLKiXHpPYP!-vlcWE-JY{4Z)`R*F98X_XIHD{To$MSt(^HHpn4DqmtxLtkpqJS<2EkMg9c*17ba433zM9o}+xAkvC50lVmzu_lsyKgsW;|1La#kzTR|&66oXcb{h^}KJ`A+FV+vLQHVJ%A z1DAw+@)*x+hVpF&t@!){IGyVL2S6*n`r#>t)0lM~XeI9di2GIh4A7ZqAE`V^i2o$e zS$N*r0QeJ?kswDXE$4j5N5wY|IfJvTZr9;f7ob^p)G%fh`C- z!t(6_A`HQE02hMt@dA+>_m}X~Vw46NK%xg|Fjo)I05Uv4BkWPTBH8HW0ajtp-!&*V zr$2Z$007z#Kk#PzCA`^~nlrgI{X<^2X0_>cYeFHfTl3o#x8`|MyES;;o8Wjg5X-fAD)S=*9*KWQ?0SN>Vx`EHnDIh_A3I%^l0SRad1&`{0 zBnSQBI^omX^jiQKw5xao7N9Gr0}@;y-(yEmhl0=;LaD7m9SWkILczy_Dv_m7V4T+B zkf}ozykID3!A?`C0-8dVsT8U}GbmIU7Sf>#v<#t23~GKI#VWWk91qB3hN)u}Jb+@A z)fB6sonn=HDOSM)RVV_uWNxT30CXP(BgK$V3@}}XD&n*bMbLi|o?pPGCWR_+v1%$RvBjMSOpJMu}U$UWO_rD{-zF9(5^CBgV_!WRWKpa z=|QB^c%Cm_P{ogP8K~pEVt5~A2TbOTQEd_ls0fL~<0KNGDLb$=B}Uzm5~Fsd#Hi1c zNZ@`FiI;SUdb2V-6r;XIB7vBcMB?Wp5@;upc#lK^G>OD-NhCm%NE}UxUjLFDy~a=1 zaDQqNVRgvsxjz{4dhT|}>$yK3@_O!DLyqU}0PT*@y^wO4AjgC43V9v(j0ocp9Kj0l z&y(flw9C z&G9A7WR13v^2l=7$`cDjIPPzRX{2Z*F?}Z*fj93ljTpYiG@`%92Tx3&IX<{MeJ2_L zJ3P?{*4Bwe?AR{Te&9fc+}O&G#yg^Xy^xukc)FTh8IKfUKBPE|k~?!<#bK0I^U2vN z23a#e)W|*UTyf=)2uD`31f1Hl z5IIakzViTbm?w@PFZp|J*(E;-!>)SMlFRL;-yt*~839ffa z)gyk7M@YCVB@g2{ja$Q9$k`9W5%S5e4nh0Itzo%sh`MtT#{aTZ6SCiVEpiE7M@ES; z?aW}97k6gtQaCSIHz!JT5_Kvz8j5=z?z4pKxr%fg4vkW#^P)p7dsp)B`Ge}7Yw_#f zx`LBW8sE8|`}o*6-y)vRmwWHxljVk|#Vp@XSN^zNUj3ZdBIj-s>&(E}{q4Ao4Ic8y zgwFWjW?sg{`p@L_sr+BRvx57+w^uyJZR?Ng;*(eLz5IJijH5h$bQvEgG99niBGW7L zEMrV81NjwqV?{>^mN!ZemJ_PMnKd+$Y_(ixRs{_~3L3yu3L4Te4lrS>~nE75{9 zlw+Xevh7{oDz^=U3PFFv_RIS%`^ZCKQs8@d?|9!%{s&Gee^-(0Uc34({GZ0T3u#)T zTwlTeY40&zkc_bvWc?%RZ@U0QD-7%X^0tWJxsxYy|B(mKQs#|Nx5`tW$`Gkh11 zAMP+LF7Fv++$Zl_Wo!_*DQ~s0Qf8JI8{~#Rh!OJY`;1+3RjF~ST)M_M6<@c9uMp{k zPf#RjnaVsUef%FHm8&$2TNet$}BfP?cM=IFXNesMK zB{2|ydax;*#XowE=Nr;rC&K-~WODqXlzYKVho0;!1e0l6x+?HN)5 zl|=-xP9DZu1zPo|JPfmR9tJc)Dzm(K7&r*jzmJ}S%5Ufx(b9>SjYs(m``1%i<-Zsj zL68-Bfe#aQV0XCh#bz_U_T0EDQ%u1a(8wPp#yu7^)W(uq_QD=pvb&FwJI+#OSLKDG zYzM?h&8Gphvi@!ei#(BD@^7PEIjx1D;hS4__`_)#O7^<29viVp^5GS{Z&ycKhv+=U z1L>o1S(Oq%a4xxk;NU6b<+Fs~sH~T|YtFGeq>H|~mzRNUE~{@rV-Wu|t1V_t28~s- z_Z=&hNA~gpM48@EMj3zKYqV;9&Bw?;eTny%m)*cK?T%>~_VH`Wx?a9!oX9$tKgC0_ zmzT9dlooLo7>SptQE3T5KC}#UB0riVXRi?Tm$3%usi_k|I%9~bMKq1A@H5Ul5!OD8B9Ux#X+{}>n zdwuY0Ps`7gsp)%!_kz<^s*I@yJ`Cuhej)TG-M)MOsQAvG@fo7C#>mAx@;Z1V8<41A zYBrvrVT#*L2O>iOUdrXY27J-s3ut9BuLaHVqoWsdoh^$dLAh$Fvt%dt|D z*NAB`i*zk2pWMr4KG=3J%BUH;}2nN zUGt|>e}!>4{(lya9>|rs>(I5N#t5rqo@c3ivS|UYFHn(W*a^N|2UrJR_U2u`ahB$f z{PUhXmZ#yg>j(@MSZxcTCZS9XtimWrb>n*5r*^|ZgTKa?%hG|OTDCm_=VTtN=dve+ zB{vR*E!~C~V^1Y+KG?|9?YH;Ct;-d?;{J~i$I^;nVLdAbkM2OvLRekUlhEmjYX2kN z@hAACC|>fLi5wR@x8K9(Dt1RO8*KBObHKE}p(c8w4;%phySyeo@&tcPbXIUzB|=Gj zmJKyV$yf~9qYdbAo;HM>6;Ose$EgrtY6apQpJANXmTI4Zvdv{zZy00~qyW zi4y`T&Ix20q_iQ8~7a3)olKVkB;duy!^NMqx5`cB`hbWz0j$%b)ay*zl9*LJpxOqsa?EmiFz9D|twa-(X>foOi* zu^i@bU~w9ZoMWW1XN5Wi;IKB**u|*@9RSE{BaJ<+OF(C!hc=4b#dc>mC@Tru!w$Ba z!1ml62i&Li1n#A8!B&2~gp6nr-j&V9u_MJqtIZ_ES01-(Ph1(lkBb$evo2vph0Izf zMk!<=yh&bOV3{)MRSBHo%szYUOY!Ud;@d(oC{~-;3H&vt1>7aKOz#A$5ogd&V3up? zYKe{5#34&pO9q%ThmEx}(GRNUL>Z5Z7I)PN3JvR|fCMS&INEqE~0J8kbP@bJDbwb2EpNs=^90q*pLT5K?*WFRD4|3xk2>Rw%@KkhJDT? zJe`p0kosJGa2!%`M#GB5tec?LYVX+%U&z-M@(^6`^PE*UPMZ4|NI7L#YVH=(<14Qb ztJLzVmGstZoJ+0@N%oZN4v6-J9VKMy;3&ZweA-7u?A%x3I;cELW3C7*S1-e}Z(+|r zGDp7rGn77_co&9JWnUz+FP0p65c$0}Wc!d2Y>?Yjo#LK60QSqDqVY(fKypZa+6jj& zcNm&VZpN>X`M~M6Ibw%$F16EQmmCPI9G*ufdUh`%#R-G@d9sYgk!iSx#{*v$sBB3{ zCPMAK zk}>w3k#AHOx$z?l00dvG+{FO`1q>PpFda2%1q|NJ0v6Dl1w17|g@w65f;r0xaoo)U z?fK|>kWQZn$iRI(&rwtfMYX_}uMQUVa4NqyShU#wr=oItiAcwGePA5i#8O04bC$Kl zpSfLJC6p~4q3{N~*~ z1s(bGX=?SMBbL^YczBsm;nMEjc3*^y(et#m%&B9Es6AU1K03(;yn@0#0Xtr ze{Nq=*oV6FVh{pKU{z8A3p6FLDk*`5+o@u*lIe;`2+?rNTooI5cOfg8u9$?-&@N;p z(-o5mZLUo0LJriskd->u6@u?#1@ty#rHmax!g2EhBHzgRcLc49;VVF^ zx`1IS!S^OQBnksCA1ZgO^i;#wG7SF~kr%@Qs16`N#qSt^ssk8{2kJTi+^@$Ho4|F;-if(A-+Ay3vw!%-rUC+ zQ~_cOV`cJ<<2?6Tgn_Eya0YJHyZLyT+Bmrq4^Q4WnTd8C@Zx3Ul2m#M@7mDc>ylK; z`Whor6ZMohUxUZ!@E(sz;4c>EoR8q(@7`Y{wC}uM_%BW93d8{UCbhdyy25Dd7+j=k zf=ViH22DY5v#kH7$dhe|FJUd_KPIXHR-Nh(ldnL%%F&Y|;O0aE_^+6{i81N~Fj(Q} zkDax@v>cqe4$GT`X00A*ZUPOtB=vxJ^wP$zQqH+V=)NpqA6nWHuX;qhDLQ@0v2&%J)t%Q1X7k+o#cLnK z9&@c%^4wI5%cN9iSTQMHy9qaT9>8|HVBvV+o8pua_VW7dSs7l3{7LMI*z~7L099iTkA6m^l%(Xv1=9==JX=fMe`N#%SPeg zjGTKA?vN!r4vIp1^WrcznRXr&^$3jJir=y5*#HK2zOH4l=5IpsAm zDyD!mlG%3ZYvwYimf`~CHFzPV%$@QY44BNAQ(lATQ7y#<%4={x>1E8RufYXUOsBpE z4+udM6Xi8{0U0)@yaua7n!B3HYoN)bxlVZv+OxIhu1XlTV$f=keweE;p06}J4;4gA z*VkYGp86VeprZgzc?|~ODX#(TDX+o(^+1{;_65spFu>!OVC;hRHR#|+hf+3^jsjpn z>Y&&VHjZlMFo2Vw%h;rlwvA~23Hn#C$LS~l+JBDrYBoHiYvwS(0<_n#o9H9}=s&0m zrdqa@O8;>KumMK_77-008VPzdyOWLr-~}f@k7ZqS6ach3C^il?aaxb?z=uHBGn*icVGsSS?|zi7Lp)nzY}yL z>mSlb0WbhEqJQxm1-P93g^mJX0Axf%A#FrKtCIjx_FFm$fcvkB;X*U}IUNPS3)NA8 zscbbJ1;7pJD8Mv!FO}JWR!0G@U^X2E0IiM!OlMtm6aWJxOMDZR*@0GNcCGAADzn4$ z$uRGrlK>b%j4bnmbQAy&oQWG|GN%RyGC)SeslmYwWJH`A9K3*xh_?pkD(0=hxte)v zaIRra4UUfuam>qg=W1~JB_$zM9Yi)2b^=H30jr+2f4ZZOU2|84eB+>~5_JmkS_Yit zIDeQxI%rt}=~xQVp@`RmbeJ)j{tF;oA_BWWAt5+&QKSQhE{=5QKviS^he(I}JxGTE zkq6=w5`y+39WHo~4ji~B(m`lENQW1CkPi0~(v@&sNC=vcu9Bx9-ApPJ!~i@<2O;wy z9ia50NQeF&qytSsz$7Xp#PcZ#a0&@AU@y|)0!0B%B_U?$K|0L9gLI%hNQW1CkPfs5 z>CoSUbQq8q>CnN0bQq8a=|Eo;>2SXX>F@#%(xKghbf7PebaA(>W(xKghbcP!) zI7o;79;Cy7JV=LjFVcZ!9;Cw!9;Cw!9;8FN2kFrMHz6I~=S4a^(1Ub%pax)|uO~B)8LHcUf;`;0qC$E=+ zyy>alUC)>o_Ih`fI=56JRgzRFS|vM~XKdGJ+mXh-D@ z${|wZa5Yoj0Q@8vs${yJ8P9S8A$h#QXuPHM3?Jli1OKB#`J~Jk@v; zo)AF<-Au78dXpSAd(QFB!u>kEjscJyRmy6_u2U*K)tOi0;rCi_Ex_U98E8aPmzoNq}Y|5!JE@zhk^5cB>fjxeA`RICv%r&gxDwIX2Y)2*N3@qZg z$_cK|!e5ER8C6bjmAtVZ-aA&jkS%{PnGcixC{A^}$gE@Fin>=?Gmvu}KS4~$x7<^y zRcJ$qZ0SmGgv57?s5~@O%$6f3iUzr?SX?T1-Xl~!=BLGCiU`Hj2H8r{fEtf9Xx7KtlHN|Pz-CBuV_!fYN}h1aSmokR{%gf%!pr6xs_L=w$2$yI6INoF$d zBuzER%U?jy$-n|Fv^W|=LVKALw?cX_F|{G(o)_){jcv_D`Ibr_fhl(6p@LW|{*S5| z3gt1{deDhb9`whcb6C*OW)b5?2@2HKZ@5Q&l~q)}fTl4PWd&8p{7aTh?9VJ%kBaPB2&@h+!E9KS<3r0 zME?Dthl3Ug^uRhOwCD$AaM44d3pVurA4U&_7PXk6iyjJ1{y%#B9iT@BrP(2rgdY7; z(4!dWvB+cLQ_v%tf*w;-&?8lQlM9FxdX#&$*M4a4IOX2-TO$_BB_qWMd&TF|Zu}N< zsIYF9d&2W0(6DZnd%{z~LoWmEiq|Q$!);2?l;rJ|Fiw=@txJ6Q%`AK9;>P&mgW^%% z;6+y>g+GB5{`kP3WN>9C?S|cDV|w;`9OOzMXPS5JjGweO>>ZQr-3^shGq4-ZWc>`$ z6athu-W-z~{K&DuS?l(T@$$@2FLBNljdzKdl%+Iyi z3Cp!-vE}%p{NC4$=7>Aj5txHA1Syt8MmE6tzBRGp^hI3@?3TTG<#3wld%2b-%maNd z*W82!CV0+N=0N^*!FwkKJcer&1IKDnA zE|+f)6%ES$eiBW}*^-Ew#%qojix%xw%M;CTx5sCRR=NHxuPF}2^aec^ax5@kc?UYi zz~dW1!#S|DxBZ>>g-;c5jVJyrNm-ck6d}APMF^d*Rx@PNZeEtn&v?D>NA1||2wy9o z+|6f%Hp9PcgBMV5FnM~47_Q|_MGy_j^Y4g?Tm%N4Q85;h^~MY_U5OmZ?Mjp^K8I;n zsA;$M6K(NrYmMtT?O7yzlYh?85(Qs|!h_uz`Wp=}O+uT!8Qwy~0~xM1(U!v}8SYUg zs_Z_N;T~lgjNN#_-p_FB?x}wLcjXydEfm^Em_-Hbf6W+Q1ln?oYJI&{fmROnBDuYf z5t*qf2|~#GdTVT^Qpp*lfa=*ZdbwUD)wBOJ!&@o-RtATomQ+|^*L*m}p7uar+0iCO z%00L9L7{&{GE&8R___-@^>%*CBdwt!9TV>Z|4_P9jN{JRyW7?OQEU#-IIe}c25g>**z=e zxa@sF&2Dgy*u5g?W%sQ?FT0lp6}MwpTZi52f|}i+sfPJjD8X)BJ&`D(w5WPwD$})2 z=GHvpPGreVNT0 zYvZLW#V`1GjtSrYjQCpaj@jQVzO5v_7@|jfK@&fd#8>mPJ*Z1k!7t+Hx$o~Feooaz zyTum}U#v47$9OA4h6fr~#}~Bm*+Sm&t}!u%5tpS1R%41_U6CSKZ7G7ah6D@qAi?^F z6v6sRieN1(*OGNkuznTNf`y3^BR(X-!VE}{dAocyY?Kr^0%GZNF^GA-qy!{MKIX}+ zY~wmv_@2=q09 zKV*zof4_amXwo6(NS&x*>?y>UL-dwS=V9X()#cX1#%zuB3jA(?sc}Dba(}r2Nc#y2 zC3Qu@g^&4Q%{^sfSo8Cb`CtTIq%q{qK1RV5QiJnKC<)#z7v7U2N_|}Eyn{e8Tx8rJ z7iSw+#GijkGzvBB*!UE!XiCwF=_y(anf*vf$=zJ``A`1*)?*$8w&FyNKMipxm_Ld zYqwuLHeeLy>zwIJ@}`xNL{pT6pXAWOlWlRZ( diff --git a/windows/win32s/Tinelix IRC.rc b/windows/win32s/Tinelix IRC.rc index 2e24f46..2072dba 100644 --- a/windows/win32s/Tinelix IRC.rc +++ b/windows/win32s/Tinelix IRC.rc @@ -84,22 +84,22 @@ END // Dialog // -IDD_ABOUTBOX DIALOGEX 0, 0, 241, 156 +IDD_ABOUTBOX DIALOGEX 0, 0, 241, 159 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "About Tinelix IRC" FONT 8, "MS Sans Serif" BEGIN ICON IDR_APPICON,IDC_STATIC,5,6,21,20 - LTEXT "Tinelix IRC Client 0.2.0-b002 for Win32s",IDC_STATIC,35, + LTEXT "Tinelix IRC Client 0.2.0-b003 for Win32s",IDC_STATIC,35, 6,156,8,SS_NOPREFIX - LTEXT "Copyright © 2023 Dmitry Tretyakov (Tinelix)",IDC_STATIC, - 35,17,170,10 - DEFPUSHBUTTON "OK",IDOK,190,137,46,14,WS_GROUP + LTEXT "Copyright © 2023, 2024 Dmitry Tretyakov (Tinelix)", + IDC_STATIC,35,17,170,10 + DEFPUSHBUTTON "OK",IDOK,190,140,46,14,WS_GROUP LTEXT "This 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 3 of the License, or (at your option) any later version.", IDC_LICENSE,35,36,201,36 LTEXT "Tinelix IRC Client 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.", IDC_LICENSE2,35,74,201,36 - EDITTEXT IDC_SRC_CODE_ADDR,93,115,137,12,ES_AUTOHSCROLL | + EDITTEXT IDC_SRC_CODE_ADDR,93,115,143,21,ES_MULTILINE | ES_READONLY,WS_EX_TRANSPARENT LTEXT "Source code:",IDC_SRC_CODE,35,117,53,10 END @@ -214,7 +214,7 @@ BEGIN LEFTMARGIN, 5 RIGHTMARGIN, 236 TOPMARGIN, 6 - BOTTOMMARGIN, 151 + BOTTOMMARGIN, 154 END IDD_TABTHREAD, DIALOG @@ -295,8 +295,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION 0,2,0,2 - PRODUCTVERSION 0,2,0,2 + FILEVERSION 0,2,0,3 + PRODUCTVERSION 0,2,0,3 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x23L @@ -314,13 +314,13 @@ BEGIN VALUE "Comments", "Tinelix IRC Client compatible version with Win32s, Windows 95/98, Windows NT and 64-bit (AMD64) Windows editions.\0" VALUE "CompanyName", "Tinelix\0" VALUE "FileDescription", "Tinelix IRC\0" - VALUE "FileVersion", "0.2.0-b002\0" + VALUE "FileVersion", "0.2.0-b003\0" VALUE "InternalName", "Tinelix IRC for Win32s\0" VALUE "LegalCopyright", "Copyright © 2023 Dmitry Tretyakov (aka. tretdm). Licensed under GPLv3.\0" VALUE "OriginalFilename", "tlx_irc.exe\0" VALUE "ProductName", "Tinelix IRC for Win32s\0" - VALUE "ProductVersion", "0.2.0-b002\0" - VALUE "SpecialBuild", "Source code: https://github.com/tinelix/irc-client-win32s\0" + VALUE "ProductVersion", "0.2.0-b003\0" + VALUE "SpecialBuild", "Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s\0" END END BLOCK "VarFileInfo" diff --git a/windows/win32s/dialogs/AboutDlg.cpp b/windows/win32s/dialogs/AboutDlg.cpp index c64c6b2..38f708c 100644 --- a/windows/win32s/dialogs/AboutDlg.cpp +++ b/windows/win32s/dialogs/AboutDlg.cpp @@ -1,6 +1,6 @@ // AboutDlg.cpp : implementation file // -// Copyright © 2023 Dmitry Tretyakov (aka. Tinelix) +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) // // This file is part of Tinelix IRC Client. // @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along with this // program. If not, see https://www.gnu.org/licenses/. // -// Source code: https://github.com/tinelix/irc-client-win32s +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s #include "stdafx.h" @@ -72,7 +72,7 @@ BOOL CAboutDlg::OnInitDialog() { CDialog::OnInitDialog(); - src_code_repo = CString("https://github.com/tinelix/irc-client-win32s"); + src_code_repo = CString("https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s"); CEdit* source_code_addr = (CEdit*)GetDlgItem(IDC_SRC_CODE_ADDR); source_code_addr->SetWindowText(src_code_repo); diff --git a/windows/win32s/dialogs/AboutDlg.h b/windows/win32s/dialogs/AboutDlg.h index 116cd7b..3b96af2 100644 --- a/windows/win32s/dialogs/AboutDlg.h +++ b/windows/win32s/dialogs/AboutDlg.h @@ -1,6 +1,6 @@ // AboutDlg.h : header file // -// Copyright © 2023 Dmitry Tretyakov (aka. Tinelix) +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) // // This file is part of Tinelix IRC Client. // @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along with this // program. If not, see https://www.gnu.org/licenses/. // -// Source code: https://github.com/tinelix/irc-client-win32s +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s ///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog diff --git a/windows/win32s/dialogs/ConnManDlg.cpp b/windows/win32s/dialogs/ConnManDlg.cpp index be8a4bf..9356ccf 100644 --- a/windows/win32s/dialogs/ConnManDlg.cpp +++ b/windows/win32s/dialogs/ConnManDlg.cpp @@ -1,6 +1,6 @@ // ConnManDlg.cpp : implementation file // -// Copyright © 2023 Dmitry Tretyakov (aka. Tinelix) +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) // // This file is part of Tinelix IRC Client. // @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along with this // program. If not, see https://www.gnu.org/licenses/. // -// Source code: https://github.com/tinelix/irc-client-win32s +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s #include "stdafx.h" #include "..\Tinelix IRC.h" diff --git a/windows/win32s/dialogs/ConnManDlg.h b/windows/win32s/dialogs/ConnManDlg.h index fd2d0f0..9ab1d48 100644 --- a/windows/win32s/dialogs/ConnManDlg.h +++ b/windows/win32s/dialogs/ConnManDlg.h @@ -1,6 +1,6 @@ // ConnManDlg.h : header file // -// Copyright © 2023 Dmitry Tretyakov (aka. Tinelix) +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) // // This file is part of Tinelix IRC Client. // @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along with this // program. If not, see https://www.gnu.org/licenses/. // -// Source code: https://github.com/tinelix/irc-client-win32s +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s ///////////////////////////////////////////////////////////////////////////// // CConnManDlg dialog diff --git a/windows/win32s/dialogs/MainDlg.cpp b/windows/win32s/dialogs/MainDlg.cpp index f23078f..10d36da 100644 --- a/windows/win32s/dialogs/MainDlg.cpp +++ b/windows/win32s/dialogs/MainDlg.cpp @@ -1,6 +1,6 @@ // MainDlg.cpp : implementation file // -// Copyright © 2023 Dmitry Tretyakov (aka. Tinelix) +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) // // This file is part of Tinelix IRC Client. // @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along with this // program. If not, see https://www.gnu.org/licenses/. // -// Source code: https://github.com/tinelix/irc-client-win32s +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s #include "stdafx.h" #include @@ -130,32 +130,8 @@ BOOL CMainDlg::OnInitDialog() ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); - char app_path[640]; - sprintf(app_path, app->GetAppPath()); - - // Loading WSAWrapper library. - // Available in https://github.com/tinelix/WSAWrapper (LGPLv2.1+) - char wsawrap_path[640]; - sprintf(wsawrap_path, "%s\\wsawrap.dll", app_path); - char ircpars_path[640]; - sprintf(ircpars_path, "%s\\ircpars.dll", app_path); - wsaWrap = LoadLibrary(wsawrap_path); conn_server = ""; - if(!wsaWrap) { - MessageBox("wsawrap.dll loading error", "Error", MB_OK|MB_ICONSTOP); - EnableWindow(FALSE); - return FALSE; - } - - ircParser = LoadLibrary(ircpars_path); - if(!ircParser) { - MessageBox("ircpars.dll loading error", "Error", MB_OK|MB_ICONSTOP); - EnableWindow(FALSE); - return FALSE; - } - - ImportDllFunctions(); (EnableDebug)(TRUE); CMenu* pSysMenu = GetSystemMenu(FALSE); @@ -324,7 +300,10 @@ void CMainDlg::PrepareConnect(int result) { } } -void CMainDlg::ImportDllFunctions() { +void CMainDlg::ImportDllFunctions(HINSTANCE _wsaWrap, HINSTANCE _ircParser) { + wsaWrap = _wsaWrap; + ircParser = _ircParser; + // Running EnableDebugging function (#14) in WSAWrapper DLL EnableDebug = (EnableDebugging)GetProcAddress(wsaWrap, MAKEINTRESOURCE(14)); // Running EnableAsyncMessages function (#15) in WSAWrapper DLL diff --git a/windows/win32s/dialogs/MainDlg.h b/windows/win32s/dialogs/MainDlg.h index 6b757f4..8d5b00c 100644 --- a/windows/win32s/dialogs/MainDlg.h +++ b/windows/win32s/dialogs/MainDlg.h @@ -1,6 +1,6 @@ // MainDlg.h : header file // -// Copyright © 2023 Dmitry Tretyakov (aka. Tinelix) +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) // // This file is part of Tinelix IRC Client. // @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along with this // program. If not, see https://www.gnu.org/licenses/. // -// Source code: https://github.com/tinelix/irc-client-win32s +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s ///////////////////////////////////////////////////////////////////////////// // CMainDlg dialog @@ -32,6 +32,8 @@ class CMainDlg : public CDialog CMainDlg(CWnd* pParent = NULL); // standard constructor + void ImportDllFunctions(HINSTANCE _wsaWrap, HINSTANCE _ircParser); + // Dialog Data //{{AFX_DATA(CMainDlg) enum { IDD = IDD_MAINDIALOG }; @@ -54,7 +56,6 @@ class CMainDlg : public CDialog void CreateTabs(); void PrepareConnect(LPSTR address, int port); void PrepareConnect(int result); - void ImportDllFunctions(); void IdentificateConnection(); void SendPing(CString ping_hexcode); CString ParseMessage(char* irc_packet); diff --git a/windows/win32s/dialogs/ProgressDlg.cpp b/windows/win32s/dialogs/ProgressDlg.cpp index 8dde465..b036fce 100644 --- a/windows/win32s/dialogs/ProgressDlg.cpp +++ b/windows/win32s/dialogs/ProgressDlg.cpp @@ -1,6 +1,6 @@ -// ProgressDlg.cpp : implementation file +// ProgressDlg.cpp : implementation file // -// Copyright © 2023 Dmitry Tretyakov (aka. Tinelix) +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) // // This file is part of Tinelix IRC Client. // @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along with this // program. If not, see https://www.gnu.org/licenses/. // -// Source code: https://github.com/tinelix/irc-client-win32s +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s #include "stdafx.h" #include "..\Tinelix IRC.h" diff --git a/windows/win32s/dialogs/ProgressDlg.h b/windows/win32s/dialogs/ProgressDlg.h index a19950f..00e9349 100644 --- a/windows/win32s/dialogs/ProgressDlg.h +++ b/windows/win32s/dialogs/ProgressDlg.h @@ -1,6 +1,6 @@ // ProgressDlg.h : header file // -// Copyright © 2023 Dmitry Tretyakov (aka. Tinelix) +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) // // This file is part of Tinelix IRC Client. // @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along with this // program. If not, see https://www.gnu.org/licenses/. // -// Source code: https://github.com/tinelix/irc-client-win32s +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s ///////////////////////////////////////////////////////////////////////////// // CProgressDlg dialog diff --git a/windows/win32s/dialogs/StatisticsDlg.cpp b/windows/win32s/dialogs/StatisticsDlg.cpp index 7e5cf07..8c4728c 100644 --- a/windows/win32s/dialogs/StatisticsDlg.cpp +++ b/windows/win32s/dialogs/StatisticsDlg.cpp @@ -1,6 +1,6 @@ -// StatisticsDlg.cpp : implementation file +// StatisticsDlg.cpp : implementation file // -// Copyright © 2023 Dmitry Tretyakov (aka. Tinelix) +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) // // This file is part of Tinelix IRC Client. // @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along with this // program. If not, see https://www.gnu.org/licenses/. // -// Source code: https://github.com/tinelix/irc-client-win32s +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s #include "stdafx.h" #include "..\Tinelix IRC.h" diff --git a/windows/win32s/dialogs/StatisticsDlg.h b/windows/win32s/dialogs/StatisticsDlg.h index c6671a5..2616531 100644 --- a/windows/win32s/dialogs/StatisticsDlg.h +++ b/windows/win32s/dialogs/StatisticsDlg.h @@ -1,6 +1,6 @@ // StatisticsDlg.h : header file // -// Copyright © 2023 Dmitry Tretyakov (aka. Tinelix) +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) // // This file is part of Tinelix IRC Client. // @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along with this // program. If not, see https://www.gnu.org/licenses/. // -// Source code: https://github.com/tinelix/irc-client-win32s +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s ///////////////////////////////////////////////////////////////////////////// // CStatisticsDlg dialog diff --git a/windows/win32s/dialogs/TextBoxDlg.cpp b/windows/win32s/dialogs/TextBoxDlg.cpp index f065443..0842a58 100644 --- a/windows/win32s/dialogs/TextBoxDlg.cpp +++ b/windows/win32s/dialogs/TextBoxDlg.cpp @@ -1,5 +1,21 @@ -// TextBoxDlg.cpp : implementation file +// TextBoxDlg.cpp : implementation file // +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) +// +// This file is part of Tinelix IRC Client. +// +// Tinelix IRC Client 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 3 of the License, or (at your option) any later version. +// Tinelix IRC Client 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, see https://www.gnu.org/licenses/. +// +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s #include "stdafx.h" #include "..\Tinelix IRC.h" diff --git a/windows/win32s/dialogs/TextBoxDlg.h b/windows/win32s/dialogs/TextBoxDlg.h index c57865f..d7713af 100644 --- a/windows/win32s/dialogs/TextBoxDlg.h +++ b/windows/win32s/dialogs/TextBoxDlg.h @@ -1,5 +1,21 @@ -// TextBoxDlg.h : header file +// TextBoxDlg.h : header file // +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) +// +// This file is part of Tinelix IRC Client. +// +// Tinelix IRC Client 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 3 of the License, or (at your option) any later version. +// Tinelix IRC Client 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, see https://www.gnu.org/licenses/. +// +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s ///////////////////////////////////////////////////////////////////////////// // CTextBoxDlg dialog diff --git a/windows/win32s/libs/IRCParser/Tinelix IRC Parser.mdp b/windows/win32s/libs/IRCParser/Tinelix IRC Parser.mdp index 6969602233fbca9f909eb4d807a9914fe088caba..0123230008f1f3e4eab6d00f3b62776252cc281a 100644 GIT binary patch literal 35328 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 N?_%!8gXMuK_FqkKXHftE literal 36352 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 diff --git a/windows/win32s/libs/IRCParser/Tinelix IRC Parser.ncb b/windows/win32s/libs/IRCParser/Tinelix IRC Parser.ncb index b7be3838555e8d104915f4de31ade8645c2b0cba..8e1314ddc99b534ca7dade8a09e208dd9a0ef1e3 100644 GIT binary patch delta 826 zcmb7COK1~O6g@9*l1yR}joNCHG#{&&g&5IFp&(c~g#-#p8?{2fXcKKDCed1SXHdlW z3pOtp-MFd*+-Mzey6i?N)P)Ow$;KeKa3OA7C8)h!n6l?DVSfdsxF(Ppw-o1wYQ=?Kl8W4ri zE^)Q+T0J^aH&rGi&LOGR><><{L@`vk@SRtZ4%Kn~8)s&frIwjV4+=}FY#(gjK1qEr z5E2hkWyz59Lozd;4N+3qM*6g{!rt>|DaM&^crY=ZpE);~o=(IwxpX#jF*Y`wxRA;1 z**z^jC?5Y5Rw?n-OYlTXcL(~(u0dqhof_x$UG{^NEU%eZ6Xt_x)=eSyy;oSg`CTfi5Bjj)MeA#5iY zl@F4e-7>3`O*^s&5dAV3*#h9I_kRq2OMNUL-ts-oBYSfD^ctuQ7ge1iYrg8}+ z9+={?BVq025EZl#r^qi51T7>;w7fzDE7N&}uzus6jg8Yh^S(3eJo`nBY}Cj$r!!9h zym;y3#9rPNZ^gjT!?Zt2)0DMM-udBa<@6l^I=Nr}w(*Q)$4zD?64Db?SL zxGMF>^=Rp7S^J1;$q%o8levAbpoS9Imq~ zIWyAw%HlxYx3jcDO}{JBzS!j<(F#pbZ-u@bl)FOITcPIX@*knK-g%9BdoQAFg`NMP(PsTB-l9A7Uc}(Z@v6luZN4KT~}iF n6U#BB2g6Z52t5^+81zEu>CIZreD4g4or<%OY$fbj!e9LcC2Ei= diff --git a/windows/win32s/tabs/AppThreadTab.cpp b/windows/win32s/tabs/AppThreadTab.cpp index 68b0dae..3d1109d 100644 --- a/windows/win32s/tabs/AppThreadTab.cpp +++ b/windows/win32s/tabs/AppThreadTab.cpp @@ -1,6 +1,6 @@ // appthreadtab.cpp : implementation file // -// Copyright © 2023 Dmitry Tretyakov (aka. Tinelix) +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) // // This file is part of Tinelix IRC Client. // @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along with this // program. If not, see https://www.gnu.org/licenses/. // -// Source code: https://github.com/tinelix/irc-client-win32s +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s #include "stdafx.h" #include "..\Tinelix IRC.h" diff --git a/windows/win32s/tabs/AppThreadTab.h b/windows/win32s/tabs/AppThreadTab.h index 3e2ede3..78357ff 100644 --- a/windows/win32s/tabs/AppThreadTab.h +++ b/windows/win32s/tabs/AppThreadTab.h @@ -1,6 +1,6 @@ // appthreadtab.h : header file // -// Copyright © 2023 Dmitry Tretyakov (aka. Tinelix) +// Copyright © 2023, 2024 Dmitry Tretyakov (aka. Tinelix) // // This file is part of Tinelix IRC Client. // @@ -15,7 +15,7 @@ // You should have received a copy of the GNU General Public License along with this // program. If not, see https://www.gnu.org/licenses/. // -// Source code: https://github.com/tinelix/irc-client-win32s +// Source code: https://github.com/tinelix/irc-client-legacy/tree/main/windows/win32s ///////////////////////////////////////////////////////////////////////////// // CAppThreadTab dialog