Compare commits
922 Commits
Author | SHA1 | Date | |
---|---|---|---|
9b9ca27987 | |||
6187b35fa6 | |||
6cf54d6515 | |||
9344373e0b | |||
3d1d9e1716 | |||
e18a086ccf | |||
0838f8f688 | |||
b3bcf71981 | |||
6d03ddc4f4 | |||
5706550cc1 | |||
af7463e2bc | |||
e13e0f4314 | |||
31843017d4 | |||
0e0efbdb9a | |||
a93e152912 | |||
fdd922433b | |||
8c00a4ff40 | |||
5f5c44620b | |||
637c153de3 | |||
a800765b70 | |||
f92e72a92c | |||
0f6434986f | |||
f43b7524e0 | |||
cd1b9f42be | |||
4320d88b90 | |||
cba4462458 | |||
30de7a1377 | |||
011514e1ad | |||
6fb8cf40e1 | |||
015cecf724 | |||
904493b24f | |||
95f9ca917e | |||
0dccf692d4 | |||
7435572282 | |||
17671ec694 | |||
187c04f7e2 | |||
5af678d2b9 | |||
1265eee9e5 | |||
e5f7441bae | |||
6ef41f7d4f | |||
fea144dd19 | |||
fea528c39d | |||
9599c29c46 | |||
fe71af15a7 | |||
b049757302 | |||
5fee31b1f0 | |||
e4413e0178 | |||
dc27640265 | |||
41c209bf45 | |||
231590f71e | |||
7e55e4ee73 | |||
8bdde3a2df | |||
c8b3eef351 | |||
5f297950a2 | |||
ccf49aa48d | |||
b66edd372e | |||
2a2eafcf1d | |||
8a0f2b1d21 | |||
660b860ddd | |||
f27b2e82fa | |||
f994ef3f92 | |||
b41bd594b0 | |||
0f828dd74f | |||
5e8bc980e1 | |||
4ca9672a92 | |||
1a3bfdce75 | |||
46e449f110 | |||
0487daf865 | |||
99ee7b6ef8 | |||
4cc764256c | |||
36950c0d46 | |||
caddb25711 | |||
d374f3ffe6 | |||
664da30ee4 | |||
e36855a21e | |||
fd0eeddcc9 | |||
b52650de5d | |||
71e54854ec | |||
e6e5659b11 | |||
dd128ce534 | |||
8f6a596057 | |||
85aff53a88 | |||
bed5a21700 | |||
12cd5cb64a | |||
0d4cde2ba8 | |||
45cfb71c3e | |||
40e8ca9f6e | |||
d3b4771103 | |||
22b5affbe6 | |||
b245f2f79e | |||
f35ae03a66 | |||
725aed43ff | |||
655b524ee6 | |||
b17c0276de | |||
ba399eb7f9 | |||
6d815ac688 | |||
93d0341f9c | |||
2f847428aa | |||
02275dff51 | |||
34cf164aa2 | |||
5f7321280e | |||
8d77fd6a57 | |||
b1b6255f38 | |||
e64aa93f85 | |||
4c1fd3ee67 | |||
10d3c15143 | |||
3a7fb4d8e1 | |||
8e55157e6a | |||
29e01daeae | |||
9f01950bcb | |||
ed5ead6a07 | |||
1b936965ee | |||
0cb025ff06 | |||
604337ccc7 | |||
b1a3c6135c | |||
9969282c72 | |||
a1f01aca0f | |||
83bf77f4d0 | |||
9ec4aa897a | |||
a466369356 | |||
007f49c39f | |||
6487e1b391 | |||
e962039f83 | |||
6964079673 | |||
c9818adfb1 | |||
eb1d3a063a | |||
1d6d737927 | |||
efcb850956 | |||
35e84f6edc | |||
7fcf70c539 | |||
4510e8e2a2 | |||
92a3a34785 | |||
4d1dc12a31 | |||
63edd4555b | |||
10a03f2216 | |||
f7e3be4849 | |||
58a3980372 | |||
093bdd8b1c | |||
681e14b3b8 | |||
38cbabea02 | |||
ce09cb4a91 | |||
fa1eb92a7b | |||
eb29de1c7c | |||
0297da4d6e | |||
eb90f076bb | |||
c2c705a945 | |||
6f6070b8c8 | |||
37d92dd69c | |||
8af9727937 | |||
7b0acb2b44 | |||
4319f8009c | |||
b2e3214d61 | |||
0b52ec3676 | |||
599b9b0379 | |||
a87b61c73f | |||
c804179a99 | |||
baa5f9710a | |||
37135cd682 | |||
0f0dabdcf4 | |||
a817072e6f | |||
2ea1a992b1 | |||
649e962e6d | |||
7337007fe2 | |||
6e049d5975 | |||
b2a780e97a | |||
aae6633c28 | |||
91ea5b6907 | |||
20d26aea94 | |||
9cba22c38a | |||
1e1ef1c6cf | |||
537fb85696 | |||
2bd1c3f99d | |||
c531db4714 | |||
c7bf4b0474 | |||
61ceaef57e | |||
afb6685593 | |||
1311748b06 | |||
7537bf8f07 | |||
96fd4949bd | |||
f87071b7e2 | |||
5e455be5f3 | |||
d7e3e4c9a4 | |||
26268d3188 | |||
407613a8db | |||
ae4e55b922 | |||
40f26429f8 | |||
60ea2874b3 | |||
d38bbb1e2c | |||
5c223ec5d5 | |||
a656cee382 | |||
9772eae568 | |||
a45ba5bdc0 | |||
2bbb2ac7db | |||
5331a6145b | |||
5c872eb110 | |||
9834301eda | |||
3821e7a750 | |||
1aca24f3de | |||
811caaaa3d | |||
3f1994f3bf | |||
39aec3a45b | |||
e8282d97f1 | |||
2e75068c7c | |||
af248ce2c1 | |||
7e6f37b4cd | |||
f178b551da | |||
9afd169362 | |||
9e5551aa59 | |||
e8d4f3f848 | |||
30a47cf62e | |||
aadee8afba | |||
a1c9294b89 | |||
7cf9ea83cb | |||
d1de138cb1 | |||
cff05cef68 | |||
120a5a1dcd | |||
36e41a6476 | |||
0ff2ade078 | |||
bb5d589c79 | |||
6d3c176ff8 | |||
a25363f5c3 | |||
a72d40284d | |||
4a591cf7d7 | |||
19e3fce2eb | |||
62735c54fb | |||
712cfc3135 | |||
20c9c94a61 | |||
ad1520b29a | |||
06a7d84b43 | |||
d960006de4 | |||
cf5e2f273f | |||
f342123d7f | |||
aac231d307 | |||
0e8069661f | |||
737325b417 | |||
bc3b923131 | |||
c6ad450151 | |||
a284219abd | |||
2e08b3a2da | |||
57d168e56a | |||
490b9a91e4 | |||
80cbc74b2b | |||
cf370d7e79 | |||
fd13e4046f | |||
1b07c0f54b | |||
d941af5a6f | |||
e2edbfe47d | |||
0061cd38d0 | |||
8311c3aa56 | |||
80625a06fa | |||
adab8567e4 | |||
0b228246ba | |||
cbf275777c | |||
04f34feb26 | |||
c226f4089a | |||
e244001cee | |||
0a0bb57b2a | |||
5ad9552365 | |||
111a58f1ef | |||
1f06922803 | |||
2d5cb3ec7b | |||
44ad5703ea | |||
b393d2f62f | |||
0c3220c469 | |||
e52905f50c | |||
075cc61c94 | |||
aafbb6374b | |||
c463236521 | |||
435e8881ed | |||
cc6de3f665 | |||
b1df2f43aa | |||
65eb233f9c | |||
e10faa0369 | |||
4ec0e6fd05 | |||
a47740636d | |||
a29ccffcbe | |||
fa955a0f1a | |||
301e5d260d | |||
da680f1066 | |||
67a488033b | |||
f6dd61cb02 | |||
eb93130cd3 | |||
d643056ca0 | |||
ba74e70ec1 | |||
6c3d201070 | |||
af2458f556 | |||
3cb4439121 | |||
19ef48d0e8 | |||
7ba2f1f17f | |||
a831ecfd01 | |||
b7e8f64bba | |||
76b1c2f1ed | |||
83fcb52085 | |||
0791c8f069 | |||
247d84fbd1 | |||
00bd389cdc | |||
1f84c507a0 | |||
4ba886f7aa | |||
d552415abe | |||
c537dae7f8 | |||
0d2feba69c | |||
5465790886 | |||
958f4099f1 | |||
449553ffb0 | |||
960ded7db4 | |||
a14fe580f8 | |||
f23bda9e46 | |||
ef73a89139 | |||
61b58fd5be | |||
60ba4d651c | |||
5a6a03af0b | |||
6f013e807c | |||
d18a95fda6 | |||
c7a00a4aba | |||
7bc3317eeb | |||
8028bb7f82 | |||
6fc412c4e2 | |||
0749cb1553 | |||
f198581a09 | |||
4c9b193b45 | |||
130be78dbb | |||
29d6db30ba | |||
2e6001f1ed | |||
9c4112cda7 | |||
04dbcdffc0 | |||
0146a38faa | |||
145ceba124 | |||
90ea691b75 | |||
51cdcfca82 | |||
ae04663aa9 | |||
9f8073ab77 | |||
bfa199be79 | |||
36911710fd | |||
267ac71d4f | |||
f6ba274134 | |||
cd825ac735 | |||
1007af9506 | |||
b67953c70c | |||
1a67e245ac | |||
648de4410c | |||
b658fca4a7 | |||
277732e384 | |||
f13413c26a | |||
c9418ffca3 | |||
ddb3bf05d8 | |||
8b463e6b14 | |||
bc8eaf6588 | |||
b0b8f40791 | |||
aa37686bbd | |||
4721a3747e | |||
e5cb69db5d | |||
414b591358 | |||
ccd4945504 | |||
59b19bac70 | |||
14b8a77b78 | |||
a71849db3f | |||
a2eb3325ce | |||
b9df78b9c6 | |||
9a3c1ccd72 | |||
68116da5ad | |||
68153812f7 | |||
bb1062ae2a | |||
bdb18828e3 | |||
a903f16c68 | |||
5feeb717a0 | |||
703316ace6 | |||
88afa4afa2 | |||
bf269d2e03 | |||
755932c3bc | |||
4c406bce17 | |||
3a87dedbb5 | |||
731fd33be2 | |||
ffc47e8439 | |||
cc9d6042fd | |||
012b9c478e | |||
5d35ecfaa9 | |||
21bf0ae998 | |||
9d0ea7af4b | |||
08fd4f2dd7 | |||
8f0d6e85fd | |||
7dea09c371 | |||
ce5653d75c | |||
36b84c9af3 | |||
d13046614e | |||
53e30995d6 | |||
0c4e343b46 | |||
e6394cafe2 | |||
fabc5bf4b7 | |||
d601335aa6 | |||
d6dacbe955 | |||
616c669d3b | |||
d52cc1a1bd | |||
43a2f43090 | |||
b3369a4bc4 | |||
b5b547abb6 | |||
4e775df156 | |||
bf0ff98385 | |||
66412e4997 | |||
77c1edbe13 | |||
46c32952b0 | |||
41719bd4a8 | |||
9629ca3fd9 | |||
a3ab5edc59 | |||
8fbcddd2cd | |||
73d63ca3da | |||
721a9965aa | |||
4f77f046d0 | |||
0b95c1c444 | |||
41c0c345cd | |||
c8f6d2c538 | |||
b2d2187b20 | |||
b8894a468d | |||
1c30e0c124 | |||
4dc600a63c | |||
13bfd060b6 | |||
1370a49742 | |||
ab6bf4234c | |||
5224c275e8 | |||
272b3d2f82 | |||
2528a78593 | |||
2917a83d7b | |||
77e9417c7b | |||
e8456beadc | |||
d63a33b6dc | |||
bdc814a4a4 | |||
ce40e5a111 | |||
61c9ad08bf | |||
bca0ad8e1e | |||
6ec7bfad30 | |||
0e76283c9a | |||
78a72a6c1e | |||
4a95b07ae7 | |||
154ea98deb | |||
be252e271f | |||
e2328e7a91 | |||
942b92c796 | |||
3bd2143d9a | |||
93cfa353e7 | |||
2cbe758c80 | |||
72c6834cc5 | |||
ac06b74b18 | |||
1fd94e79b9 | |||
bb3cb269c2 | |||
715a520c0e | |||
78d14a2b1e | |||
3d10b9f3e2 | |||
f97f1a08ae | |||
13e9713b72 | |||
bf9276fc5c | |||
fe86c4900f | |||
f45487e92c | |||
bca972bdc3 | |||
a8abba84bd | |||
2e2f4662f3 | |||
0c87c49146 | |||
6c8d9c2194 | |||
62d52d55b2 | |||
3598966069 | |||
ec6f5b011a | |||
9d4a1a3b4f | |||
9978ebd853 | |||
18eaccb840 | |||
e63ec01089 | |||
e0fb3d537d | |||
19d4356484 | |||
be1e6bde65 | |||
f113008c7f | |||
5e240eb259 | |||
7101b7b864 | |||
98aa62f637 | |||
798db7368a | |||
4cf61ccedb | |||
7f50ee6fd2 | |||
1544a5d6cb | |||
3284502645 | |||
4cc03aba75 | |||
286bbc6bde | |||
d1244d7231 | |||
50219a63ad | |||
806c75f051 | |||
ee621d2435 | |||
340811da6e | |||
4b40597c76 | |||
9a789bc9e7 | |||
4886cc8258 | |||
82277a80ea | |||
22064278df | |||
932bfa3482 | |||
5de5d6d00b | |||
aab55d8cff | |||
73c9321361 | |||
25288120be | |||
d99d951f7f | |||
00e15828a1 | |||
ad926e9b07 | |||
059cbcd406 | |||
dcdb11a78b | |||
aef9e3922e | |||
ce6fef3d0a | |||
4057b7dd58 | |||
d1725e3f44 | |||
42da8fe3ef | |||
a01bd83c64 | |||
6a0240aa18 | |||
179747a7bc | |||
94186f7888 | |||
ac5771377e | |||
863dc2e841 | |||
59b9ee3417 | |||
3285934703 | |||
c7d1102c61 | |||
6e3f05fcc7 | |||
d8286a63ec | |||
9854b100fb | |||
ef5588b9c0 | |||
64ba92593e | |||
33b5dc1c75 | |||
02139fbb79 | |||
9ef1d1db96 | |||
225acd0ce2 | |||
b4496216db | |||
d88c4ad411 | |||
8b217981ed | |||
8ce8a359c1 | |||
55734baed8 | |||
52ce55341b | |||
e4b6f4b375 | |||
32dee82c58 | |||
2870586cf9 | |||
cb1975f450 | |||
805b33552b | |||
6bc05a8bc8 | |||
3ffae231de | |||
6a7557da01 | |||
d7045e2b61 | |||
e68635b8e4 | |||
7ef8d0d443 | |||
9b958ed393 | |||
84e8c658f6 | |||
21a5eb2702 | |||
1d62465e5b | |||
cb1b1c6e1c | |||
8be56d7003 | |||
8ce1a9476d | |||
0689b54827 | |||
b569943059 | |||
eb001433e4 | |||
a591c875ae | |||
08cd36bef0 | |||
5d0599976e | |||
2e014bbc72 | |||
88e9611444 | |||
97e88b885a | |||
f84476cf87 | |||
473ab16739 | |||
951292abe1 | |||
612032c9f8 | |||
0dd9ac2e44 | |||
8f551de4f4 | |||
0c2e08cf2b | |||
0e420fbee8 | |||
cf505b850b | |||
fd762303b0 | |||
a6f05db34b | |||
df0ee53765 | |||
d0b3476839 | |||
4d16f5bf28 | |||
c45cc78548 | |||
d16aedf6c4 | |||
d3a27947fe | |||
42e3587fd5 | |||
e3f699a9d8 | |||
5201f0fd06 | |||
df0e97550b | |||
983b4ace89 | |||
f0684dc74e | |||
39923e05f3 | |||
51bf9165b2 | |||
f1735f3ae1 | |||
2ba785f648 | |||
c9b7a3f86e | |||
43bd9483ce | |||
1277b4c30f | |||
e1ce1c90f7 | |||
f45c2dd061 | |||
855c20501b | |||
945251c6b8 | |||
e47dd3eb89 | |||
c9c8993b9d | |||
d934e60c2b | |||
11478719cd | |||
7284addb09 | |||
270cde42f1 | |||
b690098941 | |||
fffe9f4bd9 | |||
7353bf2698 | |||
133b0f7d94 | |||
4878012065 | |||
4402ea34de | |||
faa53a5335 | |||
44a88fc1ab | |||
d3ce4f64f6 | |||
fcdd85ae5e | |||
fd71bb768a | |||
66bb79ef10 | |||
3b4cc9d806 | |||
79221c403b | |||
0ab11cc09a | |||
1432ecfb33 | |||
341cfbb527 | |||
78573ae0c9 | |||
8a9d3e21f2 | |||
8655c4b007 | |||
5fa23341b3 | |||
67274f91e9 | |||
c0cc6a2c93 | |||
b2fec642fe | |||
d60cecb8d3 | |||
c168a9adc6 | |||
f778245a86 | |||
5701ba287b | |||
c471388021 | |||
9d717ffee9 | |||
bac96d1fa8 | |||
f313a83474 | |||
9891f94e41 | |||
a22ae9f39a | |||
02298c8e76 | |||
73badc67ff | |||
1181b56211 | |||
78eb3e7522 | |||
57b74c3de9 | |||
c83ca8f85a | |||
ef58a267b0 | |||
4130954c15 | |||
0a2af0ab62 | |||
a1a94ed319 | |||
096d0660e2 | |||
b28734c4a8 | |||
69c2893234 | |||
89078eb3b3 | |||
26cefd0587 | |||
8ccd11ee4b | |||
fd1b276aab | |||
2ff8e74061 | |||
0020f81e79 | |||
6f09752db4 | |||
8cf025f18d | |||
81990ce53b | |||
12cdb7704c | |||
947dd45294 | |||
a435e8648f | |||
25d0793766 | |||
5c9652bf13 | |||
7a242a8331 | |||
7cdfeff204 | |||
83107ee222 | |||
d9d05e83ba | |||
631664645d | |||
61ed0829bd | |||
f023de0faf | |||
7238853f0f | |||
6a8cad6f94 | |||
2c15270be1 | |||
c044bdfe32 | |||
aac7079562 | |||
cadcfc553c | |||
5df669a329 | |||
4c307f6ac9 | |||
37aa38617e | |||
07acb6f7b6 | |||
9c96528a98 | |||
9327a5c71f | |||
171dbcdedf | |||
de819e12bf | |||
198dc9eb43 | |||
04d282fae3 | |||
bb86771425 | |||
791e0fc11f | |||
0badd9b874 | |||
af03fa3c7c | |||
4d30512e05 | |||
d5e8fa47f0 | |||
85c7e07351 | |||
fde85c79df | |||
712eb5428e | |||
5c663adf35 | |||
68fa033483 | |||
b33f70571e | |||
cdc2bb0216 | |||
250d9b565c | |||
6e7c0395e1 | |||
be35154376 | |||
de2fdc093a | |||
3679dfe93e | |||
2e1425451d | |||
0e1da0d33d | |||
7b0b86c9f7 | |||
a98b95923b | |||
cf3d1ebb8b | |||
5db1541f95 | |||
873a3ef047 | |||
beb3ab506d | |||
494364d437 | |||
2f1f2c6a85 | |||
66853d9715 | |||
cf59ad2c76 | |||
dba9c42473 | |||
f8556360ca | |||
28fe051aa5 | |||
607e5a567c | |||
df31e239a9 | |||
df7a15e910 | |||
860ef759f5 | |||
4ba79fd489 | |||
fb01d4e9ab | |||
b2317d8800 | |||
3283c71936 | |||
22a0d5a3fb | |||
46443cbd1c | |||
efd21ce982 | |||
c4e96dd481 | |||
65e384523a | |||
80aee2af6c | |||
1f525a6f4b | |||
ffa1ea7358 | |||
ce7eb02601 | |||
ce80e571f2 | |||
11044c6264 | |||
7243f5bc2c | |||
863ff811e6 | |||
414ab39db5 | |||
ba78c0527f | |||
fb696b7a68 | |||
295da18414 | |||
8272df5ec2 | |||
99fed089cf | |||
e3fd501057 | |||
7403dfa9aa | |||
b08d9cfb56 | |||
1969db5f94 | |||
866299b508 | |||
c4384265e4 | |||
b4c885861d | |||
d9be5e098f | |||
0a54efdd0c | |||
708c5a7347 | |||
50373f4ff9 | |||
2df866bdf8 | |||
5b8567919d | |||
77cad8e716 | |||
700d699f5b | |||
87413e9d3c | |||
dbe6deab45 | |||
b2ae3b9dd1 | |||
92dca50dfc | |||
a3ba8d575e | |||
ea48d18130 | |||
4547719358 | |||
bb878848f7 | |||
5bb284267b | |||
7e3c8c461e | |||
24034b5b8b | |||
78f9f3f87c | |||
bc1169e979 | |||
012105e115 | |||
5c5eb1df14 | |||
e714c7d53f | |||
78e39bfb1c | |||
7323f7c561 | |||
c6513ea7a2 | |||
6001ceff9f | |||
8e3db00dac | |||
d20dccbe02 | |||
e834783cb8 | |||
01f24aae07 | |||
584dc6a626 | |||
756080831d | |||
ffce6c5788 | |||
565a492724 | |||
6982bbfef9 | |||
07bc467d03 | |||
a39f8ea71f | |||
4ad9a69aeb | |||
ee200b97aa | |||
fc659a67f0 | |||
de0b0b9467 | |||
eef74ed263 | |||
facf0ab9c4 | |||
5318c953ed | |||
2550a94f05 | |||
bd73c80152 | |||
43cbe83d61 | |||
075c5dfad6 | |||
ba1dfabf11 | |||
9603248a5b | |||
4e891102f2 | |||
bc1c84347d | |||
2db01371b3 | |||
e17a9c6503 | |||
3994126a09 | |||
70174be823 | |||
9254f9284c | |||
c819adf830 | |||
13c717159d | |||
4c90a9b2d5 | |||
a14bd119b7 | |||
f9cf25f797 | |||
450b92f6c0 | |||
9790151ec0 | |||
3fbea449b5 | |||
02cdc57eb5 | |||
d7571ce1e3 | |||
ccc8601624 | |||
7e2ae20ecf | |||
b856065167 | |||
f3efdaf40f | |||
86564c8741 | |||
a5eb7784c6 | |||
f0d0f90e13 | |||
27d828172d | |||
a7ffdf3d65 | |||
dd624950c6 | |||
b407bfa168 | |||
069a6adb19 | |||
9dd2c85df4 | |||
b7f0f6abc8 | |||
ea0479998a | |||
9272eb4325 | |||
4e601cf14c | |||
db582a4e5c | |||
059e4ec9c8 | |||
a96be226b2 | |||
bed00e525d | |||
096e837ece | |||
e67371d269 | |||
a996549577 | |||
9917b7e3df | |||
541f221a61 | |||
44a2ed5a97 | |||
ba3f4daee8 | |||
2d3d4db16b | |||
0c351c9cbc | |||
cc1f2b2d27 | |||
6ee3a4a978 | |||
5326f76a40 | |||
7f86fbad1e | |||
30fa189cbb | |||
2fdb2a8b6f | |||
b07e5fafaf | |||
ba1a1ab28d | |||
a9643234ae | |||
7870c8028f | |||
6510e8961e | |||
6e8b7367d7 | |||
feb5b41642 | |||
36694afe0e | |||
a99111172d | |||
780c3d29c7 | |||
1a7831df2a | |||
924178cde7 | |||
77fa72924b | |||
b90633d406 | |||
cd64e02096 | |||
ad820cef8a | |||
68de2bcb00 | |||
68b6be11d6 | |||
d13ae114a2 | |||
3a6103564e | |||
0424e5a329 | |||
561ad635cd | |||
2427c095e5 | |||
ed27009285 | |||
92654bdd9b | |||
fdf7ec22f5 | |||
3c4a154f0a | |||
c766b24920 | |||
af652a6639 | |||
812628acb2 | |||
6b86940b7b | |||
08d948435d | |||
5004f69b5e | |||
bc5d16c4fb | |||
c2a5b4fb7d | |||
cca8ab4640 | |||
d964af8142 | |||
7746ff9a12 | |||
c4cf67bee4 | |||
a1daf03538 | |||
2be0530c34 | |||
b0d1c884e0 | |||
e0a7f0ae59 | |||
5779691efb | |||
496ed18e85 | |||
86cf7de430 | |||
477d7470c1 | |||
3706b51159 | |||
b4c8d53394 | |||
4c217d4ba3 | |||
23b2081385 | |||
0534b54e51 | |||
faf4575e9a | |||
52efe3abff | |||
59510cf8a1 | |||
905705910b | |||
bb78d8dd59 | |||
8b72d53dcc | |||
ef4aa16730 | |||
14b089ef90 | |||
b5fef8d0e2 | |||
561f3044d6 | |||
9c49254abd | |||
5e59578e28 | |||
7317535c28 | |||
920839cf1c | |||
d8eec06473 | |||
4748405277 | |||
13d574b455 | |||
2b13d0f527 | |||
e054a6512f | |||
eb5313f850 | |||
bf0fb9f327 |
31
.gitignore
vendored
@ -13,13 +13,17 @@ conftest.c
|
||||
conftest.err
|
||||
config.guess
|
||||
config.h.in
|
||||
config.h.in~
|
||||
config.h
|
||||
config.log
|
||||
config.status
|
||||
config.sub
|
||||
config-win32.h
|
||||
configure
|
||||
configure.tmp
|
||||
depcomp
|
||||
doxygen*.tmp
|
||||
html/
|
||||
install-sh
|
||||
intl/
|
||||
libtool
|
||||
@ -28,20 +32,32 @@ m4/
|
||||
missing
|
||||
plugins/perl/irc.pm.h
|
||||
plugins/perl/xchat.pm.h
|
||||
plugins/perl/hexchat.pm.h
|
||||
po/Makefile.in.in
|
||||
po/POTFILES
|
||||
po/remove-potcdate.sed
|
||||
po/stamp-po
|
||||
po/stamp-*
|
||||
osx/Info.plist
|
||||
data/man/hexchat.1
|
||||
data/pkgconfig/hexchat-plugin.pc
|
||||
data/misc/hexchat.appdata.xml
|
||||
data/misc/hexchat.desktop
|
||||
data/misc/htm.desktop
|
||||
src/common/dbus/example
|
||||
src/common/dbus/marshallers.h
|
||||
src/common/dbus/org.hexchat.service.service
|
||||
src/common/dbus/remote-object-glue.h
|
||||
src/common/make-te
|
||||
src/common/marshal.*
|
||||
src/common/textenums.h
|
||||
src/common/textevents.h
|
||||
src/fe-gtk/hexchat
|
||||
src/fe-gtk/hexchat.rc
|
||||
src/fe-text/hexchat-text
|
||||
src/htm/Main.resources
|
||||
src/htm/thememan.exe
|
||||
src/htm/thememan.exe.config
|
||||
src/htm/thememan.exe.mdb
|
||||
src/htm/thememan
|
||||
stamp-h1
|
||||
*.a
|
||||
*.o
|
||||
@ -50,18 +66,27 @@ stamp-h1
|
||||
*.gmo
|
||||
*.mo
|
||||
*.po~
|
||||
*.pot
|
||||
*.patch
|
||||
# Win32 generated files
|
||||
plugins/wmpa/wmpa_h.h
|
||||
plugins/wmpa/wmpa_i.c
|
||||
src/pixmaps/inline_pngs.h
|
||||
src/fe-gtk/resources.c
|
||||
src/htm/obj/*
|
||||
win32/ipch/*
|
||||
win32/ext/perl/perl-x86-cache
|
||||
win32/ext/perl/perl-x86-SetupFiles
|
||||
win32/ext/perl/perl-x64-cache
|
||||
win32/ext/perl/perl-x64-SetupFiles
|
||||
win32/installer/hexchat.iss
|
||||
resource.h
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.suo
|
||||
*.user
|
||||
#OSX
|
||||
osx/HexChat.app
|
||||
osx/.HexChat.app
|
||||
po/.intltool-merge-cache
|
||||
*.zip
|
||||
*.dmg
|
||||
|
14
.travis.yml
Normal file
@ -0,0 +1,14 @@
|
||||
language: c
|
||||
compiler: gcc
|
||||
before_script:
|
||||
- sudo apt-get build-dep -qq xchat
|
||||
- sudo apt-get install -qq libnotify-dev libproxy-dev libpci-dev libcanberra-dev monodevelop gnome-common
|
||||
script:
|
||||
- ./autogen.sh
|
||||
- ./configure --enable-textfe --with-theme-manager
|
||||
- make V=1
|
||||
notifications:
|
||||
irc:
|
||||
channels: "chat.freenode.net#hexchat-devel"
|
||||
template: "Build #%{build_number} (%{commit}) by %{author}: %{message}"
|
||||
on_success: change
|
17
.tx/config
@ -1,9 +1,8 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[hexchat.main]
|
||||
file_filter = po\<lang>.po
|
||||
source_file = po\hexchat.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
|
||||
[hexchat.main]
|
||||
file_filter = po/<lang>.po
|
||||
source_file = po/hexchat.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
|
@ -1,6 +1,8 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
SUBDIRS = po intl src plugins man share
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
|
||||
EXTRA_DIST = autogen.sh
|
||||
SUBDIRS = po src plugins data
|
||||
|
||||
EXTRA_DIST = autogen.sh data
|
||||
|
||||
|
123
autogen.sh
@ -1,113 +1,22 @@
|
||||
#!/bin/bash
|
||||
have_automake=false
|
||||
#!/bin/sh
|
||||
# Run this to generate all the initial makefiles, etc.
|
||||
|
||||
if automake --version < /dev/null > /dev/null 2>&1 ; then
|
||||
automake_version=`automake --version | grep 'automake (GNU automake)' | sed 's/^[^0-9]*\(.*\)/\1/'`
|
||||
case $automake_version in
|
||||
1.2*|1.3*|1.4|1.4*|1.5*|1.6*|1.7*|1.8*)
|
||||
;;
|
||||
*)
|
||||
have_automake=true
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
if $have_automake ; then
|
||||
AUTOMAKE="automake"
|
||||
ACLOCAL="aclocal"
|
||||
else
|
||||
if automake-1.9 --version < /dev/null > /dev/null 2>&1 ; then
|
||||
AUTOMAKE="automake-1.9"
|
||||
ACLOCAL="aclocal-1.9"
|
||||
else
|
||||
echo "automake missing or too old. This requires at least automake 1.9"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
srcdir=`dirname $0`
|
||||
test -z "$srcdir" && srcdir=.
|
||||
|
||||
# ------ START GETTEXT ------
|
||||
NOCONFIGURE=1
|
||||
PKG_NAME="hexchat"
|
||||
|
||||
echo searching for GNU gettext intl directory...
|
||||
(test -f $srcdir/src/common/hexchat.c) || {
|
||||
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
|
||||
echo " top-level $PKG_NAME directory"
|
||||
exit 1
|
||||
}
|
||||
|
||||
dirs="/usr/share /usr/local/share /opt/share /usr /usr/local /opt /usr/gnu/share /opt/local /opt/local/share"
|
||||
found=0
|
||||
for try in $dirs; do
|
||||
echo -n " -> $try/gettext/intl... "
|
||||
if test -d $try/gettext/intl; then
|
||||
echo found it
|
||||
found=1
|
||||
break
|
||||
fi
|
||||
echo no
|
||||
done
|
||||
if test "$found" != 1; then
|
||||
echo ERROR: Cannot find gettext/intl directory.
|
||||
echo ERROR: Install GNU gettext in /usr or /usr/local prefix.
|
||||
exit 7
|
||||
fi;
|
||||
which gnome-autogen.sh || {
|
||||
echo "You need to install gnome-common"
|
||||
exit 1
|
||||
}
|
||||
|
||||
echo copying gettext intl files...
|
||||
if test -f $try/gettext/mkinstalldirs; then
|
||||
ln -s $try/gettext/mkinstalldirs mkinstalldirs
|
||||
fi
|
||||
intldir="$try/gettext/intl"
|
||||
if test ! -d intl; then
|
||||
mkdir intl
|
||||
fi
|
||||
olddir=`pwd`
|
||||
cd $intldir
|
||||
for file in *; do
|
||||
if test $file != COPYING.LIB-2.0 && test $file != COPYING.LIB-2.1; then
|
||||
rm -f $olddir/intl/$file
|
||||
cp $intldir/$file $olddir/intl/
|
||||
fi
|
||||
done
|
||||
cp -f $try/gettext/po/Makefile.in.in $olddir/po/
|
||||
cd $olddir
|
||||
if test -f intl/plural.c; then
|
||||
sleep 2
|
||||
touch intl/plural.c
|
||||
fi
|
||||
. gnome-autogen.sh
|
||||
|
||||
# ------ END GETTEXT ------
|
||||
|
||||
|
||||
echo running $ACLOCAL...
|
||||
$ACLOCAL $ACLOCAL_FLAGS
|
||||
if test "$?" != "0"; then
|
||||
echo aclocal failed, stopping.
|
||||
exit 2
|
||||
fi
|
||||
echo running libtoolize...
|
||||
libtoolize --force
|
||||
if test "$?" != "0"; then
|
||||
echo libtoolize failed, stopping.
|
||||
exit 3
|
||||
fi
|
||||
echo running autoheader...
|
||||
autoheader
|
||||
if test "$?" != "0"; then
|
||||
echo autoheader failed, stopping.
|
||||
exit 4
|
||||
fi
|
||||
echo running $AUTOMAKE...
|
||||
$AUTOMAKE -a
|
||||
if test "$?" != "0"; then
|
||||
echo automake failed, stopping.
|
||||
exit 5
|
||||
fi
|
||||
echo running autoconf...
|
||||
autoconf
|
||||
if test "$?" != "0"; then
|
||||
echo autoconf failed, stopping.
|
||||
exit 6
|
||||
fi
|
||||
|
||||
echo if no errors occured, run ./configure
|
||||
exit 0
|
||||
|
||||
#autogen.sh generates:
|
||||
# aclocal.m4 Makefile.in config.guess config.sub ltmain.sh
|
||||
# configure install-sh missing mkinstalldirs depcomp
|
||||
#
|
||||
#configure generates:
|
||||
# config.status libtool Makefile.in
|
||||
|
@ -3,16 +3,17 @@
|
||||
#define USE_GMODULE
|
||||
#define USE_PLUGIN
|
||||
#define USE_OPENSSL
|
||||
#define USE_LIBSEXY
|
||||
#define USE_IPV6
|
||||
#define HAVE_ISO_CODES
|
||||
#define ISO_CODES_PREFIX ".\\"
|
||||
#define ISO_CODES_LOCALEDIR LOCALEDIR
|
||||
#define PACKAGE_NAME "hexchat"
|
||||
#define PACKAGE_VERSION "2.9.5"
|
||||
#define HEXCHATLIBDIR "."
|
||||
#define PACKAGE_VERSION "<#= [string]::Join('.', $versionParts) #>"
|
||||
#define HEXCHATLIBDIR ".\\plugins"
|
||||
#define HEXCHATSHAREDIR "."
|
||||
#define OLD_PERL
|
||||
#define GETTEXT_PACKAGE "hexchat"
|
||||
#define PACKAGE_TARNAME "hexchat-2.9.5"
|
||||
#define PACKAGE_TARNAME "hexchat-<#= [string]::Join('.', $versionParts) #>"
|
||||
#ifndef USE_IPV6
|
||||
#define socklen_t int
|
||||
#endif
|
672
config.rpath
@ -1,672 +0,0 @@
|
||||
#! /bin/sh
|
||||
# Output a system dependent set of variables, describing how to set the
|
||||
# run time search path of shared libraries in an executable.
|
||||
#
|
||||
# Copyright 1996-2010 Free Software Foundation, Inc.
|
||||
# Taken from GNU libtool, 2001
|
||||
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||||
#
|
||||
# This file is free software; the Free Software Foundation gives
|
||||
# unlimited permission to copy and/or distribute it, with or without
|
||||
# modifications, as long as this notice is preserved.
|
||||
#
|
||||
# The first argument passed to this file is the canonical host specification,
|
||||
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
|
||||
# or
|
||||
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
|
||||
# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
|
||||
# should be set by the caller.
|
||||
#
|
||||
# The set of defined variables is at the end of this script.
|
||||
|
||||
# Known limitations:
|
||||
# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
|
||||
# than 256 bytes, otherwise the compiler driver will dump core. The only
|
||||
# known workaround is to choose shorter directory names for the build
|
||||
# directory and/or the installation directory.
|
||||
|
||||
# All known linkers require a `.a' archive for static linking (except MSVC,
|
||||
# which needs '.lib').
|
||||
libext=a
|
||||
shrext=.so
|
||||
|
||||
host="$1"
|
||||
host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
|
||||
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
|
||||
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
|
||||
|
||||
# Code taken from libtool.m4's _LT_CC_BASENAME.
|
||||
|
||||
for cc_temp in $CC""; do
|
||||
case $cc_temp in
|
||||
compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
|
||||
distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
|
||||
\-*) ;;
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
|
||||
|
||||
# Code taken from libtool.m4's _LT_COMPILER_PIC.
|
||||
|
||||
wl=
|
||||
if test "$GCC" = yes; then
|
||||
wl='-Wl,'
|
||||
else
|
||||
case "$host_os" in
|
||||
aix*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
darwin*)
|
||||
case $cc_basename in
|
||||
xlc*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
mingw* | cygwin* | pw32* | os2* | cegcc*)
|
||||
;;
|
||||
hpux9* | hpux10* | hpux11*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
irix5* | irix6* | nonstopux*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
newsos6)
|
||||
;;
|
||||
linux* | k*bsd*-gnu)
|
||||
case $cc_basename in
|
||||
ecc*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
icc* | ifort*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
lf95*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
pgcc | pgf77 | pgf90)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
ccc*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
como)
|
||||
wl='-lopt='
|
||||
;;
|
||||
*)
|
||||
case `$CC -V 2>&1 | sed 5q` in
|
||||
*Sun\ C*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
osf3* | osf4* | osf5*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
rdos*)
|
||||
;;
|
||||
solaris*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
sunos4*)
|
||||
wl='-Qoption ld '
|
||||
;;
|
||||
sysv4 | sysv4.2uw2* | sysv4.3*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
sysv4*MP*)
|
||||
;;
|
||||
sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
unicos*)
|
||||
wl='-Wl,'
|
||||
;;
|
||||
uts4*)
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
|
||||
|
||||
hardcode_libdir_flag_spec=
|
||||
hardcode_libdir_separator=
|
||||
hardcode_direct=no
|
||||
hardcode_minus_L=no
|
||||
|
||||
case "$host_os" in
|
||||
cygwin* | mingw* | pw32* | cegcc*)
|
||||
# FIXME: the MSVC++ port hasn't been tested in a loooong time
|
||||
# When not using gcc, we currently assume that we are using
|
||||
# Microsoft Visual C++.
|
||||
if test "$GCC" != yes; then
|
||||
with_gnu_ld=no
|
||||
fi
|
||||
;;
|
||||
interix*)
|
||||
# we just hope/assume this is gcc and not c89 (= MSVC++)
|
||||
with_gnu_ld=yes
|
||||
;;
|
||||
openbsd*)
|
||||
with_gnu_ld=no
|
||||
;;
|
||||
esac
|
||||
|
||||
ld_shlibs=yes
|
||||
if test "$with_gnu_ld" = yes; then
|
||||
# Set some defaults for GNU ld with shared library support. These
|
||||
# are reset later if shared libraries are not supported. Putting them
|
||||
# here allows them to be overridden if necessary.
|
||||
# Unlike libtool, we use -rpath here, not --rpath, since the documented
|
||||
# option of GNU ld is called -rpath, not --rpath.
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
case "$host_os" in
|
||||
aix[3-9]*)
|
||||
# On AIX/PPC, the GNU linker is very broken
|
||||
if test "$host_cpu" != ia64; then
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
amigaos*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
# Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
|
||||
# that the semantics of dynamic libraries on AmigaOS, at least up
|
||||
# to version 4, is to share data among multiple programs linked
|
||||
# with the same dynamic library. Since this doesn't match the
|
||||
# behavior of shared libraries on other platforms, we cannot use
|
||||
# them.
|
||||
ld_shlibs=no
|
||||
;;
|
||||
beos*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
cygwin* | mingw* | pw32* | cegcc*)
|
||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||
# no search path for DLLs.
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
interix[3-9]*)
|
||||
hardcode_direct=no
|
||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||
;;
|
||||
gnu* | linux* | k*bsd*-gnu)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
netbsd*)
|
||||
;;
|
||||
solaris*)
|
||||
if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
|
||||
ld_shlibs=no
|
||||
elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
|
||||
case `$LD -v 2>&1` in
|
||||
*\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
sunos4*)
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
*)
|
||||
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
|
||||
:
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
if test "$ld_shlibs" = no; then
|
||||
hardcode_libdir_flag_spec=
|
||||
fi
|
||||
else
|
||||
case "$host_os" in
|
||||
aix3*)
|
||||
# Note: this linker hardcodes the directories in LIBPATH if there
|
||||
# are no directories specified by -L.
|
||||
hardcode_minus_L=yes
|
||||
if test "$GCC" = yes; then
|
||||
# Neither direct hardcoding nor static linking is supported with a
|
||||
# broken collect2.
|
||||
hardcode_direct=unsupported
|
||||
fi
|
||||
;;
|
||||
aix[4-9]*)
|
||||
if test "$host_cpu" = ia64; then
|
||||
# On IA64, the linker does run time linking by default, so we don't
|
||||
# have to do anything special.
|
||||
aix_use_runtimelinking=no
|
||||
else
|
||||
aix_use_runtimelinking=no
|
||||
# Test if we are trying to use run time linking or normal
|
||||
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
|
||||
# need to do runtime linking.
|
||||
case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
|
||||
for ld_flag in $LDFLAGS; do
|
||||
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
|
||||
aix_use_runtimelinking=yes
|
||||
break
|
||||
fi
|
||||
done
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
hardcode_direct=yes
|
||||
hardcode_libdir_separator=':'
|
||||
if test "$GCC" = yes; then
|
||||
case $host_os in aix4.[012]|aix4.[012].*)
|
||||
collect2name=`${CC} -print-prog-name=collect2`
|
||||
if test -f "$collect2name" && \
|
||||
strings "$collect2name" | grep resolve_lib_name >/dev/null
|
||||
then
|
||||
# We have reworked collect2
|
||||
:
|
||||
else
|
||||
# We have old collect2
|
||||
hardcode_direct=unsupported
|
||||
hardcode_minus_L=yes
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_libdir_separator=
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
# Begin _LT_AC_SYS_LIBPATH_AIX.
|
||||
echo 'int main () { return 0; }' > conftest.c
|
||||
${CC} ${LDFLAGS} conftest.c -o conftest
|
||||
aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
|
||||
}'`
|
||||
if test -z "$aix_libpath"; then
|
||||
aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
|
||||
}'`
|
||||
fi
|
||||
if test -z "$aix_libpath"; then
|
||||
aix_libpath="/usr/lib:/lib"
|
||||
fi
|
||||
rm -f conftest.c conftest
|
||||
# End _LT_AC_SYS_LIBPATH_AIX.
|
||||
if test "$aix_use_runtimelinking" = yes; then
|
||||
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
|
||||
else
|
||||
if test "$host_cpu" = ia64; then
|
||||
hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
|
||||
else
|
||||
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
amigaos*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
# see comment about different semantics on the GNU ld section
|
||||
ld_shlibs=no
|
||||
;;
|
||||
bsdi[45]*)
|
||||
;;
|
||||
cygwin* | mingw* | pw32* | cegcc*)
|
||||
# When not using gcc, we currently assume that we are using
|
||||
# Microsoft Visual C++.
|
||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||
# no search path for DLLs.
|
||||
hardcode_libdir_flag_spec=' '
|
||||
libext=lib
|
||||
;;
|
||||
darwin* | rhapsody*)
|
||||
hardcode_direct=no
|
||||
if test "$GCC" = yes ; then
|
||||
:
|
||||
else
|
||||
case $cc_basename in
|
||||
xlc*)
|
||||
;;
|
||||
*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
dgux*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
;;
|
||||
freebsd1*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
freebsd2.2*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
freebsd2*)
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
freebsd* | dragonfly*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
hpux9*)
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
hardcode_direct=yes
|
||||
# hardcode_minus_L: Not really in the search PATH,
|
||||
# but as the default location of the library.
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
hpux10*)
|
||||
if test "$with_gnu_ld" = no; then
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
hardcode_direct=yes
|
||||
# hardcode_minus_L: Not really in the search PATH,
|
||||
# but as the default location of the library.
|
||||
hardcode_minus_L=yes
|
||||
fi
|
||||
;;
|
||||
hpux11*)
|
||||
if test "$with_gnu_ld" = no; then
|
||||
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
case $host_cpu in
|
||||
hppa*64*|ia64*)
|
||||
hardcode_direct=no
|
||||
;;
|
||||
*)
|
||||
hardcode_direct=yes
|
||||
# hardcode_minus_L: Not really in the search PATH,
|
||||
# but as the default location of the library.
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
irix5* | irix6* | nonstopux*)
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
netbsd*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
hardcode_direct=yes
|
||||
;;
|
||||
newsos6)
|
||||
hardcode_direct=yes
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
openbsd*)
|
||||
if test -f /usr/libexec/ld.so; then
|
||||
hardcode_direct=yes
|
||||
if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
|
||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||
else
|
||||
case "$host_os" in
|
||||
openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
;;
|
||||
*)
|
||||
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
else
|
||||
ld_shlibs=no
|
||||
fi
|
||||
;;
|
||||
os2*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
osf3*)
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
osf4* | osf5*)
|
||||
if test "$GCC" = yes; then
|
||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||
else
|
||||
# Both cc and cxx compiler support -rpath directly
|
||||
hardcode_libdir_flag_spec='-rpath $libdir'
|
||||
fi
|
||||
hardcode_libdir_separator=:
|
||||
;;
|
||||
solaris*)
|
||||
hardcode_libdir_flag_spec='-R$libdir'
|
||||
;;
|
||||
sunos4*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
hardcode_direct=yes
|
||||
hardcode_minus_L=yes
|
||||
;;
|
||||
sysv4)
|
||||
case $host_vendor in
|
||||
sni)
|
||||
hardcode_direct=yes # is this really true???
|
||||
;;
|
||||
siemens)
|
||||
hardcode_direct=no
|
||||
;;
|
||||
motorola)
|
||||
hardcode_direct=no #Motorola manual says yes, but my tests say they lie
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
sysv4.3*)
|
||||
;;
|
||||
sysv4*MP*)
|
||||
if test -d /usr/nec; then
|
||||
ld_shlibs=yes
|
||||
fi
|
||||
;;
|
||||
sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
|
||||
;;
|
||||
sysv5* | sco3.2v5* | sco5v6*)
|
||||
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
|
||||
hardcode_libdir_separator=':'
|
||||
;;
|
||||
uts4*)
|
||||
hardcode_libdir_flag_spec='-L$libdir'
|
||||
;;
|
||||
*)
|
||||
ld_shlibs=no
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# Check dynamic linker characteristics
|
||||
# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
|
||||
# Unlike libtool.m4, here we don't care about _all_ names of the library, but
|
||||
# only about the one the linker finds when passed -lNAME. This is the last
|
||||
# element of library_names_spec in libtool.m4, or possibly two of them if the
|
||||
# linker has special search rules.
|
||||
library_names_spec= # the last element of library_names_spec in libtool.m4
|
||||
libname_spec='lib$name'
|
||||
case "$host_os" in
|
||||
aix3*)
|
||||
library_names_spec='$libname.a'
|
||||
;;
|
||||
aix[4-9]*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
amigaos*)
|
||||
library_names_spec='$libname.a'
|
||||
;;
|
||||
beos*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
bsdi[45]*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
cygwin* | mingw* | pw32* | cegcc*)
|
||||
shrext=.dll
|
||||
library_names_spec='$libname.dll.a $libname.lib'
|
||||
;;
|
||||
darwin* | rhapsody*)
|
||||
shrext=.dylib
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
dgux*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
freebsd1*)
|
||||
;;
|
||||
freebsd* | dragonfly*)
|
||||
case "$host_os" in
|
||||
freebsd[123]*)
|
||||
library_names_spec='$libname$shrext$versuffix' ;;
|
||||
*)
|
||||
library_names_spec='$libname$shrext' ;;
|
||||
esac
|
||||
;;
|
||||
gnu*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
hpux9* | hpux10* | hpux11*)
|
||||
case $host_cpu in
|
||||
ia64*)
|
||||
shrext=.so
|
||||
;;
|
||||
hppa*64*)
|
||||
shrext=.sl
|
||||
;;
|
||||
*)
|
||||
shrext=.sl
|
||||
;;
|
||||
esac
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
interix[3-9]*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
irix5* | irix6* | nonstopux*)
|
||||
library_names_spec='$libname$shrext'
|
||||
case "$host_os" in
|
||||
irix5* | nonstopux*)
|
||||
libsuff= shlibsuff=
|
||||
;;
|
||||
*)
|
||||
case $LD in
|
||||
*-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
|
||||
*-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
|
||||
*-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
|
||||
*) libsuff= shlibsuff= ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
linux*oldld* | linux*aout* | linux*coff*)
|
||||
;;
|
||||
linux* | k*bsd*-gnu)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
knetbsd*-gnu)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
netbsd*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
newsos6)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
nto-qnx*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
openbsd*)
|
||||
library_names_spec='$libname$shrext$versuffix'
|
||||
;;
|
||||
os2*)
|
||||
libname_spec='$name'
|
||||
shrext=.dll
|
||||
library_names_spec='$libname.a'
|
||||
;;
|
||||
osf3* | osf4* | osf5*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
rdos*)
|
||||
;;
|
||||
solaris*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
sunos4*)
|
||||
library_names_spec='$libname$shrext$versuffix'
|
||||
;;
|
||||
sysv4 | sysv4.3*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
sysv4*MP*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
uts4*)
|
||||
library_names_spec='$libname$shrext'
|
||||
;;
|
||||
esac
|
||||
|
||||
sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
|
||||
escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
|
||||
escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
|
||||
|
||||
LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
|
||||
|
||||
# How to pass a linker flag through the compiler.
|
||||
wl="$escaped_wl"
|
||||
|
||||
# Static library suffix (normally "a").
|
||||
libext="$libext"
|
||||
|
||||
# Shared library suffix (normally "so").
|
||||
shlibext="$shlibext"
|
||||
|
||||
# Format of library name prefix.
|
||||
libname_spec="$escaped_libname_spec"
|
||||
|
||||
# Library names that the linker finds when passed -lNAME.
|
||||
library_names_spec="$escaped_library_names_spec"
|
||||
|
||||
# Flag to hardcode \$libdir into a binary during linking.
|
||||
# This must work even if \$libdir does not exist.
|
||||
hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
|
||||
|
||||
# Whether we need a single -rpath flag with a separated argument.
|
||||
hardcode_libdir_separator="$hardcode_libdir_separator"
|
||||
|
||||
# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
|
||||
# resulting binary.
|
||||
hardcode_direct="$hardcode_direct"
|
||||
|
||||
# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
|
||||
# resulting binary.
|
||||
hardcode_minus_L="$hardcode_minus_L"
|
||||
|
||||
EOF
|
588
configure.ac
@ -1,6 +1,6 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_INIT([HexChat],[2.9.5])
|
||||
AC_INIT([HexChat],[2.10.0])
|
||||
|
||||
AC_PREREQ([2.60])
|
||||
AC_COPYRIGHT([Copyright (C) 1998-2010 Peter Zelezny])
|
||||
@ -8,8 +8,9 @@ AC_COPYRIGHT([Copyright (C) 1998-2010 Peter Zelezny])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AC_CONFIG_SRCDIR([configure.ac])
|
||||
|
||||
AM_INIT_AUTOMAKE([1.11 dist-bzip2 subdir-objects no-define foreign])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
AM_INIT_AUTOMAKE([1.11 dist-bzip2 subdir-objects no-define foreign])
|
||||
AM_SILENT_RULES([yes])
|
||||
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
@ -20,6 +21,7 @@ AC_PROG_CPP
|
||||
AM_PROG_AS
|
||||
AM_DISABLE_STATIC
|
||||
AC_PROG_LIBTOOL
|
||||
AC_PATH_PROG(MDTOOL, mdtool, no)
|
||||
|
||||
dnl -----------------------------------------------------------
|
||||
dnl Language Support
|
||||
@ -27,9 +29,8 @@ dnl -----------------------------------------------------------
|
||||
GETTEXT_PACKAGE=hexchat
|
||||
AC_SUBST(GETTEXT_PACKAGE)
|
||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE",[Gettext package name])
|
||||
|
||||
ALL_LINGUAS="af am ast az be bg ca cs da de el en_GB es et eu fi fr gl gu hi hu id it ja kn ko lt lv mk ml ms nb nl no pa pl pt pt_BR ru rw sk sl sq sr sv th uk vi wa zh_CN zh_TW"
|
||||
AM_GNU_GETTEXT
|
||||
IT_PROG_INTLTOOL([0.40.0])
|
||||
AM_GLIB_GNU_GETTEXT
|
||||
|
||||
dnl displaced from acconfig.h
|
||||
AH_VERBATIM([OLD_PERL],[#undef OLD_PERL])
|
||||
@ -39,18 +40,13 @@ AH_VERBATIM([HEXCHATSHAREDIR],[#undef HEXCHATSHAREDIR])
|
||||
AH_VERBATIM([SOCKS],[#undef SOCKS])
|
||||
AH_VERBATIM([USE_MSPROXY],[#undef USE_MSPROXY])
|
||||
AH_VERBATIM([USE_LIBPROXY],[#undef USE_LIBPROXY])
|
||||
dnl AH_VERBATIM([USE_GNOME],[#undef USE_GNOME])
|
||||
AH_VERBATIM([USE_SHM],[#undef USE_SHM])
|
||||
AH_VERBATIM([USE_GTKSPELL],[#undef USE_GTKSPELL])
|
||||
AH_VERBATIM([USE_LIBSEXY],[#undef USE_LIBSEXY])
|
||||
AH_VERBATIM([HAVE_ISO_CODES],[#undef HAVE_ISO_CODES])
|
||||
AH_VERBATIM([HAVE_GTK_MAC],[#undef HAVE_GTK_MAC])
|
||||
AH_VERBATIM([USE_LIBNOTIFY],[#undef USE_LIBNOTIFY])
|
||||
AH_VERBATIM([USE_LIBCANBERRA],[#undef USE_LIBCANBERRA])
|
||||
AH_VERBATIM([USE_IPV6],[#undef USE_IPV6])
|
||||
AH_VERBATIM([USE_MMX],[#undef USE_MMX])
|
||||
AH_VERBATIM([USE_OPENSSL],[#undef USE_OPENSSL])
|
||||
AH_VERBATIM([USE_PLUGIN],[#undef USE_PLUGIN])
|
||||
AH_VERBATIM([USE_XFT],[#undef USE_XFT])
|
||||
AH_VERBATIM([USE_XLIB],[#undef USE_XLIB])
|
||||
AH_VERBATIM([USE_SIGACTION],[#undef USE_SIGACTION])
|
||||
AH_VERBATIM([USING_FREEBSD],[#undef USING_FREEBSD])
|
||||
AH_VERBATIM([USING_LINUX],[#undef USING_LINUX])
|
||||
@ -89,10 +85,6 @@ AC_ARG_ENABLE(ipv6,
|
||||
[AS_HELP_STRING([--disable-ipv6],[disable IPv6])],
|
||||
ipv6=$enableval, ipv6=yes)
|
||||
|
||||
AC_ARG_ENABLE(xft,
|
||||
[AS_HELP_STRING([--enable-xft],[enable use of Xft directly (default: no)])],
|
||||
xft=$enableval, xft=no)
|
||||
|
||||
AC_ARG_ENABLE(openssl,
|
||||
[AS_HELP_STRING([--enable-openssl[=PATH]],[enable use of openSSL])],
|
||||
openssl=$enableval, openssl=yes)
|
||||
@ -105,30 +97,19 @@ AC_ARG_ENABLE(textfe,
|
||||
[AS_HELP_STRING([--enable-textfe],[build the text frontend (default: no)])],
|
||||
textfe=$enableval, textfe=no)
|
||||
|
||||
dnl AC_ARG_ENABLE(gnome,
|
||||
dnl [AS_HELP_STRING([--disable-gnome],[disable use of gnome])],
|
||||
dnl gnome=$enableval, gnome=yes)
|
||||
|
||||
AC_ARG_ENABLE(xlib,
|
||||
[AS_HELP_STRING([--disable-xlib],[disable use of xlib (for non X11 systems)])],
|
||||
xlib=$enableval, xlib=yes)
|
||||
|
||||
AC_ARG_ENABLE(python,
|
||||
[AS_HELP_STRING([--enable-python=pythonversion],[build the python plugin (default on, python2)])],
|
||||
[AS_HELP_STRING([--enable-python=pythonversion],[build the python plugin; possible values: "python2", "python3" or specific such as "python3.3" (default on, python2)])],
|
||||
python=$enableval, python=python2)
|
||||
AS_IF([test "x$python" = "xyes"], [python=python2])
|
||||
|
||||
AC_ARG_ENABLE(perl,
|
||||
[AS_HELP_STRING([--disable-perl],[don't build the perl plugin])],
|
||||
[AS_HELP_STRING([--disable-perl],[don\'t build the perl plugin])],
|
||||
perl=$enableval, perl=yes)
|
||||
|
||||
AC_ARG_ENABLE(perl_old,
|
||||
[AS_HELP_STRING([--disable-perl_old],[no backwards compatibility for perl plugin])],
|
||||
perl_old=$enableval, perl_old=yes)
|
||||
|
||||
dnl AC_ARG_ENABLE(tcl,
|
||||
dnl [AS_HELP_STRING([--enable-tcl[=PATH]],[directory with Tcl config file: tclConfig.sh])],
|
||||
dnl tcl=$enableval, tcl=yes)
|
||||
|
||||
AC_ARG_ENABLE(plugin,
|
||||
[AS_HELP_STRING([--disable-plugin],[disable plugin support])],
|
||||
plugin=$enableval, plugin=yes)
|
||||
@ -145,10 +126,6 @@ AC_ARG_ENABLE(fishlim,
|
||||
[AS_HELP_STRING([--disable-fishlim],[disable the FiSHLiM plugin])],
|
||||
fishlim=$enableval, fishlim=yes)
|
||||
|
||||
dnl AC_ARG_ENABLE(sasl,
|
||||
dnl [AS_HELP_STRING([--disable-sasl],[disable the SASL plugin])],
|
||||
dnl sasl=$enableval, sasl=yes)
|
||||
|
||||
AC_ARG_ENABLE(sysinfo,
|
||||
[AS_HELP_STRING([--disable-sysinfo],[disable the SysInfo plugin])],
|
||||
sysinfo=$enableval, sysinfo=yes)
|
||||
@ -161,39 +138,56 @@ AC_ARG_ENABLE(libnotify,
|
||||
[AS_HELP_STRING([--disable-libnotify],[disable libnotify support])],
|
||||
libnotify=$enableval, libnotify=yes)
|
||||
|
||||
AC_ARG_ENABLE(mmx,
|
||||
[AS_HELP_STRING([--disable-mmx],[disable MMX assembly routines])],
|
||||
mmx=$enableval, mmx=yes)
|
||||
|
||||
AC_ARG_ENABLE(shm,
|
||||
[AS_HELP_STRING([--enable-shm],[enable use of XShm for fast tinting (default: no)])],
|
||||
shm=$enableval, shm=no)
|
||||
|
||||
AC_ARG_ENABLE(spell,
|
||||
[AS_HELP_STRING([--enable-spell=type],[enable spelling type: none static libsexy gtkspell])],
|
||||
spell=$enableval, spell=static)
|
||||
AC_ARG_ENABLE(libcanberra,
|
||||
[AS_HELP_STRING([--disable-libcanberra],[disable libcanberra support])],
|
||||
libcanberra=$enableval, libcanberra=yes)
|
||||
|
||||
AC_ARG_ENABLE(ntlm,
|
||||
[AS_HELP_STRING([--enable-ntlm],[enable Microsoft's NTLM auth (libntlm) library support (default: no)])],
|
||||
[AS_HELP_STRING([--enable-ntlm],[enable Microsoft\'s NTLM auth (libntlm) library support (default: no)])],
|
||||
ntlm=$enableval, ntlm=no)
|
||||
|
||||
AC_ARG_ENABLE(libproxy,
|
||||
[AS_HELP_STRING([--disable-libproxy],[disable libproxy support (default: auto)])],
|
||||
libproxy=$enableval, libproxy=auto)
|
||||
|
||||
AC_ARG_ENABLE(isocodes,
|
||||
[AS_HELP_STRING([--disable-isocodes],[disable iso-codes with spell-check])],
|
||||
isocodes=$enableval, isocodes=yes)
|
||||
|
||||
AC_ARG_ENABLE(minimal-flags,
|
||||
[AS_HELP_STRING([--enable-minimal-flags],[only add those CFLAGS that are really needed or not intrusive (default: no)])],
|
||||
minimalflags=$enableval, minimalflags=no)
|
||||
|
||||
AC_ARG_WITH(theme-manager,
|
||||
[AS_HELP_STRING([--with-theme-manager],[compile theme manager (needs monodevelop, default: off)])],
|
||||
theme_manager=$withval, theme_manager=no)
|
||||
|
||||
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** THEME-MANAGER ****************************************************
|
||||
dnl *********************************************************************
|
||||
if test "x$theme_manager" != "xno" ; then
|
||||
if test "x$MDTOOL" = "xno"; then
|
||||
AC_MSG_ERROR([No "mdtool" found, you need to install monodevelop!])
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** GLIB *************************************************************
|
||||
dnl *********************************************************************
|
||||
|
||||
AM_PATH_GLIB_2_0(2.14.0, glib=yes, glib=no)
|
||||
AM_PATH_GLIB_2_0(2.28.0, glib=yes, glib=no)
|
||||
if test "$glib" = no; then
|
||||
AC_MSG_ERROR(Cannot find GLib!)
|
||||
fi
|
||||
|
||||
COMMON_CFLAGS="$GLIB_CFLAGS"
|
||||
COMMON_LIBS="$GLIB_LIBS"
|
||||
COMMON_LIBS="$COMMON_LIBS -lgmodule-2.0"
|
||||
PKG_CHECK_MODULES([GOBJECT], [gobject-2.0], [], [AC_MSG_ERROR(Cannot find gobject-2.0!)])
|
||||
PKG_CHECK_MODULES([GIO], [gio-2.0], [], [AC_MSG_ERROR(Cannot find gio-2.0!)])
|
||||
|
||||
COMMON_CFLAGS="$GLIB_CFLAGS $GIO_CFLAGS $GOBJECT_CFLAGS -DG_DISABLE_SINGLE_INCLUDES"
|
||||
COMMON_LIBS="$GLIB_LIBS $GIO_LIBS $GOBJECT_LIBS -lgmodule-2.0"
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** GTK **************************************************************
|
||||
@ -201,7 +195,7 @@ dnl *********************************************************************
|
||||
|
||||
# we might get undefined macro without this test
|
||||
if test "$gtkfe" = yes ; then
|
||||
AM_PATH_GTK_2_0(2.10.0, havegtk=yes, havegtk=no)
|
||||
AM_PATH_GTK_2_0(2.24.0, havegtk=yes, havegtk=no)
|
||||
|
||||
if test "$havegtk" = no; then
|
||||
gtkfe=no
|
||||
@ -211,76 +205,20 @@ if test "$gtkfe" = yes ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$gtkfe" != yes; then
|
||||
gnome=no
|
||||
COMMON_LIBS="$GLIB_LIBS"
|
||||
COMMON_CFLAGS="$GLIB_CFLAGS"
|
||||
fi
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** GNOME ************************************************************
|
||||
dnl *********************************************************************
|
||||
|
||||
GUI_LIBS="$GUI_LIBS $GTK_LIBS"
|
||||
GUI_CFLAGS="$GUI_CFLAGS $GTK_CFLAGS"
|
||||
|
||||
#if test "$gnome" = yes; then
|
||||
# AC_PATH_PROG(pkgconfigpath, pkg-config)
|
||||
# AC_MSG_CHECKING(Gnome2 compile flags)
|
||||
# GNOME_CFLAGS="`$pkgconfigpath libgnome-2.0 --cflags 2>/dev/null`"
|
||||
# if test "_$GNOME_CFLAGS" = _ ; then
|
||||
# gnome=no
|
||||
# AC_MSG_RESULT([Gnome not found, building without it.])
|
||||
# else
|
||||
# GNOME_VER="`$pkgconfigpath libgnome-2.0 --modversion`"
|
||||
# GUI_LIBS="$GUI_LIBS `$pkgconfigpath libgnome-2.0 --libs`"
|
||||
# GUI_CFLAGS="$GUI_CFLAGS $GNOME_CFLAGS"
|
||||
# AC_DEFINE(USE_GNOME)
|
||||
# AC_MSG_RESULT(ok)
|
||||
# fi
|
||||
#fi
|
||||
|
||||
# GConf
|
||||
if test "$gnome" != no ; then
|
||||
AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
|
||||
else
|
||||
GCONFTOOL=no
|
||||
fi
|
||||
GUI_CFLAGS="$GUI_CFLAGS $GTK_CFLAGS -DG_DISABLE_SINGLE_INCLUDES -DGDK_PIXBUF_DISABLE_SINGLE_INCLUDES -DGTK_DISABLE_SINGLE_INCLUDES -DGTK_DISABLE_DEPRECATED"
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** XFT **************************************************************
|
||||
dnl ** MAC_INTEGRATION **************************************************
|
||||
dnl *********************************************************************
|
||||
|
||||
if test "$xft" = yes; then
|
||||
AC_PATH_PROG(pkgconfigpath, pkg-config)
|
||||
if $pkgconfigpath xft --exists; then
|
||||
GUI_CFLAGS="$GUI_CFLAGS `$pkgconfigpath xft --cflags`"
|
||||
GUI_LIBS="$GUI_LIBS `$pkgconfigpath xft --libs`"
|
||||
else
|
||||
xft=no
|
||||
oldCPPFLAGS=$CPPFLAGS
|
||||
CPPFLAGS="$CPPFLAGS $GTK_CFLAGS"
|
||||
AC_CHECK_HEADERS(X11/Xft/Xft.h, xft=yes)
|
||||
CPPFLAGS=$oldCPPFLAGS
|
||||
fi
|
||||
if test "$xft" = yes; then
|
||||
AC_DEFINE(USE_XFT)
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** XLIB *************************************************************
|
||||
dnl *********************************************************************
|
||||
|
||||
if test "$xlib" = yes; then
|
||||
AC_DEFINE(USE_XLIB)
|
||||
if test "$system" = "SunOS"; then
|
||||
LIBS="$LIBS -L/usr/openwin/lib -lX11"
|
||||
else
|
||||
AC_CHECK_LIB(X11, XSetWMHints)
|
||||
fi
|
||||
else
|
||||
shm=no
|
||||
_gdk_tgt=`$PKG_CONFIG --variable=target gdk-2.0`
|
||||
if test "x$_gdk_tgt" = xquartz; then
|
||||
PKG_CHECK_MODULES(GTK_MAC, gtk-mac-integration, [
|
||||
GUI_LIBS="$GUI_LIBS $GTK_MAC_LIBS"
|
||||
GUI_CFLAGS="$GUI_CFLAGS $GTK_MAC_CFLAGS"
|
||||
AC_DEFINE(HAVE_GTK_MAC)
|
||||
])
|
||||
fi
|
||||
|
||||
dnl *********************************************************************
|
||||
@ -288,45 +226,59 @@ dnl ** PERL *************************************************************
|
||||
dnl *********************************************************************
|
||||
|
||||
if test "$perl" = yes; then
|
||||
AC_PATH_PROG(perlpath, perl)
|
||||
AC_MSG_CHECKING(for Perl compile flags)
|
||||
PERL_CFLAGS=`$perlpath -MExtUtils::Embed -e ccopts 2>/dev/null`
|
||||
if test "_$PERL_CFLAGS" = _ ; then
|
||||
AC_MSG_RESULT([not found, building without perl.])
|
||||
perl=no
|
||||
else
|
||||
PERL_LDFLAGS=`$perlpath -MExtUtils::Embed -e ldopts |$sedpath 's/-lgdbm //'`
|
||||
PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-ldb //'`
|
||||
PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lndbm //'`
|
||||
if test "$system" = "Linux"; then
|
||||
PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lnsl //'`
|
||||
PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lposix //'`
|
||||
fi
|
||||
PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lc //'`
|
||||
AC_MSG_RESULT(ok)
|
||||
|
||||
# oldLIBS=$LIBS
|
||||
# LIBS="$LIBS $PERL_LDFLAGS"
|
||||
# AC_CHECK_FUNC(eval_pv)
|
||||
# AC_CHECK_FUNC(call_pv)
|
||||
# LIBS=$oldLIBS
|
||||
|
||||
AC_MSG_CHECKING(for perl >= 5.8.0)
|
||||
PERL_VER=`$perlpath -e 'print $]>= 5.008?"yes":"no"'`
|
||||
if test "$PERL_VER" = "yes"; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_MSG_CHECKING(if perl plugin will be backward compatible)
|
||||
if test "$perl_old" = "yes"; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(OLD_PERL)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
echo "perl version too old, building without perl."
|
||||
AC_MSG_CHECKING(for plugin interface used by Perl)
|
||||
if test "$plugin" = yes; then
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_PATH_PROG(perlpath, perl)
|
||||
AC_MSG_CHECKING(for Perl compile flags)
|
||||
PERL_CFLAGS=`$perlpath -MExtUtils::Embed -e ccopts 2>/dev/null`
|
||||
if test "_$PERL_CFLAGS" = _ ; then
|
||||
AC_MSG_RESULT([not found, building without perl.])
|
||||
perl=no
|
||||
else
|
||||
PERL_LDFLAGS=`$perlpath -MExtUtils::Embed -e ldopts |$sedpath 's/-lgdbm //'`
|
||||
PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-ldb //'`
|
||||
PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lndbm //'`
|
||||
if test "$system" = "Linux"; then
|
||||
PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lnsl //'`
|
||||
PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lposix //'`
|
||||
fi
|
||||
PERL_LDFLAGS=`echo $PERL_LDFLAGS |$sedpath 's/-lc //'`
|
||||
AC_MSG_RESULT(ok)
|
||||
|
||||
AC_MSG_CHECKING(for perl >= 5.8.0)
|
||||
PERL_VER=`$perlpath -e 'print $]>= 5.008?"yes":"no"'`
|
||||
if test "$PERL_VER" = "yes"; then
|
||||
original_cflags="$CFLAGS"
|
||||
original_ldflags="$LDFLAGS"
|
||||
CFLAGS="$PERL_CFLAGS"
|
||||
LDFLAGS="$PERL_LDFLAGS"
|
||||
AC_TRY_LINK([#include <EXTERN.h>
|
||||
#include <perl.h>], [], perl_is_usable=yes, perl_is_usable=no)
|
||||
CFLAGS="$original_cflags"
|
||||
LDFLAGS="$original_ldflags"
|
||||
if test x$perl_is_usable = xno ; then
|
||||
AC_MSG_RESULT(no)
|
||||
perl=no
|
||||
else
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_MSG_CHECKING(if perl plugin will be backward compatible)
|
||||
if test "$perl_old" = "yes"; then
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(OLD_PERL)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
echo "perl version too old, building without perl."
|
||||
perl=no
|
||||
fi
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT([plugins are disabled, use the --enable-plugin option for Perl])
|
||||
perl=no
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -335,70 +287,43 @@ dnl ** PYTHON ***********************************************************
|
||||
dnl *********************************************************************
|
||||
|
||||
if test "x$python" != xno ; then
|
||||
if test "$python" = yes ; then
|
||||
# default
|
||||
python="python2"
|
||||
AC_MSG_CHECKING(for plugin interface used by Python)
|
||||
if test "$plugin" = yes; then
|
||||
AC_MSG_RESULT([yes])
|
||||
case $python in
|
||||
dnl set python2 default here
|
||||
python2)
|
||||
PKG_CHECK_MODULES([PY], [python-2.7], [], [AC_MSG_WARN(Cannot find python-2.7!)])
|
||||
PY_VER="`$PKG_CONFIG --modversion python-2.7`";;
|
||||
dnl set python3 default here
|
||||
python3)
|
||||
PKG_CHECK_MODULES([PY], [python-3.3], [], [AC_MSG_WARN(Cannot find python-3.3!)])
|
||||
PY_VER="`$PKG_CONFIG --modversion python-3.3`";;
|
||||
dnl add broken versions here
|
||||
python2.5|python2.6|python3.1|python3.2)
|
||||
AC_MSG_ERROR(Unsupported Python version ${python}!);;
|
||||
python*)
|
||||
python="python-${python#python}" # stay posix compliant
|
||||
PKG_CHECK_MODULES([PY], [${python}], [], [AC_MSG_WARN(Cannot find "${python}.pc"!)])
|
||||
PY_VER="`$PKG_CONFIG --modversion ${python}`";;
|
||||
*)
|
||||
AC_MSG_WARN(Unsupported Python ${python}!)
|
||||
esac
|
||||
AC_MSG_CHECKING(Python version)
|
||||
|
||||
if test "$PY_VER"; then
|
||||
AC_MSG_RESULT($PY_VER)
|
||||
python="python-${PY_VER}"
|
||||
else
|
||||
AC_MSG_RESULT(Not found)
|
||||
python=no
|
||||
fi
|
||||
else
|
||||
AC_MSG_RESULT([plugins are disabled, use the --enable-plugin option for Python])
|
||||
python=no
|
||||
fi
|
||||
AC_PATH_PROG(pythonpath, $python)
|
||||
if test "_$pythonpath" = _ ; then
|
||||
AC_PATH_PROG(pythonpath, python)
|
||||
fi
|
||||
if test "_$pythonpath" = _ ; then
|
||||
python=no
|
||||
else
|
||||
AC_MSG_CHECKING(Python version)
|
||||
changequote(<<, >>)dnl
|
||||
PY_VER=`$pythonpath -c 'import distutils.sysconfig; print(distutils.sysconfig.get_config_vars("VERSION")[0]);'`
|
||||
PY_LIB=`$pythonpath -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_lib(standard_lib=1));'`
|
||||
PY_INC=`$pythonpath -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_inc());'`
|
||||
PYPLAT_INC=`$pythonpath -c 'import distutils.sysconfig; print(distutils.sysconfig.get_python_inc(plat_specific=True));'`
|
||||
changequote([, ])dnl
|
||||
AC_MSG_RESULT($PY_VER)
|
||||
$pythonpath -c "import sys; float(sys.version[[:3]]) >= 2.2 and int(sys.version[[0]]) < 3 or sys.exit(1)"
|
||||
if test "$?" != "1"; then
|
||||
AC_MSG_CHECKING(Python compile flags)
|
||||
PY_PREFIX=`$pythonpath -c 'import sys; print(sys.prefix)'`
|
||||
PY_EXEC_PREFIX=`$pythonpath -c 'import sys; print(sys.exec_prefix)'`
|
||||
if test -f $PY_INC/Python.h || test -f $PYPLAT_INC/Python.h; then
|
||||
PY_LIBS="-L$PY_LIB/config -lpython$PY_VER -lpthread -lutil"
|
||||
PY_CFLAGS="-I$PY_INC -I$PYPLAT_INC"
|
||||
AC_MSG_RESULT(ok)
|
||||
else
|
||||
python=no
|
||||
AC_MSG_RESULT([Can't find Python.h])
|
||||
fi
|
||||
else
|
||||
echo "Python is too old or too new. Only 2.2-2.7 are supported."
|
||||
python=no
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** TCL **************************************************************
|
||||
dnl *********************************************************************
|
||||
|
||||
dnl AC_MSG_CHECKING(for location of tclConfig.sh)
|
||||
dnl dirs="$tcl /lib /usr/lib /usr/tcl/lib /usr/lib/tcl8.4 /usr/local/lib /usr/local/tcl-8.4/lib /usr/local/tcl/lib /opt/lib /usr/lib/tcl8.3"
|
||||
dnl found=0
|
||||
dnl if test "$tcl" != "no"; then
|
||||
dnl tcl=no
|
||||
dnl for try in $dirs; do
|
||||
dnl if test -f $try/tclConfig.sh; then
|
||||
dnl found=1
|
||||
dnl . $try/tclConfig.sh
|
||||
dnl TCL_LIBS="$TCL_LIB_SPEC $TCL_LIBS"
|
||||
dnl TCL_CFLAGS="-I${TCL_PREFIX}/include $TCL_INCLUDE_SPEC"
|
||||
dnl tcl=yes
|
||||
dnl AC_MSG_RESULT($try/tclConfig.sh)
|
||||
dnl break
|
||||
dnl fi
|
||||
dnl done
|
||||
dnl if test "$found" -eq 0 ; then
|
||||
dnl AC_MSG_RESULT([tclConfig.sh not found - use the --enable-tcl option])
|
||||
dnl fi
|
||||
dnl fi
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** IPv6 *************************************************************
|
||||
dnl *********************************************************************
|
||||
@ -431,11 +356,10 @@ dnl *********************************************************************
|
||||
|
||||
retry=no
|
||||
if test "$openssl" != no; then
|
||||
AC_PATH_PROG(pkgconfigpath, pkg-config)
|
||||
AC_MSG_CHECKING(for openssl through pkg-config)
|
||||
if $pkgconfigpath openssl --exists; then
|
||||
CPPFLAGS="$CPPFLAGS `$pkgconfigpath openssl --cflags`"
|
||||
LIBS="$LIBS `$pkgconfigpath openssl --libs`"
|
||||
if $PKG_CONFIG openssl --exists; then
|
||||
CPPFLAGS="$CPPFLAGS `$PKG_CONFIG openssl --cflags`"
|
||||
LIBS="$LIBS `$PKG_CONFIG openssl --libs`"
|
||||
AC_DEFINE(USE_OPENSSL)
|
||||
AC_MSG_RESULT(yes)
|
||||
openssl=yes
|
||||
@ -511,9 +435,8 @@ if test "$plugin" = yes; then
|
||||
fi
|
||||
if test "$have_dl" = yes; then
|
||||
AC_DEFINE(USE_PLUGIN)
|
||||
AC_PATH_PROG(pkgconfigpath, pkg-config)
|
||||
dnl we just need the -Wl,--export-dynamic, but not -lgmodule-2.0
|
||||
RDYNAMIC_FLAGS="`$pkgconfigpath gmodule-2.0 --libs | $sedpath 's/ -lgmodule-2.0//'`"
|
||||
RDYNAMIC_FLAGS="`$PKG_CONFIG gmodule-2.0 --libs | $sedpath 's/ -lgmodule-2.0//'`"
|
||||
LIBS="$LIBS $RDYNAMIC_FLAGS"
|
||||
if test "$LD" = ""; then
|
||||
VS="`ld --help | grep version-script 2> /dev/null`"
|
||||
@ -585,21 +508,6 @@ if test "$fishlim" != "no"; then
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** SASL *************************************************************
|
||||
dnl *********************************************************************
|
||||
|
||||
dnl if test "$sasl" != "no"; then
|
||||
dnl AC_MSG_CHECKING(for plugin interface used by SASL)
|
||||
dnl sasl=no
|
||||
dnl if test "$plugin" = yes; then
|
||||
dnl sasl=yes
|
||||
dnl AC_MSG_RESULT([yes])
|
||||
dnl else
|
||||
dnl AC_MSG_RESULT([plugins are disabled, use the --enable-plugin option for SASL])
|
||||
dnl fi
|
||||
dnl fi
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** SYSINFO **********************************************************
|
||||
dnl *********************************************************************
|
||||
@ -654,41 +562,35 @@ if test "x$libnotify" = "xyes" ; then
|
||||
fi
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** SPELL ************************************************************
|
||||
dnl ** LIBCANBERRA ******************************************************
|
||||
dnl *********************************************************************
|
||||
|
||||
if test "$spell" = "gtkspell" ; then
|
||||
PKG_CHECK_MODULES(GTKSPELL, gtkspell-2.0 >= 2.0.2, [], [
|
||||
spell=no
|
||||
if test "x$libcanberra" = "xyes" ; then
|
||||
PKG_CHECK_MODULES(LIBCANBERRA, libcanberra >= 0.22, [], [
|
||||
libcanberra=no
|
||||
])
|
||||
if test "$spell" != "no" ; then
|
||||
GUI_LIBS="$GUI_LIBS $GTKSPELL_LIBS"
|
||||
GUI_CFLAGS="$GUI_CFLAGS $GTKSPELL_CFLAGS"
|
||||
AC_DEFINE(USE_GTKSPELL)
|
||||
if test "$libcanberra" != "no" ; then
|
||||
COMMON_LIBS="$COMMON_LIBS $LIBCANBERRA_LIBS"
|
||||
COMMON_CFLAGS="$COMMON_CFLAGS $LIBCANBERRA_CFLAGS"
|
||||
AC_DEFINE(USE_LIBCANBERRA)
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$spell" = "libsexy" ; then
|
||||
PKG_CHECK_MODULES([LIBSEXY], [libsexy >= 0.1.8], [
|
||||
libsexy=yes
|
||||
GUI_LIBS="$GUI_LIBS $LIBSEXY_LIBS"
|
||||
GUI_CFLAGS="$GUI_CFLAGS $LIBSEXY_CFLAGS"
|
||||
AC_DEFINE(USE_LIBSEXY)
|
||||
], [
|
||||
dnl use builtin static one
|
||||
spell="static"
|
||||
])
|
||||
fi
|
||||
dnl *********************************************************************
|
||||
dnl ** SPELL ************************************************************
|
||||
dnl *********************************************************************
|
||||
|
||||
if test "$spell" = "static" ; then
|
||||
PKG_CHECK_MODULES(LIBXML2, libxml-2.0 >= 2.0.0, [
|
||||
AC_DEFINE(HAVE_ISO_CODES)
|
||||
AC_DEFINE(USE_LIBSEXY)
|
||||
GUI_CFLAGS="$GUI_CFLAGS -I/usr/include/libxml2"
|
||||
LIBS="$LIBS -lxml2"
|
||||
], [
|
||||
AC_MSG_ERROR(Cannot find libxml2!)
|
||||
])
|
||||
if test "x$isocodes" = "xyes" ; then
|
||||
PKG_CHECK_MODULES(ISOCODES, "iso-codes", [
|
||||
iso_codes_prefix=`$PKG_CONFIG --variable=prefix iso-codes 2>/dev/null || echo /usr`
|
||||
AC_MSG_NOTICE([iso-codes prefix: $iso_codes_prefix])
|
||||
AC_DEFINE_UNQUOTED([ISO_CODES_PREFIX], ["$iso_codes_prefix"], [ISO codes prefix])
|
||||
AC_DEFINE_UNQUOTED([ISO_CODES_LOCALEDIR], ["$iso_codes_prefix/share/locale"], [ISO codes locale dir])
|
||||
AC_DEFINE([HAVE_ISO_CODES], [1], [iso-codes available])
|
||||
], [
|
||||
isocodes=no
|
||||
AC_MSG_WARN(iso-codes not found!)
|
||||
])
|
||||
fi
|
||||
|
||||
dnl *********************************************************************
|
||||
@ -696,21 +598,21 @@ dnl ** CONDITIONALS *****************************************************
|
||||
dnl *********************************************************************
|
||||
|
||||
AM_CONDITIONAL(USE_OPENSSL, test "x$openssl" = "xyes")
|
||||
AM_CONDITIONAL(USE_LIBSEXY, test "x$spell" = "xstatic")
|
||||
AM_CONDITIONAL(USE_LIBNOTIFY, test "x$libnotify" = "xyes")
|
||||
AM_CONDITIONAL(USE_LIBCANBERRA, test "x$libcanberra" = "xyes")
|
||||
AM_CONDITIONAL(USE_MSPROXY, test "x$ntlm" = "xyes")
|
||||
AM_CONDITIONAL(DO_TEXT, test "x$textfe" = "xyes")
|
||||
AM_CONDITIONAL(DO_GTK, test "x$gtkfe" = "xyes")
|
||||
AM_CONDITIONAL(DO_PERL, test "x$perl" = "xyes")
|
||||
AM_CONDITIONAL(DO_PYTHON, test "x$python" != "xno")
|
||||
dnl AM_CONDITIONAL(DO_TCL, test "x$tcl" = "xyes")
|
||||
AM_CONDITIONAL(DO_PLUGIN, test "x$plugin" = "xyes")
|
||||
AM_CONDITIONAL(DO_CHECKSUM, test "x$checksum" = "xyes")
|
||||
AM_CONDITIONAL(DO_DOAT, test "x$doat" = "xyes")
|
||||
AM_CONDITIONAL(DO_FISHLIM, test "x$fishlim" = "xyes")
|
||||
dnl AM_CONDITIONAL(DO_SASL, test "x$sasl" = "xyes")
|
||||
AM_CONDITIONAL(DO_SYSINFO, test "x$sysinfo" = "xyes")
|
||||
AM_CONDITIONAL(USE_DBUS, test "x$dbus" = "xyes")
|
||||
AM_CONDITIONAL(DO_GCONF, test "x$GCONFTOOL" != "xno")
|
||||
AM_CONDITIONAL(HAVE_ISO_CODES, test "x$isocodes" = "xyes")
|
||||
AM_CONDITIONAL(WITH_TM, test "x$theme_manager" != "xno")
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** SOCKS5 ***********************************************************
|
||||
@ -743,61 +645,6 @@ if test "x$ntlm" = "xyes" ; then
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** XShm *************************************************************
|
||||
dnl *********************************************************************
|
||||
|
||||
if test "$shm" = yes; then
|
||||
oldl=$LIBS
|
||||
oldc=$CPPFLAGS
|
||||
LIBS="$LIBS `$pkgconfigpath --libs-only-L xft`"
|
||||
CPPFLAGS="$CPPFLAGS `$pkgconfigpath --cflags-only-I xft`"
|
||||
shm=no
|
||||
AC_CHECK_LIB(Xext, XShmAttach, shm=yes)
|
||||
if test "$shm" = yes; then
|
||||
shm=no
|
||||
AC_CHECK_HEADERS(sys/ipc.h, shm=yes)
|
||||
if test "$shm" = yes; then
|
||||
shm=no
|
||||
AC_CHECK_HEADERS(sys/shm.h, shm=yes)
|
||||
fi
|
||||
fi
|
||||
|
||||
LIBS=$oldl
|
||||
if test "$shm" = yes; then
|
||||
GUI_LIBS="$GUI_LIBS `$pkgconfigpath --libs-only-L xft` -lX11 -lXext"
|
||||
AC_DEFINE(USE_SHM)
|
||||
else
|
||||
CPPFLAGS=$oldc
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** MMX **************************************************************
|
||||
dnl *********************************************************************
|
||||
|
||||
dnl we don't need mmx on *this* machine, just i386, because
|
||||
dnl it's checked at runtime.
|
||||
if test "$mmx" = "yes"; then
|
||||
case $host_cpu in
|
||||
i386|i486|i586|i686|i786|k6|k7)
|
||||
mmx=yes
|
||||
;;
|
||||
*)
|
||||
mmx=no
|
||||
esac
|
||||
if test "$system" = "OpenBSD"; then
|
||||
dnl openbsd fails because mmx_cmod doesn't prefix its symbols with underscore.
|
||||
dnl xtext.o: Undefined symbol `_shade_ximage_15_mmx' referenced from text segment
|
||||
mmx=no
|
||||
fi
|
||||
if test "$mmx" = "yes"; then
|
||||
AC_DEFINE(USE_MMX)
|
||||
fi
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(USE_MMX, test "$mmx" = "yes")
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** GCC FLAGS ********************************************************
|
||||
dnl *********************************************************************
|
||||
@ -807,24 +654,27 @@ if test "x$GCC" = "xyes"; then
|
||||
if test -z "`echo "$CFLAGS" | grep "\-Wall" 2> /dev/null`" ; then
|
||||
CFLAGS="$CFLAGS -Wall"
|
||||
fi
|
||||
if test "$system" = "Linux" -o "$system" = "FreeBSD"; then
|
||||
if test -z "`echo "$CFLAGS" | grep "\-pipe" 2> /dev/null`" ; then
|
||||
CFLAGS="$CFLAGS -pipe"
|
||||
dnl these flags might be unwanted
|
||||
if test x$minimalflags != xyes; then
|
||||
if test "$system" = "Linux" -o "$system" = "FreeBSD"; then
|
||||
if test -z "`echo "$CFLAGS" | grep "\-pipe" 2> /dev/null`" ; then
|
||||
CFLAGS="$CFLAGS -pipe"
|
||||
fi
|
||||
fi
|
||||
if test -z "`echo "$CFLAGS" | grep "\-g " 2> /dev/null`" ; then
|
||||
CFLAGS="$CFLAGS -g"
|
||||
fi
|
||||
fi
|
||||
if test -z "`echo "$CFLAGS" | grep "\-g " 2> /dev/null`" ; then
|
||||
CFLAGS="$CFLAGS -g"
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl does this compiler support -Wno-pointer-sign ?
|
||||
AC_MSG_CHECKING([if gcc accepts -Wno-pointer-sign ])
|
||||
AC_MSG_CHECKING([if $CC accepts -Wno-pointer-sign ])
|
||||
|
||||
safe_CFLAGS=$CFLAGS
|
||||
CFLAGS="-Wno-pointer-sign"
|
||||
|
||||
AC_TRY_COMPILE(, [
|
||||
int main () { return 0 ; }
|
||||
return 0;
|
||||
],
|
||||
[
|
||||
no_pointer_sign=yes
|
||||
@ -840,13 +690,13 @@ if test x$no_pointer_sign = xyes; then
|
||||
fi
|
||||
|
||||
dnl does this compiler support -funsigned-char ?
|
||||
AC_MSG_CHECKING([if gcc accepts -funsigned-char ])
|
||||
AC_MSG_CHECKING([if $CC accepts -funsigned-char ])
|
||||
|
||||
safe_CFLAGS=$CFLAGS
|
||||
CFLAGS="-funsigned-char"
|
||||
|
||||
AC_TRY_COMPILE(, [
|
||||
int main () { return 0 ; }
|
||||
return 0;
|
||||
],
|
||||
[
|
||||
unsigned_char=yes
|
||||
@ -861,12 +711,34 @@ if test x$unsigned_char = xyes; then
|
||||
CFLAGS="$CFLAGS -funsigned-char"
|
||||
fi
|
||||
|
||||
dnl does this compiler support -Wno-unused-result ?
|
||||
AC_MSG_CHECKING([if $CC accepts -Wno-unused-result ])
|
||||
|
||||
safe_CFLAGS=$CFLAGS
|
||||
CFLAGS="-Wno-unused-result"
|
||||
|
||||
AC_TRY_COMPILE(, [
|
||||
return 0;
|
||||
],
|
||||
[
|
||||
no_unused_result=yes
|
||||
AC_MSG_RESULT([yes])
|
||||
], [
|
||||
no_unused_result=no
|
||||
AC_MSG_RESULT([no])
|
||||
])
|
||||
CFLAGS=$safe_CFLAGS
|
||||
|
||||
if test x$no_unused_result = xyes; then
|
||||
CFLAGS="$CFLAGS -Wno-unused-result"
|
||||
fi
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** FUNCTIONS/LIBS/CFLAGS ********************************************
|
||||
dnl *********************************************************************
|
||||
|
||||
AC_MSG_CHECKING(for modern sigaction)
|
||||
dnl libc5 on linux and FreeBSD 3.x doesn't have siginfo_t
|
||||
dnl libc5 on linux and FreeBSD 3.x doesn\'t have siginfo_t
|
||||
dnl and the sa_sigation field.
|
||||
AC_TRY_COMPILE(
|
||||
[#include <signal.h>],
|
||||
@ -879,13 +751,7 @@ AC_TRY_COMPILE(
|
||||
],
|
||||
AC_MSG_RESULT(no))
|
||||
|
||||
AC_PATH_PROG(gdkpixbufcsourcepath, gdk-pixbuf-csource)
|
||||
AC_SUBST(gdkpixbufcsourcepath)
|
||||
if test "$gtkfe" != no -a "_$gdkpixbufcsourcepath" = _; then
|
||||
AC_MSG_ERROR(Cannot find gdk-pixbuf-csource: Install GTK+ 2.0!)
|
||||
fi
|
||||
|
||||
dnl if we don't have this, use g_snprintf instead
|
||||
dnl if we don\'t have this, use g_snprintf instead
|
||||
AC_CHECK_FUNCS(snprintf vsnprintf memrchr strtoull)
|
||||
|
||||
AC_CHECK_FUNC(gethostbyname, ,
|
||||
@ -933,11 +799,10 @@ AC_SUBST(PERL_CFLAGS)
|
||||
AC_SUBST(PERL_LDFLAGS)
|
||||
AC_SUBST(PY_CFLAGS)
|
||||
AC_SUBST(PY_LIBS)
|
||||
dnl AC_SUBST(TCL_LIBS)
|
||||
dnl AC_SUBST(TCL_CFLAGS)
|
||||
AC_SUBST(DBUS_CFLAGS)
|
||||
AC_SUBST(DBUS_LIBS)
|
||||
|
||||
m4_ifdef([PKG_INSTALLDIR], [PKG_INSTALLDIR], AC_SUBST([pkgconfigdir], ${libdir}/pkgconfig))
|
||||
|
||||
PLUGIN_INCLUDES='-I$(top_srcdir)/plugins'
|
||||
AC_SUBST(PLUGIN_INCLUDES)
|
||||
@ -948,27 +813,33 @@ test "x$exec_prefix" = xNONE && exec_prefix="$prefix"
|
||||
|
||||
AC_DEFINE_UNQUOTED(PREFIX, "${prefix}")
|
||||
|
||||
AS_AC_EXPAND(HEXCHATLIBDIR, "${libdir}/hexchat")
|
||||
AS_AC_EXPAND(HEXCHATLIBDIR, "${libdir}/hexchat/plugins")
|
||||
AC_DEFINE_UNQUOTED(HEXCHATLIBDIR, "$HEXCHATLIBDIR")
|
||||
|
||||
AS_AC_EXPAND(HEXCHATSHAREDIR, "$datadir")
|
||||
AC_DEFINE_UNQUOTED(HEXCHATSHAREDIR, "$HEXCHATSHAREDIR")
|
||||
|
||||
dnl for plugins/xxx/Makefile.am
|
||||
hexchatlibdir=${libdir}/hexchat
|
||||
hexchatlibdir=${libdir}/hexchat/plugins
|
||||
AC_SUBST(hexchatlibdir)
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
share/Makefile
|
||||
share/icons/Makefile
|
||||
share/misc/Makefile
|
||||
data/Makefile
|
||||
data/icons/Makefile
|
||||
data/misc/Makefile
|
||||
data/man/Makefile
|
||||
data/man/hexchat.1
|
||||
data/pkgconfig/Makefile
|
||||
data/pkgconfig/hexchat-plugin.pc
|
||||
src/Makefile
|
||||
src/common/Makefile
|
||||
src/common/dbus/Makefile
|
||||
src/fe-text/Makefile
|
||||
src/fe-gtk/Makefile
|
||||
src/pixmaps/Makefile
|
||||
src/htm/Makefile
|
||||
src/htm/thememan
|
||||
osx/Info.plist
|
||||
plugins/Makefile
|
||||
plugins/python/Makefile
|
||||
plugins/perl/Makefile
|
||||
@ -976,12 +847,8 @@ plugins/checksum/Makefile
|
||||
plugins/doat/Makefile
|
||||
plugins/fishlim/Makefile
|
||||
plugins/sysinfo/Makefile
|
||||
intl/Makefile
|
||||
po/Makefile.in
|
||||
man/Makefile
|
||||
])
|
||||
dnl plugins/tcl/Makefile
|
||||
dnl plugins/sasl/Makefile
|
||||
|
||||
AC_OUTPUT
|
||||
|
||||
@ -990,18 +857,12 @@ echo HexChat $VERSION
|
||||
echo
|
||||
echo GTK+ interface ........ : $gtkfe
|
||||
echo Text interface ........ : $textfe
|
||||
echo Theme manager ......... : $theme_manager
|
||||
echo
|
||||
echo MMX tinting ........... : $mmx
|
||||
echo XShm tinting .......... : $shm
|
||||
if test "$xft" = no; then
|
||||
echo Text backend .......... : Pango
|
||||
else
|
||||
echo Text backend .......... : Xft
|
||||
fi
|
||||
echo OpenSSL support ....... : $openssl
|
||||
echo D-Bus support ......... : $dbus
|
||||
echo libnotify support ..... : $libnotify
|
||||
echo Spelling .............. : $spell
|
||||
echo libcanberra support ... : $libcanberra
|
||||
echo Plugin interface ...... : $plugin
|
||||
echo NLS/gettext ........... : $USE_NLS
|
||||
echo IPv6 support .......... : $ipv6
|
||||
@ -1010,12 +871,10 @@ echo libproxy support ...... : $libproxy
|
||||
echo
|
||||
echo Perl .................. : $perl
|
||||
echo Python ................ : $python
|
||||
dnl echo Tcl ................... : $tcl
|
||||
echo
|
||||
echo Checksum .............. : $checksum
|
||||
echo Do At ................. : $doat
|
||||
echo FiSHLiM ............... : $fishlim
|
||||
dnl echo SASL .................. : $sasl
|
||||
echo SysInfo ............... : $sysinfo
|
||||
echo
|
||||
echo The binary will be installed in $prefix/bin
|
||||
@ -1026,10 +885,5 @@ if test "$gtkfe" = no; then
|
||||
echo
|
||||
fi
|
||||
|
||||
if test "$spell" = "gtkspell"; then
|
||||
echo Warning: GTK SPELL is not the recommended spelling library.
|
||||
echo
|
||||
fi
|
||||
|
||||
echo configure complete, now type \'make\' and pray.
|
||||
echo
|
||||
|
5
data/Makefile.am
Normal file
@ -0,0 +1,5 @@
|
||||
SUBDIRS = pkgconfig man
|
||||
|
||||
if DO_GTK
|
||||
SUBDIRS += icons misc
|
||||
endif
|
23
data/hexchat.gresource.xml
Normal file
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<gresources>
|
||||
<gresource prefix="/icons">
|
||||
<file alias="hexchat.png" preprocess="to-pixdata" compressed="true">icons/hexchat.png</file>
|
||||
<file alias="book.png" preprocess="to-pixdata" compressed="true">icons/book.png</file>
|
||||
|
||||
<file alias="ulist_voice.png" preprocess="to-pixdata" compressed="true">icons/ulist_voice.png</file>
|
||||
<file alias="ulist_halfop.png" preprocess="to-pixdata" compressed="true">icons/ulist_halfop.png</file>
|
||||
<file alias="ulist_op.png" preprocess="to-pixdata" compressed="true">icons/ulist_op.png</file>
|
||||
<file alias="ulist_owner.png" preprocess="to-pixdata" compressed="true">icons/ulist_owner.png</file>
|
||||
<file alias="ulist_founder.png" preprocess="to-pixdata" compressed="true">icons/ulist_founder.png</file>
|
||||
<file alias="ulist_netop.png" preprocess="to-pixdata" compressed="true">icons/ulist_netop.png</file>
|
||||
|
||||
<file alias="tray_fileoffer.png" preprocess="to-pixdata" compressed="true">icons/tray_fileoffer.png</file>
|
||||
<file alias="tray_highlight.png" preprocess="to-pixdata" compressed="true">icons/tray_highlight.png</file>
|
||||
<file alias="tray_message.png" preprocess="to-pixdata" compressed="true">icons/tray_message.png</file>
|
||||
|
||||
<file alias="tree_channel.png" preprocess="to-pixdata">icons/tree_channel.png</file>
|
||||
<file alias="tree_dialog.png" preprocess="to-pixdata" compressed="true">icons/tree_dialog.png</file>
|
||||
<file alias="tree_server.png" preprocess="to-pixdata" compressed="true">icons/tree_server.png</file>
|
||||
<file alias="tree_util.png" preprocess="to-pixdata" compressed="true">icons/tree_util.png</file>
|
||||
</gresource>
|
||||
</gresources>
|
@ -1,4 +1,4 @@
|
||||
icon_DATA = ../../src/pixmaps/hexchat.png
|
||||
icon_DATA = hexchat.png
|
||||
icondir = $(datadir)/icons/hicolor/48x48/apps
|
||||
|
||||
hicolor_DATA = hexchat.svg
|
Before Width: | Height: | Size: 841 B After Width: | Height: | Size: 841 B |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
@ -10,9 +10,9 @@
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="hexchat2.svg"
|
||||
sodipodi:docname="hexchat.svg"
|
||||
version="1.0"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:version="0.32"
|
||||
id="svg2"
|
||||
height="64"
|
||||
@ -446,6 +446,201 @@
|
||||
operator="over"
|
||||
result="composite2" />
|
||||
</filter>
|
||||
<filter
|
||||
id="filter3670"
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow">
|
||||
<feFlood
|
||||
id="feFlood3672"
|
||||
flood-opacity="0.2"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood" />
|
||||
<feComposite
|
||||
id="feComposite3674"
|
||||
in2="SourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3676"
|
||||
in="composite"
|
||||
stdDeviation="1.5"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset3678"
|
||||
dx="0"
|
||||
dy="4"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite3680"
|
||||
in2="offset"
|
||||
in="SourceGraphic"
|
||||
operator="over"
|
||||
result="fbSourceGraphic" />
|
||||
<feColorMatrix
|
||||
result="fbSourceGraphicAlpha"
|
||||
in="fbSourceGraphic"
|
||||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
||||
id="feColorMatrix3682" />
|
||||
<feFlood
|
||||
id="feFlood3684"
|
||||
flood-opacity="0.2"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood"
|
||||
in="fbSourceGraphic" />
|
||||
<feComposite
|
||||
id="feComposite3686"
|
||||
in2="fbSourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3688"
|
||||
in="composite"
|
||||
stdDeviation="1.5"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset3690"
|
||||
dx="0"
|
||||
dy="2"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite3692"
|
||||
in2="offset"
|
||||
in="fbSourceGraphic"
|
||||
operator="over"
|
||||
result="fbSourceGraphic" />
|
||||
<feColorMatrix
|
||||
result="fbSourceGraphicAlpha"
|
||||
in="fbSourceGraphic"
|
||||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
||||
id="feColorMatrix3706" />
|
||||
<feFlood
|
||||
id="feFlood3708"
|
||||
flood-opacity="0.2"
|
||||
flood-color="rgb(255,255,255)"
|
||||
result="flood"
|
||||
in="fbSourceGraphic" />
|
||||
<feComposite
|
||||
id="feComposite3710"
|
||||
in2="fbSourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3712"
|
||||
in="composite"
|
||||
stdDeviation="1"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset3714"
|
||||
dx="0"
|
||||
dy="1"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite3716"
|
||||
in2="offset"
|
||||
in="fbSourceGraphic"
|
||||
operator="over"
|
||||
result="fbSourceGraphic" />
|
||||
<feColorMatrix
|
||||
result="fbSourceGraphicAlpha"
|
||||
in="fbSourceGraphic"
|
||||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
||||
id="feColorMatrix3123" />
|
||||
<feFlood
|
||||
id="feFlood3125"
|
||||
flood-opacity="0.2"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood"
|
||||
in="fbSourceGraphic" />
|
||||
<feComposite
|
||||
id="feComposite3127"
|
||||
in2="fbSourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3129"
|
||||
in="composite"
|
||||
stdDeviation="1"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset3131"
|
||||
dx="0"
|
||||
dy="2"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite3133"
|
||||
in2="offset"
|
||||
in="fbSourceGraphic"
|
||||
operator="over"
|
||||
result="composite2" />
|
||||
</filter>
|
||||
<filter
|
||||
id="filter3135"
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow">
|
||||
<feFlood
|
||||
id="feFlood3137"
|
||||
flood-opacity="0.2"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood" />
|
||||
<feComposite
|
||||
id="feComposite3139"
|
||||
in2="SourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3141"
|
||||
in="composite"
|
||||
stdDeviation="1"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset3143"
|
||||
dx="0"
|
||||
dy="1"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite3145"
|
||||
in2="offset"
|
||||
in="SourceGraphic"
|
||||
operator="over"
|
||||
result="composite2" />
|
||||
</filter>
|
||||
<filter
|
||||
id="filter3183"
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow">
|
||||
<feFlood
|
||||
id="feFlood3185"
|
||||
flood-opacity="0.3"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood" />
|
||||
<feComposite
|
||||
id="feComposite3187"
|
||||
in2="SourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3189"
|
||||
in="composite"
|
||||
stdDeviation="2"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset3191"
|
||||
dx="0"
|
||||
dy="2"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite3193"
|
||||
in2="offset"
|
||||
in="SourceGraphic"
|
||||
operator="over"
|
||||
result="composite2" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
@ -454,16 +649,16 @@
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8284271"
|
||||
inkscape:cx="-86.273528"
|
||||
inkscape:cy="9.7239157"
|
||||
inkscape:zoom="7.9999999"
|
||||
inkscape:cx="61.011203"
|
||||
inkscape:cy="36.086679"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1270"
|
||||
inkscape:window-height="972"
|
||||
inkscape:window-x="115"
|
||||
inkscape:window-y="32"
|
||||
inkscape:window-height="837"
|
||||
inkscape:window-x="287"
|
||||
inkscape:window-y="27"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-maximized="0">
|
||||
@ -514,34 +709,37 @@
|
||||
inkscape:label="Calque 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4107"
|
||||
d="m 31.404792,8.7464684 c -6.271873,0.05843 -12.553,0.431777 -13.735377,1.075609 C 15.304661,11.109737 4.1505773,29.32852 4.1783444,31.859522 c 0.02777,2.531005 11.5871596,20.543967 13.9796816,21.787309 2.392519,1.243342 25.106,1.037521 27.470753,-0.250141 C 47.993531,52.109028 59.147618,33.890246 59.119851,31.359242 59.092081,28.828238 47.532689,10.790262 45.140167,9.5469214 43.943907,8.9252504 37.676665,8.6880384 31.404792,8.7464684 z m 0.05429,4.5275596 c 4.90437,-0.047 9.786849,0.175368 10.722281,0.67538 1.870861,1.000021 10.917726,15.499216 10.939439,17.534904 C 53.142512,33.52 44.410541,48.158649 42.561393,49.194315 40.712245,50.229983 22.960549,50.419464 21.089689,49.419444 19.218826,48.419423 10.199106,33.920226 10.177392,31.884537 10.155682,29.84885 18.860508,15.185189 20.709656,14.14952 c 0.924575,-0.517833 5.845056,-0.828498 10.749425,-0.875492 z"
|
||||
style="fill:#000000;fill-opacity:1;filter:url(#filter4111)" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4103"
|
||||
d="M 31.801142,5.3887159 C 24.358829,5.4607629 16.905535,5.9211193 15.502506,6.7149966 12.696449,8.3027513 -0.53918189,30.767467 -0.50623228,33.888328 -0.47328049,37.00919 13.243292,59.220118 16.0823,60.753225 18.921305,62.286332 45.873514,62.032541 48.67957,60.444787 51.485627,58.857032 64.721258,36.392315 64.688309,33.271454 64.655357,30.150593 50.938784,7.9088218 48.099776,6.3757155 46.680274,5.6091623 39.243454,5.3166688 31.801142,5.3887159 z m 0.06442,5.5827171 c 5.81961,-0.05795 11.613244,0.216241 12.723243,0.83278 2.219996,1.233079 12.955163,19.111349 12.980929,21.621461 0.02577,2.51011 -10.335747,20.560333 -12.529979,21.837366 -2.19423,1.277031 -23.2587,1.510671 -25.478697,0.277592 C 17.341063,54.307554 6.638107,36.429283 6.6123418,33.919173 6.5865755,31.409062 16.915878,13.327995 19.110109,12.050964 20.207224,11.412447 26.045952,11.02938 31.865563,10.971433 z"
|
||||
style="fill:#000000;fill-opacity:1;filter:url(#filter4123)"
|
||||
transform="matrix(0.97890109,0,0,0.98965389,0.52623659,-1.3159842)" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccccccccccc"
|
||||
id="path2297"
|
||||
d="m 10.723737,18.285684 7.623916,-7.935243 13.238019,13.886676 12.492701,-13.886676 8.576909,7.935243 -14.294847,14.878584 13.341856,11.902864 -6.670928,6.94334 L 31.585672,39.351071 18.573785,52.010472 11.676724,45.086347 24.065591,33.164268 10.723737,18.285684 z"
|
||||
style="fill:url(#linearGradient3133);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.31593215000000010;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter3138)"
|
||||
inkscape:transform-center-x="2.25"
|
||||
inkscape:transform-center-y="2.25" />
|
||||
<path
|
||||
style="fill:url(#linearGradient4101);fill-opacity:1"
|
||||
d="M 31.293607,6.0952825 C 24.436514,6.1604875 17.569304,6.5771256 16.276601,7.2956116 13.691196,8.7325834 1.4963386,29.063913 1.5266972,31.888398 1.5570579,34.712884 14.195039,54.814527 16.810803,56.20204 19.426566,57.589553 44.25941,57.359866 46.844814,55.922894 49.430219,54.485922 61.625078,34.154591 61.594719,31.330106 61.564358,28.505621 48.926376,8.3760634 46.310612,6.9885506 45.002731,6.294794 38.150699,6.0300774 31.293607,6.0952825 z m 0.05936,5.0525485 c 5.36199,-0.05245 10.700046,0.195704 11.722761,0.753694 2.045429,1.115978 11.936445,17.296419 11.960184,19.568154 0.02374,2.271736 -9.523004,18.6078 -11.544693,19.763557 -2.02169,1.155758 -21.429773,1.36721 -23.475201,0.251232 C 17.970585,50.368491 8.1092472,34.188049 8.085508,31.916313 8.061768,29.644577 17.578834,13.2806 19.600523,12.124842 c 1.010846,-0.577879 6.39045,-0.924567 11.75244,-0.977011 z"
|
||||
id="path3305"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none"
|
||||
d="M 14.640198,55.682743 C 9.6971439,47.360612 2.8950957,35.733851 2.9419881,35.686959 c 0.031272,-0.03127 0.5023581,0.289334 1.0468575,0.712459 0.5444994,0.423125 1.0414462,0.769317 1.1043264,0.769317 0.06288,0 2.6329414,4.276521 5.711247,9.50338 l 5.59692,9.503379 2.159128,0.007 2.159126,0.007 -0.34365,-0.584653 C 20.186937,55.28323 17.303514,50.518786 13.968339,45.017137 10.633164,39.515488 7.9043842,34.929294 7.9043842,34.825595 c 0,-0.103699 0.2455542,-0.59277 0.545676,-1.086823 0.3001218,-0.494053 0.545676,-0.941721 0.545676,-0.994816 0,-0.05309 -0.2788317,-0.09654 -0.619626,-0.09654 -0.8505388,0 -1.0953557,-0.488405 -1.0953557,-2.185211 0,-1.90734 -0.048411,-1.868066 2.30512,-1.870072 l 1.9823345,-0.0017 1.052375,-1.721616 c 0.578806,-0.94689 1.052375,-1.785869 1.052375,-1.8644 0,-0.07853 -0.829918,-0.162484 -1.844262,-0.186561 l -1.8442631,-0.04378 4.4809551,-7.327649 4.480953,-7.32765 12.466741,-0.0399 12.466738,-0.0399 0.517892,0.854518 0.517892,0.854518 2.335995,0.04287 2.335994,0.04287 2.742626,4.521316 c 1.508447,2.486723 4.136212,6.819001 5.839482,9.627283 1.703268,2.808283 3.157599,5.105969 3.231846,5.105969 0.256907,0 0.13186,-0.393635 -0.411085,-1.294044 -0.299901,-0.497351 -0.545275,-0.935841 -0.545275,-0.974422 0,-0.03858 0.310833,-0.07015 0.69074,-0.07015 0.575204,0 0.699074,-0.05324 0.740561,-0.318272 0.03599,-0.229934 0.273254,0.06215 0.854835,1.052375 0.702767,1.196557 0.780303,1.410253 0.610448,1.682462 -0.107012,0.171499 -0.377881,0.627528 -0.601929,1.013399 l -0.407361,0.701583 0.533953,0.857491 c 0.293674,0.47162 0.535536,0.950306 0.537472,1.063747 0.0019,0.113441 -3.098537,5.322698 -6.889942,11.576127 l -6.893462,11.36987 -16.876654,0 -16.876655,0 -1.226996,-2.065773 z"
|
||||
id="path3077"
|
||||
inkscape:connector-curvature="0" />
|
||||
<g
|
||||
id="g3663">
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;"
|
||||
d="m 31.404792,8.7464684 c -6.271873,0.05843 -12.553,0.431777 -13.735377,1.075609 C 15.304661,11.109737 4.1505773,29.32852 4.1783444,31.859522 c 0.02777,2.531005 11.5871596,20.543967 13.9796816,21.787309 2.392519,1.243342 25.106,1.037521 27.470753,-0.250141 C 47.993531,52.109028 59.147618,33.890246 59.119851,31.359242 59.092081,28.828238 47.532689,10.790262 45.140167,9.5469214 43.943907,8.9252504 37.676665,8.6880384 31.404792,8.7464684 z m 0.05429,4.5275596 c 4.90437,-0.047 9.786849,0.175368 10.722281,0.67538 1.870861,1.000021 10.917726,15.499216 10.939439,17.534904 C 53.142512,33.52 44.410541,48.158649 42.561393,49.194315 40.712245,50.229983 22.960549,50.419464 21.089689,49.419444 19.218826,48.419423 10.199106,33.920226 10.177392,31.884537 10.155682,29.84885 18.860508,15.185189 20.709656,14.14952 c 0.924575,-0.517833 5.845056,-0.828498 10.749425,-0.875492 z"
|
||||
id="path4107"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
transform="matrix(0.97890109,0,0,0.98965389,0.52623659,-1.3159842)"
|
||||
style="fill:#000000;fill-opacity:1;"
|
||||
d="M 31.801142,5.3887159 C 24.358829,5.4607629 16.905535,5.9211193 15.502506,6.7149966 12.696449,8.3027513 -0.53918189,30.767467 -0.50623228,33.888328 -0.47328049,37.00919 13.243292,59.220118 16.0823,60.753225 18.921305,62.286332 45.873514,62.032541 48.67957,60.444787 51.485627,58.857032 64.721258,36.392315 64.688309,33.271454 64.655357,30.150593 50.938784,7.9088218 48.099776,6.3757155 46.680274,5.6091623 39.243454,5.3166688 31.801142,5.3887159 z m 0.06442,5.5827171 c 5.81961,-0.05795 11.613244,0.216241 12.723243,0.83278 2.219996,1.233079 12.955163,19.111349 12.980929,21.621461 0.02577,2.51011 -10.335747,20.560333 -12.529979,21.837366 -2.19423,1.277031 -23.2587,1.510671 -25.478697,0.277592 C 17.341063,54.307554 6.638107,36.429283 6.6123418,33.919173 6.5865755,31.409062 16.915878,13.327995 19.110109,12.050964 20.207224,11.412447 26.045952,11.02938 31.865563,10.971433 z"
|
||||
id="path4103"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:transform-center-y="2.25"
|
||||
inkscape:transform-center-x="2.25"
|
||||
style="fill:url(#linearGradient3133);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.31593215000000008;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;"
|
||||
d="m 10.723737,18.285684 7.623916,-7.935243 13.238019,13.886676 12.492701,-13.886676 8.576909,7.935243 -14.294847,14.878584 13.341856,11.902864 -6.670928,6.94334 L 31.585672,39.351071 18.573785,52.010472 11.676724,45.086347 24.065591,33.164268 10.723737,18.285684 z"
|
||||
id="path2297"
|
||||
sodipodi:nodetypes="ccccccccccccc"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3305"
|
||||
d="M 31.293607,6.0952825 C 24.436514,6.1604875 17.569304,6.5771256 16.276601,7.2956116 13.691196,8.7325834 1.4963386,29.063913 1.5266972,31.888398 1.5570579,34.712884 14.195039,54.814527 16.810803,56.20204 19.426566,57.589553 44.25941,57.359866 46.844814,55.922894 49.430219,54.485922 61.625078,34.154591 61.594719,31.330106 61.564358,28.505621 48.926376,8.3760634 46.310612,6.9885506 45.002731,6.294794 38.150699,6.0300774 31.293607,6.0952825 z m 0.05936,5.0525485 c 5.36199,-0.05245 10.700046,0.195704 11.722761,0.753694 2.045429,1.115978 11.936445,17.296419 11.960184,19.568154 0.02374,2.271736 -9.523004,18.6078 -11.544693,19.763557 -2.02169,1.155758 -21.429773,1.36721 -23.475201,0.251232 C 17.970585,50.368491 8.1092472,34.188049 8.085508,31.916313 8.061768,29.644577 17.578834,13.2806 19.600523,12.124842 c 1.010846,-0.577879 6.39045,-0.924567 11.75244,-0.977011 z"
|
||||
style="fill:url(#linearGradient4101);fill-opacity:1;" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3077"
|
||||
d="M 14.640198,55.682743 C 9.6971439,47.360612 2.8950957,35.733851 2.9419881,35.686959 c 0.031272,-0.03127 0.5023581,0.289334 1.0468575,0.712459 0.5444994,0.423125 1.0414462,0.769317 1.1043264,0.769317 0.06288,0 2.6329414,4.276521 5.711247,9.50338 l 5.59692,9.503379 2.159128,0.007 2.159126,0.007 -0.34365,-0.584653 C 20.186937,55.28323 17.303514,50.518786 13.968339,45.017137 10.633164,39.515488 7.9043842,34.929294 7.9043842,34.825595 c 0,-0.103699 0.2455542,-0.59277 0.545676,-1.086823 0.3001218,-0.494053 0.545676,-0.941721 0.545676,-0.994816 0,-0.05309 -0.2788317,-0.09654 -0.619626,-0.09654 -0.8505388,0 -1.0953557,-0.488405 -1.0953557,-2.185211 0,-1.90734 -0.048411,-1.868066 2.30512,-1.870072 l 1.9823345,-0.0017 1.052375,-1.721616 c 0.578806,-0.94689 1.052375,-1.785869 1.052375,-1.8644 0,-0.07853 -0.829918,-0.162484 -1.844262,-0.186561 l -1.8442631,-0.04378 4.4809551,-7.327649 4.480953,-7.32765 12.466741,-0.0399 12.466738,-0.0399 0.517892,0.854518 0.517892,0.854518 2.335995,0.04287 2.335994,0.04287 2.742626,4.521316 c 1.508447,2.486723 4.136212,6.819001 5.839482,9.627283 1.703268,2.808283 3.157599,5.105969 3.231846,5.105969 0.256907,0 0.13186,-0.393635 -0.411085,-1.294044 -0.299901,-0.497351 -0.545275,-0.935841 -0.545275,-0.974422 0,-0.03858 0.310833,-0.07015 0.69074,-0.07015 0.575204,0 0.699074,-0.05324 0.740561,-0.318272 0.03599,-0.229934 0.273254,0.06215 0.854835,1.052375 0.702767,1.196557 0.780303,1.410253 0.610448,1.682462 -0.107012,0.171499 -0.377881,0.627528 -0.601929,1.013399 l -0.407361,0.701583 0.533953,0.857491 c 0.293674,0.47162 0.535536,0.950306 0.537472,1.063747 0.0019,0.113441 -3.098537,5.322698 -6.889942,11.576127 l -6.893462,11.36987 -16.876654,0 -16.876655,0 -1.226996,-2.065773 z"
|
||||
style="fill:none;" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
746
data/icons/hexchat.svg
Normal file
@ -0,0 +1,746 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
sodipodi:docname="hexchat.svg"
|
||||
version="1.0"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:version="0.32"
|
||||
id="svg2"
|
||||
height="64"
|
||||
width="64">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
id="linearGradient2289">
|
||||
<stop
|
||||
style="stop-color:#ff2600;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop2291" />
|
||||
<stop
|
||||
style="stop-color:#ffd600;stop-opacity:1;"
|
||||
offset="1"
|
||||
id="stop2293" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289"
|
||||
id="linearGradient1335"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.545166,0,0,0.544959,0.186963,35.29511)"
|
||||
x1="16.88862"
|
||||
y1="77.796608"
|
||||
x2="72.348671"
|
||||
y2="20.59322" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289"
|
||||
id="linearGradient1337"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.545166,0,0,0.544959,0.186963,35.29511)"
|
||||
x1="16.88862"
|
||||
y1="77.796608"
|
||||
x2="16.88862"
|
||||
y2="19.001091" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289"
|
||||
id="linearGradient1317"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.735969,0,0,0.735801,-2.052758,-16.66733)"
|
||||
x1="16.88862"
|
||||
y1="77.796608"
|
||||
x2="72.348671"
|
||||
y2="20.59322" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289"
|
||||
id="linearGradient1319"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.735969,0,0,0.735801,-2.052758,-16.66733)"
|
||||
x1="16.88862"
|
||||
y1="77.796608"
|
||||
x2="16.88862"
|
||||
y2="19.001091" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289"
|
||||
id="linearGradient1320"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.735969,0,0,0.735801,-2.172329,-1.111016)"
|
||||
x1="16.88862"
|
||||
y1="77.796608"
|
||||
x2="72.348671"
|
||||
y2="20.59322" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289"
|
||||
id="linearGradient1322"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.735969,0,0,0.735801,-2.172329,-1.111016)"
|
||||
x1="16.88862"
|
||||
y1="77.796608"
|
||||
x2="16.88862"
|
||||
y2="19.001091" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289"
|
||||
id="linearGradient2997"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.735969,0,0,0.735801,-160.10656,-7.1914058)"
|
||||
x1="130.2673"
|
||||
y1="78.743134"
|
||||
x2="129.2081"
|
||||
y2="25.771122" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289"
|
||||
id="linearGradient3011"
|
||||
x1="34.62241"
|
||||
y1="53.508884"
|
||||
x2="34.466503"
|
||||
y2="5.4893961"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289"
|
||||
id="linearGradient3030"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="34.62241"
|
||||
y1="53.508884"
|
||||
x2="34.466503"
|
||||
y2="5.4893961" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289"
|
||||
id="linearGradient3070"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="34.62241"
|
||||
y1="53.508884"
|
||||
x2="34.466503"
|
||||
y2="5.4893961"
|
||||
gradientTransform="matrix(0.99894925,0,0,0.97549134,-3.1829063,4.465557)" />
|
||||
<filter
|
||||
id="filter3281"
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow">
|
||||
<feFlood
|
||||
id="feFlood3283"
|
||||
flood-opacity="0.33"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood" />
|
||||
<feComposite
|
||||
id="feComposite3285"
|
||||
in2="SourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3287"
|
||||
in="composite"
|
||||
stdDeviation="2"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset3289"
|
||||
dx="4"
|
||||
dy="1"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite3291"
|
||||
in2="offset"
|
||||
in="SourceGraphic"
|
||||
operator="over"
|
||||
result="composite2" />
|
||||
</filter>
|
||||
<filter
|
||||
id="filter3293"
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow">
|
||||
<feFlood
|
||||
id="feFlood3295"
|
||||
flood-opacity="0.33"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood" />
|
||||
<feComposite
|
||||
id="feComposite3297"
|
||||
in2="SourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3299"
|
||||
in="composite"
|
||||
stdDeviation="2"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset3301"
|
||||
dx="4"
|
||||
dy="1"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite3303"
|
||||
in2="offset"
|
||||
in="SourceGraphic"
|
||||
operator="over"
|
||||
result="composite2" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289"
|
||||
id="linearGradient4089"
|
||||
x1="99.348503"
|
||||
y1="59.934135"
|
||||
x2="100.40916"
|
||||
y2="10.613438"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289"
|
||||
id="linearGradient4093"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="99.348503"
|
||||
y1="59.934135"
|
||||
x2="100.40916"
|
||||
y2="10.613438" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289"
|
||||
id="linearGradient4096"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="99.348503"
|
||||
y1="59.934135"
|
||||
x2="100.40916"
|
||||
y2="10.613438" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289"
|
||||
id="linearGradient4098"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="99.348503"
|
||||
y1="59.934135"
|
||||
x2="100.40916"
|
||||
y2="10.613438"
|
||||
gradientTransform="translate(-70.003571,-2.298097)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289-4"
|
||||
id="linearGradient4101"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.94969205,0,0,0.89326813,1.6716955,2.7025635)"
|
||||
x1="31.372862"
|
||||
y1="60.111893"
|
||||
x2="31.559002"
|
||||
y2="5.6897221" />
|
||||
<filter
|
||||
id="filter4111"
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow">
|
||||
<feFlood
|
||||
id="feFlood4113"
|
||||
flood-opacity="0.33"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood" />
|
||||
<feComposite
|
||||
id="feComposite4115"
|
||||
in2="SourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur4117"
|
||||
in="composite"
|
||||
stdDeviation="2"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset4119"
|
||||
dx="4"
|
||||
dy="1"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite4121"
|
||||
in2="offset"
|
||||
in="SourceGraphic"
|
||||
operator="over"
|
||||
result="composite2" />
|
||||
</filter>
|
||||
<filter
|
||||
id="filter4123"
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow">
|
||||
<feFlood
|
||||
id="feFlood4125"
|
||||
flood-opacity="0.33"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood" />
|
||||
<feComposite
|
||||
id="feComposite4127"
|
||||
in2="SourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur4129"
|
||||
in="composite"
|
||||
stdDeviation="2"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset4131"
|
||||
dx="4"
|
||||
dy="1"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite4133"
|
||||
in2="offset"
|
||||
in="SourceGraphic"
|
||||
operator="over"
|
||||
result="composite2" />
|
||||
</filter>
|
||||
<linearGradient
|
||||
y2="19.001091"
|
||||
x2="16.88862"
|
||||
y1="77.796608"
|
||||
x1="16.88862"
|
||||
gradientTransform="matrix(0.735969,0,0,0.735801,-2.172329,-1.111016)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1330"
|
||||
xlink:href="#linearGradient2289-4"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="20.59322"
|
||||
x2="72.348671"
|
||||
y1="77.796608"
|
||||
x1="16.88862"
|
||||
gradientTransform="matrix(0.735969,0,0,0.735801,-2.172329,-1.111016)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1328"
|
||||
xlink:href="#linearGradient2289-4"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="19.001091"
|
||||
x2="16.88862"
|
||||
y1="77.796608"
|
||||
x1="16.88862"
|
||||
gradientTransform="matrix(0.735969,0,0,0.735801,-2.172329,-1.111016)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1322-5"
|
||||
xlink:href="#linearGradient2289-4"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="20.59322"
|
||||
x2="72.348671"
|
||||
y1="77.796608"
|
||||
x1="16.88862"
|
||||
gradientTransform="matrix(0.735969,0,0,0.735801,-2.172329,-1.111016)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1320-4"
|
||||
xlink:href="#linearGradient2289-4"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="19.001091"
|
||||
x2="16.88862"
|
||||
y1="77.796608"
|
||||
x1="16.88862"
|
||||
gradientTransform="matrix(0.735969,0,0,0.735801,-2.052758,-16.66733)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1319-2"
|
||||
xlink:href="#linearGradient2289-4"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="20.59322"
|
||||
x2="72.348671"
|
||||
y1="77.796608"
|
||||
x1="16.88862"
|
||||
gradientTransform="matrix(0.735969,0,0,0.735801,-2.052758,-16.66733)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1317-8"
|
||||
xlink:href="#linearGradient2289-4"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="19.001091"
|
||||
x2="16.88862"
|
||||
y1="77.796608"
|
||||
x1="16.88862"
|
||||
gradientTransform="matrix(0.545166,0,0,0.544959,0.186963,35.29511)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1337-8"
|
||||
xlink:href="#linearGradient2289-4"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
y2="20.59322"
|
||||
x2="72.348671"
|
||||
y1="77.796608"
|
||||
x1="16.88862"
|
||||
gradientTransform="matrix(0.545166,0,0,0.544959,0.186963,35.29511)"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
id="linearGradient1335-4"
|
||||
xlink:href="#linearGradient2289-4"
|
||||
inkscape:collect="always" />
|
||||
<linearGradient
|
||||
id="linearGradient2289-4">
|
||||
<stop
|
||||
id="stop2291-0"
|
||||
offset="0"
|
||||
style="stop-color:#ff2600;stop-opacity:1;" />
|
||||
<stop
|
||||
id="stop2293-9"
|
||||
offset="1"
|
||||
style="stop-color:#ffd600;stop-opacity:1;" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289-4"
|
||||
id="linearGradient3133"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.51445624,0,0,0.53856587,7.3477348,6.9450134)"
|
||||
x1="46.881573"
|
||||
y1="91.824585"
|
||||
x2="47.225189"
|
||||
y2="1.5596932" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient2289-4"
|
||||
id="linearGradient3136"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(0.51445624,0,0,0.53856587,-120.3871,-29.360443)"
|
||||
x1="16.88862"
|
||||
y1="77.796608"
|
||||
x2="72.348671"
|
||||
y2="20.59322" />
|
||||
<filter
|
||||
id="filter3138"
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow">
|
||||
<feFlood
|
||||
id="feFlood3140"
|
||||
flood-opacity="0.33"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood" />
|
||||
<feComposite
|
||||
id="feComposite3142"
|
||||
in2="SourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3144"
|
||||
in="composite"
|
||||
stdDeviation="2"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset3146"
|
||||
dx="4"
|
||||
dy="1"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite3148"
|
||||
in2="offset"
|
||||
in="SourceGraphic"
|
||||
operator="over"
|
||||
result="composite2" />
|
||||
</filter>
|
||||
<filter
|
||||
id="filter3670"
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow">
|
||||
<feFlood
|
||||
id="feFlood3672"
|
||||
flood-opacity="0.2"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood" />
|
||||
<feComposite
|
||||
id="feComposite3674"
|
||||
in2="SourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3676"
|
||||
in="composite"
|
||||
stdDeviation="1.5"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset3678"
|
||||
dx="0"
|
||||
dy="4"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite3680"
|
||||
in2="offset"
|
||||
in="SourceGraphic"
|
||||
operator="over"
|
||||
result="fbSourceGraphic" />
|
||||
<feColorMatrix
|
||||
result="fbSourceGraphicAlpha"
|
||||
in="fbSourceGraphic"
|
||||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
||||
id="feColorMatrix3682" />
|
||||
<feFlood
|
||||
id="feFlood3684"
|
||||
flood-opacity="0.2"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood"
|
||||
in="fbSourceGraphic" />
|
||||
<feComposite
|
||||
id="feComposite3686"
|
||||
in2="fbSourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3688"
|
||||
in="composite"
|
||||
stdDeviation="1.5"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset3690"
|
||||
dx="0"
|
||||
dy="2"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite3692"
|
||||
in2="offset"
|
||||
in="fbSourceGraphic"
|
||||
operator="over"
|
||||
result="fbSourceGraphic" />
|
||||
<feColorMatrix
|
||||
result="fbSourceGraphicAlpha"
|
||||
in="fbSourceGraphic"
|
||||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
||||
id="feColorMatrix3706" />
|
||||
<feFlood
|
||||
id="feFlood3708"
|
||||
flood-opacity="0.2"
|
||||
flood-color="rgb(255,255,255)"
|
||||
result="flood"
|
||||
in="fbSourceGraphic" />
|
||||
<feComposite
|
||||
id="feComposite3710"
|
||||
in2="fbSourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3712"
|
||||
in="composite"
|
||||
stdDeviation="1"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset3714"
|
||||
dx="0"
|
||||
dy="1"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite3716"
|
||||
in2="offset"
|
||||
in="fbSourceGraphic"
|
||||
operator="over"
|
||||
result="fbSourceGraphic" />
|
||||
<feColorMatrix
|
||||
result="fbSourceGraphicAlpha"
|
||||
in="fbSourceGraphic"
|
||||
values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
|
||||
id="feColorMatrix3123" />
|
||||
<feFlood
|
||||
id="feFlood3125"
|
||||
flood-opacity="0.2"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood"
|
||||
in="fbSourceGraphic" />
|
||||
<feComposite
|
||||
id="feComposite3127"
|
||||
in2="fbSourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3129"
|
||||
in="composite"
|
||||
stdDeviation="1"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset3131"
|
||||
dx="0"
|
||||
dy="2"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite3133"
|
||||
in2="offset"
|
||||
in="fbSourceGraphic"
|
||||
operator="over"
|
||||
result="composite2" />
|
||||
</filter>
|
||||
<filter
|
||||
id="filter3135"
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow">
|
||||
<feFlood
|
||||
id="feFlood3137"
|
||||
flood-opacity="0.2"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood" />
|
||||
<feComposite
|
||||
id="feComposite3139"
|
||||
in2="SourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3141"
|
||||
in="composite"
|
||||
stdDeviation="1"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset3143"
|
||||
dx="0"
|
||||
dy="1"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite3145"
|
||||
in2="offset"
|
||||
in="SourceGraphic"
|
||||
operator="over"
|
||||
result="composite2" />
|
||||
</filter>
|
||||
<filter
|
||||
id="filter3183"
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow">
|
||||
<feFlood
|
||||
id="feFlood3185"
|
||||
flood-opacity="0.3"
|
||||
flood-color="rgb(0,0,0)"
|
||||
result="flood" />
|
||||
<feComposite
|
||||
id="feComposite3187"
|
||||
in2="SourceGraphic"
|
||||
in="flood"
|
||||
operator="in"
|
||||
result="composite1" />
|
||||
<feGaussianBlur
|
||||
id="feGaussianBlur3189"
|
||||
in="composite"
|
||||
stdDeviation="2"
|
||||
result="blur" />
|
||||
<feOffset
|
||||
id="feOffset3191"
|
||||
dx="0"
|
||||
dy="2"
|
||||
result="offset" />
|
||||
<feComposite
|
||||
id="feComposite3193"
|
||||
in2="offset"
|
||||
in="SourceGraphic"
|
||||
operator="over"
|
||||
result="composite2" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="7.9999999"
|
||||
inkscape:cx="60.761203"
|
||||
inkscape:cy="36.086679"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1270"
|
||||
inkscape:window-height="837"
|
||||
inkscape:window-x="287"
|
||||
inkscape:window-y="27"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
inkscape:window-maximized="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3001" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Guglielmi David</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
|
||||
<dc:rights>
|
||||
<cc:Agent>
|
||||
<dc:title>Peter Zelezny</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:rights>
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/Distribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/Notice" />
|
||||
<cc:permits
|
||||
rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/ShareAlike" />
|
||||
<cc:requires
|
||||
rdf:resource="http://web.resource.org/cc/SourceCode" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Calque 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<g
|
||||
id="g3663"
|
||||
style="filter:url(#filter3183)">
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;"
|
||||
d="m 31.404792,8.7464684 c -6.271873,0.05843 -12.553,0.431777 -13.735377,1.075609 C 15.304661,11.109737 4.1505773,29.32852 4.1783444,31.859522 c 0.02777,2.531005 11.5871596,20.543967 13.9796816,21.787309 2.392519,1.243342 25.106,1.037521 27.470753,-0.250141 C 47.993531,52.109028 59.147618,33.890246 59.119851,31.359242 59.092081,28.828238 47.532689,10.790262 45.140167,9.5469214 43.943907,8.9252504 37.676665,8.6880384 31.404792,8.7464684 z m 0.05429,4.5275596 c 4.90437,-0.047 9.786849,0.175368 10.722281,0.67538 1.870861,1.000021 10.917726,15.499216 10.939439,17.534904 C 53.142512,33.52 44.410541,48.158649 42.561393,49.194315 40.712245,50.229983 22.960549,50.419464 21.089689,49.419444 19.218826,48.419423 10.199106,33.920226 10.177392,31.884537 10.155682,29.84885 18.860508,15.185189 20.709656,14.14952 c 0.924575,-0.517833 5.845056,-0.828498 10.749425,-0.875492 z"
|
||||
id="path4107"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
transform="matrix(0.97890109,0,0,0.98965389,0.52623659,-1.3159842)"
|
||||
style="fill:#000000;fill-opacity:1;"
|
||||
d="M 31.801142,5.3887159 C 24.358829,5.4607629 16.905535,5.9211193 15.502506,6.7149966 12.696449,8.3027513 -0.53918189,30.767467 -0.50623228,33.888328 -0.47328049,37.00919 13.243292,59.220118 16.0823,60.753225 18.921305,62.286332 45.873514,62.032541 48.67957,60.444787 51.485627,58.857032 64.721258,36.392315 64.688309,33.271454 64.655357,30.150593 50.938784,7.9088218 48.099776,6.3757155 46.680274,5.6091623 39.243454,5.3166688 31.801142,5.3887159 z m 0.06442,5.5827171 c 5.81961,-0.05795 11.613244,0.216241 12.723243,0.83278 2.219996,1.233079 12.955163,19.111349 12.980929,21.621461 0.02577,2.51011 -10.335747,20.560333 -12.529979,21.837366 -2.19423,1.277031 -23.2587,1.510671 -25.478697,0.277592 C 17.341063,54.307554 6.638107,36.429283 6.6123418,33.919173 6.5865755,31.409062 16.915878,13.327995 19.110109,12.050964 20.207224,11.412447 26.045952,11.02938 31.865563,10.971433 z"
|
||||
id="path4103"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:transform-center-y="2.25"
|
||||
inkscape:transform-center-x="2.25"
|
||||
style="fill:url(#linearGradient3133);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.31593215000000008;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;"
|
||||
d="m 10.723737,18.285684 7.623916,-7.935243 13.238019,13.886676 12.492701,-13.886676 8.576909,7.935243 -14.294847,14.878584 13.341856,11.902864 -6.670928,6.94334 L 31.585672,39.351071 18.573785,52.010472 11.676724,45.086347 24.065591,33.164268 10.723737,18.285684 z"
|
||||
id="path2297"
|
||||
sodipodi:nodetypes="ccccccccccccc"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3305"
|
||||
d="M 31.293607,6.0952825 C 24.436514,6.1604875 17.569304,6.5771256 16.276601,7.2956116 13.691196,8.7325834 1.4963386,29.063913 1.5266972,31.888398 1.5570579,34.712884 14.195039,54.814527 16.810803,56.20204 19.426566,57.589553 44.25941,57.359866 46.844814,55.922894 49.430219,54.485922 61.625078,34.154591 61.594719,31.330106 61.564358,28.505621 48.926376,8.3760634 46.310612,6.9885506 45.002731,6.294794 38.150699,6.0300774 31.293607,6.0952825 z m 0.05936,5.0525485 c 5.36199,-0.05245 10.700046,0.195704 11.722761,0.753694 2.045429,1.115978 11.936445,17.296419 11.960184,19.568154 0.02374,2.271736 -9.523004,18.6078 -11.544693,19.763557 -2.02169,1.155758 -21.429773,1.36721 -23.475201,0.251232 C 17.970585,50.368491 8.1092472,34.188049 8.085508,31.916313 8.061768,29.644577 17.578834,13.2806 19.600523,12.124842 c 1.010846,-0.577879 6.39045,-0.924567 11.75244,-0.977011 z"
|
||||
style="fill:url(#linearGradient4101);fill-opacity:1;" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3077"
|
||||
d="M 14.640198,55.682743 C 9.6971439,47.360612 2.8950957,35.733851 2.9419881,35.686959 c 0.031272,-0.03127 0.5023581,0.289334 1.0468575,0.712459 0.5444994,0.423125 1.0414462,0.769317 1.1043264,0.769317 0.06288,0 2.6329414,4.276521 5.711247,9.50338 l 5.59692,9.503379 2.159128,0.007 2.159126,0.007 -0.34365,-0.584653 C 20.186937,55.28323 17.303514,50.518786 13.968339,45.017137 10.633164,39.515488 7.9043842,34.929294 7.9043842,34.825595 c 0,-0.103699 0.2455542,-0.59277 0.545676,-1.086823 0.3001218,-0.494053 0.545676,-0.941721 0.545676,-0.994816 0,-0.05309 -0.2788317,-0.09654 -0.619626,-0.09654 -0.8505388,0 -1.0953557,-0.488405 -1.0953557,-2.185211 0,-1.90734 -0.048411,-1.868066 2.30512,-1.870072 l 1.9823345,-0.0017 1.052375,-1.721616 c 0.578806,-0.94689 1.052375,-1.785869 1.052375,-1.8644 0,-0.07853 -0.829918,-0.162484 -1.844262,-0.186561 l -1.8442631,-0.04378 4.4809551,-7.327649 4.480953,-7.32765 12.466741,-0.0399 12.466738,-0.0399 0.517892,0.854518 0.517892,0.854518 2.335995,0.04287 2.335994,0.04287 2.742626,4.521316 c 1.508447,2.486723 4.136212,6.819001 5.839482,9.627283 1.703268,2.808283 3.157599,5.105969 3.231846,5.105969 0.256907,0 0.13186,-0.393635 -0.411085,-1.294044 -0.299901,-0.497351 -0.545275,-0.935841 -0.545275,-0.974422 0,-0.03858 0.310833,-0.07015 0.69074,-0.07015 0.575204,0 0.699074,-0.05324 0.740561,-0.318272 0.03599,-0.229934 0.273254,0.06215 0.854835,1.052375 0.702767,1.196557 0.780303,1.410253 0.610448,1.682462 -0.107012,0.171499 -0.377881,0.627528 -0.601929,1.013399 l -0.407361,0.701583 0.533953,0.857491 c 0.293674,0.47162 0.535536,0.950306 0.537472,1.063747 0.0019,0.113441 -3.098537,5.322698 -6.889942,11.576127 l -6.893462,11.36987 -16.876654,0 -16.876655,0 -1.226996,-2.065773 z"
|
||||
style="fill:none;" />
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 422 B After Width: | Height: | Size: 422 B |
Before Width: | Height: | Size: 911 B After Width: | Height: | Size: 911 B |
Before Width: | Height: | Size: 568 B After Width: | Height: | Size: 568 B |
Before Width: | Height: | Size: 611 B After Width: | Height: | Size: 611 B |
Before Width: | Height: | Size: 660 B After Width: | Height: | Size: 660 B |
Before Width: | Height: | Size: 668 B After Width: | Height: | Size: 668 B |
Before Width: | Height: | Size: 593 B After Width: | Height: | Size: 593 B |
Before Width: | Height: | Size: 691 B After Width: | Height: | Size: 691 B |
Before Width: | Height: | Size: 678 B After Width: | Height: | Size: 678 B |
Before Width: | Height: | Size: 670 B After Width: | Height: | Size: 670 B |
3
data/man/Makefile.am
Normal file
@ -0,0 +1,3 @@
|
||||
man_MANS = hexchat.1
|
||||
|
||||
EXTRA_DIST = hexchat.1.in
|
@ -1,55 +1,55 @@
|
||||
.TH HEXCHAT "1" "April 2013" "HexChat 2.9.5" "User Commands"
|
||||
.SH NAME
|
||||
HexChat \- manual page for HexChat 2.9.5
|
||||
.SH DESCRIPTION
|
||||
.SS "Usage:"
|
||||
.IP
|
||||
hexchat [OPTION...]
|
||||
.SS "Help Options:"
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Show help options
|
||||
.TP
|
||||
\fB\-\-help\-all\fR
|
||||
Show all help options
|
||||
.TP
|
||||
\fB\-\-help\-gtk\fR
|
||||
Show GTK+ Options
|
||||
.SS "Application Options:"
|
||||
.TP
|
||||
\fB\-a\fR, \fB\-\-no\-auto\fR
|
||||
Don't auto connect to servers
|
||||
.TP
|
||||
\fB\-d\fR, \fB\-\-cfgdir\fR=\fIPATH\fR
|
||||
Use a different config directory
|
||||
.TP
|
||||
\fB\-n\fR, \fB\-\-no\-plugins\fR
|
||||
Don't auto load any plugins
|
||||
.TP
|
||||
\fB\-p\fR, \fB\-\-plugindir\fR
|
||||
Show plugin auto\-load directory
|
||||
.TP
|
||||
\fB\-u\fR, \fB\-\-configdir\fR
|
||||
Show user config directory
|
||||
.TP
|
||||
\fB\-\-url\fR=\fIURL\fR
|
||||
Open an irc://server:port/channel URL
|
||||
.TP
|
||||
\fB\-c\fR, \fB\-\-command\fR=\fICOMMAND\fR
|
||||
Execute command:
|
||||
.TP
|
||||
\fB\-e\fR, \fB\-\-existing\fR
|
||||
Open URL or execute command in an existing HexChat
|
||||
.TP
|
||||
\fB\-\-minimize\fR=\fIlevel\fR
|
||||
Begin minimized. Level 0=Normal 1=Iconified 2=Tray
|
||||
.TP
|
||||
\fB\-v\fR, \fB\-\-version\fR
|
||||
Show version information
|
||||
.TP
|
||||
\fB\-\-display\fR=\fIDISPLAY\fR
|
||||
X display to use
|
||||
|
||||
.SH AUTHOR
|
||||
This manual page was written by Davide Puricelli <evo@debian.org> for the Debian GNU/Linux system (but
|
||||
may be used by others).
|
||||
.TH HEXCHAT "1" "April 2013" "HexChat @VERSION@" "User Commands"
|
||||
.SH NAME
|
||||
HexChat \- IRC Client
|
||||
.SH DESCRIPTION
|
||||
.SS "Usage:"
|
||||
.IP
|
||||
hexchat [OPTION...] URL
|
||||
.SS "Help Options:"
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Show help options
|
||||
.TP
|
||||
\fB\-\-help\-all\fR
|
||||
Show all help options
|
||||
.TP
|
||||
\fB\-\-help\-gtk\fR
|
||||
Show GTK+ Options
|
||||
.SS "Application Options:"
|
||||
.TP
|
||||
\fB\-a\fR, \fB\-\-no\-auto\fR
|
||||
Don't auto connect to servers
|
||||
.TP
|
||||
\fB\-d\fR, \fB\-\-cfgdir\fR=\fIPATH\fR
|
||||
Use a different config directory
|
||||
.TP
|
||||
\fB\-n\fR, \fB\-\-no\-plugins\fR
|
||||
Don't auto load any plugins
|
||||
.TP
|
||||
\fB\-p\fR, \fB\-\-plugindir\fR
|
||||
Show plugin auto\-load directory
|
||||
.TP
|
||||
\fB\-u\fR, \fB\-\-configdir\fR
|
||||
Show user config directory
|
||||
.TP
|
||||
\fB\-\-url\fR=\fIURL\fR
|
||||
Open an irc://server:port/channel?key URL
|
||||
.TP
|
||||
\fB\-c\fR, \fB\-\-command\fR=\fICOMMAND\fR
|
||||
Execute command:
|
||||
.TP
|
||||
\fB\-e\fR, \fB\-\-existing\fR
|
||||
Open URL or execute command in an existing HexChat
|
||||
.TP
|
||||
\fB\-\-minimize\fR=\fIlevel\fR
|
||||
Begin minimized. Level 0=Normal 1=Iconified 2=Tray
|
||||
.TP
|
||||
\fB\-v\fR, \fB\-\-version\fR
|
||||
Show version information
|
||||
.TP
|
||||
\fB\-\-display\fR=\fIDISPLAY\fR
|
||||
X display to use
|
||||
|
||||
.SH AUTHOR
|
||||
This manual page was written by Davide Puricelli <evo@debian.org> for the Debian GNU/Linux system (but
|
||||
may be used by others).
|
29
data/misc/Makefile.am
Normal file
@ -0,0 +1,29 @@
|
||||
appdata_in_files = hexchat.appdata.xml.in
|
||||
appdata_DATA = $(appdata_in_files:.xml.in=.xml)
|
||||
appdatadir = $(datadir)/appdata
|
||||
@INTLTOOL_XML_RULE@
|
||||
|
||||
data_desktopdir = $(datadir)/applications
|
||||
data_desktop_in_files = hexchat.desktop.in
|
||||
|
||||
if WITH_TM
|
||||
data_desktop_in_files += htm.desktop.in
|
||||
mime_DATA = htm-mime.xml
|
||||
mimedir = $(datadir)/mime/packages
|
||||
endif
|
||||
|
||||
data_desktop_DATA = $(data_desktop_in_files:.desktop.in=.desktop)
|
||||
@INTLTOOL_DESKTOP_RULE@
|
||||
|
||||
UPDATE_MIME_DATABASE = update-mime-database "$(datadir)/mime" || :
|
||||
UPDATE_DESKTOP_DATABASE = update-desktop-database -q "$(datadir)/applications" || :
|
||||
|
||||
install-data-hook:
|
||||
$(UPDATE_MIME_DATABASE);
|
||||
$(UPDATE_DESKTOP_DATABASE);
|
||||
|
||||
uninstall-hook:
|
||||
$(UPDATE_MIME_DATABASE);
|
||||
$(UPDATE_DESKTOP_DATABASE);
|
||||
|
||||
CLEANFILES = $(appdata_DATA) $(data_desktop_DATA)
|
15
data/misc/hexchat.appdata.xml.in
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<application>
|
||||
<id type="desktop">hexchat.desktop</id>
|
||||
<licence>CC0</licence>
|
||||
<description>
|
||||
<_p>HexChat is an easy to use yet extensible IRC Client. It allows you to securely join multiple networks and talk to users privately or in channels using a customizable interface. You can even transfer files.</_p>
|
||||
<_p>HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, logging, custom themes, and Python/Perl scripts.</_p>
|
||||
</description>
|
||||
<url type="homepage">http://hexchat.github.io</url>
|
||||
<screenshots>
|
||||
<screenshot type="default">http://i.imgur.com/XBbQKXf.png</screenshot>
|
||||
</screenshots>
|
||||
<updatecontact>tingping_at_fedoraproject.org</updatecontact>
|
||||
</application>
|
||||
|
18
data/misc/hexchat.desktop.in
Normal file
@ -0,0 +1,18 @@
|
||||
[Desktop Entry]
|
||||
_Name=HexChat
|
||||
_GenericName=IRC Client
|
||||
_Comment=Chat with other people online
|
||||
_Keywords=IM;Chat;
|
||||
Exec=hexchat %U
|
||||
Icon=hexchat
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=GTK;Network;IRCClient;
|
||||
StartupNotify=true
|
||||
X-GNOME-UsesNotifications=true
|
||||
MimeType=x-scheme-handler/irc;x-scheme-handler/ircs;
|
||||
Actions=SafeMode;
|
||||
|
||||
[Desktop Action SafeMode]
|
||||
_Name=Open Safe Mode
|
||||
Exec=hexchat --no-auto --no-plugins
|
8
data/misc/htm-mime.xml
Normal file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0"?>
|
||||
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
|
||||
<mime-type type="application/x-hct">
|
||||
<comment>HexChat theme archives</comment>
|
||||
<icon name="hexchat" />
|
||||
<glob pattern="*.hct" weight="100" />
|
||||
</mime-type>
|
||||
</mime-info>
|
7
data/misc/htm.desktop.in
Normal file
@ -0,0 +1,7 @@
|
||||
[Desktop Entry]
|
||||
_Name=HexChat Theme Manager
|
||||
Exec=thememan %f
|
||||
Icon=hexchat
|
||||
Terminal=false
|
||||
Type=Application
|
||||
MimeType=application/x-hct;
|
4
data/pkgconfig/Makefile.am
Normal file
@ -0,0 +1,4 @@
|
||||
pkgcfgdir = $(pkgconfigdir)
|
||||
pkgcfg_DATA = hexchat-plugin.pc
|
||||
|
||||
EXTRA_DIST = hexchat-plugin.pc.in
|
9
data/pkgconfig/hexchat-plugin.pc.in
Normal file
@ -0,0 +1,9 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=${prefix}
|
||||
includedir=@includedir@
|
||||
hexchatlibdir=@hexchatlibdir@
|
||||
|
||||
Name: HexChat plugins
|
||||
Description: Header and path for HexChat plugins
|
||||
Version: @VERSION@
|
||||
Cflags: -I${includedir}
|
@ -1 +0,0 @@
|
||||
man_MANS = hexchat.1
|
30
osx/Info.plist.in
Normal file
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>HexChat</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
<string>@VERSION@</string>
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>hexchat.icns</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.hexchat</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>@VERSION@</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>@VERSION@</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string></string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.4</string>
|
||||
</dict>
|
||||
</plist>
|
435
osx/gtkrc
Normal file
@ -0,0 +1,435 @@
|
||||
# Mac Theme for Xamarin composed by Lanedo GmbH
|
||||
# Copyright 2012 Xamarin Inc.
|
||||
# Authors:
|
||||
# Christian Kellner <christian.kellner@lanedo.com>
|
||||
# Carlos Garnacho <carlos.garnacho@lanedo.com>
|
||||
#
|
||||
# Modified by HexChat
|
||||
#
|
||||
|
||||
gtk-color-scheme =
|
||||
"bg_color: #f5f5f5
|
||||
fg_color: #000
|
||||
base_color: #fff
|
||||
text_color: #000
|
||||
selected_bg_color: #0066FF
|
||||
selected_fg_color: #fff
|
||||
tooltip_bg_color: #fafaba
|
||||
tooltip_fg_color: #000"
|
||||
|
||||
gtk-button-images = 0
|
||||
gtk-menu-images = 0
|
||||
gtk-toolbar-style = 0
|
||||
gtk-enable-mnemonics = 0
|
||||
gtk-icon-sizes = "gtk-small-toolbar=16,16:gtk-large-toolbar=22,22"
|
||||
gtk-toolbar-icon-size = large-toolbar
|
||||
gtk-auto-mnemonics = 1
|
||||
gtk-error-bell = 0
|
||||
gtk-show-input-method-menu = 0
|
||||
gtk-key-theme-name="Mac"
|
||||
|
||||
style "default" {
|
||||
xthickness = 1
|
||||
ythickness = 1
|
||||
|
||||
### colours
|
||||
bg[NORMAL] = @bg_color
|
||||
bg[PRELIGHT] = @bg_color
|
||||
bg[SELECTED] = @selected_bg_color
|
||||
bg[INSENSITIVE] = @bg_color
|
||||
bg[ACTIVE] = @bg_color
|
||||
|
||||
fg[NORMAL] = @fg_color
|
||||
fg[PRELIGHT] = @fg_color
|
||||
fg[SELECTED] = @selected_fg_color
|
||||
fg[INSENSITIVE] = darker (@bg_color)
|
||||
fg[ACTIVE] = @fg_color
|
||||
|
||||
text[NORMAL] = @text_color
|
||||
text[PRELIGHT] = @text_color
|
||||
text[SELECTED] = @selected_fg_color
|
||||
text[INSENSITIVE] = darker (@bg_color)
|
||||
text[ACTIVE] = @text_color
|
||||
|
||||
base[NORMAL] = @base_color
|
||||
base[PRELIGHT] = @selected_bg_color
|
||||
base[SELECTED] = @selected_bg_color
|
||||
base[INSENSITIVE] = @bg_color
|
||||
base[ACTIVE] = shade (1.3, @selected_bg_color)
|
||||
|
||||
### style properties
|
||||
GtkWidget::new-tooltip-style = 1
|
||||
|
||||
GtkEntry::honors-transparent-bg-hint = 1
|
||||
GtkEntry::inner-border = { 2, 2, 2, 2 }
|
||||
|
||||
GtkButton::child-displacement-x = 0
|
||||
GtkButton::child-displacement-y = 0
|
||||
GtkButton::default-border = { 0, 0, 0, 0 }
|
||||
GtkButton::inner-border = { 2, 2, 4, 4 }
|
||||
|
||||
GtkButtonBox::child-min-width = 70
|
||||
GtkButtonBox::child-min-height = 22
|
||||
|
||||
GtkTreeView::odd-row-color = "#f0f4f9"
|
||||
|
||||
GtkScrolledWindow::scrollbar-spacing = 0
|
||||
GtkScrolledWindow::scrollbars-within-bevel = 1
|
||||
GtkScale::slider-length = 14
|
||||
GtkRange::trough-side-details = 1
|
||||
|
||||
GtkTreeView::expander-size = 8
|
||||
GtkExpander::expander-size = 8
|
||||
GtkComboBox::arrow-size = 12
|
||||
|
||||
GtkMenu::vertical-padding = 4
|
||||
GtkMenuItem::horizontal-padding = 9
|
||||
GtkMenuItem::toggle-spacing = 0
|
||||
GtkSeparatorMenuItem::horizontal-padding = 2
|
||||
|
||||
engine "xamarin" {
|
||||
|
||||
arrowstyle = 2
|
||||
rgba = TRUE
|
||||
roundness = 3
|
||||
glazestyle = 0
|
||||
|
||||
menustyle = 0
|
||||
menuitemstyle = 0
|
||||
menubaritemstyle = 0
|
||||
comboboxstyle = 1
|
||||
spinbuttonstyle = 1
|
||||
colorize_scrollbar = FALSE
|
||||
progressbarstyle = 0
|
||||
trough_shades = { 0.842, 0.886 }
|
||||
}
|
||||
}
|
||||
|
||||
style "wide" = "default" {
|
||||
xthickness = 2
|
||||
ythickness = 2
|
||||
}
|
||||
|
||||
style "wider" = "default" {
|
||||
xthickness = 3
|
||||
ythickness = 3
|
||||
}
|
||||
|
||||
|
||||
style "button" {
|
||||
xthickness = 2
|
||||
ythickness = 2
|
||||
|
||||
bg[NORMAL] = @bg_color
|
||||
bg[PRELIGHT] = shade(1.1, @bg_color)
|
||||
bg[ACTIVE] = @bg_color
|
||||
bg[INSENSITIVE] = @bg_color
|
||||
GtkWidget::focus-padding = 0
|
||||
|
||||
engine "quartz" {
|
||||
}
|
||||
}
|
||||
|
||||
style "combo-box-button" {
|
||||
xthickness = 2
|
||||
ythickness = 4
|
||||
|
||||
bg[NORMAL] = @base_color
|
||||
bg[PRELIGHT] = shade(1.1, @base_color)
|
||||
bg[ACTIVE] = @base_color
|
||||
bg[INSENSITIVE] = @base_color
|
||||
GtkWidget::focus-padding = 0
|
||||
|
||||
engine "xamarin" {
|
||||
contrast = 1.0
|
||||
gradient_shades = {0.99, 0.98, 0.97, 0.96}
|
||||
focus_color = shade(0.6, @base_color)
|
||||
textstyle = 1
|
||||
}
|
||||
}
|
||||
|
||||
style "dialog-button" = "default" {
|
||||
xthickness = 3
|
||||
ythickness = 2
|
||||
font_name = "Lucida Grande 13"
|
||||
|
||||
GtkWidget::draw-border = { 2, 2, 2, 2 }
|
||||
GtkWidget::focus-line-width = 1
|
||||
GtkButton::inner-border = { 8, 8, 0, 3 }
|
||||
|
||||
engine "quartz" {
|
||||
buttontype = "aqua"
|
||||
}
|
||||
}
|
||||
|
||||
style "toggle-button" = "button" {
|
||||
bg[NORMAL] = @base_color
|
||||
bg[PRELIGHT] = shade(0.98, @base_color)
|
||||
}
|
||||
|
||||
style "menu" {
|
||||
xthickness = 0
|
||||
ythickness = 0
|
||||
font_name = "Lucida Grande 14"
|
||||
|
||||
bg[PRELIGHT] = @selected_fg_color
|
||||
fg[PRELIGHT] = @selected_fg_color
|
||||
text[PRELIGHT] = @selected_fg_color
|
||||
|
||||
engine "quartz" {
|
||||
}
|
||||
}
|
||||
|
||||
style "menu-item" = "menu" {
|
||||
ythickness = 2
|
||||
GtkWidget::draw-border = { 0, 0, 0, 2 }
|
||||
}
|
||||
|
||||
style "menu-separator" = "menu-item" {
|
||||
ythickness = 3
|
||||
}
|
||||
|
||||
style "toolbar" = "default"
|
||||
{
|
||||
bg[NORMAL] = "#ddd"
|
||||
engine "xamarin" {
|
||||
toolbarstyle = 2
|
||||
}
|
||||
}
|
||||
|
||||
style "toolbar-button"
|
||||
{
|
||||
engine "xamarin" {
|
||||
contrast = 1.0
|
||||
focus_color = @bg_color
|
||||
}
|
||||
}
|
||||
|
||||
style "tooltip"
|
||||
{
|
||||
xthickness = 5
|
||||
ythickness = 5
|
||||
|
||||
fg[NORMAL] = @tooltip_fg_color
|
||||
bg[NORMAL] = @tooltip_bg_color
|
||||
|
||||
engine "xamarin" {
|
||||
roundness = 0
|
||||
}
|
||||
}
|
||||
|
||||
style "treeview" = "default"
|
||||
{
|
||||
GtkTreeView::odd-row-color = "#f5f5f5"
|
||||
|
||||
base[SELECTED] = "#2b5dcd"
|
||||
base[ACTIVE] = "#cacaca"
|
||||
text[SELECTED] = "#FFF"
|
||||
text[ACTIVE] = "#000"
|
||||
|
||||
font_name = "Lucida Grande 12"
|
||||
|
||||
engine "quartz" {
|
||||
}
|
||||
}
|
||||
|
||||
style "tree-header"
|
||||
{
|
||||
ythickness = 0
|
||||
bg[NORMAL] = "#f2f2f2"
|
||||
font_name = "Lucida Grande 11"
|
||||
|
||||
GtkWidget::focus-line-width = 0
|
||||
GtkWidget::draw-border = { 1, 1, 1, 1 }
|
||||
GtkButton::inner-border = { 3, 3, 1, 3 }
|
||||
|
||||
engine "quartz" {
|
||||
}
|
||||
}
|
||||
|
||||
style "icon-view" = "default"
|
||||
{
|
||||
bg[SELECTED] = "#f5f7fa"
|
||||
base[SELECTED] = "#f5f7fa"
|
||||
fg[SELECTED] = "#000"
|
||||
text[SELECTED] = "#000"
|
||||
}
|
||||
|
||||
style "toolbar-combo-box" = "default"
|
||||
{
|
||||
fg[NORMAL] = "#616161"
|
||||
text[NORMAL] = @fg_color
|
||||
bg[NORMAL] = "#fff"
|
||||
base[NORMAL] = "#fff"
|
||||
ythickness = 4
|
||||
xthickness = 2
|
||||
|
||||
engine "xamarin" {
|
||||
comboboxstyle = 0
|
||||
arrowstyle = 2
|
||||
}
|
||||
}
|
||||
|
||||
style "combo-box" = "default"
|
||||
{
|
||||
fg[NORMAL] = "#616161"
|
||||
xthickness = 2
|
||||
ythickness = 4
|
||||
|
||||
engine "xamarin" {
|
||||
arrowstyle = 4
|
||||
}
|
||||
}
|
||||
|
||||
style "combo-box-entry" = "combo-box"
|
||||
{
|
||||
engine "xamarin" {
|
||||
arrowstyle = 3
|
||||
}
|
||||
}
|
||||
|
||||
style "combo-box-label" = "combo-box"
|
||||
{
|
||||
fg[NORMAL] = "#595959"
|
||||
}
|
||||
|
||||
style "combo-box-menu" = "menu" {
|
||||
font_name = "Lucida Grande 12"
|
||||
}
|
||||
|
||||
style "notebook" = "default"
|
||||
{
|
||||
GtkNotebook::tab-overlap = 1
|
||||
#bg[ACTIVE] = @base_color
|
||||
bg[NORMAL] = @base_color
|
||||
|
||||
engine "xamarin" {
|
||||
gradient_shades = { 0.945, 0.945, 0.945, 0.685 }
|
||||
}
|
||||
}
|
||||
|
||||
style "radio-or-check-box"
|
||||
{
|
||||
ythickness = 6
|
||||
#GtkCheckButton::indicator-size = 14
|
||||
GtkCheckButton::indicator-spacing = 4
|
||||
|
||||
engine "quartz" {
|
||||
}
|
||||
}
|
||||
|
||||
style "entry" = "default"
|
||||
{
|
||||
xthickness = 2
|
||||
ythickness = 2
|
||||
GtkEntry::inner-border = { 2, 2, 2, 2 }
|
||||
base[INSENSITIVE] = shade(1.02, @bg_color)
|
||||
|
||||
engine "quartz" {
|
||||
}
|
||||
}
|
||||
|
||||
style "search-entry" = "wider"
|
||||
{
|
||||
xthickness = 6
|
||||
ythickness = 4
|
||||
bg[NORMAL] = @base_color
|
||||
}
|
||||
|
||||
style "scrollbar" = "default"
|
||||
{
|
||||
GtkScrollbar::has-forward-stepper = 0
|
||||
GtkScrollbar::has-backward-stepper = 0
|
||||
GtkRange::slider-width = 15
|
||||
GtkRange::trough-border = 0
|
||||
GtkRange::trough-side-details = 0
|
||||
|
||||
engine "quartz" {
|
||||
}
|
||||
}
|
||||
|
||||
style "progressbar" = "default"
|
||||
{
|
||||
engine "quartz" {
|
||||
}
|
||||
}
|
||||
|
||||
style "scrolled-window" = "default"
|
||||
{
|
||||
xthickness = 1
|
||||
ythickness = 1
|
||||
}
|
||||
|
||||
style "scale" = "default"
|
||||
{
|
||||
bg[SELECTED] = @selected_bg_color
|
||||
|
||||
engine "xamarin" {
|
||||
roundness = 7
|
||||
}
|
||||
}
|
||||
|
||||
style "spin-button" = "wider"
|
||||
{
|
||||
fg[NORMAL] = "#616161"
|
||||
ythickness = 4
|
||||
GtkEntry::inner-border = { 2, 2, 1, 1 }
|
||||
engine "xamarin" {
|
||||
arrowstyle = 3
|
||||
}
|
||||
}
|
||||
|
||||
### Apply the styles
|
||||
class "GtkWidget" style "default"
|
||||
|
||||
class "GtkEntry" style "entry"
|
||||
class "GtkSpinButton" style "spin-button"
|
||||
class "GtkFrame" style "wider"
|
||||
class "GtkRange" style "wide"
|
||||
class "GtkSeparator" style "wide"
|
||||
class "GtkScrollbar" style "scrollbar"
|
||||
class "GtkProgressBar" style "progressbar"
|
||||
class "GtkScrolledWindow" style "scrolled-window"
|
||||
class "GtkNotebook" style "notebook"
|
||||
class "GtkButton" style "button"
|
||||
class "GtkToggleButton" style "toggle-button"
|
||||
class "GtkScale" style "scale"
|
||||
|
||||
#widget "*GtkEntry" style "entry"
|
||||
widget "*search-entry*" style "search-entry"
|
||||
widget "*GtkTextView" style "entry"
|
||||
|
||||
widget_class "<GtkDialog>*<GtkCheckButton>" style "radio-or-check-box"
|
||||
widget_class "<GtkDialog>.<GtkVBox>.<GtkButtonBox>.<GtkButton>*" style "dialog-button"
|
||||
widget_class "<GtkDialog>.<GtkVBox>.<GtkHBox>.<GtkButtonBox>.<GtkButton>*" style "dialog-button"
|
||||
widget "*.toggleFindInFiles" style "toggle-button"
|
||||
widget "*.toggleReplaceInFiles" style "toggle-button"
|
||||
|
||||
widget_class "*<GtkMenu>*" style "menu"
|
||||
widget_class "*<GtkMenuItem>*" style "menu-item"
|
||||
widget_class "*<GtkSeparatorMenuItem>" style "menu-separator"
|
||||
widget "*.gtk-combobox-popup-menu*" style "combo-box-menu"
|
||||
|
||||
widget_class "*<GtkToolbar>*" style "toolbar"
|
||||
widget_class "*ToolButton*" style "toolbar-button"
|
||||
|
||||
widget_class "*.<GtkTreeView>*" style "treeview"
|
||||
widget_class "*.GtkTreeView.GtkButton" style "tree-header"
|
||||
widget_class "*.GtkList.GtkButton" style "tree-header"
|
||||
|
||||
widget_class "*<GtkIconView>" style "icon-view"
|
||||
|
||||
widget_class "*.<GtkComboBox>.*" style "combo-box"
|
||||
widget_class "*.<GtkComboBoxText>.*" style "combo-box-entry"
|
||||
widget_class "*.<GtkComboBoxEntry>.*" style "combo-box-entry"
|
||||
widget_class "*.<GtkComboBoxText>.<GtkEntry>" style "combo-box-entry"
|
||||
widget_class "*.<GtkComboBoxEntry>.<GtkEntry>" style "combo-box-entry"
|
||||
widget_class "*.<GtkComboBoxText>.<GtkToggleButton>" style "combo-box-button"
|
||||
widget_class "*.<GtkComboBoxEntry>.<GtkToggleButton>" style "combo-box-button"
|
||||
widget_class "*.<GtkComboBox>.*.GtkLabel" style "combo-box-label"
|
||||
|
||||
# Comboboxes within toolbars
|
||||
widget_class "*.<GtkToolbar>.*.<GtkComboBox>.*" style "toolbar-combo-box"
|
||||
widget "*MainToolbar*.GtkComboBox.*" style "toolbar-combo-box"
|
||||
|
||||
widget "gtk-tooltip*" style "tooltip"
|
83
osx/hexchat.bundle
Normal file
@ -0,0 +1,83 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<app-bundle>
|
||||
|
||||
<meta>
|
||||
<prefix name="default">${env:JHBUILD_PREFIX}</prefix>
|
||||
<destination overwrite="yes">${project}</destination>
|
||||
|
||||
<run-install-name-tool/>
|
||||
<launcher-script>${project}/launcher.sh</launcher-script >
|
||||
<gtk>gtk+-2.0</gtk>
|
||||
</meta>
|
||||
|
||||
<plist>${project}/Info.plist</plist>
|
||||
|
||||
<main-binary>
|
||||
${prefix}/bin/hexchat
|
||||
</main-binary>
|
||||
|
||||
<binary>
|
||||
${prefix}/lib/hexchat/plugins/*.so
|
||||
</binary>
|
||||
|
||||
<binary>
|
||||
${prefix}/lib/libenchant.dylib
|
||||
</binary>
|
||||
<binary>
|
||||
${prefix}/lib/enchant/libenchant_applespell.so
|
||||
</binary>
|
||||
|
||||
<binary dest="${bundle}/Contents/MacOS">
|
||||
${prefix}/bin/python
|
||||
</binary>
|
||||
<binary>
|
||||
${prefix}/lib/libpython2.7.dylib
|
||||
</binary>
|
||||
<data>
|
||||
${prefix}/lib/python2.7/
|
||||
</data>
|
||||
<data>
|
||||
${prefix}/include/python2.7/pyconfig.h
|
||||
</data>
|
||||
|
||||
<binary>
|
||||
${prefix}/lib/${gtkdir}/modules/*.so
|
||||
</binary>
|
||||
<binary>
|
||||
${prefix}/lib/${gtkdir}/${pkg:${gtk}:gtk_binary_version}/engines/libquartz.so
|
||||
</binary>
|
||||
<binary>
|
||||
${prefix}/lib/${gtkdir}/${pkg:${gtk}:gtk_binary_version}/engines/libxamarin.so
|
||||
</binary>
|
||||
<binary>
|
||||
${prefix}/lib/${gtkdir}/${pkg:${gtk}:gtk_binary_version}/printbackends/*.so
|
||||
</binary>
|
||||
<binary>
|
||||
${prefix}/lib/gdk-pixbuf-2.0/${pkg:${gtk}:gtk_binary_version}/loaders/*.so
|
||||
</binary>
|
||||
<binary>
|
||||
${prefix}/lib/pango/${pkg:pango:pango_module_version}/modules/
|
||||
</binary>
|
||||
<data>
|
||||
${prefix}/share/themes/Mac/
|
||||
</data>
|
||||
|
||||
<translations name="gtk20">
|
||||
${prefix}/share/locale
|
||||
</translations>
|
||||
<translations name="hexchat">
|
||||
${prefix}/share/locale
|
||||
</translations>
|
||||
|
||||
<data dest="${bundle}/Contents/Resources/etc/${gtkdir}/gtkrc">
|
||||
${project}/gtkrc
|
||||
</data>
|
||||
|
||||
<data dest="${bundle}/Contents/Resources">
|
||||
${project}/hexchat.icns
|
||||
</data>
|
||||
|
||||
<!-- icon-theme icons="none">
|
||||
</icon-theme -->
|
||||
|
||||
</app-bundle>
|
BIN
osx/hexchat.icns
Normal file
178
osx/launcher.sh
Executable file
@ -0,0 +1,178 @@
|
||||
#!/bin/sh
|
||||
|
||||
if test "x$GTK_DEBUG_LAUNCHER" != x; then
|
||||
set -x
|
||||
fi
|
||||
|
||||
if test "x$GTK_DEBUG_GDB" != x; then
|
||||
EXEC="gdb --args"
|
||||
else
|
||||
EXEC=exec
|
||||
fi
|
||||
|
||||
name=`basename "$0"`
|
||||
tmp="$0"
|
||||
tmp=`dirname "$tmp"`
|
||||
tmp=`dirname "$tmp"`
|
||||
bundle=`dirname "$tmp"`
|
||||
bundle_contents="$bundle"/Contents
|
||||
bundle_res="$bundle_contents"/Resources
|
||||
bundle_lib="$bundle_res"/lib
|
||||
bundle_bin="$bundle_res"/bin
|
||||
bundle_data="$bundle_res"/share
|
||||
bundle_etc="$bundle_res"/etc
|
||||
|
||||
export PREFIX="$bundle_res"
|
||||
export DYLD_LIBRARY_PATH="$bundle_lib"
|
||||
export XDG_CONFIG_DIRS="$bundle_etc"/xdg
|
||||
export XDG_DATA_DIRS="$bundle_data"
|
||||
export GTK_DATA_PREFIX="$bundle_res"
|
||||
export GTK_EXE_PREFIX="$bundle_res"
|
||||
export GTK_PATH="$bundle_res"
|
||||
|
||||
export GTK2_RC_FILES="$bundle_etc/gtk-2.0/gtkrc"
|
||||
export GTK_IM_MODULE_FILE="$bundle_etc/gtk-2.0/gtk.immodules"
|
||||
export GDK_PIXBUF_MODULE_FILE="$bundle_etc/gtk-2.0/gdk-pixbuf.loaders"
|
||||
export PANGO_LIBDIR="$bundle_lib"
|
||||
export PANGO_SYSCONFDIR="$bundle_etc"
|
||||
|
||||
export PYTHON="$bundle_contents/MacOS/python"
|
||||
export PYTHONHOME="$bundle_res"
|
||||
export PYTHONPATH="$bundle_lib/python2.7:$bundle_lib/python2.7/site-packages"
|
||||
|
||||
export OPENSSL_CONF="/System/Library/OpenSSL/openssl.cnf"
|
||||
|
||||
export HEXCHAT_LIBDIR="$bundle_lib/hexchat/plugins"
|
||||
|
||||
APP=name
|
||||
I18NDIR="$bundle_data/locale"
|
||||
# Set the locale-related variables appropriately:
|
||||
unset LANG LC_MESSAGES LC_MONETARY LC_COLLATE
|
||||
|
||||
# Has a language ordering been set?
|
||||
# If so, set LC_MESSAGES and LANG accordingly; otherwise skip it.
|
||||
# First step uses sed to clean off the quotes and commas, to change - to _, and change the names for the chinese scripts from "Hans" to CN and "Hant" to TW.
|
||||
APPLELANGUAGES=`defaults read .GlobalPreferences AppleLanguages | sed -En -e 's/\-/_/' -e 's/Hant/TW/' -e 's/Hans/CN/' -e 's/[[:space:]]*\"?([[:alnum:]_]+)\"?,?/\1/p' `
|
||||
if test "$APPLELANGUAGES"; then
|
||||
# A language ordering exists.
|
||||
# Test, item per item, to see whether there is an corresponding locale.
|
||||
for L in $APPLELANGUAGES; do
|
||||
#test for exact matches:
|
||||
if test -f "$I18NDIR/${L}/LC_MESSAGES/$APP.mo"; then
|
||||
export LANG=$L
|
||||
break
|
||||
fi
|
||||
#This is a special case, because often the original strings are in US
|
||||
#English and there is no translation file.
|
||||
if test "x$L" == "xen_US"; then
|
||||
export LANG=$L
|
||||
break
|
||||
fi
|
||||
#OK, now test for just the first two letters:
|
||||
if test -f "$I18NDIR/${L:0:2}/LC_MESSAGES/$APP.mo"; then
|
||||
export LANG=${L:0:2}
|
||||
break
|
||||
fi
|
||||
#Same thing, but checking for any english variant.
|
||||
if test "x${L:0:2}" == "xen"; then
|
||||
export LANG=$L
|
||||
break
|
||||
fi;
|
||||
done
|
||||
fi
|
||||
unset APPLELANGUAGES L
|
||||
|
||||
# If we didn't get a language from the language list, try the Collation preference, in case it's the only setting that exists.
|
||||
APPLECOLLATION=`defaults read .GlobalPreferences AppleCollationOrder`
|
||||
if test -z ${LANG} -a -n $APPLECOLLATION; then
|
||||
if test -f "$I18NDIR/${APPLECOLLATION:0:2}/LC_MESSAGES/$APP.mo"; then
|
||||
export LANG=${APPLECOLLATION:0:2}
|
||||
fi
|
||||
fi
|
||||
if test ! -z $APPLECOLLATION; then
|
||||
export LC_COLLATE=$APPLECOLLATION
|
||||
fi
|
||||
unset APPLECOLLATION
|
||||
|
||||
# Continue by attempting to find the Locale preference.
|
||||
APPLELOCALE=`defaults read .GlobalPreferences AppleLocale`
|
||||
|
||||
if test -f "$I18NDIR/${APPLELOCALE:0:5}/LC_MESSAGES/$APP.mo"; then
|
||||
if test -z $LANG; then
|
||||
export LANG="${APPLELOCALE:0:5}"
|
||||
fi
|
||||
|
||||
elif test -z $LANG -a -f "$I18NDIR/${APPLELOCALE:0:2}/LC_MESSAGES/$APP.mo"; then
|
||||
export LANG="${APPLELOCALE:0:2}"
|
||||
fi
|
||||
|
||||
#Next we need to set LC_MESSAGES. If at all possilbe, we want a full
|
||||
#5-character locale to avoid the "Locale not supported by C library"
|
||||
#warning from Gtk -- even though Gtk will translate with a
|
||||
#two-character code.
|
||||
if test -n $LANG; then
|
||||
#If the language code matches the applelocale, then that's the message
|
||||
#locale; otherwise, if it's longer than two characters, then it's
|
||||
#probably a good message locale and we'll go with it.
|
||||
if test $LANG == ${APPLELOCALE:0:5} -o $LANG != ${LANG:0:2}; then
|
||||
export LC_MESSAGES=$LANG
|
||||
#Next try if the Applelocale is longer than 2 chars and the language
|
||||
#bit matches $LANG
|
||||
elif test $LANG == ${APPLELOCALE:0:2} -a $APPLELOCALE > ${APPLELOCALE:0:2}; then
|
||||
export LC_MESSAGES=${APPLELOCALE:0:5}
|
||||
#Fail. Get a list of the locales in $PREFIX/share/locale that match
|
||||
#our two letter language code and pick the first one, special casing
|
||||
#english to set en_US
|
||||
elif test $LANG == "en"; then
|
||||
export LC_MESSAGES="en_US"
|
||||
else
|
||||
LOC=`find $PREFIX/share/locale -name $LANG???`
|
||||
for L in $LOC; do
|
||||
export LC_MESSAGES=$L
|
||||
done
|
||||
fi
|
||||
else
|
||||
#All efforts have failed, so default to US english
|
||||
export LANG="en_US"
|
||||
export LC_MESSAGES="en_US"
|
||||
fi
|
||||
CURRENCY=`echo $APPLELOCALE | sed -En 's/.*currency=([[:alpha:]]+).*/\1/p'`
|
||||
if test "x$CURRENCY" != "x"; then
|
||||
#The user has set a special currency. Gtk doesn't install LC_MONETARY files, but Apple does in /usr/share/locale, so we're going to look there for a locale to set LC_CURRENCY to.
|
||||
if test -f /usr/local/share/$LC_MESSAGES/LC_MONETARY; then
|
||||
if test -a `cat /usr/local/share/$LC_MESSAGES/LC_MONETARY` == $CURRENCY; then
|
||||
export LC_MONETARY=$LC_MESSAGES
|
||||
fi
|
||||
fi
|
||||
if test -z "$LC_MONETARY"; then
|
||||
FILES=`find /usr/share/locale -name LC_MONETARY -exec grep -H $CURRENCY {} \;`
|
||||
if test -n "$FILES"; then
|
||||
export LC_MONETARY=`echo $FILES | sed -En 's%/usr/share/locale/([[:alpha:]_]+)/LC_MONETARY.*%\1%p'`
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
#No currency value means that the AppleLocale governs:
|
||||
if test -z "$LC_MONETARY"; then
|
||||
LC_MONETARY=${APPLELOCALE:0:5}
|
||||
fi
|
||||
#For Gtk, which only looks at LC_ALL:
|
||||
export LC_ALL=$LC_MESSAGES
|
||||
|
||||
unset APPLELOCALE FILES LOC
|
||||
|
||||
if test -f "$bundle_lib/charset.alias"; then
|
||||
export CHARSETALIASDIR="$bundle_lib"
|
||||
fi
|
||||
|
||||
# Extra arguments can be added in environment.sh.
|
||||
EXTRA_ARGS=
|
||||
if test -f "$bundle_res/environment.sh"; then
|
||||
source "$bundle_res/environment.sh"
|
||||
fi
|
||||
|
||||
# Strip out the argument added by the OS.
|
||||
if /bin/expr "x$1" : '^x-psn_' > /dev/null; then
|
||||
shift 1
|
||||
fi
|
||||
|
||||
$EXEC "$bundle_contents/MacOS/$name-bin" "$@" $EXTRA_ARGS
|
26
osx/makebundle.sh
Executable file
@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
|
||||
if [ -z "$JHBUILD_PREFIX" ]; then
|
||||
echo "You must run this within a jhbuild shell."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -f $JHBUILD_PREFIX/bin/python ]; then
|
||||
echo "You must install python with jhbuild."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm -rf HexChat.app
|
||||
rm -f *.app.zip
|
||||
|
||||
$JHBUILD_PREFIX/bin/python $HOME/.local/bin/gtk-mac-bundler hexchat.bundle
|
||||
|
||||
# These take up a lot of space in the bundle
|
||||
echo "Cleaning up python files"
|
||||
find ./HexChat.app/Contents/Resources/lib/python2.7 -name "*.pyc" -delete
|
||||
find ./HexChat.app/Contents/Resources/lib/python2.7 -name "*.pyo" -delete
|
||||
|
||||
echo "Compressing bundle"
|
||||
#hdiutil create -format UDBZ -srcdir HexChat.app -quiet HexChat-2.9.6.1-$(git rev-parse --short master).dmg
|
||||
zip -9rXq ./HexChat-$(git describe --tags).app.zip ./HexChat.app
|
||||
|
@ -1,8 +1,3 @@
|
||||
# temp. solution while mailcheck & xdcc arn't in SUBDIRS
|
||||
EXTRA_DIST = Make.plugin plugin-conf.in xdcc/xdcc.c xdcc/Makefile.am
|
||||
|
||||
# noinst_HEADERS = hexchat-plugin.h
|
||||
|
||||
if DO_PYTHON
|
||||
pythondir = python
|
||||
endif
|
||||
@ -27,5 +22,4 @@ if DO_SYSINFO
|
||||
sysinfodir = sysinfo
|
||||
endif
|
||||
|
||||
#SUBDIRS = . $(pythondir) $(perldir) mailcheck xdcc
|
||||
SUBDIRS = . $(pythondir) $(perldir) $(checksumdir) $(doatdir) $(fishlimdir) $(sysinfodir)
|
||||
SUBDIRS = $(pythondir) $(perldir) $(checksumdir) $(doatdir) $(fishlimdir) $(sysinfodir)
|
||||
|
@ -1,4 +1,4 @@
|
||||
libdir = $(hexchatlibdir)/plugins
|
||||
libdir = $(hexchatlibdir)
|
||||
|
||||
lib_LTLIBRARIES = checksum.la
|
||||
checksum_la_SOURCES = checksum.c
|
||||
|
@ -20,6 +20,11 @@
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifdef __APPLE__
|
||||
#define __AVAILABILITYMACROS__
|
||||
#define DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Label="Configuration">
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
@ -56,7 +59,6 @@
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CHECKSUM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
@ -77,7 +79,6 @@
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;CHECKSUM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
|
@ -1,332 +0,0 @@
|
||||
/* HexChat Win32 DNS Plugin
|
||||
* Copyright (C) 2003-2004 Peter Zelezny.
|
||||
* Copyright (C) 2012 Berke Viktor.
|
||||
*
|
||||
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
/*
|
||||
* Requires MS Visual Studio and IPV6 headers to compile (run nmake).
|
||||
* Compiling with gcc (mingw) will fail due to missing gai_strerror.
|
||||
*/
|
||||
|
||||
#define DNS_VERSION "2.4"
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#define USE_IPV6
|
||||
|
||||
#ifdef WIN32
|
||||
#ifdef USE_IPV6
|
||||
#include <winsock2.h>
|
||||
#include <ws2tcpip.h>
|
||||
#else
|
||||
#include <winsock2.h>
|
||||
#endif
|
||||
#include <io.h>
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#include <netdb.h>
|
||||
#include <sys/socket.h>
|
||||
#endif
|
||||
|
||||
#include "hexchat-plugin.h"
|
||||
#include "thread.h"
|
||||
|
||||
#define HELP "Usage: DNS <nickname|hostname|numerical address>\n"
|
||||
#define HEAD "\0034[DNS]\017\t"
|
||||
|
||||
#define PIPE_READ 0
|
||||
#define PIPE_WRITE 1
|
||||
#define MAX_HOSTNAME 128
|
||||
|
||||
static hexchat_plugin *ph;
|
||||
static thread *active_thread = NULL;
|
||||
|
||||
|
||||
static int
|
||||
waitline (void *source, char *buf, int bufsize)
|
||||
{
|
||||
int i = 0;
|
||||
int len;
|
||||
|
||||
while(1)
|
||||
{
|
||||
len = 1;
|
||||
/* we can't read() here, due to glib's giowin32 */
|
||||
if (ph->hexchat_read_fd (ph, source, buf + i, &len) != 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
if (buf[i] == '\n' || bufsize == i + 1)
|
||||
{
|
||||
buf[i] = 0;
|
||||
return i;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
static void *
|
||||
thread_function (void *ud)
|
||||
{
|
||||
#ifdef USE_IPV6
|
||||
struct addrinfo *ent;
|
||||
struct addrinfo *cur;
|
||||
struct addrinfo hints;
|
||||
#else
|
||||
struct hostent *ent;
|
||||
#endif
|
||||
thread *th = ud;
|
||||
int fd = th->pipe_fd[PIPE_WRITE];
|
||||
int ret;
|
||||
char ipstring[MAX_HOSTNAME];
|
||||
char reverse[MAX_HOSTNAME];
|
||||
// int i;
|
||||
|
||||
active_thread = th;
|
||||
|
||||
#ifdef USE_IPV6
|
||||
memset (&hints, 0, sizeof (hints));
|
||||
hints.ai_family = PF_UNSPEC; /* support ipv6 and ipv4 */
|
||||
hints.ai_flags = AI_CANONNAME;
|
||||
// hints.ai_socktype = SOCK_STREAM;
|
||||
|
||||
ret = getaddrinfo (th->userdata, NULL, &hints, &ent);
|
||||
if (ret != 0)
|
||||
{
|
||||
sprintf (ipstring, "1%d\n", ret); /* failed */
|
||||
write (fd, ipstring, strlen (ipstring));
|
||||
// Sleep (3000);
|
||||
active_thread = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
// i = 0;
|
||||
cur = ent;
|
||||
while (cur)
|
||||
{
|
||||
/* find the numeric IP number */
|
||||
ipstring[0] = 0;
|
||||
getnameinfo (cur->ai_addr, cur->ai_addrlen,
|
||||
ipstring, sizeof (ipstring), NULL, 0, NI_NUMERICHOST);
|
||||
|
||||
if (cur->ai_canonname)
|
||||
{
|
||||
/* force reverse lookup if canonname & ipstring are the same */
|
||||
if (/*i == 0 &&*/ strcmp (cur->ai_canonname, ipstring) == 0)
|
||||
goto lamecode;
|
||||
}
|
||||
|
||||
if (cur->ai_canonname)
|
||||
{
|
||||
write (fd, "0", 1);
|
||||
write (fd, ipstring, strlen (ipstring));
|
||||
write (fd, "\n", 1);
|
||||
write (fd, cur->ai_canonname, strlen (cur->ai_canonname));
|
||||
} else
|
||||
{
|
||||
lamecode:
|
||||
// ret = 1;
|
||||
// if (i == 0)
|
||||
{
|
||||
/* reverse lookup */
|
||||
reverse[0] = 0;
|
||||
ret = getnameinfo (cur->ai_addr, cur->ai_addrlen,
|
||||
reverse, sizeof (reverse), NULL, 0, NI_NAMEREQD);
|
||||
}
|
||||
|
||||
write (fd, "0", 1);
|
||||
write (fd, ipstring, strlen (ipstring));
|
||||
|
||||
write (fd, "\n", 1);
|
||||
if (ret == 0)
|
||||
write (fd, reverse, strlen (reverse));
|
||||
}
|
||||
write (fd, "\n", 1);
|
||||
|
||||
// i++;
|
||||
cur = cur->ai_next;
|
||||
}
|
||||
|
||||
/* tell the parent we're done */
|
||||
write (fd, "2\n", 2);
|
||||
freeaddrinfo (ent);
|
||||
|
||||
#else
|
||||
ent = gethostbyname (th->userdata);
|
||||
if (ent)
|
||||
{
|
||||
write (fd, "0", 1);
|
||||
write (fd, ent->h_name, strlen (ent->h_name));
|
||||
write (fd, "\n", 1);
|
||||
write (fd, ent->h_name, strlen (ent->h_name));
|
||||
write (fd, "\n", 1);
|
||||
write (fd, "2\n", 2);
|
||||
} else
|
||||
{
|
||||
write (fd, "10\n", 1);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Sleep (3000);
|
||||
active_thread = NULL; /* race condition, better than nothing */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
dns_close_pipe (int fd)
|
||||
{
|
||||
close (fd);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* read messages comming from the child (through the pipe) */
|
||||
|
||||
static int
|
||||
dns_read_cb (int fd, int flags, thread *th, void *source)
|
||||
{
|
||||
char buf[512];
|
||||
char buf2[512];
|
||||
|
||||
while (waitline (source, buf, sizeof (buf)))
|
||||
{
|
||||
switch (buf[0])
|
||||
{
|
||||
case '0': /* got data to show */
|
||||
waitline (source, buf2, sizeof (buf2));
|
||||
if (buf2[0] == 0)
|
||||
hexchat_printf(ph, HEAD"\002Numerical\002: %s\n", buf + 1);
|
||||
else
|
||||
hexchat_printf(ph, HEAD"\002Canonical\002: %s \002Numerical\002: %s\n", buf2, buf + 1);
|
||||
return 1;
|
||||
|
||||
case '1': /* failed */
|
||||
hexchat_printf(ph, HEAD"Lookup failed. %s\n", gai_strerrorA (atoi (buf + 1)));
|
||||
|
||||
case '2': /* done */
|
||||
// close (th->pipe_fd[PIPE_WRITE]);
|
||||
// close (th->pipe_fd[PIPE_READ]);
|
||||
hexchat_hook_timer(ph, 3000, dns_close_pipe, (void *)th->pipe_fd[PIPE_WRITE]);
|
||||
hexchat_hook_timer(ph, 4000, dns_close_pipe, (void *)th->pipe_fd[PIPE_READ]);
|
||||
free (th->userdata); /* hostname strdup'ed */
|
||||
free (th);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* find hostname from nickname (search the userlist, current chan only) */
|
||||
|
||||
static char *
|
||||
find_nick_host (char *nick)
|
||||
{
|
||||
hexchat_list *list;
|
||||
char *at;
|
||||
const char *host;
|
||||
|
||||
list = hexchat_list_get (ph, "users");
|
||||
if (!list)
|
||||
return NULL;
|
||||
|
||||
while (hexchat_list_next (ph, list))
|
||||
{
|
||||
if (stricmp (nick, hexchat_list_str (ph, list, "nick")) == 0)
|
||||
{
|
||||
host = hexchat_list_str (ph, list, "host");
|
||||
if (host)
|
||||
{
|
||||
at = strrchr (host, '@');
|
||||
if (at)
|
||||
return at + 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static int
|
||||
dns_cmd_cb (char *word[], char *word_eol[], void *ud)
|
||||
{
|
||||
thread *th;
|
||||
char *nickhost;
|
||||
|
||||
if (!word[2][0])
|
||||
{
|
||||
hexchat_print (ph, HELP);
|
||||
return HEXCHAT_EAT_ALL;
|
||||
}
|
||||
|
||||
th = thread_new ();
|
||||
if (th)
|
||||
{
|
||||
nickhost = find_nick_host (word[2]);
|
||||
if (nickhost)
|
||||
{
|
||||
hexchat_printf (ph, HEAD"Looking up %s (%s)...\n", nickhost, word[2]);
|
||||
th->userdata = strdup (nickhost);
|
||||
} else
|
||||
{
|
||||
hexchat_printf (ph, HEAD"Looking up %s...\n", word[2]);
|
||||
th->userdata = strdup (word[2]);
|
||||
}
|
||||
|
||||
if (thread_start (th, thread_function, th))
|
||||
{
|
||||
hexchat_hook_fd(ph, th->pipe_fd[PIPE_READ],
|
||||
HEXCHAT_FD_READ | HEXCHAT_FD_EXCEPTION | HEXCHAT_FD_NOTSOCKET,
|
||||
(void *)dns_read_cb, th);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return HEXCHAT_EAT_ALL;
|
||||
}
|
||||
|
||||
int
|
||||
hexchat_plugin_deinit (hexchat_plugin *plugin_handle)
|
||||
{
|
||||
while (active_thread) /* children will set this var to NULL soon... */
|
||||
{
|
||||
Sleep (1000);
|
||||
}
|
||||
hexchat_printf (ph, "DNS plugin unloaded\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
hexchat_plugin_init
|
||||
(hexchat_plugin *plugin_handle, char **plugin_name,
|
||||
char **plugin_desc, char **plugin_version, char *arg)
|
||||
{
|
||||
/* we need to save this for use with any hexchat_* functions */
|
||||
ph = plugin_handle;
|
||||
|
||||
*plugin_name = "DNS";
|
||||
*plugin_desc = "Threaded IPv4/6 DNS Command";
|
||||
*plugin_version = DNS_VERSION;
|
||||
|
||||
hexchat_hook_command(ph, "DNS", HEXCHAT_PRI_LOW, dns_cmd_cb, HELP, 0);
|
||||
hexchat_printf (ph, "DNS plugin loaded\n");
|
||||
|
||||
return 1; /* return 1 for success */
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
EXPORTS
|
||||
hexchat_plugin_init
|
||||
hexchat_plugin_deinit
|
@ -1,35 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="dns.def">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="dns.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="thread.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="thread.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -1,34 +0,0 @@
|
||||
#include <io.h>
|
||||
#include <fcntl.h>
|
||||
#include "thread.h"
|
||||
|
||||
thread *
|
||||
thread_new (void)
|
||||
{
|
||||
thread *th;
|
||||
|
||||
th = calloc (1, sizeof (*th));
|
||||
if (!th)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (_pipe (th->pipe_fd, 4096, _O_BINARY) == -1)
|
||||
{
|
||||
free (th);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return th;
|
||||
}
|
||||
|
||||
int
|
||||
thread_start (thread *th, void *(*start_routine)(void *), void *arg)
|
||||
{
|
||||
DWORD id;
|
||||
|
||||
CloseHandle (CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE)start_routine, arg, 0, (DWORD *)&id));
|
||||
th->threadid = id;
|
||||
|
||||
return 1;
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
#include <windows.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
DWORD threadid;
|
||||
int pipe_fd[2];
|
||||
void *userdata;
|
||||
} thread;
|
||||
|
||||
thread *thread_new (void);
|
||||
int thread_start (thread *th, void *(*start_routine)(void *), void *arg);
|
@ -1,4 +1,4 @@
|
||||
libdir = $(hexchatlibdir)/plugins
|
||||
libdir = $(hexchatlibdir)
|
||||
|
||||
lib_LTLIBRARIES = doat.la
|
||||
doat_la_SOURCES = doat.c
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Label="Configuration">
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
@ -56,7 +59,6 @@
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;DOAT_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
@ -75,7 +77,6 @@
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;DOAT_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
|
@ -1,502 +0,0 @@
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
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 and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, 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 library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete 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 distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
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 Library or any portion
|
||||
of it, thus forming a work based on the Library, 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) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
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 Library, 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 Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you 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.
|
||||
|
||||
If distribution of 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 satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be 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.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library 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.
|
||||
|
||||
9. 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 Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
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 with
|
||||
this License.
|
||||
|
||||
11. 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 Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library 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 Library.
|
||||
|
||||
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.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library 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.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser 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 Library
|
||||
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 Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
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
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "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
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. 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 LIBRARY 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
|
||||
LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), 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 Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
@ -1,231 +0,0 @@
|
||||
/*
|
||||
EasyWinampControl - A Winamp "What's playing" plugin for HexChat
|
||||
Copyright (C) Yann HAMON & contributors
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library 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
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include "hexchat-plugin.h"
|
||||
|
||||
static hexchat_plugin *ph; /* plugin handle */
|
||||
static int enable = 1;
|
||||
|
||||
// For example, circularstrstr("winamp", "pwi", 3) would return 5 (the index of p)
|
||||
int circularstrstr(char* a, char* b, int nb)
|
||||
{
|
||||
int equal = 1;
|
||||
int length;
|
||||
int pos=-1;
|
||||
int i, j;
|
||||
|
||||
length = strlen(a);
|
||||
|
||||
for (i=0; i<length && pos == -1; ++i) {
|
||||
equal = 1;
|
||||
for (j=0; j<nb;j++) {
|
||||
if (a[(i+j)%length] != b[j])
|
||||
equal = 0;
|
||||
}
|
||||
if (equal == 1)
|
||||
pos = i;
|
||||
}
|
||||
|
||||
return pos;
|
||||
}
|
||||
|
||||
void GetCurrentSongsName(HWND hwndWinamp, char* title, int titlesize)
|
||||
{
|
||||
int pos;
|
||||
char *title2;
|
||||
int i, j=0;
|
||||
int length;
|
||||
char *p;
|
||||
|
||||
GetWindowText(hwndWinamp, title, titlesize);
|
||||
length = strlen(title);
|
||||
|
||||
if ((pos = circularstrstr(title, "- Winamp ***", 12)) != -1) {
|
||||
// The option "scroll song title in taskbar" is on
|
||||
title2 = (char*) malloc (titlesize*sizeof(char));
|
||||
|
||||
for (i=(pos+12)%length; i!=pos; i=(i+1)%length)
|
||||
title2[j++] = title[i];
|
||||
|
||||
title2[j] = '\0';
|
||||
|
||||
p = title2;
|
||||
while (p<title2+titlesize && *p != '.')
|
||||
p++;
|
||||
p+=2; // Delete the . and the following white space
|
||||
|
||||
strcpy(title, p);
|
||||
free(title2);
|
||||
}
|
||||
else {
|
||||
p = title;
|
||||
while (p<title+titlesize && *p != '.')
|
||||
p++;
|
||||
p+=2; // Delete the . and the following white space
|
||||
if (p<title+titlesize)
|
||||
strncpy(title, p, titlesize-(p-title));
|
||||
|
||||
// Delete the trailing "- winamp"
|
||||
p = title + titlesize - 1;
|
||||
while (p>title && *p != '-') p--;
|
||||
*p = '\0';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Controlling winamp
|
||||
static int wcmd_cb(char *word[], char *word_eol[], void *userdata)
|
||||
{
|
||||
// Everything's here : http://winamp.com/nsdn/winamp2x/dev/sdk/api.php
|
||||
// The previous url seems dead, see http://forums.winamp.com/showthread.php?threadid=180297
|
||||
HWND hwndWinamp = NULL;
|
||||
|
||||
if ((hwndWinamp = FindWindow("Winamp v1.x",NULL)) == NULL) {
|
||||
hexchat_print(ph, "Winamp's window not found - Is winamp really running?\n");
|
||||
}
|
||||
else {
|
||||
if (strcmp(word[1], "") == 0)
|
||||
hexchat_print(ph, "Usage: wcmd [command]\n");
|
||||
else if (strcmp(word[2], "next") == 0) {
|
||||
hexchat_print(ph, "Loading next song...\n");
|
||||
SendMessage (hwndWinamp, WM_COMMAND, 40048, 0);
|
||||
}
|
||||
else if (strcmp(word[2], "prev") == 0) {
|
||||
hexchat_print(ph, "Loading previous song...\n");
|
||||
SendMessage (hwndWinamp, WM_COMMAND, 40044, 0);
|
||||
}
|
||||
else if (strcmp(word[2], "play") == 0) {
|
||||
hexchat_print(ph, "Playin'...\n");
|
||||
SendMessage (hwndWinamp, WM_COMMAND, 40045, 0);
|
||||
}
|
||||
else if (strcmp(word[2], "stop") == 0) {
|
||||
hexchat_print(ph, "Winamp stopped!...\n");
|
||||
SendMessage (hwndWinamp, WM_COMMAND, 40047, 0);
|
||||
}
|
||||
else if (strcmp(word[2], "pause") == 0) {
|
||||
SendMessage (hwndWinamp, WM_COMMAND, 40046, 0);
|
||||
}
|
||||
}
|
||||
|
||||
return HEXCHAT_EAT_ALL;
|
||||
}
|
||||
|
||||
|
||||
// Display current song
|
||||
static int wp_cb(char *word[], char *word_eol[], void *userdata)
|
||||
{
|
||||
HWND hwndWinamp = NULL;
|
||||
int bitrate, length, elapsed, minutes, seconds, eminutes, eseconds, samplerate, nbchannels;
|
||||
char elapsedtime[7];
|
||||
char totaltime[7];
|
||||
char this_title[1024];
|
||||
|
||||
if ((hwndWinamp = FindWindow("Winamp v1.x",NULL)) == NULL)
|
||||
hexchat_print(ph, "Winamp's window not found - Is winamp really running?\n");
|
||||
else {
|
||||
//Winamp's running
|
||||
// Seems buggy when winamp2's agent is running, and winamp not (or winamp3) -> crashes HexChat.
|
||||
SendMessage(hwndWinamp, WM_USER, (WPARAM)0, (LPARAM)125);
|
||||
|
||||
if ((samplerate = SendMessage(hwndWinamp, WM_USER, (WPARAM)0, (LPARAM)126)) == 0) {
|
||||
hexchat_print(ph, "Could not get current song's samplerate... !?\n");
|
||||
return HEXCHAT_EAT_ALL;
|
||||
}
|
||||
if ((bitrate = SendMessage(hwndWinamp, WM_USER, (WPARAM)1, (LPARAM)126)) == 0) {
|
||||
hexchat_print(ph, "Could not get current song's bitrate... !?\n");
|
||||
return HEXCHAT_EAT_ALL;
|
||||
}
|
||||
if ((nbchannels = SendMessage(hwndWinamp, WM_USER, (WPARAM)2, (LPARAM)126)) == 0) {
|
||||
hexchat_print(ph, "Could not get the number of channels... !?\n");
|
||||
return HEXCHAT_EAT_ALL;
|
||||
}
|
||||
if ((length = SendMessage(hwndWinamp, WM_USER, (WPARAM)1, (LPARAM)105)) == 0) {
|
||||
// Could be buggy when streaming audio or video, returned length is unexpected;
|
||||
// How to detect is Winamp is streaming, and display ??:?? in that case?
|
||||
hexchat_print(ph, "Could not get current song's length... !?\n");
|
||||
return HEXCHAT_EAT_ALL;
|
||||
}
|
||||
else {
|
||||
minutes = length/60;
|
||||
seconds = length%60;
|
||||
|
||||
if (seconds>9)
|
||||
wsprintf(totaltime, "%d:%d", minutes, seconds);
|
||||
else
|
||||
wsprintf(totaltime, "%d:0%d", minutes, seconds);
|
||||
}
|
||||
if ((elapsed = SendMessage(hwndWinamp, WM_USER, (WPARAM)0, (LPARAM)105)) == 0) {
|
||||
hexchat_print(ph, "Could not get current song's elapsed time... !?\n");
|
||||
return HEXCHAT_EAT_ALL;
|
||||
}
|
||||
else {
|
||||
eminutes = (elapsed/1000)/60; /* kinda stupid sounding, but e is for elapsed */
|
||||
eseconds = (elapsed/1000)%60;
|
||||
|
||||
if (eseconds>9)
|
||||
wsprintf(elapsedtime, "%d:%d", eminutes, eseconds);
|
||||
else
|
||||
wsprintf(elapsedtime, "%d:0%d", eminutes, eseconds);
|
||||
}
|
||||
|
||||
if ((bitrate = SendMessage(hwndWinamp, WM_USER, (WPARAM)1, (LPARAM)126)) == 0) {
|
||||
hexchat_print(ph, "Could not get current song's bitrate... !?\n");
|
||||
return HEXCHAT_EAT_ALL;
|
||||
}
|
||||
|
||||
GetCurrentSongsName(hwndWinamp, this_title, 1024);
|
||||
|
||||
hexchat_commandf(ph, "dispcurrsong %d %d %d %s %s %s", samplerate, bitrate, nbchannels, elapsedtime, totaltime, this_title);
|
||||
}
|
||||
|
||||
return HEXCHAT_EAT_ALL; /* eat this command so HexChat and other plugins can't process it */
|
||||
}
|
||||
|
||||
|
||||
|
||||
int hexchat_plugin_init(hexchat_plugin *plugin_handle,
|
||||
char **plugin_name,
|
||||
char **plugin_desc,
|
||||
char **plugin_version,
|
||||
char *arg)
|
||||
{
|
||||
/* we need to save this for use with any hexchat_* functions */
|
||||
ph = plugin_handle;
|
||||
|
||||
*plugin_name = "EasyWinampControl";
|
||||
*plugin_desc = "Some commands to remotely control winamp";
|
||||
*plugin_version = "1.2";
|
||||
|
||||
hexchat_hook_command(ph, "wp", HEXCHAT_PRI_NORM, wp_cb,
|
||||
"Usage: wp", 0);
|
||||
|
||||
hexchat_hook_command(ph, "wcmd", HEXCHAT_PRI_NORM, wcmd_cb,
|
||||
"Usage: wcmd [play|pause|stop|prev|next]", 0);
|
||||
|
||||
hexchat_print(ph, "EasyWinampControl plugin loaded\n");
|
||||
|
||||
return 1; /* return 1 for success */
|
||||
}
|
||||
|
||||
int hexchat_plugin_deinit(void)
|
||||
{
|
||||
hexchat_print(ph, "EasyWinampControl plugin unloaded\n");
|
||||
return 1;
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
include "..\..\src\makeinc.mak"
|
||||
|
||||
all: ewc.obj ewc.def
|
||||
link $(LDFLAGS) $(LIBS) /dll /out:xcewc.dll /def:ewc.def ewc.obj
|
||||
|
||||
ewc.def:
|
||||
echo EXPORTS > ewc.def
|
||||
echo hexchat_plugin_init >> ewc.def
|
||||
echo hexchat_plugin_deinit >> ewc.def
|
||||
|
||||
ewc.obj: ewc.c makefile.mak
|
||||
cl $(CFLAGS) ewc.c
|
||||
|
||||
clean:
|
||||
del *.obj
|
||||
del *.dll
|
||||
del *.exp
|
||||
del *.lib
|
@ -28,7 +28,7 @@
|
||||
static hexchat_plugin *ph; /* plugin handle */
|
||||
static char name[] = "Exec";
|
||||
static char desc[] = "Execute commands inside HexChat";
|
||||
static char version[] = "1.1";
|
||||
static char version[] = "1.2";
|
||||
|
||||
static int
|
||||
run_command (char *word[], char *word_eol[], void *userdata)
|
||||
@ -41,6 +41,10 @@ run_command (char *word[], char *word_eol[], void *userdata)
|
||||
time_t start;
|
||||
double timeElapsed;
|
||||
|
||||
char *token;
|
||||
char *context = NULL;
|
||||
int announce = 0;
|
||||
|
||||
HANDLE readPipe;
|
||||
HANDLE writePipe;
|
||||
STARTUPINFO sInfo;
|
||||
@ -59,9 +63,8 @@ run_command (char *word[], char *word_eol[], void *userdata)
|
||||
|
||||
if (!stricmp("-O", word[2]))
|
||||
{
|
||||
/*strcat (commandLine, word_eol[3]);*/
|
||||
hexchat_printf (ph, "Printing Exec output to others is not supported yet.\n");
|
||||
return HEXCHAT_EAT_HEXCHAT;
|
||||
strcat (commandLine, word_eol[3]);
|
||||
announce = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -90,7 +93,19 @@ run_command (char *word[], char *word_eol[], void *userdata)
|
||||
{
|
||||
/* avoid garbage */
|
||||
buffer[dwRead] = '\0';
|
||||
hexchat_printf (ph, "%s", buffer);
|
||||
|
||||
if (announce)
|
||||
{
|
||||
/* Say each line seperately, TODO: improve... */
|
||||
token = strtok_s (buffer, "\n", &context);
|
||||
while (token != NULL)
|
||||
{
|
||||
hexchat_commandf (ph, "SAY %s", token);
|
||||
token = strtok_s (NULL, "\n", &context);
|
||||
}
|
||||
}
|
||||
else
|
||||
hexchat_printf (ph, "%s", buffer);
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -100,20 +115,25 @@ run_command (char *word[], char *word_eol[], void *userdata)
|
||||
}
|
||||
timeElapsed = difftime (time (0), start);
|
||||
}
|
||||
|
||||
/* display a newline to separate things */
|
||||
if (!announce)
|
||||
hexchat_printf (ph, "\n");
|
||||
|
||||
if (timeElapsed >= 10)
|
||||
{
|
||||
hexchat_printf (ph, "Command took too much time to run, execution aborted.\n");
|
||||
}
|
||||
|
||||
CloseHandle (readPipe);
|
||||
CloseHandle (pInfo.hProcess);
|
||||
CloseHandle (pInfo.hThread);
|
||||
}
|
||||
|
||||
/* display a newline to separate things */
|
||||
hexchat_printf (ph, "\n");
|
||||
|
||||
if (timeElapsed >= 10)
|
||||
else
|
||||
{
|
||||
hexchat_printf (ph, "Command took too much time to run, execution aborted.\n");
|
||||
hexchat_command (ph, "help exec");
|
||||
}
|
||||
|
||||
CloseHandle (readPipe);
|
||||
CloseHandle (pInfo.hProcess);
|
||||
CloseHandle (pInfo.hThread);
|
||||
|
||||
return HEXCHAT_EAT_HEXCHAT;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Label="Configuration">
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
@ -56,7 +59,6 @@
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;EXEC_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
@ -75,7 +77,6 @@
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;EXEC_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
|
@ -1,6 +1,6 @@
|
||||
EXTRA_DIST = INSTALL LICENSE README
|
||||
EXTRA_DIST = INSTALL LICENSE
|
||||
|
||||
libdir = $(hexchatlibdir)/plugins
|
||||
libdir = $(hexchatlibdir)
|
||||
|
||||
lib_LTLIBRARIES = fishlim.la
|
||||
fishlim_la_SOURCES = fish.c irc.c keystore.c misc.c plugin_hexchat.c
|
||||
|
@ -1,5 +0,0 @@
|
||||
/* stdbool.h replacement for MSVC */
|
||||
#define false 0
|
||||
#define true 1
|
||||
#define bool _Bool
|
||||
typedef int _Bool;
|
@ -22,6 +22,11 @@
|
||||
|
||||
*/
|
||||
|
||||
#ifdef __APPLE__
|
||||
#define __AVAILABILITYMACROS__
|
||||
#define DEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <openssl/blowfish.h>
|
||||
|
@ -25,11 +25,7 @@
|
||||
#ifndef FISH_H
|
||||
#define FISH_H
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include "bool.h"
|
||||
#else
|
||||
#include <stdbool.h>
|
||||
#endif
|
||||
#include <stddef.h>
|
||||
|
||||
char *fish_encrypt(const char *key, size_t keylen, const char *message);
|
||||
|
@ -1,5 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Label="Configuration">
|
||||
<PlatformToolset>v120</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
@ -56,7 +59,6 @@
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;FISHLIM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
@ -77,7 +79,6 @@
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;FISHLIM_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
|
@ -25,11 +25,7 @@
|
||||
#ifndef IRC_H
|
||||
#define IRC_H
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include "bool.h"
|
||||
#else
|
||||
#include <stdbool.h>
|
||||
#endif
|
||||
#include <stddef.h>
|
||||
|
||||
bool irc_parse_message(const char *words[],
|
||||
|
@ -25,11 +25,7 @@
|
||||
#ifndef KEYSTORE_H
|
||||
#define KEYSTORE_H
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include "bool.h"
|
||||
#else
|
||||
#include <stdbool.h>
|
||||
#endif
|
||||
#include <stddef.h>
|
||||
|
||||
char *keystore_get_key(const char *nick);
|
||||
|
@ -1,69 +0,0 @@
|
||||
/* HexChat
|
||||
* Copyright (c) 2011-2012 Berke Viktor.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#include "hexchat-plugin.h"
|
||||
|
||||
static hexchat_plugin *ph; /* plugin handle */
|
||||
|
||||
static void
|
||||
launch_tool ()
|
||||
{
|
||||
STARTUPINFO si;
|
||||
PROCESS_INFORMATION pi;
|
||||
|
||||
ZeroMemory (&si, sizeof (si));
|
||||
si.cb = sizeof (si);
|
||||
ZeroMemory (&pi, sizeof (pi));
|
||||
|
||||
if (!CreateProcess ( NULL, "gtk2-prefs.exe", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
|
||||
{
|
||||
hexchat_print (ph, "Error launching the GTK+ Preference Tool! Maybe the executable is missing?");
|
||||
}
|
||||
|
||||
CloseHandle (pi.hProcess);
|
||||
CloseHandle (pi.hThread);
|
||||
}
|
||||
|
||||
int
|
||||
hexchat_plugin_init (hexchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg)
|
||||
{
|
||||
ph = plugin_handle;
|
||||
|
||||
*plugin_name = "GTKPref";
|
||||
*plugin_desc = "GTK+ Preference Tool Launcher";
|
||||
*plugin_version = "1.0";
|
||||
|
||||
hexchat_hook_command (ph, "GTKPREF", HEXCHAT_PRI_NORM, launch_tool, 0, 0);
|
||||
hexchat_command (ph, "MENU -ietc\\gtkpref.png ADD \"Settings/GTK+ Preferences\" \"GTKPREF\"");
|
||||
|
||||
return 1; /* return 1 for success */
|
||||
}
|
||||
|
||||
int
|
||||
hexchat_plugin_deinit (void)
|
||||
{
|
||||
hexchat_command (ph, "MENU DEL \"Settings/GTK+ Preferences\"");
|
||||
|
||||
return 1;
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
include "..\..\src\makeinc.mak"
|
||||
|
||||
all: gtkpref.obj gtkpref.def
|
||||
link $(LDFLAGS) $(LIBS) /dll /out:xcgtkpref.dll /def:gtkpref.def gtkpref.obj
|
||||
|
||||
gtkpref.def:
|
||||
echo EXPORTS > gtkpref.def
|
||||
echo hexchat_plugin_init >> gtkpref.def
|
||||
echo hexchat_plugin_deinit >> gtkpref.def
|
||||
|
||||
gtkpref.obj: gtkpref.c makefile.mak
|
||||
cl $(CFLAGS) $(GLIB) /I.. gtkpref.c
|
||||
|
||||
clean:
|
||||
del *.obj
|
||||
del *.dll
|
||||
del *.exp
|
||||
del *.lib
|
Before Width: | Height: | Size: 32 KiB |
@ -1,734 +0,0 @@
|
||||
/* X-Tray
|
||||
* Copyright (C) 2005 Michael Hotaling <Mike.Hotaling@SinisterDevelopments.com>
|
||||
*
|
||||
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#define _WIN32_IE 0x0601
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <commctrl.h>
|
||||
#include <tchar.h>
|
||||
|
||||
#include "hexchat-plugin.h"
|
||||
#include "utility.h"
|
||||
#include "hextray.h"
|
||||
#include "hexchat.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("HexChat [")))
|
||||
{
|
||||
g_hXchatWnd = hWnd;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/***********************************************************************************************/
|
||||
/******* our HexChat 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 && iEvent != 21)
|
||||
return HEXCHAT_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<<PREF_OSBWM))) && (g_dwPrefs & (1<<PREF_AMAE)) && (g_dwPrefs & (1<<iEvent)))
|
||||
{
|
||||
/*********************************/
|
||||
/*********** Our Buffers *********/
|
||||
/*********************************/
|
||||
char szInfo[512];
|
||||
char szName[64];
|
||||
DWORD dwInfoFlags;
|
||||
int iTime = g_iTime*1000;
|
||||
char *szTemp = NULL;
|
||||
|
||||
if(g_dwPrefs & (1<<PREF_KAOI))
|
||||
{
|
||||
iTime = 0;
|
||||
}
|
||||
|
||||
switch(iEvent)
|
||||
{
|
||||
case CHAN_HILIGHT:
|
||||
_snprintf(szInfo, 512, "%s:\r\n%s", word[1], word[2]);
|
||||
_snprintf(szName, 64, "Highlight: %s", hexchat_get_info (ph, "channel"));
|
||||
dwInfoFlags = NIIF_INFO;
|
||||
break;
|
||||
case CHAN_MESSAGE:
|
||||
_snprintf(szInfo, 512, "%s:\r\n%s", word[1], word[2]);
|
||||
_snprintf(szName, 64, "Channel Message: %s", hexchat_get_info (ph, "channel"));
|
||||
dwInfoFlags = NIIF_INFO;
|
||||
break;
|
||||
case CHAN_TOPIC_CHANGE:
|
||||
_snprintf(szInfo, 512, "%s has changed the topic to %s", word[1], word[2]);
|
||||
_snprintf(szName, 64, "Topic Change: %s", word[3]);
|
||||
dwInfoFlags = NIIF_INFO;
|
||||
break;
|
||||
case CHAN_INVITE:
|
||||
_snprintf(szInfo, 512, "%s has invited you into %s", word[1], word[2]);
|
||||
_snprintf(szName, 64, "Invite");
|
||||
dwInfoFlags = NIIF_INFO;
|
||||
break;
|
||||
case CHAN_KICKED:
|
||||
_snprintf(szInfo, 512, "Kicked from %s by %s:\r\n%s", word[2], word[3], word[4]);
|
||||
_snprintf(szName, 64, "Kick");
|
||||
dwInfoFlags = NIIF_WARNING;
|
||||
break;
|
||||
case CHAN_BANNED:
|
||||
_snprintf(szInfo, 512, "Cannot join %s You are banned.", word[1]);
|
||||
_snprintf(szName, 64, "Banned");
|
||||
dwInfoFlags = NIIF_WARNING;
|
||||
break;
|
||||
case CTCP_GENERIC:
|
||||
_snprintf(szInfo, 512, "%s:\r\nCTCP %s", word[2], word[1]);
|
||||
_snprintf(szName, 64, "CTCP");
|
||||
dwInfoFlags = NIIF_INFO;
|
||||
break;
|
||||
case PMSG_RECEIVE:
|
||||
_snprintf(szInfo, 512, "%s:\r\n%s", word[1], word[2]);
|
||||
_snprintf(szName, 64, "Private Message");
|
||||
dwInfoFlags = NIIF_INFO;
|
||||
break;
|
||||
case SERV_DISCONNECT:
|
||||
_snprintf(szInfo, 512, "Disconnected\r\nError: %s", word[1]);
|
||||
_snprintf(szName, 64, "Disconnect");
|
||||
dwInfoFlags = NIIF_ERROR;
|
||||
break;
|
||||
case SERV_KILLED:
|
||||
_snprintf(szInfo, 512, "Killed(%s(%s))", word[1], word[2]);
|
||||
_snprintf(szName, 64, "Server Admin has killed you");
|
||||
dwInfoFlags = NIIF_ERROR;
|
||||
break;
|
||||
case SERV_NOTICE:
|
||||
_snprintf(szInfo, 512, "Notice:\r\n%s: %s", word[1], word[2]);
|
||||
_snprintf(szName, 64, "Notice");
|
||||
dwInfoFlags = NIIF_INFO;
|
||||
break;
|
||||
case 11:
|
||||
_snprintf(szInfo, 512, ":\r\n%s: %s", word[1], word[2]);
|
||||
_snprintf(szName, 64, "Notice");
|
||||
dwInfoFlags = NIIF_INFO;
|
||||
break;
|
||||
}
|
||||
|
||||
/**************************************************************************************/
|
||||
/***** Use windows instead of balloons, and if its a window should we keep it open ****/
|
||||
/***** indefinitely? ****/
|
||||
/**************************************************************************************/
|
||||
szTemp = hexchat_strip_color(szInfo);
|
||||
|
||||
if(g_dwPrefs & (1<<PREF_UWIOB))
|
||||
{
|
||||
sdSystemAlert((HINSTANCE)g_hInstance, IDD_ALERT, szTemp, szName, iTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowBalloon(g_hXchatWnd, 1, szTemp, szName, iTime, dwInfoFlags);
|
||||
}
|
||||
|
||||
free(szTemp);
|
||||
}
|
||||
|
||||
if(g_dwPrefs & (1<<PREF_BLINK) && (g_dwPrefs & (1<<iEvent)))
|
||||
{
|
||||
BlinkIcon(g_hXchatWnd, 1, g_hIcons[0], g_hIcons[(iEvent+1)], 700, 5);
|
||||
}
|
||||
|
||||
/***********************************/
|
||||
/***** pass the events to HexChat **/
|
||||
/***********************************/
|
||||
return HEXCHAT_EAT_NONE;
|
||||
}
|
||||
|
||||
int command_cb(char *word[], char *word_eol[], void *userdata)
|
||||
{
|
||||
char szInfo[512];
|
||||
char *szTemp = NULL;
|
||||
int iTime = g_iTime*1000;
|
||||
|
||||
_snprintf(szInfo, 512, word_eol[2]);
|
||||
szTemp = hexchat_strip_color(szInfo);
|
||||
|
||||
if(g_dwPrefs & (1<<PREF_KAOI))
|
||||
{
|
||||
iTime = 0;
|
||||
}
|
||||
|
||||
if(((g_iIsActive == 0) || !(g_dwPrefs & (1<<PREF_OSBWM))) && (g_dwPrefs & (1<<PREF_AMAE)))
|
||||
{
|
||||
if(g_dwPrefs & (1<<PREF_UWIOB))
|
||||
{
|
||||
sdSystemAlert((HINSTANCE)g_hInstance, IDD_ALERT, szTemp, "Alert", iTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
ShowBalloon(g_hXchatWnd, 1, szTemp, "Alert", iTime, NIIF_INFO);
|
||||
}
|
||||
}
|
||||
|
||||
free(szTemp);
|
||||
|
||||
return HEXCHAT_EAT_ALL;
|
||||
}
|
||||
|
||||
LRESULT CALLBACK WindowProc(HWND hWnd, UINT msg, WPARAM wparam, LPARAM lparam)
|
||||
{
|
||||
switch(msg)
|
||||
{
|
||||
case WM_CLOSE:
|
||||
{
|
||||
if((g_dwPrefs & (1<<PREF_MIOC)) && (g_bCanQuit == false))
|
||||
{
|
||||
/*******************************************/
|
||||
/**** to autoaway or not to autoaway... ***/
|
||||
/*******************************************/
|
||||
if(g_dwPrefs & (1<<PREF_AOM))
|
||||
{
|
||||
hexchat_globally_away(g_szAway);
|
||||
}
|
||||
|
||||
/**************************************************/
|
||||
/**** Win32 API call to hide the window and **/
|
||||
/**** save the fact that its minimized for later **/
|
||||
/**************************************************/
|
||||
g_iIsActive = 0;
|
||||
ShowWindow(hWnd, SW_HIDE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(g_hPrefDlg != NULL)
|
||||
{
|
||||
DestroyWindow(g_hPrefDlg);
|
||||
}
|
||||
|
||||
StopBlink(hWnd, 1, g_hIcons[0]);
|
||||
|
||||
if(sdAlertNum())
|
||||
{
|
||||
sdCloseAlerts();
|
||||
HoldClose();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case WM_SIZE:
|
||||
{
|
||||
/******************************************/
|
||||
/***** User wants to minimize HexChat, ****/
|
||||
/***** are we allowed to go to tray? ******/
|
||||
/******************************************/
|
||||
if((g_dwPrefs & (1<<PREF_TOT)) && (wparam == SIZE_MINIMIZED))
|
||||
{
|
||||
/*******************************************/
|
||||
/**** to autoaway or not to autoaway... ***/
|
||||
/*******************************************/
|
||||
if(g_dwPrefs & (1<<PREF_AOM))
|
||||
{
|
||||
hexchat_globally_away(g_szAway);
|
||||
}
|
||||
|
||||
/**************************************************/
|
||||
/**** Win32 API call to hide the window and **/
|
||||
/**** save the fact that its minimized for later **/
|
||||
/**************************************************/
|
||||
g_iIsActive = 0;
|
||||
ShowWindow(hWnd, SW_HIDE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
/**********************************/
|
||||
/*** user clicked the tray icon ***/
|
||||
/**********************************/
|
||||
case WM_TRAYMSG:
|
||||
{
|
||||
switch(lparam)
|
||||
{
|
||||
case WM_LBUTTONDOWN:
|
||||
{
|
||||
if(!g_iIsActive)
|
||||
{
|
||||
/*********************************************************/
|
||||
/*** 0: its hiden, restore it and show it, if autoaway ***/
|
||||
/*** is on, set us as back ***/
|
||||
/*********************************************************/
|
||||
SendMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
|
||||
SetForegroundWindow(hWnd);
|
||||
g_iIsActive = 1;
|
||||
|
||||
if(g_dwPrefs & (1<<PREF_AOM))
|
||||
{
|
||||
hexchat_globally_back();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
SendMessage(hWnd, WM_SYSCOMMAND, SC_MINIMIZE, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case WM_RBUTTONDOWN:
|
||||
{
|
||||
/******************************************/
|
||||
/*** user wants to see the menu find out **/
|
||||
/*** where the mouse is and show it **/
|
||||
/******************************************/
|
||||
POINT pt;
|
||||
int iRet;
|
||||
|
||||
GetCursorPos(&pt);
|
||||
SetForegroundWindow(hWnd);
|
||||
|
||||
ModifyMenu(g_hTrayMenu, 2, (MF_POPUP | MF_BYPOSITION), (UINT)setServerMenu(), _T("Away"));
|
||||
|
||||
Sleep(175);
|
||||
|
||||
iRet = TrackPopupMenuEx(g_hTrayMenu, (TPM_RETURNCMD | TPM_LEFTALIGN), pt.x, pt.y, hWnd, NULL);
|
||||
|
||||
/***********************************/
|
||||
/*** nRet is the users selection, **/
|
||||
/*** process it **/
|
||||
/***********************************/
|
||||
sdTrayProc(hWnd, iRet);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
/*****************************************************/
|
||||
/*** the taskbar has been restarted, re-add our icon */
|
||||
/*****************************************************/
|
||||
if(msg == RegisterWindowMessage(_T("TaskbarCreated")))
|
||||
{
|
||||
char szVersion[64];
|
||||
_snprintf(szVersion, 64, "HexChat [%s]", hexchat_get_info(ph, "version"));
|
||||
AddIcon(g_hXchatWnd, 1, g_hIcons[0], szVersion, (NIF_ICON | NIF_MESSAGE | NIF_TIP), WM_TRAYMSG);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return CallWindowProc(g_hOldProc, hWnd, msg, wparam, lparam);
|
||||
}
|
||||
|
||||
/****************************************************/
|
||||
/*** process messages from the tray menu ************/
|
||||
/****************************************************/
|
||||
LRESULT CALLBACK sdTrayProc(HWND hWnd, int msg)
|
||||
{
|
||||
switch(msg)
|
||||
{
|
||||
case ACT_EXIT:
|
||||
{
|
||||
g_bCanQuit = true;
|
||||
PostMessage(hWnd, WM_CLOSE, 0, 0);
|
||||
}
|
||||
break;
|
||||
case ACT_RESTORE:
|
||||
{
|
||||
/*************************************************/
|
||||
/** user wants us to restore the HexChat window **/
|
||||
/** and of autoaway is on, set as back ******** **/
|
||||
/*************************************************/
|
||||
SendMessage(g_hXchatWnd, WM_SYSCOMMAND, SC_RESTORE, 0);
|
||||
SetForegroundWindow(hWnd);
|
||||
|
||||
if((!g_iIsActive) && (g_dwPrefs & (1<<PREF_AOM)))
|
||||
{
|
||||
hexchat_globally_back();
|
||||
g_iIsActive = 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case ACT_SETTINGS:
|
||||
{
|
||||
ShowWindow(g_hPrefDlg, SW_SHOW);
|
||||
}
|
||||
break;
|
||||
case ACT_AWAY:
|
||||
{
|
||||
hexchat_globally_away(g_szAway);
|
||||
}
|
||||
break;
|
||||
case ACT_BACK:
|
||||
{
|
||||
hexchat_globally_back();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
if(msg > 0)
|
||||
{
|
||||
hexchat_set_context(ph, hexchat_find_server(msg-1));
|
||||
|
||||
if(!hexchat_get_info(ph, "away"))
|
||||
{
|
||||
hexchat_away(g_szAway);
|
||||
}
|
||||
else
|
||||
{
|
||||
hexchat_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;
|
||||
}
|
||||
|
@ -1,37 +0,0 @@
|
||||
/* X-Tray
|
||||
* Copyright (C) 2005 Michael Hotaling <Mike.Hotaling@SinisterDevelopments.com>
|
||||
*
|
||||
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, 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
|
@ -1,320 +0,0 @@
|
||||
/* X-Tray
|
||||
* Copyright (C) 1998, 2005 Peter Zelezny, Michael Hotaling <Mike.Hotaling@SinisterDevelopments.com>
|
||||
*
|
||||
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
#include <stdio.h>
|
||||
#include <tchar.h>
|
||||
|
||||
#include "hexchat-plugin.h"
|
||||
#include "hextray.h"
|
||||
#include "resource.h"
|
||||
#include "hexchat.h"
|
||||
#include "utility.h"
|
||||
|
||||
// from util.c of HexChat source code ( slightly modified to fit HexTray Syntax )
|
||||
char *hexchat_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 hexchat_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);
|
||||
hexchat_exec(szTemp);
|
||||
}
|
||||
|
||||
void hexchat_away(TCHAR *tszAway)
|
||||
{
|
||||
char szTemp[512];
|
||||
char szAway[512];
|
||||
|
||||
ConvertString(tszAway, szAway, 512);
|
||||
_snprintf(szTemp, 512, szAway);
|
||||
check_special_chars(szTemp);
|
||||
hexchat_commandf(ph, "AWAY %s\0", szTemp);
|
||||
}
|
||||
|
||||
void hexchat_globally_back()
|
||||
{
|
||||
std::vector<int> xs;
|
||||
std::vector<int>::iterator xsi;
|
||||
hexchat_list *xl = hexchat_list_get(ph, "channels");
|
||||
|
||||
if(xl)
|
||||
{
|
||||
while(hexchat_list_next(ph, xl))
|
||||
{
|
||||
xsi = std::find(xs.begin(), xs.end(), hexchat_list_int(ph, xl, "id"));
|
||||
|
||||
if((xsi == xs.end()) &&
|
||||
((strlen(hexchat_list_str(ph, xl, "server")) > 0) ||
|
||||
(strlen(hexchat_list_str(ph, xl, "channel")) > 0)))
|
||||
{
|
||||
xs.push_back(hexchat_list_int(ph, xl, "id"));
|
||||
hexchat_set_context(ph, (hexchat_context *)hexchat_list_str(ph, xl, "context"));
|
||||
hexchat_back();
|
||||
}
|
||||
}
|
||||
|
||||
hexchat_list_free(ph, xl);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void hexchat_back()
|
||||
{
|
||||
if(hexchat_get_info(ph, "away"))
|
||||
{
|
||||
hexchat_command(ph, "BACK");
|
||||
}
|
||||
}
|
||||
|
||||
HMENU setServerMenu()
|
||||
{
|
||||
HMENU sTemp = CreateMenu();
|
||||
TCHAR wszServer[128];
|
||||
TCHAR wszNick[128];
|
||||
TCHAR wszMenuEntry[256];
|
||||
|
||||
std::vector<int> xs;
|
||||
std::vector<int>::iterator xsi;
|
||||
hexchat_list *xl = hexchat_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(hexchat_list_next(ph, xl))
|
||||
{
|
||||
xsi = std::find(xs.begin(), xs.end(), hexchat_list_int(ph, xl, "id"));
|
||||
|
||||
if( (xsi == xs.end()) &&
|
||||
((strlen(hexchat_list_str(ph, xl, "server")) > 0) ||
|
||||
(strlen(hexchat_list_str(ph, xl, "channel")) > 0)))
|
||||
{
|
||||
hexchat_set_context(ph, (hexchat_context *)hexchat_list_str(ph, xl, "context"));
|
||||
xs.push_back(hexchat_list_int(ph, xl, "id"));
|
||||
|
||||
char *network = _strdup(hexchat_list_str(ph, xl, "network"));
|
||||
char *server = _strdup(hexchat_list_str(ph, xl, "server"));
|
||||
char *nick = _strdup(hexchat_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(!hexchat_get_info(ph, "away"))
|
||||
{
|
||||
AppendMenu(sTemp, MF_STRING, (hexchat_list_int(ph, xl, "id") + 1), wszMenuEntry);
|
||||
}
|
||||
else
|
||||
{
|
||||
AppendMenu(sTemp, (MF_CHECKED | MF_STRING), (hexchat_list_int(ph, xl, "id") + 1), wszMenuEntry);
|
||||
}
|
||||
}
|
||||
|
||||
free(network);
|
||||
free(server);
|
||||
free(nick);
|
||||
}
|
||||
}
|
||||
|
||||
hexchat_list_free(ph, xl);
|
||||
}
|
||||
|
||||
return sTemp;
|
||||
}
|
||||
|
||||
struct _hexchat_context *hexchat_find_server(int find_id)
|
||||
{
|
||||
hexchat_context *xc;
|
||||
hexchat_list *xl = hexchat_list_get(ph, "channels");
|
||||
int id;
|
||||
|
||||
if(!xl)
|
||||
return NULL;
|
||||
|
||||
while(hexchat_list_next(ph, xl))
|
||||
{
|
||||
id = hexchat_list_int(ph, xl, "id");
|
||||
|
||||
if(id == -1)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
else if(id == find_id)
|
||||
{
|
||||
xc = (hexchat_context *)hexchat_list_str(ph, xl, "context");
|
||||
|
||||
hexchat_list_free(ph, xl);
|
||||
|
||||
return xc;
|
||||
}
|
||||
}
|
||||
|
||||
hexchat_list_free(ph, xl);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void hexchat_exec(char *command)
|
||||
{
|
||||
hexchat_set_context(ph, hexchat_find_context(ph, NULL, NULL));
|
||||
hexchat_command(ph, command);
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
/* X-Tray
|
||||
* Copyright (C) 2005 Michael Hotaling <Mike.Hotaling@SinisterDevelopments.com>
|
||||
*
|
||||
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#ifndef _H_XCHAT_H
|
||||
#define _H_XCHAT_H
|
||||
|
||||
void hexchat_exec (char *);
|
||||
char *hexchat_strip_color (char *);
|
||||
void hexchat_parse (char *);
|
||||
struct _hexchat_context *hexchat_find_server (int);
|
||||
void hexchat_globally_away (TCHAR *);
|
||||
void hexchat_away (TCHAR *);
|
||||
void hexchat_globally_back ();
|
||||
void hexchat_back ();
|
||||
HMENU setServerMenu ();
|
||||
|
||||
#endif
|
@ -1,246 +0,0 @@
|
||||
/* X-Tray
|
||||
* Copyright (C) 2005 Michael Hotaling <Mike.Hotaling@SinisterDevelopments.com>
|
||||
*
|
||||
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#define _WIN32_IE 0x0601
|
||||
|
||||
#include <windows.h>
|
||||
#include <list>
|
||||
#include <string>
|
||||
#include <shobjidl.h>
|
||||
|
||||
#include "hexchat-plugin.h"
|
||||
#include "resource.h"
|
||||
#include "callbacks.h"
|
||||
#include "utility.h"
|
||||
#include "hextray.h"
|
||||
#include "sdTray.h"
|
||||
#include "sdAlerts.h"
|
||||
|
||||
/*****************************************************/
|
||||
/**** Don't want to pollute the namespace do we? *****/
|
||||
/*****************************************************/
|
||||
std::list<hexchat_hook *> g_vHooks;
|
||||
|
||||
/*****************************************************/
|
||||
/************ Global Identifiers *********************/
|
||||
/*****************************************************/
|
||||
WNDPROC g_hOldProc;
|
||||
hexchat_plugin *ph;
|
||||
|
||||
/*****************************************************/
|
||||
/***************** Resources *************************/
|
||||
/*****************************************************/
|
||||
HWND g_hXchatWnd;
|
||||
HWND g_hHotkeyWnd;
|
||||
HWND g_hPrefDlg;
|
||||
HMENU g_hTrayMenu;
|
||||
HICON g_hIcons[24];
|
||||
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 hexchat_plugin_init(hexchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc, char **plugin_version, char *arg)
|
||||
{
|
||||
ph = plugin_handle;
|
||||
|
||||
*plugin_name = "HexTray";
|
||||
*plugin_desc = "Minimize HexChat to the Windows system tray";
|
||||
*plugin_version = "1.3.0";
|
||||
|
||||
char buffer[256];
|
||||
|
||||
/***************************************************************************************************************************/
|
||||
/************************* Initialize our preferences if they don't exist yet **********************************************/
|
||||
/***************************************************************************************************************************/
|
||||
|
||||
if (hexchat_pluginpref_get_int (ph, "settings") == -1)
|
||||
{
|
||||
hexchat_pluginpref_set_int (ph, "settings", HT_DEF_SET);
|
||||
}
|
||||
if (hexchat_pluginpref_get_int (ph, "aot") == -1)
|
||||
{
|
||||
hexchat_pluginpref_set_int (ph, "aot", HT_DEF_AOT);
|
||||
}
|
||||
if (hexchat_pluginpref_get_int (ph, "key") == -1)
|
||||
{
|
||||
hexchat_pluginpref_set_int (ph, "key", HT_DEF_KEY);
|
||||
}
|
||||
if (hexchat_pluginpref_get_int (ph, "mod") == -1)
|
||||
{
|
||||
hexchat_pluginpref_set_int (ph, "mod", HT_DEF_MOD);
|
||||
}
|
||||
if (hexchat_pluginpref_get_str (ph, "away", buffer) == 0)
|
||||
{
|
||||
hexchat_pluginpref_set_str (ph, "away", "");
|
||||
}
|
||||
|
||||
/***************************************************************************************************************************/
|
||||
/************************* Load our preferences ****************************************************************************/
|
||||
/***************************************************************************************************************************/
|
||||
LoadPrefs();
|
||||
|
||||
/***************************************************************************************************************************/
|
||||
/************************* Finds the HexChat window and saves it for later use *********************************************/
|
||||
/***************************************************************************************************************************/
|
||||
g_hXchatWnd = (HWND)hexchat_get_info(ph, "win_ptr");
|
||||
|
||||
if(g_hXchatWnd == NULL)
|
||||
{
|
||||
EnumThreadWindows(GetCurrentThreadId(), EnumWindowsProc, 0);
|
||||
}
|
||||
|
||||
g_hOldProc = (WNDPROC)GetWindowLongPtr(g_hXchatWnd, GWLP_WNDPROC);
|
||||
SetWindowLongPtr(g_hXchatWnd, GWLP_WNDPROC, (LONG_PTR)WindowProc);
|
||||
|
||||
/***************************************************************************************************************************/
|
||||
/************************* Grab the HexChat 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[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);
|
||||
g_hIcons[22] = (HICON)LoadImage((HINSTANCE)g_hInstance, MAKEINTRESOURCE(ICO_CHANMSG), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
|
||||
|
||||
/***************************************************************************************************************************/
|
||||
/************************* Add our icon to the tray ************************************************************************/
|
||||
/***************************************************************************************************************************/
|
||||
char szVersion[64];
|
||||
_snprintf(szVersion, 64, "HexChat %s", hexchat_get_info(ph, "version"));
|
||||
AddIcon(g_hXchatWnd, 1, g_hIcons[0], szVersion, (NIF_ICON | NIF_MESSAGE | NIF_TIP), WM_TRAYMSG);
|
||||
|
||||
/***************************************************************************************************************************/
|
||||
/***************************************************************************************************************************/
|
||||
/***************************************************************************************************************************/
|
||||
if(g_dwPrefs & (1<<PREF_DNSIT))
|
||||
{
|
||||
DWORD dwStyle;
|
||||
dwStyle = GetWindowLong(g_hXchatWnd, GWL_STYLE);
|
||||
dwStyle |= (1<<WS_CHILD);
|
||||
SetWindowLongPtr(g_hXchatWnd, GWL_STYLE, (LONG_PTR)dwStyle);
|
||||
SetWindowLongPtr(g_hXchatWnd, GWL_HWNDPARENT, (LONG_PTR)g_hHotkeyWnd);
|
||||
}
|
||||
|
||||
/***************************************************************************************************************************/
|
||||
/************************* Set our hooks and save them for later so we can unhook them *************************************/
|
||||
/***************************************************************************************************************************/
|
||||
g_vHooks.push_back(hexchat_hook_print(ph, "Channel Msg Hilight", HEXCHAT_PRI_NORM, event_cb, (void *)CHAN_HILIGHT));
|
||||
g_vHooks.push_back(hexchat_hook_print(ph, "Channel Message", HEXCHAT_PRI_NORM, event_cb, (void *)CHAN_MESSAGE));
|
||||
g_vHooks.push_back(hexchat_hook_print(ph, "Topic Change", HEXCHAT_PRI_NORM, event_cb, (void *)CHAN_TOPIC_CHANGE));
|
||||
g_vHooks.push_back(hexchat_hook_print(ph, "Channel Action Hilight", HEXCHAT_PRI_NORM, event_cb, (void *)CHAN_HILIGHT));
|
||||
g_vHooks.push_back(hexchat_hook_print(ph, "Channel INVITE", HEXCHAT_PRI_NORM, event_cb, (void *)CHAN_INVITE));
|
||||
g_vHooks.push_back(hexchat_hook_print(ph, "You Kicked", HEXCHAT_PRI_NORM, event_cb, (void *)CHAN_KICKED));
|
||||
g_vHooks.push_back(hexchat_hook_print(ph, "Banned", HEXCHAT_PRI_NORM, event_cb, (void *)CHAN_BANNED));
|
||||
g_vHooks.push_back(hexchat_hook_print(ph, "CTCP Generic", HEXCHAT_PRI_NORM, event_cb, (void *)CTCP_GENERIC));
|
||||
g_vHooks.push_back(hexchat_hook_print(ph, "Private Message", HEXCHAT_PRI_NORM, event_cb, (void *)PMSG_RECEIVE));
|
||||
g_vHooks.push_back(hexchat_hook_print(ph, "Private Message to Dialog", HEXCHAT_PRI_NORM, event_cb, (void *)PMSG_RECEIVE));
|
||||
g_vHooks.push_back(hexchat_hook_print(ph, "Disconnected", HEXCHAT_PRI_NORM, event_cb, (void *)SERV_DISCONNECT));
|
||||
g_vHooks.push_back(hexchat_hook_print(ph, "Killed", HEXCHAT_PRI_NORM, event_cb, (void *)SERV_KILLED));
|
||||
g_vHooks.push_back(hexchat_hook_print(ph, "Notice", HEXCHAT_PRI_NORM, event_cb, (void *)SERV_NOTICE));
|
||||
g_vHooks.push_back(hexchat_hook_command(ph, "tray_alert", HEXCHAT_PRI_NORM, command_cb, "Create an Alert", NULL));
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int hexchat_plugin_deinit(hexchat_plugin *plugin_handle)
|
||||
{
|
||||
/******************************************/
|
||||
/****** Remove the Icon from the tray *****/
|
||||
/******************************************/
|
||||
StopBlink(g_hXchatWnd, 1, g_hIcons[0]);
|
||||
RemoveIcon(g_hXchatWnd, 1);
|
||||
|
||||
/*******************************************/
|
||||
/*******************************************/
|
||||
/*******************************************/
|
||||
if(g_dwPrefs & (1<<PREF_DNSIT))
|
||||
{
|
||||
DWORD dwStyle;
|
||||
dwStyle = GetWindowLong(g_hXchatWnd, GWL_STYLE);
|
||||
dwStyle &= ~(1<<WS_CHILD);
|
||||
SetWindowLongPtr(g_hXchatWnd, GWL_STYLE, (LONG_PTR)dwStyle);
|
||||
SetWindowLongPtr(g_hXchatWnd, GWL_HWNDPARENT, NULL);
|
||||
}
|
||||
|
||||
/******************************************/
|
||||
/****** Unload our resources **************/
|
||||
/******************************************/
|
||||
DestroyMenu(g_hTrayMenu);
|
||||
|
||||
for(int i = 0; i <= 11; i++)
|
||||
{
|
||||
DestroyIcon(g_hIcons[i]);
|
||||
}
|
||||
|
||||
/******************************************/
|
||||
/****** Remove our window hook ************/
|
||||
/******************************************/
|
||||
SetWindowLongPtr(g_hXchatWnd, GWLP_WNDPROC, (LONG_PTR)g_hOldProc);
|
||||
|
||||
/******************************************/
|
||||
/****** Remove our hotkey, and destroy ****/
|
||||
/****** the window that receives its ****/
|
||||
/****** messages ****/
|
||||
/******************************************/
|
||||
UnregisterHotKey(g_hHotkeyWnd, 1);
|
||||
DestroyWindow(g_hHotkeyWnd);
|
||||
DestroyWindow(g_hPrefDlg);
|
||||
|
||||
/******************************************/
|
||||
/************* Clean up Isle 7 ************/
|
||||
/******************************************/
|
||||
if(sdAlertNum())
|
||||
{
|
||||
sdCloseAlerts();
|
||||
}
|
||||
/******************************************/
|
||||
/****** remove our hexchat_hook_*s **********/
|
||||
/******************************************/
|
||||
while(!g_vHooks.empty())
|
||||
{
|
||||
if(g_vHooks.back() != NULL)
|
||||
{
|
||||
hexchat_unhook(ph, g_vHooks.back());
|
||||
}
|
||||
g_vHooks.pop_back();
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
EXPORTS
|
||||
hexchat_plugin_init
|
||||
hexchat_plugin_deinit
|
@ -1,83 +0,0 @@
|
||||
/* X-Tray
|
||||
* Copyright (C) 2005 Michael Hotaling <Mike.Hotaling@SinisterDevelopments.com>
|
||||
*
|
||||
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#ifndef _XTRAY_H
|
||||
#define _XTRAY_H
|
||||
|
||||
/******************** Default settings*****************/
|
||||
#define HT_DEF_SET 13814
|
||||
#define HT_DEF_AOT 5
|
||||
#define HT_DEF_KEY 84
|
||||
#define HT_DEF_MOD 6
|
||||
|
||||
/******************** Globals *************************/
|
||||
extern HWND g_hXchatWnd;
|
||||
extern HWND g_hHotkeyWnd;
|
||||
extern HWND g_hPrefDlg;
|
||||
extern HMENU g_hTrayMenu;
|
||||
extern HICON g_hIcons[24];
|
||||
extern HANDLE g_hInstance;
|
||||
extern unsigned int g_dwPrefs;
|
||||
extern TCHAR g_szAway[512];
|
||||
extern int g_iTime;
|
||||
extern WNDPROC g_hOldProc;
|
||||
extern struct _hexchat_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
|
||||
|
||||
/* new events */
|
||||
#define CHAN_MESSAGE 21
|
||||
|
||||
#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 indefinitely
|
||||
#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
|
||||
|
||||
#ifdef _WIN64
|
||||
/* use replacement with the same value, and use SetWindowLongPtr instead
|
||||
of SetWindowLong. more info:
|
||||
|
||||
http://msdn.microsoft.com/en-us/library/ms633591.aspx
|
||||
http://msdn.microsoft.com/en-us/library/ms644898.aspx */
|
||||
#define GWL_HWNDPARENT GWLP_HWNDPARENT
|
||||
#endif
|
@ -1,128 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{3024CF36-85E5-4E00-9608-7002E2C7EF14}</ProjectGuid>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<RootNamespace>hextray</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\..\win32\hexchat.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\..\win32\hexchat.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(HexChatBin)</OutDir>
|
||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
||||
<TargetName>hchextray</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(HexChatBin)</OutDir>
|
||||
<IntDir>$(HexChatObj)$(ProjectName)\</IntDir>
|
||||
<TargetName>hchextray</TargetName>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;XTRAY_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<ModuleDefinitionFile>hextray.def</ModuleDefinitionFile>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;_WIN64;_AMD64_;NDEBUG;_WINDOWS;_USRDLL;XTRAY_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||
<AdditionalIncludeDirectories>..\..\src\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<ModuleDefinitionFile>hextray.def</ModuleDefinitionFile>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<None Include="bitmaps\sd.bmp" />
|
||||
<None Include="icons\ban.ico" />
|
||||
<None Include="icons\disconnect.ico" />
|
||||
<None Include="icons\highlight.ico" />
|
||||
<None Include="icons\kick.ico" />
|
||||
<None Include="icons\message.ico" />
|
||||
<None Include="icons\sd.ico" />
|
||||
<None Include="icons\notice.ico" />
|
||||
<None Include="icons\hexchat.ico" />
|
||||
<None Include="hextray.def" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="resource.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="callbacks.cpp" />
|
||||
<ClCompile Include="sdAlerts.cpp" />
|
||||
<ClCompile Include="sdTray.cpp" />
|
||||
<ClCompile Include="utility.cpp" />
|
||||
<ClCompile Include="hexchat.cpp" />
|
||||
<ClCompile Include="hextray.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="callbacks.h" />
|
||||
<ClInclude Include="resource.h" />
|
||||
<ClInclude Include="sdAlerts.h" />
|
||||
<ClInclude Include="sdTray.h" />
|
||||
<ClInclude Include="utility.h" />
|
||||
<ClInclude Include="hexchat.h" />
|
||||
<ClInclude Include="hextray.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
@ -1,103 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files\bitmaps">
|
||||
<UniqueIdentifier>{448b49a5-e68b-451e-bfbc-0855da024b2e}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files\icons">
|
||||
<UniqueIdentifier>{8345128a-0635-43d6-9115-a85ad9c77ee2}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="hextray.def">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="bitmaps\sd.bmp">
|
||||
<Filter>Resource Files\bitmaps</Filter>
|
||||
</None>
|
||||
<None Include="icons\ban.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
<None Include="icons\disconnect.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
<None Include="icons\highlight.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
<None Include="icons\kick.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
<None Include="icons\message.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
<None Include="icons\sd.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
<None Include="icons\notice.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
<None Include="icons\hexchat.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="resource.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="callbacks.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="sdAlerts.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="sdTray.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="utility.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="hexchat.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="hextray.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="callbacks.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="resource.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="sdAlerts.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="sdTray.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="utility.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="hexchat.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="hextray.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 24 KiB |
@ -1,47 +0,0 @@
|
||||
//{{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
|
@ -1,309 +0,0 @@
|
||||
// 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 "HexChat Events",IDC_STATIC,5,5,205,77
|
||||
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 "Channel Message",21,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,70,32,69,10
|
||||
CONTROL "Highlight",1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,70,46,69,10
|
||||
CONTROL "CTCP",6,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,70,60,69,10
|
||||
CONTROL "Topic Change",3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,145,18,55,10
|
||||
CONTROL "Server Notice",9,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,145,32,55,10
|
||||
CONTROL "Invite",2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,145,46,55,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 HexChat 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 HexChat 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 "HexTray 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 "HexTray\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.3.0",IDC_STATIC,170,105,33,8,0,WS_EX_RIGHT
|
||||
LTEXT "Compiled In: ",IDC_STATIC,110,117,54,8
|
||||
LTEXT "2012",IDC_STATIC,170,117,33,8,0,WS_EX_RIGHT
|
||||
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 indefinitely",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
|
||||
"hextray.h\0"
|
||||
END
|
||||
|
||||
4 TEXTINCLUDE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Version
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,3,0,0
|
||||
PRODUCTVERSION 1,3,0,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", "HexTray"
|
||||
VALUE "FileVersion", "1,3,0,0"
|
||||
VALUE "InternalName", "HexTray"
|
||||
VALUE "LegalCopyright", "Copyright <20> 2005"
|
||||
VALUE "OriginalFilename", "hchextray.dll"
|
||||
VALUE "ProductName", "HexTray - HexChat Win32 System Tray Plugin"
|
||||
VALUE "ProductVersion", "1,3,0,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\\hexchat.ico"
|
||||
ICO_BANNED ICON "icons\\ban.ico"
|
||||
ICO_CHANMSG ICON "icons\\message.ico"
|
||||
ICO_HIGHLIGHT ICON "icons\\highlight.ico"
|
||||
ICO_KICKED ICON "icons\\kick.ico"
|
||||
ICO_PMSG ICON "icons\\message.ico"
|
||||
ICO_SNOTICE ICON "icons\\notice.ico"
|
||||
ICO_DISCONNECTED ICON "icons\\disconnect.ico"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Bitmap
|
||||
//
|
||||
|
||||
IDB_SD_LOGO BITMAP "bitmaps\\sd.bmp"
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
hextray.h
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
@ -1,109 +0,0 @@
|
||||
/* X-Tray
|
||||
* Copyright (C) 2005 Michael Hotaling <Mike.Hotaling@SinisterDevelopments.com>
|
||||
*
|
||||
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include <winuser.h>
|
||||
#include <stdio.h>
|
||||
#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;
|
||||
}
|
@ -1,26 +0,0 @@
|
||||
/* X-Tray
|
||||
* Copyright (C) 2005 Michael Hotaling <Mike.Hotaling@SinisterDevelopments.com>
|
||||
*
|
||||
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, 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
|
@ -1,207 +0,0 @@
|
||||
/* X-Tray
|
||||
* Copyright (C) 2005 Michael Hotaling <Mike.Hotaling@SinisterDevelopments.com>
|
||||
*
|
||||
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
#define _WIN32_IE 0x601
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <tchar.h>
|
||||
#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);
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
/* X-Tray
|
||||
* Copyright (C) 2005 Michael Hotaling <Mike.Hotaling@SinisterDevelopments.com>
|
||||
*
|
||||
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, 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
|
@ -1,410 +0,0 @@
|
||||
/* X-Tray
|
||||
* Copyright (C) 2005 Michael Hotaling <Mike.Hotaling@SinisterDevelopments.com>
|
||||
*
|
||||
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdio.h>
|
||||
#include <commctrl.h>
|
||||
#include <tchar.h>
|
||||
|
||||
#include "hexchat-plugin.h"
|
||||
#include "utility.h"
|
||||
#include "hextray.h"
|
||||
#include "callbacks.h"
|
||||
#include "resource.h"
|
||||
|
||||
struct HOTKEY g_hHotKey;
|
||||
|
||||
/* we need to convert ALT and SHIFT modifiers
|
||||
// from <winuser.h>
|
||||
#define MOD_ALT 0x0001
|
||||
#define MOD_CONTROL 0x0002
|
||||
#define MOD_SHIFT 0x0004
|
||||
// from <commctrl.h>
|
||||
#define HOTKEYF_SHIFT 0x01
|
||||
#define HOTKEYF_CONTROL 0x02
|
||||
#define HOTKEYF_ALT 0x04
|
||||
*/
|
||||
|
||||
WORD HotkeyfToMod(WORD modifiers)
|
||||
{
|
||||
WORD newmods = 0;
|
||||
|
||||
if (modifiers & HOTKEYF_SHIFT)
|
||||
newmods |= MOD_SHIFT;
|
||||
|
||||
if (modifiers & HOTKEYF_CONTROL)
|
||||
newmods |= MOD_CONTROL;
|
||||
|
||||
if (modifiers & HOTKEYF_ALT)
|
||||
newmods |= MOD_ALT;
|
||||
|
||||
return newmods;
|
||||
}
|
||||
|
||||
WORD ModToHotkeyf(WORD modifiers)
|
||||
{
|
||||
WORD newmods = 0;
|
||||
|
||||
if (modifiers & MOD_SHIFT)
|
||||
newmods |= HOTKEYF_SHIFT;
|
||||
|
||||
if (modifiers & MOD_CONTROL)
|
||||
newmods |= HOTKEYF_CONTROL;
|
||||
|
||||
if (modifiers & MOD_ALT)
|
||||
newmods |= HOTKEYF_ALT;
|
||||
|
||||
return newmods;
|
||||
}
|
||||
|
||||
void SavePrefs(int iDlg)
|
||||
{
|
||||
hexchat_pluginpref_set_int (ph, "settings", g_dwPrefs);
|
||||
hexchat_pluginpref_set_int (ph, "aot", g_iTime);
|
||||
hexchat_pluginpref_set_int (ph, "key", g_hHotKey.key);
|
||||
hexchat_pluginpref_set_int (ph, "mod", g_hHotKey.mod);
|
||||
hexchat_pluginpref_set_str (ph, "away", (const char*) g_szAway);
|
||||
}
|
||||
|
||||
void LoadPrefs()
|
||||
{
|
||||
/**************************************************************************************************/
|
||||
/*********************** Our Settings Section *****************************************************/
|
||||
/**************************************************************************************************/
|
||||
|
||||
/**************************************************************************************************/
|
||||
/*************************** Get the value for each of our preferances ****************************/
|
||||
/**************************************************************************************************/
|
||||
|
||||
g_dwPrefs = hexchat_pluginpref_get_int (ph, "settings");
|
||||
g_iTime = hexchat_pluginpref_get_int (ph, "aot");
|
||||
g_hHotKey.key = hexchat_pluginpref_get_int (ph, "key");
|
||||
g_hHotKey.mod = hexchat_pluginpref_get_int (ph, "mod");
|
||||
hexchat_pluginpref_get_str (ph, "away", (char *) g_szAway);
|
||||
|
||||
/**************************************************************************************************/
|
||||
/******************************** Register our hotkey with windows ********************************/
|
||||
/**************************************************************************************************/
|
||||
if(g_dwPrefs & (1<<PREF_UWIOB))
|
||||
{
|
||||
RegisterHotKey(g_hHotkeyWnd, 1, g_hHotKey.mod, g_hHotKey.key);
|
||||
}
|
||||
}
|
||||
|
||||
void CheckPrefs(HWND hwnd, int iDlg)
|
||||
{
|
||||
/**************************************************************************************************/
|
||||
/**************** save the preferances based on the checkmarks/options ****************************/
|
||||
/**************************************************************************************************/
|
||||
switch(iDlg)
|
||||
{
|
||||
case IDD_EVENTS:
|
||||
{
|
||||
SetOption(hwnd, CHAN_HILIGHT, CHAN_HILIGHT);
|
||||
SetOption(hwnd, CHAN_INVITE, CHAN_INVITE);
|
||||
SetOption(hwnd, CHAN_TOPIC_CHANGE, CHAN_TOPIC_CHANGE);
|
||||
SetOption(hwnd, CHAN_BANNED, CHAN_BANNED);
|
||||
SetOption(hwnd, CHAN_KICKED, CHAN_KICKED);
|
||||
SetOption(hwnd, CTCP_GENERIC, CTCP_GENERIC);
|
||||
SetOption(hwnd, PMSG_RECEIVE, PMSG_RECEIVE);
|
||||
SetOption(hwnd, SERV_KILLED, SERV_KILLED);
|
||||
SetOption(hwnd, SERV_NOTICE, SERV_NOTICE);
|
||||
SetOption(hwnd, SERV_DISCONNECT, SERV_DISCONNECT);
|
||||
SetOption(hwnd, CHAN_MESSAGE, CHAN_MESSAGE);
|
||||
}
|
||||
break;
|
||||
case IDD_ALERTS:
|
||||
{
|
||||
SetOption(hwnd, PREF_AMAE, PREF_AMAE);
|
||||
SetOption(hwnd, PREF_OSBWM, PREF_OSBWM);
|
||||
SetOption(hwnd, PREF_UWIOB, PREF_UWIOB);
|
||||
SetOption(hwnd, PREF_KAOI, PREF_KAOI);
|
||||
SetOption(hwnd, PREF_BLINK, PREF_BLINK);
|
||||
|
||||
/**************************************************************************/
|
||||
/**************************************************************************/
|
||||
/**************************************************************************/
|
||||
TCHAR tTime[512];
|
||||
|
||||
GetWindowText(GetDlgItem(hwnd, IDC_ALERT_TIME), tTime, 511);
|
||||
|
||||
g_iTime = _tstoi(tTime);
|
||||
|
||||
/**************************************************************************/
|
||||
/**************** Get our Hotkey and save it **********/
|
||||
/**************** then remove the old hotkey and add the new one **********/
|
||||
/**************************************************************************/
|
||||
DWORD hHotkey;
|
||||
hHotkey = SendDlgItemMessage(hwnd, IDC_ALERT_HOTKEY, HKM_GETHOTKEY, 0, 0);
|
||||
|
||||
g_hHotKey.key = LOBYTE(hHotkey);
|
||||
g_hHotKey.mod = HotkeyfToMod(HIBYTE(hHotkey));
|
||||
|
||||
if(IsDlgButtonChecked(hwnd, PREF_UWIOB) == BST_CHECKED)
|
||||
{
|
||||
UnregisterHotKey(g_hHotkeyWnd, 1);
|
||||
RegisterHotKey(g_hHotkeyWnd, 1, g_hHotKey.mod, g_hHotKey.key);
|
||||
}
|
||||
else
|
||||
{
|
||||
UnregisterHotKey(g_hHotkeyWnd, 1);
|
||||
}
|
||||
|
||||
/*************************************************************************/
|
||||
/*********** Get and save the away msg and alert time ********************/
|
||||
/*************************************************************************/
|
||||
}
|
||||
break;
|
||||
case IDD_SETTINGS:
|
||||
{
|
||||
SetOption(hwnd, PREF_AOM, PREF_AOM);
|
||||
SetOption(hwnd, PREF_TOT, PREF_TOT);
|
||||
SetOption(hwnd, PREF_MIOC, PREF_MIOC);
|
||||
SetOption(hwnd, PREF_DNSIT, PREF_DNSIT);
|
||||
|
||||
GetDlgItemText(hwnd, IDC_AWAY_MSG, g_szAway, 511);
|
||||
|
||||
if(g_dwPrefs & (1<<PREF_DNSIT))
|
||||
{
|
||||
DWORD dwStyle;
|
||||
dwStyle = GetWindowLong(g_hXchatWnd, GWL_STYLE);
|
||||
dwStyle |= (1<<WS_CHILD);
|
||||
SetWindowLongPtr(g_hXchatWnd, GWL_STYLE, (LONG_PTR)dwStyle);
|
||||
SetWindowLongPtr(g_hXchatWnd, GWL_HWNDPARENT, (LONG_PTR)g_hHotkeyWnd);
|
||||
}
|
||||
else
|
||||
{
|
||||
DWORD dwStyle;
|
||||
dwStyle = GetWindowLong(g_hXchatWnd, GWL_STYLE);
|
||||
dwStyle &= ~(1<<WS_CHILD);
|
||||
SetWindowLongPtr(g_hXchatWnd, GWL_STYLE, (LONG_PTR)dwStyle);
|
||||
SetWindowLongPtr(g_hXchatWnd, GWL_HWNDPARENT, NULL);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void SetDialog(HWND hwnd, int iDlg)
|
||||
{
|
||||
switch(iDlg)
|
||||
{
|
||||
case IDD_EVENTS:
|
||||
{
|
||||
SetCheck(hwnd, CHAN_HILIGHT, CHAN_HILIGHT);
|
||||
SetCheck(hwnd, CHAN_INVITE, CHAN_INVITE);
|
||||
SetCheck(hwnd, CHAN_TOPIC_CHANGE, CHAN_TOPIC_CHANGE);
|
||||
SetCheck(hwnd, CHAN_BANNED, CHAN_BANNED);
|
||||
SetCheck(hwnd, CHAN_KICKED, CHAN_KICKED);
|
||||
SetCheck(hwnd, CTCP_GENERIC, CTCP_GENERIC);
|
||||
SetCheck(hwnd, PMSG_RECEIVE, PMSG_RECEIVE);
|
||||
SetCheck(hwnd, SERV_KILLED, SERV_KILLED);
|
||||
SetCheck(hwnd, SERV_NOTICE, SERV_NOTICE);
|
||||
SetCheck(hwnd, SERV_DISCONNECT, SERV_DISCONNECT);
|
||||
SetCheck(hwnd, CHAN_MESSAGE, CHAN_MESSAGE);
|
||||
}
|
||||
break;
|
||||
case IDD_SETTINGS:
|
||||
{
|
||||
SetCheck(hwnd, PREF_TOT, PREF_TOT);
|
||||
SetCheck(hwnd, PREF_MIOC, PREF_MIOC);
|
||||
SetCheck(hwnd, PREF_AOM, PREF_AOM);
|
||||
SetCheck(hwnd, PREF_DNSIT, PREF_DNSIT);
|
||||
|
||||
SetDlgItemText(hwnd, IDC_AWAY_MSG, g_szAway);
|
||||
}
|
||||
break;
|
||||
case IDD_ALERTS:
|
||||
{
|
||||
|
||||
SetCheck(hwnd, PREF_BLINK, PREF_BLINK);
|
||||
SetCheck(hwnd, PREF_OSBWM, PREF_OSBWM);
|
||||
SetCheck(hwnd, PREF_UWIOB, PREF_UWIOB);
|
||||
SetCheck(hwnd, PREF_KAOI, PREF_KAOI);
|
||||
|
||||
/**********************************************************/
|
||||
/**********************************************************/
|
||||
/**********************************************************/
|
||||
if(SetCheck(hwnd, PREF_AMAE, PREF_AMAE) == false)
|
||||
{
|
||||
SetToggle(hwnd, PREF_OSBWM, PREF_AMAE, TRUE);
|
||||
SetToggle(hwnd, PREF_UWIOB, PREF_AMAE, TRUE);
|
||||
SetToggle(hwnd, PREF_KAOI, PREF_AMAE, TRUE);
|
||||
SetToggle(hwnd, IDC_ALERT_TIME, PREF_AMAE, TRUE);
|
||||
SetToggle(hwnd, IDC_ALERT_TIME_TEXT, PREF_AMAE, TRUE);
|
||||
SetToggle(hwnd, IDC_ALERT_HOTKEY, PREF_AMAE, TRUE);
|
||||
SetToggle(hwnd, IDC_ALERT_HOTKEY_TEXT, PREF_AMAE, TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
/**********************************************************/
|
||||
/**********************************************************/
|
||||
/**********************************************************/
|
||||
TCHAR tTime[255];
|
||||
SendDlgItemMessage(hwnd, IDC_ALERT_TIME, WM_SETTEXT, 0, (LPARAM)_itot(g_iTime, tTime, 10));
|
||||
SendDlgItemMessage(hwnd, IDC_ALERT_HOTKEY, HKM_SETHOTKEY, MAKEWORD(g_hHotKey.key, ModToHotkeyf(g_hHotKey.mod)), 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int SetCheck(HWND hDialog, unsigned int uiCheckBox, unsigned int uiPref)
|
||||
{
|
||||
if((g_dwPrefs & (1<<uiPref)))
|
||||
{
|
||||
CheckDlgButton(hDialog, uiCheckBox, BST_CHECKED);
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
CheckDlgButton(hDialog, uiCheckBox, BST_UNCHECKED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetToggle(HWND hDialog, unsigned int uiCheckBox, unsigned int uiTestbox, bool offeqoff)
|
||||
{
|
||||
/**************************************************************************************************/
|
||||
/*********************** if(true) then if option is off turn toggle off ***************************/
|
||||
/*********************** if(false) then if option is off turn toggle on ***************************/
|
||||
/**************************************************************************************************/
|
||||
if(offeqoff)
|
||||
{
|
||||
if(IsDlgButtonChecked(hDialog, uiTestbox) == BST_CHECKED)
|
||||
{
|
||||
EnableWindow(GetDlgItem(hDialog, uiCheckBox), TRUE);
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
EnableWindow(GetDlgItem(hDialog, uiCheckBox), FALSE);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(IsDlgButtonChecked(hDialog, uiTestbox) == BST_CHECKED)
|
||||
{
|
||||
EnableWindow(GetDlgItem(hDialog, uiCheckBox), FALSE);
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
EnableWindow(GetDlgItem(hDialog, uiCheckBox), TRUE);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SetOption(HWND hDialog, unsigned int uiCheckBox, unsigned int uiPref)
|
||||
{
|
||||
if(IsDlgButtonChecked(hDialog, uiCheckBox) == BST_CHECKED)
|
||||
{
|
||||
g_dwPrefs |= (1<<uiPref);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_dwPrefs &= ~(1<<uiPref);
|
||||
}
|
||||
|
||||
return (g_dwPrefs & (1<<uiPref));
|
||||
}
|
||||
|
||||
// For cleanup ( Closing windows and the such )
|
||||
void HoldClose()
|
||||
{
|
||||
HANDLE hcThread;
|
||||
DWORD dwThreadID;
|
||||
hcThread = CreateThread(NULL, 0, HoldCloseThread, 0, 0, &dwThreadID);
|
||||
}
|
||||
|
||||
DWORD WINAPI HoldCloseThread(LPVOID lpParam)
|
||||
{
|
||||
Sleep(1000);
|
||||
PostMessage(g_hXchatWnd, WM_CLOSE, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool FileExists(TCHAR *file)
|
||||
{
|
||||
HANDLE hTemp = CreateFile(file, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
|
||||
int nRet = GetLastError();
|
||||
CloseHandle(hTemp);
|
||||
|
||||
if(nRet == 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void ConvertString(const char *in, wchar_t *out, int size)
|
||||
{
|
||||
MultiByteToWideChar(CP_UTF8, 0, in, -1, out, size);
|
||||
}
|
||||
|
||||
void ConvertString(const wchar_t *in, char *out, int size)
|
||||
{
|
||||
WideCharToMultiByte(CP_UTF8, 0, in, (size - 1), out, size, NULL, NULL);
|
||||
}
|
||||
|
||||
void ConvertString(const char *in, char *out, int size)
|
||||
{
|
||||
strncpy(out, in, size);
|
||||
}
|
||||
|
||||
void ErrorDebug(LPTSTR lpszFunction)
|
||||
{
|
||||
TCHAR szBuf[80];
|
||||
LPVOID lpMsgBuf;
|
||||
DWORD dw = GetLastError();
|
||||
|
||||
FormatMessage(
|
||||
FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
||||
FORMAT_MESSAGE_FROM_SYSTEM,
|
||||
NULL,
|
||||
dw,
|
||||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||
(LPTSTR) &lpMsgBuf,
|
||||
0, NULL );
|
||||
|
||||
_stprintf(szBuf,
|
||||
_T("%s failed with error %d: %s"),
|
||||
lpszFunction, dw, lpMsgBuf);
|
||||
|
||||
MessageBox(NULL, szBuf, _T("Error"), MB_OK);
|
||||
|
||||
LocalFree(lpMsgBuf);
|
||||
}
|
||||
|
@ -1,46 +0,0 @@
|
||||
/* X-Tray
|
||||
* Copyright (C) 2005 Michael Hotaling <Mike.Hotaling@SinisterDevelopments.com>
|
||||
*
|
||||
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#ifndef _H_UTILITY_H
|
||||
#define _H_UTILITY_H
|
||||
|
||||
WORD HotkeyfToMod (WORD);
|
||||
WORD ModToHotkeyf (WORD);
|
||||
|
||||
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);
|
||||
|
||||
struct HOTKEY
|
||||
{
|
||||
WORD key;
|
||||
WORD mod;
|
||||
};
|
||||
#endif
|
@ -1,25 +0,0 @@
|
||||
## Process with automake to produce Makefile.in
|
||||
|
||||
# To create a standalone tarball of your plugin run the plugin_dist
|
||||
# target. Note: you must configure the main source tree with
|
||||
# --enable-maintainer-mode
|
||||
|
||||
# These two must be defined.
|
||||
PLUGIN=mailcheck
|
||||
PLUGIN_VERSION=0.1
|
||||
|
||||
# This file must be in the form PLUGIN-config.h.in, it can be empty but
|
||||
# must exist
|
||||
EXTRA_DIST = mailcheck-config.h.in
|
||||
|
||||
# Remember to include this line in your Makefile.am
|
||||
include @top_srcdir@/plugins/Make.plugin
|
||||
|
||||
libdir = $(hexchatdir)/plugins
|
||||
|
||||
lib_LTLIBRARIES = mailcheck.la
|
||||
mailcheck_la_SOURCES = mailcheck.c
|
||||
mailcheck_la_LDFLAGS = -avoid-version -module
|
||||
INCLUDES = $(COMMON_CFLAGS) $(PLUGIN_INCLUDES)
|
||||
|
||||
DISTCLEANFILES = pg_dir/*
|