Compare commits

...

922 Commits

Author SHA1 Message Date
9b9ca27987 Bump version to 2.10.0 2014-06-01 13:07:12 -04:00
6187b35fa6 Remove dead network 2014-06-01 11:52:09 -04:00
6cf54d6515 Remove some hardcoded version numbers
- man page
- makebundle.sh
2014-06-01 11:40:48 -04:00
9344373e0b Sensitize open dialog button in friends list when selected
Fixes #1001
2014-05-31 14:18:48 -04:00
3d1d9e1716 Add SeionIRC to serverlist
Closes #982
2014-05-31 13:29:45 -04:00
e18a086ccf Add StormBit to network list
Closes #873
2014-05-31 13:29:19 -04:00
0838f8f688 Cosmetics 2014-05-31 17:15:45 +02:00
b3bcf71981 osx: Fix loading system's openssl config 2014-05-31 10:04:05 -04:00
6d03ddc4f4 osx: More theme tweaks 2014-05-31 08:22:01 -04:00
5706550cc1 Rework gtk_xtext_selection_draw(), simplify calls to _selection_render()
Fixes #992.
2014-05-31 02:40:28 -07:00
af7463e2bc osx: Use key theme shipped with gtk 2014-05-30 08:22:08 -04:00
e13e0f4314 win32: Fix exiting fullscreen to a maximized window 2014-05-30 04:26:34 -04:00
31843017d4 Make lawyers happy 2014-05-29 18:04:28 +02:00
0e0efbdb9a Replace Inno Perl with MSI Perl 2014-05-29 15:33:03 +02:00
a93e152912 ... and update perl description in installer 2014-05-28 19:14:17 -04:00
fdd922433b win32: Update perl urls in installer 2014-05-28 19:06:16 -04:00
8c00a4ff40 perl: Update Perl to 5.20 2014-05-28 18:22:19 +02:00
5f5c44620b Update translations 2014-05-28 05:31:51 -04:00
637c153de3 Use newer format for default keybindings
This uses the proper bindings on OS X
2014-05-28 01:39:45 -04:00
a800765b70 osx: Use applespell enchant backend
And fix enchant loading backends in the bundle
2014-05-27 23:50:46 -04:00
f92e72a92c osx: makebundle.sh improvements 2014-05-27 20:35:43 -04:00
0f6434986f osx: Properly handle quitting 2014-05-27 03:07:03 -04:00
f43b7524e0 osx: Properly use app menu
Mentioned in #994
2014-05-27 02:58:44 -04:00
cd1b9f42be osx: Use osx friendly bindings for GtkEntry
Fixes #995
2014-05-26 23:48:52 -04:00
4320d88b90 Fix crash with invalid dnd to userlist 2014-05-26 05:11:47 -04:00
cba4462458 osx: Improve gtk theme 2014-05-26 02:33:42 -04:00
30de7a1377 Update default settings
- Enable server-time
- Disable tree dots
2014-05-23 18:57:44 -04:00
011514e1ad Enable drag and drop on Windows
The issues around it no longer seem to exist in current GTK
2014-05-23 18:47:27 -04:00
6fb8cf40e1 Fixes #959. In xtext.c:find_x() return offset to hidden text if appropriate. 2014-05-22 07:06:51 -07:00
015cecf724 Fix drag and drop 2014-05-21 10:18:37 -04:00
904493b24f Show notifications for private actions
Fixes #990
2014-05-20 22:03:45 -04:00
95f9ca917e Default completion to last spoke 2014-05-12 05:10:26 -04:00
0dccf692d4 Add global option to suppress nick change events
Might as well add a per-channel option, too but for me that seems a bit unnecessary.
Closes #971
2014-05-12 05:01:24 -04:00
7435572282 Properly support notices to prefix'd users on a channel
Instead of hardcoding this behavior for @, +, and %, fetch the list of
mode prefixes from the server's state and look for one of those instead.

Closes #977
2014-05-12 04:55:45 -04:00
17671ec694 Fixed truncation of the reason when receiving a KILL message.
The KILL handler thought the message started one word later than it did, and
would cut off the first word.  This change starts the reason in the correct
place, and shaves off a leading : if one is present.

Closes #977
Closes #774
2014-05-12 04:52:42 -04:00
187c04f7e2 Add missing NULL check in cmd_lastlog
Closes #961
2014-05-12 02:33:02 -04:00
5af678d2b9 Default Techman's World IRC to SASL
Closes #963
2014-05-12 02:30:27 -04:00
1265eee9e5 Fix spell check on OSX 2014-05-11 06:46:12 -04:00
e5f7441bae Fix sorting problem when using tabs
Fixes #949
2014-05-11 05:02:20 -04:00
6ef41f7d4f Fix logging incorrect timestamp with server-time
Fixes #972
2014-05-11 05:02:19 -04:00
fea144dd19 Add option to bounce dock icon on OSX 2014-05-11 04:50:35 -04:00
fea528c39d Don't ignore command key in keybindings on OSX 2014-05-11 04:48:44 -04:00
9599c29c46 Use filesize format based on OS
Adds gui_filesize_iec option on Unix

Closes #966
2014-05-03 23:57:45 -04:00
fe71af15a7 Fix warning 2014-04-29 22:59:04 -04:00
b049757302 Replace deprecated GetVersionEx calls with version helpers
Only compiles with 8.1 SDK but runs everywhere

Closes #957
2014-04-24 06:55:16 -04:00
5fee31b1f0 Use the right API to get the path to Roaming AppData and Downloads directories, and actually convert it to utf-8 instead of using it directly. 2014-04-21 09:58:04 -07:00
e4413e0178 Don't convert the result of g_get_user_name / g_get_real_name from locale to utf-8 on Windows. They return utf-8 already. 2014-04-21 09:16:13 -07:00
dc27640265 Use utf-8 variant of strftime to format log file paths.
strftime assumes the format string is in locale encoding, which mangles log file paths that are in utf-8.

Fixes #767
Fixes #945
2014-04-21 01:39:28 -07:00
41c209bf45 Reset all nick entry errors in servlist when fixed 2014-04-19 22:52:30 -04:00
231590f71e sysinfo: Use less ambiguous IEC prefixes in storage measurements
Closes #922
2014-04-19 22:49:45 -04:00
7e55e4ee73 python: Scan for non-NULLs in print events
Closes #916
Closes #915
2014-04-19 22:30:31 -04:00
8bdde3a2df Fix warnings like usual 2014-04-18 23:50:27 -04:00
c8b3eef351 Improve displaying errors in servlist 2014-04-18 23:45:27 -04:00
5f297950a2 Fix issues removing autojoin channels
- Makes remove case insensitive
- Fixes crashing when channel not found
2014-04-18 20:40:33 -04:00
ccf49aa48d Fix #928. Fix memory leak, mea culpa. 2014-04-17 15:07:50 -07:00
b66edd372e Fixes #928 again. In scrollback replay, skip every line that starts 0x0d. 2014-04-17 09:53:09 -07:00
2a2eafcf1d win32: Update gtk theme description in installer 2014-04-17 02:43:22 -04:00
8a0f2b1d21 Use glib to format filesize in dccgui 2014-04-15 04:05:18 -04:00
660b860ddd Fix whitespace... 2014-04-10 23:05:04 -04:00
f27b2e82fa Add Xertion to network list
Closes #939
2014-04-10 22:59:04 -04:00
f994ef3f92 win32: Fix python 3.4 check in installer 2014-04-08 20:17:04 -04:00
b41bd594b0 Add account to Join event
Also reorganizes some logic. The account will usually be NULL unless
extended-join capability enabled.

Closes #934
2014-04-06 15:33:22 -04:00
0f828dd74f Add marker-line functionality for scrollback, instant seek.
Fixes #662.
2014-04-02 16:14:45 -07:00
5e8bc980e1 Merge pull request #929 from hexchat/928
Fix scrollback_load to deal with e.g. the output of /HELP
2014-03-30 20:09:37 -07:00
4ca9672a92 Fix scrollback_load to deal with e.g. the output of /HELP
Fixes #928.
2014-03-29 14:31:19 -07:00
1a3bfdce75 Improve handling scrollback when gui_tab_server==FALSE
Fixes #925.
2014-03-24 21:22:04 -04:00
46e449f110 Correctly scroll down autojoined channels
Fixes #58
2014-03-19 10:31:52 -04:00
0487daf865 Fix three miscellaneous bugs in gtk_xtext_get_word()
* Use utf8 functions for moving within string
	* Fix memory leak
	* Fix non-indent select problem
2014-03-19 10:31:26 -04:00
99ee7b6ef8 win32: Quote paths when invoking glib-compile-resources.exe
Also escape the trailing backslash in DataDir since otherwise it escapes the double-quote after it.
2014-03-18 11:05:54 -07:00
4cc764256c win32: Powershell.exe absolutely needs "-File" when running scripts or else it parses arguments with spaces as separate parameters. 2014-03-18 10:44:53 -07:00
36950c0d46 win32: Bump python to 3.4.0 2014-03-17 09:05:58 -04:00
caddb25711 Disable compression on tree_channel.png
This causes some artifacts in the icon, none of the others seem to have
the problem
2014-03-15 12:12:39 -04:00
d374f3ffe6 Disable hiding characters in the input 2014-03-15 12:12:38 -04:00
664da30ee4 Partial revert of 5f732128
Still some scrolling issues remain, much work is to be
done to properly fix it.
2014-03-15 12:12:38 -04:00
e36855a21e Fix miscapitalization 2014-03-11 17:55:01 +01:00
fd0eeddcc9 Add ElectroCode
Closes #910
2014-03-08 01:16:42 +01:00
b52650de5d Added Anthrochat and Furnet to server list
Closes #900
2014-03-08 01:14:20 +01:00
71e54854ec win32: Updated Python dependencies to 2.7.6 and 3.3.4 2014-02-28 01:11:18 -08:00
e6e5659b11 Minor redesign to text events window
This makes it more consistent with the other settings windows

- Use editable cell for entry
- Use pane to resize both treeviews
- Make preview fixed size and on bottom
- Enable search for event name
2014-02-18 17:02:19 -05:00
dd128ce534 Remove migration code for xchat 1 colors 2014-02-16 19:47:22 -05:00
8f6a596057 Properly handle shift tab in keyboard shortcuts 2014-02-16 14:48:17 -05:00
85aff53a88 Use more user friendly label for keys in keyboard shortcuts 2014-02-16 11:08:32 -05:00
bed5a21700 Add safemode action to desktop file 2014-02-16 01:05:07 -05:00
12cd5cb64a Translate desktop files 2014-02-16 00:56:48 -05:00
0d4cde2ba8 Tweak readme formatting 2014-02-15 18:08:01 -05:00
45cfb71c3e Add Jenkins badge 2014-02-15 23:31:49 +01:00
40e8ca9f6e Hide tray balloon option on OSX 2014-02-15 12:34:46 -05:00
d3b4771103 Fix warning.. 2014-02-15 11:55:29 -05:00
22b5affbe6 Use GRegex for channel list search
This adds support for Windows
2014-02-15 11:50:22 -05:00
b245f2f79e Tweak column sizing in channel list 2014-02-14 21:24:12 -05:00
f35ae03a66 Build with GTK_DISABLE_DEPRECATED 2014-02-14 16:31:08 -05:00
725aed43ff Redesign keyboard shortcuts window
- Convert GtkCLists to GtkTreeViews
- Save keybindings in GtkAccelerator format
- Store keybindings in a GSList
2014-02-14 16:29:44 -05:00
655b524ee6 Cleanup the preferences window
Simplifies some code and removes many widgets
2014-02-14 16:17:08 -05:00
b17c0276de Fix some leaks 2014-02-12 10:31:11 -05:00
ba399eb7f9 Remove unused function 2014-02-12 10:20:23 -05:00
6d815ac688 Fix warning 2014-02-12 09:27:28 -05:00
93d0341f9c Show help as tooltips in editlists 2014-02-09 02:42:40 -05:00
2f847428aa Fix hiding unsupported channel modes in topicbar 2014-02-07 04:04:59 -05:00
02275dff51 Fix some warnings in editlist 2014-02-07 02:27:44 -05:00
34cf164aa2 Use a single marshal file for entire project 2014-02-06 20:17:08 -05:00
5f7321280e Use a standard GtkScrolledWindow with xtext
Used in maingui, fkeys, text events, rawlog

This also implements the set_scroll_adjustments signal in xtext
2014-02-06 20:17:07 -05:00
8d77fd6a57 win32: Update installer for new Perl 2014-02-06 16:47:34 -05:00
b1b6255f38 Revert e64aa93f8 2014-02-05 01:27:36 -05:00
e64aa93f85 Use persitance with libnotify
This will keep notifications in gnomes tray
similar to a tray icon.
2014-02-05 01:00:06 -05:00
4c1fd3ee67 Fix many many problems in xtext.c related to character width.
* Rework multiline logic to use a GSList, not an array
* Remove all multibyte booleans; everything is potentially multibyte
  - Except for gtk_xtext_get_word(), which needs special attention
* Enhance pango work for bold and italics (attr_list -> attr_lists[4])
* Enhance gtk_xtext_strip_color () to save bold, italics info
* Involve emphasis information in all pixel-width calculations
* Rework find_x () to account for emphasis info in widths

Closes #891
Fixes #872
2014-02-04 21:26:58 -05:00
10d3c15143 Add /getbool command 2014-02-04 20:46:43 -05:00
3a7fb4d8e1 osx: Set Menlo as default font
This moves the find_font function to the front ends since it depends on
pango and cairo
2014-02-04 20:45:29 -05:00
8e55157e6a Print help messages for user commands 2014-02-04 20:32:10 -05:00
29e01daeae Merge pull request #890 from orium/lagmeter-fixes
Lagmeter fixes
2014-02-04 17:29:27 -08:00
9f01950bcb Fix warning 2014-02-02 19:07:52 -05:00
ed5ead6a07 Merge pull request #892 from ShutterQuick/patch-1
servlist: Add Canternet
2014-02-02 15:42:31 -08:00
1b936965ee servlist: Add Canternet 2014-02-02 23:08:32 +01:00
0cb025ff06 Prevent users from having the same alternate nicks
For some reason users do this and then complain when they cannot connect
when nick is in use. There are other ways for them to break it but at
least it shouldn't be on accident.
2014-02-01 13:31:42 -05:00
604337ccc7 Make all parent directories when creating configdir 2014-01-30 21:42:03 -05:00
b1a3c6135c Add synIRC to network list
Closes #888
2014-01-30 17:24:03 -05:00
9969282c72 Now make_ping_time() in common/util.c returns the time in milliseconds instead
of microseconds.
In fe_set_lag(serv, lag) the lag argument is now in milliseconds as well.

Fixes #758.
2014-01-30 19:23:35 +00:00
a1f01aca0f osx: generate plist file 2014-01-30 02:13:42 -05:00
83bf77f4d0 More autotools cleanup
- Don't build msproxy if unused
- Add resources to cleanfiles
- Remove old extra_dist from plugins
2014-01-30 02:01:42 -05:00
9ec4aa897a Use verbose builds with travis 2014-01-29 16:27:45 -05:00
a466369356 Respect verbosity setting when building htm 2014-01-29 16:25:57 -05:00
007f49c39f Fixes #881 Fix two bugs --
gtk_xtext_find_char() adjust negative y for int typecast
	gtk_xtext_find_x() return out_of_bounds TRUE if line outside windodw
	gtk_xtext_selection_draw() recognize TRUE out_of_bounds
2014-01-29 11:56:23 -08:00
6487e1b391 osx: Silence openssl deprecated warnings 2014-01-29 12:16:36 -05:00
e962039f83 configure: Don't error when python not found 2014-01-28 16:19:06 -05:00
6964079673 osx: Fix bundled Python 2014-01-28 16:19:06 -05:00
c9818adfb1 osx: Fix loading plugins from bundle 2014-01-27 19:59:23 -05:00
eb1d3a063a Allow overriding libdir 2014-01-27 18:39:26 -05:00
1d6d737927 Fixed lag meter getting stuck.
Also lag_sent in struct server should have always been an unsigned long.

Fixes #749.
2014-01-27 19:57:41 +00:00
efcb850956 win32: Include gtk theme in minimal install 2014-01-26 06:55:39 -05:00
35e84f6edc Show error when you lack write permissions to configdir 2014-01-26 06:55:38 -05:00
7fcf70c539 Fix loading default keybindings w/o write permissions
Closes #615
2014-01-26 06:30:33 -05:00
4510e8e2a2 Enable --command on win32
and make existing depend on
2014-01-20 20:42:48 -05:00
92a3a34785 Actually call commands sent with --command
Closes #884
2014-01-20 16:42:33 -05:00
4d1dc12a31 Remove unused xdcc server plugin 2014-01-20 04:44:44 -05:00
63edd4555b Translate appdata file 2014-01-20 03:04:52 -05:00
10a03f2216 configure: Clean up EXTRA_DIST 2014-01-20 02:38:32 -05:00
f7e3be4849 Don't store the potfile in git 2014-01-20 01:45:41 -05:00
58a3980372 Remove unused plugins 2014-01-20 01:31:41 -05:00
093bdd8b1c Fix warning
Leftovers from 38cbabea
2014-01-20 01:25:35 -05:00
681e14b3b8 Remove unused perl files
- old example scripts
- outdated docs
- mingw build script
2014-01-20 01:14:10 -05:00
38cbabea02 Revert GtkObject removal until Gtk3 2014-01-18 21:48:41 -05:00
ce09cb4a91 Update most deprecated gtk functions 2014-01-18 14:47:17 -05:00
fa1eb92a7b Update most deprecated gdk functions 2014-01-18 14:47:17 -05:00
eb29de1c7c Show a popup when opening plugin window when built without support 2014-01-16 00:58:04 -05:00
0297da4d6e Fix warning when built without plugins 2014-01-16 00:46:49 -05:00
eb90f076bb configiure: Fix testing compiler flags on anything other than gcc 2014-01-16 00:32:52 -05:00
c2c705a945 configure: add missing result message 2014-01-16 00:20:44 -05:00
6f6070b8c8 configure: Don't build python or perl plugin when plugins are disabled 2014-01-16 00:12:06 -05:00
37d92dd69c Check for gio during configure 2014-01-15 13:20:15 -05:00
8af9727937 Add gtk-mac-bundler files 2014-01-14 22:38:44 -05:00
7b0acb2b44 Build with gtk-mac-integration
- Use HexChat logo for dock icon
- Use appmenu (not finished)
2014-01-14 22:14:27 -05:00
4319f8009c Don't use SCROLL_HACK on osx 2014-01-14 22:14:27 -05:00
b2e3214d61 Clean up formatting during build 2014-01-14 01:18:15 -05:00
0b52ec3676 Move acinclude.m4 into m4 dir 2014-01-14 00:51:48 -05:00
599b9b0379 configure.ac: Actually check the CFLAGS and LDFLAGS returned by ExtUtils::Embed before deciding to compile the Perl plugin.
- openSUSE has ExtUtils::Embed, EXTERN.h and perl.so in the base perl package.
- Fedora has ExtUtils::Embed in a separate perl-devel package.
- Mageia has ExtUtils::Embed in the base perl package but EXTERN.h in a separate perl-devel package. Without this package, the compiler complains about the missing header.
- Debian has ExtUtils::Embed and EXTERN.h in the base perl package but perl.so in a separate libperl-dev package. Without this package, gcc compiles successfully but complains at link-time about -lperl (ExtUtils::Embed returns '-lperl' in ldopts but it's not actually installed).

configure.ac already requires ExtUtil::Embed to enable perl. To handle the case of Mageia and Debian, this change uses AC_TRY_LINK to verify that the flags returned by ExtUtils::Embed can actually be used to compile before deciding to enable the perl plugin.
2014-01-13 18:27:32 -08:00
a87b61c73f Build system improvements
- Use AM_GLIB_GNU_GLIB and IT_PROG_INTLTOOL
- Use gnome-autogen.sh
- Move language list to own file
- Delete generated config.rpath file
2014-01-13 14:27:36 -05:00
c804179a99 Tweak 908 syntax 2014-01-12 13:00:27 -05:00
baa5f9710a Add another badge to readme 2014-01-12 10:05:42 -05:00
37135cd682 ... Add inbound_sasl_supportedmechs to inbound.h 2014-01-12 07:13:51 -05:00
0f0dabdcf4 Support numeric 908 2014-01-12 07:10:26 -05:00
a817072e6f Add Turkish language to preferences
Users of uk, vi, and wa languages will have to manually change their
lang on Windows after this.
2014-01-11 18:34:30 -05:00
2ea1a992b1 Fix Turkish translation & update language list 2014-01-11 23:54:16 +01:00
649e962e6d Update Translations 2014-01-11 23:09:40 +01:00
7337007fe2 ... and ignore blank network passwords 2014-01-11 16:27:34 -05:00
6e049d5975 Login when /server is used on known hostname
This brings back old behavior where you can /server to another
server in the same network and login with services but now is only
sent when the server is known not every time so more secure.
2014-01-11 16:08:50 -05:00
b2a780e97a libsexy: Properly reflect reset attributes in input 2014-01-11 15:44:54 -05:00
aae6633c28 Don't select tab while closing with middle-click
Also fix unused warning and ignore shift right click
2014-01-08 09:03:50 -05:00
91ea5b6907 Fix warnings 2014-01-08 03:51:39 -05:00
20d26aea94 Rewrite dns command
- Cross platform
- Doesn't depend on external tools
2014-01-08 01:32:28 -05:00
9cba22c38a Define AI_ADDRCONFIG in inet.h, needed by OpenBSD 2014-01-04 23:13:34 -05:00
1e1ef1c6cf Change url-handler example to firefox -new-window
Firefox removed the ability to open private windows with a link
2014-01-03 03:39:35 -05:00
537fb85696 Bind middle-click to close tab
Closes #832
2014-01-02 18:03:32 -05:00
2bd1c3f99d Fixed whitespace. 2013-12-27 19:50:50 -08:00
c531db4714 fe-gtk: Fixed notification balloons for PMs not getting displayed if blinking tray icons for PMs is unchecked. 2013-12-27 19:41:18 -08:00
c7bf4b0474 Replaced use of T4 templates with PS-based templates.
TextTransform.exe is not available with Express versions of Visual Studio.
2013-12-27 12:05:07 -08:00
61ceaef57e Properly request server-time when it's the only cap
Closes #862
2013-12-27 09:20:39 -05:00
afb6685593 Merge pull request #842 from ManiacTwister/setup-fix
Fixed setup window title offsets
2013-12-25 08:31:13 -08:00
1311748b06 Merge branch 'pr/823' 2013-12-25 10:23:46 -05:00
7537bf8f07 Merge pull request #846 from grimreaper/patch-1
Fix autogen.sh shebang line
2013-12-25 07:23:14 -08:00
96fd4949bd Add Techman's World IRC network
Closes #813
2013-12-25 10:22:35 -05:00
f87071b7e2 Fix autogen.sh shebang line
/bin/bash does not exist on many systems.  In addition this script appears to be POSIX compatible so just use the appropriate shebang line.
2013-12-25 10:22:25 -05:00
5e455be5f3 Merge pull request #864 from RichardHitt/snadge
Ignore realname if it's a null string
2013-12-23 13:53:59 -08:00
d7e3e4c9a4 Only return channel sessions from find_channel()
Closes #865
2013-12-23 16:44:40 -05:00
26268d3188 Ignore realname if it's a null string 2013-12-22 11:19:30 -08:00
407613a8db Fix NAMES command syntax 2013-11-28 05:01:40 -05:00
ae4e55b922 Merge pull request #848 from orium/print-priority-847
Print{,_attr} and server{,_attr} hooks priority fix
2013-11-27 18:19:42 -08:00
40f26429f8 Print{,_attr} and server{,_attr} hooks were incorrectly handled when both
version existed (regular and attrs).  Specifically, the priority was not
respected, and both versions were run even when EAT_PLUGIN was returned.

Fixes #847.
2013-11-28 02:11:33 +00:00
60ea2874b3 Fix autogen.sh shebang line
/bin/bash does not exist on many systems.  In addition this script appears to be POSIX compatible so just use the appropriate shebang line.
2013-11-23 22:43:40 -05:00
d38bbb1e2c update help message for /names 2013-11-23 15:31:09 -05:00
5c223ec5d5 Fix more warnings 2013-11-22 16:53:50 -05:00
a656cee382 Fix warnings 2013-11-22 16:25:34 -05:00
9772eae568 Merge pull request #845 from somasonic/master
Added Interlinked to servlist.c
2013-11-19 15:27:11 -08:00
a45ba5bdc0 Add Interlinked 2013-11-19 22:16:57 +00:00
2bbb2ac7db Fixed setup window title offsets 2013-11-18 03:37:11 +01:00
5331a6145b Fix crash with negative timestamp in banlist
Closes #841
2013-11-17 11:57:13 -05:00
5c872eb110 win32: Improvements to portable-mode in installer 2013-11-16 15:37:41 -05:00
9834301eda win32: Download spelling dictionaries from installer 2013-11-15 09:49:01 -05:00
3821e7a750 Fixes #836. Move to line boundary in _scroll{down,up}_timeout() not _scroll(). 2013-11-14 19:18:07 -08:00
1aca24f3de Fixes #837. Rewrite gtk_xtext_scroll{down,up}_timeout(). 2013-11-12 15:02:38 -08:00
811caaaa3d Fixes #836. In gtk_xtext_scroll() always force line integral line boundary. 2013-11-11 12:55:38 -08:00
3f1994f3bf win32: Download deps during installation 2013-11-10 03:56:50 -05:00
39aec3a45b installer: Use correct path to iscc.exe depending on the platform. 2013-11-03 14:46:13 -08:00
e8282d97f1 fe-gtk: Quote path to glib-compile-resources.exe 2013-11-03 14:24:49 -08:00
2e75068c7c Use correct path to TextTransform.exe depending on the platform. 2013-11-03 14:16:11 -08:00
af248ce2c1 Fix invalid timestamps crashing on Windows 2013-11-02 21:07:03 -04:00
7e6f37b4cd Update help message for kick/kickban 2013-11-01 14:42:43 -04:00
f178b551da Don't auto unmark away when getting znc playback 2013-11-01 00:58:27 -04:00
9afd169362 Round 4 of gtk accessor functions: setup.c 2013-10-29 00:54:12 -04:00
9e5551aa59 win32: Install pixbuf engine 2013-10-28 21:56:01 -04:00
e8d4f3f848 Properly set away and fullscreen menu items 2013-10-27 13:24:15 -04:00
30a47cf62e Fix random_line() cutting off text
fgets() wont include the newline
2013-10-27 13:21:52 -04:00
aadee8afba Use a full path to configdir when using portable mode
This avoids the issue of plugins changing paths on us
2013-10-27 12:51:14 -04:00
a1c9294b89 Only update userlistgui when necessary 2013-10-26 13:37:20 -04:00
7cf9ea83cb xtext: Get proper text width with attributes 2013-10-26 08:51:50 -04:00
d1de138cb1 Sensitize banlist buttons if half-op
For #647
2013-10-25 09:28:09 -04:00
cff05cef68 Update readme.md 2013-10-24 07:24:18 -04:00
120a5a1dcd Match nick last when checking url
Closes #796
2013-10-23 06:32:57 -04:00
36e41a6476 fix another warning 2013-10-22 14:53:33 -04:00
0ff2ade078 fix warning 2013-10-22 14:44:30 -04:00
bb5d589c79 Open channel list window on /list 2013-10-22 13:35:28 -04:00
6d3c176ff8 url_check_line () now recognizes all urls
previously it only recognized url with "://" after the scheme.
Urls without a scheme are purposely not recognized by this function.

Fixes #701
Closes #815
2013-10-22 13:28:03 -04:00
a25363f5c3 make_re() now doesn't free the argument.
This is good practice and also helped simplifying re_*() functions.
2013-10-22 13:26:30 -04:00
a72d40284d fix some warnings 2013-10-22 06:21:58 -04:00
4a591cf7d7 Port editlist to GtkTreeView 2013-10-22 06:08:09 -04:00
19e3fce2eb Fix SASL on some networks 2013-10-20 22:29:16 -04:00
62735c54fb sysinfo: Fix showing debian version on ubuntu 2013-10-20 21:15:12 -04:00
712cfc3135 win32: install theme manager by default 2013-10-20 03:37:58 -04:00
20c9c94a61 Ignore nick prefix when splitting NAMES reply 2013-10-20 01:33:57 -04:00
ad1520b29a Only split NAMES reply if server supports userhost-in-names 2013-10-20 00:29:58 -04:00
06a7d84b43 Add support for userhost-in-names capability 2013-10-18 04:40:39 -04:00
d960006de4 Add option to auto +x on connect 2013-10-17 23:43:58 -04:00
cf5e2f273f libsexy: last color parsing improvement 2013-10-17 21:59:31 -04:00
f342123d7f libsexy: More color parsing improvements 2013-10-17 21:37:02 -04:00
aac231d307 Remove dead networks 2013-10-17 05:20:22 -04:00
0e8069661f Default to SASL on every supported network 2013-10-17 05:16:27 -04:00
737325b417 Remove #xchat from ChatJunkies autojoin 2013-10-17 05:00:40 -04:00
bc3b923131 Respect use global flag with SASL 2013-10-17 04:52:06 -04:00
c6ad450151 Focus new server tabs 2013-10-15 22:54:38 -04:00
a284219abd Reset entry attributes on newlines 2013-10-15 22:41:50 -04:00
2e08b3a2da Add remaining chanopts to plugin api
In flags of get_list('channels')
2013-10-15 18:30:37 -04:00
57d168e56a Fix moving channels when using tabs 2013-10-15 01:10:03 -04:00
490b9a91e4 Don't overwrite existing ignores when flooded
Closes #792
2013-10-14 17:25:21 -04:00
80cbc74b2b Remove commented out networks in servlist 2013-10-13 15:13:51 -04:00
cf370d7e79 When opening a query dialog with /query nick msg, the message was not shown in
the newly opened dialog. This fixes that issue.
2013-10-13 14:38:26 -04:00
fd13e4046f Perl: fixed crash when a script exits abnormally 2013-10-13 14:26:54 -04:00
1b07c0f54b Renamed FurryLand to ElectronIRC
Closes #804
Closes #780
2013-10-13 14:21:03 -04:00
d941af5a6f Don't open banlist in empty channel tab 2013-10-13 12:54:14 -04:00
e2edbfe47d win32: Use version information from configure.ac to populate the Windows-specific files that need it - config-win32.h, version.txt, hexchat.rc, hexchat.iss
This is done via T4 templates. The original files are now generated at build-time and so have been added to .gitignore and removed from the repository, with the exception of version.txt which must be hosted on GitHub for the updater plugin.
2013-10-12 18:41:27 -07:00
0061cd38d0 win32: Make all projects depend on common so that common is always run before any others. 2013-10-12 18:41:27 -07:00
8311c3aa56 Rename Strawberry to Hexchat in Perl error message 2013-10-12 19:42:26 +02:00
80625a06fa Fix installer on 32bit Windows 2013-10-12 13:36:43 -04:00
adab8567e4 Merge pull request #801 from Phr33d0m/patch-2
Better understandable option for the input box's color rendering
2013-10-11 18:03:42 -07:00
0b228246ba Better understandable option for the input box's color rendering 2013-10-12 03:03:09 +02:00
cbf275777c xtext: store palette as GdkColors 2013-10-10 21:02:24 -04:00
04f34feb26 Fix configure output when python disabled 2013-10-10 00:39:36 -04:00
c226f4089a Fix a few cppcheck warnings.
Use the proper data type in format functions and fix a resource leak.
2013-10-10 00:05:22 -04:00
e244001cee Add hexchat perl module to gitignore 2013-10-09 23:12:42 -04:00
0a0bb57b2a Remove left over ifdef for spellcheck 2013-10-09 21:40:22 -04:00
5ad9552365 Fix messages with server-time not showing as new activity
Added a parameter to fe_print_text() to say that the message does not represent
new activity. This is used when a log from an old session is loaded. This used
to be implicit whenever the timestamp was non-zero, but with server-time this no
longer makes sense.

Fixes issue #746.
2013-10-09 21:34:02 -04:00
111a58f1ef Improve Windows installer
- Unify x86 and x64 installer files
- Get rid of version program
- Clean up .iss file
- Only allow one installation
2013-10-09 17:17:53 -04:00
1f06922803 Revert 2d5cb3ec7b
Scrolling has issues i couldn't easily fix, will get back to
later but lets keep this usable
2013-10-09 13:59:07 -04:00
2d5cb3ec7b Round 3 of Gtk accessor functions: xtext 2013-10-08 21:01:07 -04:00
44ad5703ea Work around for /away being called multiple times
This will have to be solved eventually in menu.c so you can change their
status without emitting the signals.
2013-10-08 20:00:07 -04:00
b393d2f62f Fix scroll buttons when using tabs 2013-10-08 18:40:11 -04:00
0c3220c469 Add preference to change tabs on scroll
Also revert e52905f50c
2013-10-08 18:16:10 -04:00
e52905f50c Add chanview files to project 2013-10-08 17:59:07 -04:00
075cc61c94 Rebrand Perl plugin to HexChat,
Add /pl and plugin_pref

Add help messages
2013-10-07 22:58:38 +02:00
aafbb6374b Round 2.5 of gtk accessor functions
Some leftovers in chanview-tabs and maingui
2013-10-06 22:17:45 -04:00
c463236521 Round two of gtk accessor functions: chanview-tabs 2013-10-05 22:21:04 -04:00
435e8881ed Merge pull request #787 from siduction/master
some Typos causing lintian moaning: {R,r}eciev.. -> {R,r}eceiv..
2013-10-05 09:31:34 -07:00
cc6de3f665 some Typos causing lintian moaning: {R,r}eciev.. -> {R,r}eceiv.. 2013-10-05 18:26:55 +02:00
b1df2f43aa Merge pull request #784 from Farow/pull2
tree-view: switch tabs on mouse wheel up/down
2013-10-04 14:43:42 -07:00
65eb233f9c tree-view: switch tabs on mouse wheel up/down 2013-10-05 00:35:50 +03:00
e10faa0369 Fix crash with long notify lists. 2013-10-04 17:00:56 -04:00
4ec0e6fd05 libsexy: Improve color parsing
- Background colour is only parsed when there's a comma
- Offset for background color is incorrectly calculated (there's no
control character, just a comma)
2013-10-04 12:17:46 -04:00
a47740636d libsexy: never include spaces when spell-checking 2013-10-04 07:16:44 -04:00
a29ccffcbe libsexy: Add "HexChat" to session dictionary 2013-10-04 06:33:49 -04:00
fa955a0f1a Don't try to update the clear button state when there's no DCC window. 2013-10-03 17:43:44 -07:00
301e5d260d More improvements to libsexy
- Add option for showing attributes in input
- Improve attribute parsing
- Fix detecting iso-codes on unix
- Improve getting default langs from $LANG
- Fix warnings
2013-10-03 16:23:46 -04:00
da680f1066 Use spell entry for topicbar
Closes #150
2013-10-03 16:23:46 -04:00
67a488033b libsexy: Don't mark nicks spelled incorrect 2013-10-03 16:23:46 -04:00
f6dd61cb02 Update to gtkspell3's iso code lookup
This no longer requires libxml
so now there is no reason for this to be optional
2013-10-03 16:23:46 -04:00
eb93130cd3 Remove gtkspell support 2013-10-03 16:23:46 -04:00
d643056ca0 Fix loading enchant on Unix 2013-10-03 16:23:46 -04:00
ba74e70ec1 libsexy: load colors more efficiently 2013-10-03 16:23:46 -04:00
6c3d201070 libsexy: fix spell-check on contractions 2013-10-03 16:23:34 -04:00
af2458f556 Parse attributes in the input box 2013-10-03 16:19:25 -04:00
3cb4439121 Merge pull request #781 from Farow/pull2
Added shortuct to config folder to installer
2013-10-03 05:14:25 -07:00
19ef48d0e8 Added shortuct to config folder to installer
Fixes #612
2013-10-03 14:42:32 +03:00
7ba2f1f17f Topic bar improvements
- Don't show on server tab
- Don't show unavailable modes
- Remove less used modes and add more common ones
- Use proper case for buttons
2013-10-03 05:01:15 -04:00
a831ecfd01 Strip trailing space from pluginpref_list entries 2013-09-30 01:38:51 -04:00
b7e8f64bba Fix crash in hexchat_pluginpref_list()
Set max output size to 4096
2013-09-30 01:23:20 -04:00
76b1c2f1ed Update readme.md 2013-09-29 20:44:12 -04:00
83fcb52085 Merge pull request #775 from benburkhart1/master
Channel joiner dialog does not allow you to join a valid channel
2013-09-29 15:59:00 -07:00
0791c8f069 RFC 1459 does not require channel name be above 0 characters, only that there's a prefix involved, this behavior is present elsewhere in xchat's join channel dialog, making this match. 2013-09-29 17:36:15 +00:00
247d84fbd1 Remove unused gtk-prefs project 2013-09-29 02:49:55 -04:00
00bd389cdc Merge branch 'gresource' 2013-09-29 02:24:30 -04:00
1f84c507a0 Reorganize files and migrate images to gresource 2013-09-29 02:24:06 -04:00
4ba886f7aa Accept %I in text events 2013-09-29 01:52:21 -04:00
d552415abe Add default keybindings for italics and underline 2013-09-29 01:47:10 -04:00
c537dae7f8 Use Pango Attributes for bold and italics 2013-09-28 23:02:38 -04:00
0d2feba69c Revert fast scrolling with background image 2013-09-27 18:23:51 -04:00
5465790886 Merge branch 'xtext2' 2013-09-27 17:42:38 -04:00
958f4099f1 Remove overdraw 2013-09-27 17:40:53 -04:00
449553ffb0 Replace xtext's transparency with full window transparency
Xtext's transparency barely worked on windows, didn't work on any modern
linux wm and used fake transparency.
This uses gtk's built in window opacity that works on more systems and
is real transparency.
Text area only transparency may return with a transition to cairo, if it
works on Windows.
2013-09-27 17:40:05 -04:00
960ded7db4 Update link to site in perl plugin 2013-09-27 20:09:48 +02:00
a14fe580f8 Tweak svg file 2013-09-27 02:51:19 -04:00
f23bda9e46 Remove useless defines
- HEXCHAT
- USE_DB
- SCROLL_HACK
- MOTION_MONITOR
- ITALIC
- COLOR_HILIGHT
2013-09-26 22:34:40 -04:00
ef73a89139 Remove XFT, SHM, and MMX 2013-09-26 22:31:14 -04:00
61b58fd5be Remove remnants of native file dialogs 2013-09-26 22:07:22 -04:00
60ba4d651c typo 2013-09-26 05:10:17 -04:00
5a6a03af0b Update appdata description 2013-09-26 04:10:40 -04:00
6f013e807c Remove whats left of gconf 2013-09-26 03:06:01 -04:00
d18a95fda6 Make Python version consistent on both platforms
and don't hardcode 2.7/3.3
2013-09-25 20:53:23 -04:00
c7a00a4aba Only show users country if its not unknown 2013-09-25 17:16:47 -04:00
7bc3317eeb Don't open most windows at mouse position 2013-09-25 02:09:47 -04:00
8028bb7f82 Make join dialog modal 2013-09-25 02:02:26 -04:00
6fc412c4e2 Update installer links to 2013 redist 2013-09-25 00:54:28 -04:00
0749cb1553 Remove hextray 2013-09-24 21:01:16 -04:00
f198581a09 Split long messages at spaces 2013-09-24 19:57:37 -04:00
4c9b193b45 Fix tab completion with utf8 completion char
Closes #738
2013-09-24 17:03:19 -04:00
130be78dbb typo.. 2013-09-23 23:10:31 -04:00
29d6db30ba Update help messages for userlist buttons and user popups 2013-09-23 23:08:56 -04:00
2e6001f1ed Revert menu.c @ ae04663aa9
This caused a few bugs such as improperly setting away/back
and redrawing the channel tree when the menu is opened.
2013-09-23 22:00:07 -04:00
9c4112cda7 Fix /cycle command
- Uses the correct channelkey when called from another tab
- Allows it to be used from any tab in the same server
- Verifies it's a channel you are in
2013-09-23 17:17:35 -04:00
04dbcdffc0 Only underline the channel part if nick prefix 2013-09-23 15:10:00 -04:00
0146a38faa Fix url detection of channel with nick prefix
Closes #769
2013-09-23 14:58:11 -04:00
145ceba124 Strip trailing space from CAP REQ
Mentioned in #770
2013-09-23 12:45:08 -04:00
90ea691b75 Add screenshot to appdata file 2013-09-20 23:01:27 -04:00
51cdcfca82 Fix warning 2013-09-20 17:33:27 -04:00
ae04663aa9 First round of using GTK accessor functions
This is the first step to build with GSEAL_ENABLE
setup.c uses a deprecated fontchooser,
chanview-tabs.c didn't like the conversion, and
I am waiting to do some work on xtext.c before
converting it.
2013-09-20 17:24:39 -04:00
9f8073ab77 Fix messages on networks that have chantypes the same as nick prefixes
Closes #763
2013-09-20 08:59:25 -04:00
bfa199be79 Add /d2Zi+ switch for better debug symbols 2013-09-20 13:11:01 +02:00
36911710fd Make manual reposition after unfullscreen Windows only 2013-09-19 22:01:15 -04:00
267ac71d4f Replace more GDK_* with GDK_KEY 2013-09-19 17:58:10 -04:00
f6ba274134 Add fullscreen to to view menu 2013-09-19 17:52:17 -04:00
cd825ac735 Improve text repositioning when searchbar string is modified. 2013-09-18 15:25:50 -07:00
1007af9506 Add message arguement to /query
Closes #757
2013-09-17 18:19:02 -04:00
b67953c70c Searchbar: Don't show error on empty string 2013-09-16 21:48:04 -04:00
1a67e245ac Fix searchbar loading highlight all pref on start 2013-09-16 21:31:05 -04:00
648de4410c plugins: fishlim: VS2013 comes with a working stdbool.h 2013-09-15 15:08:40 -07:00
b658fca4a7 Convert project files to vs2013 2013-09-15 15:07:46 -07:00
277732e384 Fix xtext crash in rawlog/text events window
Closes #740
2013-09-15 10:44:55 -04:00
f13413c26a Fix logging networks with invalid names on Windows 2013-09-15 07:40:47 -04:00
c9418ffca3 Translate -ize to -ise, favor[ite] to favour[ite], Behavior to Behaviour 2013-09-15 01:28:10 -07:00
ddb3bf05d8 use GDK_KEY 2013-09-15 03:22:04 -04:00
8b463e6b14 Update POTFILES.in 2013-09-15 03:07:45 -04:00
bc8eaf6588 Replace search window with a searchbar 2013-09-15 02:55:18 -04:00
b0b8f40791 Replace search window with a searchbar 2013-09-15 02:51:35 -04:00
aa37686bbd Move optimization settings from all subsequent projects to hexchat.props 2013-09-15 02:45:38 -04:00
4721a3747e Python: return hooks with PyLong_FromVoidPtr
Fixes #685
2013-09-15 02:45:38 -04:00
e5cb69db5d Python: Use keywords for attributes in emit_print() 2013-09-15 02:45:37 -04:00
414b591358 Python: Add support for attributes in hooks 2013-09-15 02:45:37 -04:00
ccd4945504 Merge xchat r1525
Fixes possible crash
2013-09-15 02:45:36 -04:00
59b19bac70 Update tooltip for sound alerts without libcanberra 2013-09-14 12:46:38 -04:00
14b8a77b78 Default spotchat to SASL 2013-09-12 03:55:17 -04:00
a71849db3f Bump Version to 2.9.6 2013-09-11 18:18:19 -04:00
a2eb3325ce Update Translations 2013-09-11 04:50:35 -04:00
b9df78b9c6 Exec: Print help on empty string
... and bump version
2013-09-10 02:24:53 -04:00
9a3c1ccd72 Update transifex config file 2013-09-08 01:28:06 -04:00
68116da5ad Remove about.c from POTFILES.in 2013-09-08 01:17:34 -04:00
68153812f7 Add channelkey to channel lists 2013-09-07 20:17:42 -04:00
bb1062ae2a Merge branch 'saslmech' 2013-09-07 19:00:40 -04:00
bdb18828e3 Disable challangeauth without openssl 2013-09-07 18:59:29 -04:00
a903f16c68 Implement BLOWFISh, AES, and EXTERNAL SASL mechanisms
Closes #657
2013-09-07 18:59:28 -04:00
5feeb717a0 Add appdata file 2013-09-07 02:08:04 -04:00
703316ace6 Merge pull request #733 from hexchat/filedialog
Improve file dialogs
2013-09-06 17:00:55 -07:00
88afa4afa2 Fix detecting utf-8 on some networks 2013-09-06 14:00:53 -04:00
bf269d2e03 Of course mimetype doesn't work on Windows.. 2013-08-31 15:38:29 -04:00
755932c3bc Use mimetypes for audio and images 2013-08-31 15:31:22 -04:00
4c406bce17 Improve file dialogs
- Fixes #314
- Adds file extensions to sound and image browsing
- Some options no longer default to our config dir
- Always add a shortcut to our config dir
- Remove broken 'last_dir' functionality, gtk already knows recent
2013-08-31 11:39:12 -04:00
3a87dedbb5 Merge pull request #731 from NoneGiven/patch-2
Fix colored vhosts
2013-08-28 12:57:18 -07:00
731fd33be2 Update text events, fix colored vhosts 2013-08-28 15:35:46 -04:00
ffc47e8439 Update travis to build theme manager 2013-08-28 13:32:35 -04:00
cc9d6042fd Update htm mime file 2013-08-28 13:22:12 -04:00
012b9c478e Merge pull request #730 from hasufell/mono
BUILD: add --with-theme-manager configure option
2013-08-28 10:21:37 -07:00
5d35ecfaa9 BUILD: update mime and desktop database 2013-08-28 14:30:57 +02:00
21bf0ae998 update desktop file 2013-08-28 14:30:57 +02:00
9d0ea7af4b update gitignore 2013-08-28 14:30:57 +02:00
08fd4f2dd7 BUILD: use thememan.in instead of Makefile echo 2013-08-28 14:30:57 +02:00
8f0d6e85fd BUILD: don't hardcode the install path in the script 2013-08-28 14:30:57 +02:00
7dea09c371 BUILD: fix quoting issue
\"$@\" got malformed and interpreted by the Makefile
2013-08-28 14:30:57 +02:00
ce5653d75c BUILD: add --with-theme-manager configure option 2013-08-28 14:30:57 +02:00
36b84c9af3 Merge pull request #728 from hasufell/master
build system improvements
2013-08-27 02:16:12 -07:00
d13046614e BUILD: use a blacklist rather than a whitelist for python versions 2013-08-27 10:59:03 +02:00
53e30995d6 Merge pull request #729 from hasufell/mime
fix htm desktop file
2013-08-26 22:44:57 -07:00
0c4e343b46 STYLE: tabs, not whitespaces 2013-08-27 00:18:08 +02:00
e6394cafe2 BUILD: consistently use PKG_CONFIG 2013-08-27 00:09:35 +02:00
fabc5bf4b7 STYLE: add missing comma 2013-08-26 23:45:51 +02:00
d601335aa6 fix desktop file 2013-08-26 23:27:29 +02:00
d6dacbe955 BUILD: use pkg-config to detect python 2013-08-26 23:00:47 +02:00
616c669d3b Fix /exec -o on Windows 2013-08-26 12:53:17 -04:00
d52cc1a1bd Add desktop and mimetype file for the Theme Manager 2013-08-26 10:06:34 -04:00
43a2f43090 Handle incoming messages from yourself
These are common for users of bouncers, private messages still need to
be handled.
2013-08-26 09:44:18 -04:00
b3369a4bc4 Sysinfo: Add announce option 2013-08-26 04:31:45 -04:00
b5b547abb6 Sysinfo: Fix gentoo detection 2013-08-26 03:58:36 -04:00
4e775df156 Update CLEAR and MSG help message 2013-08-25 11:16:49 -04:00
bf0ff98385 Update help for close command 2013-08-25 10:52:37 -04:00
66412e4997 Add TinyCrab to network list
Closes #723
2013-08-21 07:36:53 -04:00
77c1edbe13 Handle lists in MONITOR replies 2013-08-20 00:24:20 -04:00
46c32952b0 Make formatting more consistent
#719
2013-08-17 20:39:24 -04:00
41719bd4a8 Merge pull request #719 from Farow/pull
Improve cursor behavior
2013-08-17 17:32:16 -07:00
9629ca3fd9 Improve cursor behavior
- The cursor doesn't turn into a hand for non-url parts of a word
- Removal of unneeded variable str
2013-08-16 23:05:27 +03:00
a3ab5edc59 Merge pull request #718 from Farow/pull
Channel url improvements
2013-08-15 21:36:35 -07:00
8fbcddd2cd Add ObsidianIRC network
#412
2013-08-15 17:59:41 -04:00
73d63ca3da Allow multiple channels in url, fix nick re
- Multiple channels have to be separated by a comma
- Fix #nick becoming a url for nick instead of #nick
2013-08-13 07:39:34 +03:00
721a9965aa Fixed munging of whitespace in sysinfo's matching functions
Closes #712
2013-08-12 23:41:37 -04:00
4f77f046d0 Channel url and cursor fix
- Allow colons in channel urls
- Only add the channel part in the context menu
- Fix cursor not changing between separator and url
2013-08-13 04:19:14 +03:00
0b95c1c444 Merge branch 'pluginreload' 2013-08-10 19:44:38 -04:00
41c0c345cd And free connect command.. 2013-08-10 18:04:56 -04:00
c8f6d2c538 Merge pull request #713 from Farow/master
Make the channel key input larger
2013-08-10 14:32:02 -07:00
b2d2187b20 Only replace variables in connect commands 2013-08-10 16:51:56 -04:00
b8894a468d Update channel key input
- allow up to 23 characters
- make the input bigger
2013-08-10 22:55:17 +03:00
1c30e0c124 Still include old freenode hostname in servlist 2013-08-08 12:01:49 -04:00
4dc600a63c Alphabetical order.. 2013-08-07 06:28:04 -04:00
13bfd060b6 Format Channel URLs
closes #706
2013-08-07 06:14:30 -04:00
1370a49742 Save notify list on close of friends list
for #570
2013-08-06 16:13:10 -04:00
ab6bf4234c Bind esc to close in chanlist 2013-08-05 07:06:04 -04:00
5224c275e8 Destroy utility windows with their parents. 2013-08-05 04:03:26 -04:00
272b3d2f82 Add .patch to gitignore 2013-08-04 07:13:50 -04:00
2528a78593 Remove VS Redistributable update version from installer link 2013-08-04 11:45:08 +02:00
2917a83d7b Update text on reload button 2013-08-04 04:53:40 -04:00
77e9417c7b Add label for website in about dialog 2013-08-04 04:48:45 -04:00
e8456beadc Add reload command for plugins and add to gui 2013-08-04 04:36:10 -04:00
d63a33b6dc Use built-in gtk_about_dialog 2013-08-03 07:11:25 -04:00
bdc814a4a4 Merge pull request #677 from hasufell/master
CONFIGURE: add "--enable-minimal-flags"
2013-08-02 23:25:40 -07:00
ce40e5a111 Merge pull request #700 from orium/url-chan-prefix
Server aware nickname and channel matching
2013-08-02 23:24:50 -07:00
61c9ad08bf Fixed memory leak. 2013-08-02 02:45:54 +01:00
bca0ad8e1e Fix description line for Scroll Page in fkeys.c. 2013-08-01 11:55:22 -07:00
6ec7bfad30 Indentation fix. 2013-08-01 16:39:49 +01:00
0e76283c9a Now nickname and channel matching is server aware: we only match words that
have the prefixes the server uses.

The url regex matching was designed to be more versatile. This was needed to
disambiguate matches between nicks and channels, since they may have common
prefixes now (&+!). In case of ambiguity, when the server supports prefixes that
are common to both channels and nicknames, we choose the nickname (the nickname
only matches if there is a user with that nick in the current session).

Fixes #655.
2013-08-01 16:28:17 +01:00
78a72a6c1e Merge pull request #697 from RichardHitt/topbottom
Scroll-page keybindings:  Add Top (C+HOME), Bottom (C+END)
2013-07-31 22:20:48 -07:00
4a95b07ae7 python: Set VERSION using existing VERSION_MAJOR and VERSION_MINOR macros and some mintor refactoring. 2013-07-30 22:54:57 -07:00
154ea98deb Fix kickbanning opped users 2013-07-30 23:29:25 -04:00
be252e271f Scroll-page keybindings: Add Top (C+HOME), Bottom (C+END) 2013-07-30 13:11:07 -07:00
e2328e7a91 Merge pull request #687 from Mikah89/clear_dcc_list_rebased
Clear button in dcc download manager
2013-07-27 13:19:29 -07:00
942b92c796 Remove #hexchat from default autojoin 2013-07-27 00:23:40 -04:00
3bd2143d9a Have join dialog suggest #hexchat for freenode users 2013-07-27 00:22:57 -04:00
93cfa353e7 Tweak cli output and fix related warnings 2013-07-27 00:03:16 -04:00
2cbe758c80 Fix some warnings 2013-07-26 22:53:01 -04:00
72c6834cc5 Python: Fix callbacks for the "special" print hooks 2013-07-26 19:51:56 -04:00
ac06b74b18 Use system's libsexy by default
It will still fallback to static
2013-07-26 15:03:59 -04:00
1fd94e79b9 Merge pull request #679 from hasufell/libtool
MAKE: backwards compat for old libtool
2013-07-26 11:55:37 -07:00
bb3cb269c2 Upd: Properly handle http errors
Also some cleanup of some old code and comments
2013-07-25 19:54:25 -04:00
715a520c0e Move optimization settings from all subsequent projects to hexchat.props 2013-07-24 20:56:36 +02:00
78d14a2b1e Removed restriction that disabled the clear button if at least one transfer item was selected in dcc download manager. 2013-07-23 23:55:20 +01:00
3d10b9f3e2 Python: return hooks with PyLong_FromVoidPtr
Fixes #685
2013-07-21 16:40:38 -04:00
f97f1a08ae Merge pull request #689 from hexchat/python-attributes
Python: Add support for attributes in hooks
2013-07-21 13:33:47 -07:00
13e9713b72 Merge xchat r1525
Fixes possible crash
2013-07-20 18:00:19 -04:00
bf9276fc5c Python: Use keywords for attributes in emit_print() 2013-07-19 14:14:26 -04:00
fe86c4900f Merge pull request #680 from staticshock/dotless-domains
Permit dot-less domain names
2013-07-19 09:23:52 -07:00
f45487e92c Python: Add support for attributes in hooks 2013-07-19 10:25:46 -04:00
bca972bdc3 Permit dot-less domain names
Fixes #523
2013-07-19 09:01:53 -04:00
a8abba84bd Fixed coding style and clearified some comments, following arnavion suggestions 2013-07-17 09:20:54 +01:00
2e2f4662f3 Updater: fix download links 2013-07-16 12:48:34 -04:00
0c87c49146 Implemented clear functionality for DCC download manager. Created clear button in DCC downloaded manager interface. 2013-07-15 21:34:14 +01:00
6c8d9c2194 Merge pull request #675 from orium/server-time-plugins
Server time plugins
2013-07-14 11:29:24 -07:00
62d52d55b2 Add staticbox network
Also default to SASL on some more networks
2013-07-14 10:20:03 -04:00
3598966069 Forgot to add hexchat_emit_print_attrs() to the macros in hexchat-plugins.h. 2013-07-13 16:50:51 +01:00
ec6f5b011a g_free() should be used for g_malloc(). 2013-07-13 05:33:16 +01:00
9d4a1a3b4f Update docs links 2013-07-12 19:32:10 -04:00
9978ebd853 Removed outdated comment. 2013-07-12 22:52:12 +01:00
18eaccb840 Added functions to create/destroy event_attrs to plugin interface.
Function names were chosen to keep consistency with the rest of the
API.
2013-07-12 22:46:04 +01:00
e63ec01089 MAKE: backwards compat for old libtool 2013-07-12 14:17:30 +02:00
e0fb3d537d Added hexchat_emit_print_attrs() to plugin interface. 2013-07-12 01:33:35 +01:00
19d4356484 CONFIGURE: add "--enable-minimal-flags"
This will turn off automagic adding of flags that might be unwanted
such as "-g" or "-pipe".
2013-07-11 12:36:14 +02:00
be1e6bde65 Fix requesting sasl multiple times 2013-07-11 05:58:10 -04:00
f113008c7f Don't grey out log fliename in preferences
It can still be useful when global logging is disabled
2013-07-10 15:39:45 -04:00
5e240eb259 Indentation fixes and code cleanup. 2013-07-10 00:42:34 +01:00
7101b7b864 Now hexchat_hook_server_attrs() and hexchat_hook_print_attrs() is called
when it should. This should close #661.
2013-07-09 23:11:28 +01:00
98aa62f637 Removed two dummy functions in plugin interface. 2013-07-09 22:04:07 +01:00
798db7368a Added hexchat_hook_server_attrs() and hexchat_hook_print_attrs() to the plugin
interface. This hooks are similar to hexchat_hook_{server,print}() except the
callback passes an extra argument with the (new) structure hexchat_event_attrs.

This structure contains attributes related to the event; by now it only contains
the server_time_utc member which is non-zero if server-time is enabled and the
server used this extension to pass a timestamp.

See issue #661.

(Note: this hooks are still not called by hexchat in this commit.)
2013-07-09 20:21:16 +01:00
4cf61ccedb Fix warning 2013-07-08 16:30:54 -04:00
7f50ee6fd2 Increase upper limit for max DCC speed in preferences
For #672
2013-07-07 15:15:50 -04:00
1544a5d6cb Default to nickserv when using /ghost or /id commands 2013-07-04 18:08:56 -04:00
3284502645 Merge pull request #667 from orium/fe_get-dialogs-transient
fe_get_{int,str}() sets transient for the main window.
2013-07-03 12:00:41 -07:00
4cc03aba75 Now fe_get_{int,str}() sets transient for the main window.
This allows window managers to handle the window in a better way, for instance
xmonad used to open the dialogs in a new tile and now opens a simple float.
2013-07-03 19:48:45 +01:00
286bbc6bde Add another server to 2ch network 2013-07-03 00:42:48 -04:00
d1244d7231 Use URL command for opening in existing
This avoids making a new connection to an already open network.
2013-07-02 12:22:01 -04:00
50219a63ad Fix opening empty channel when url has trailing slash 2013-07-02 12:19:47 -04:00
806c75f051 Add 2ch network
Closes #666
2013-07-02 10:35:06 -04:00
ee621d2435 Update man page 2013-07-01 21:57:38 -04:00
340811da6e Merge pull request #665 from orium/freebsd-fixes
Freebsd fixes
2013-07-01 18:51:51 -07:00
4b40597c76 Fixed get_timezone() to work on windows. 2013-07-02 02:22:41 +01:00
9a789bc9e7 Now handle_message_tag_time() doesn't use "timezone" since it is not defined
in *BSD.
2013-07-02 01:54:18 +01:00
4886cc8258 Don't use G_VALUE_INIT since it was introduced in glib 2.30, and our minimum
requirement is glib 2.28. This was giving a compilation error in FreeBSD 9.1,
since it uses glib 2.28.
2013-07-02 01:54:11 +01:00
82277a80ea Fix urls with --existing 2013-07-01 14:53:47 -04:00
22064278df Update fe-text's help message 2013-07-01 14:36:15 -04:00
932bfa3482 Don't use popup dialogs for help 2013-07-01 14:28:26 -04:00
5de5d6d00b Improve help message 2013-07-01 14:11:24 -04:00
aab55d8cff Handle extraneous cli args as urls 2013-07-01 13:43:58 -04:00
73c9321361 Fixed server-time timestamps issue regarding local time. 2013-06-30 15:00:38 +01:00
25288120be Fixed another bug in handle_message_tag_time(): tm_mon is between 0 and 11. 2013-06-28 23:42:11 +01:00
d99d951f7f Fixed bug in handle_message_tag_time(). 2013-06-28 22:08:35 +01:00
00e15828a1 Also support znc.in/server-time-iso 2013-06-28 13:33:08 -04:00
ad926e9b07 Merge pull request #656 from orium/server-time
Closes #499
2013-06-28 11:59:33 -04:00
059cbcd406 Fixed compilation error in VS. 2013-06-28 16:29:39 +01:00
dcdb11a78b Added preferences options to enable the server-time extension when available.
(Internationalization messages missing.)
2013-06-28 16:15:15 +01:00
aef9e3922e Fixed a few null pointer derefs caused by dummy code that somehow I
forgot about.
2013-06-28 16:08:03 +01:00
ce6fef3d0a A few messages missing regarding server-time. 2013-06-28 16:07:42 +01:00
4057b7dd58 Now inbound_cap_ls() can enable extensions when a bouncer uses a namespace for
the extension server-time.
2013-06-28 16:07:24 +01:00
d1725e3f44 server-time for all numerical messages. 2013-06-28 16:04:32 +01:00
42da8fe3ef server-time supported in all named servermsg: ping, error, notice and
authenticate.

The only thing left to do for server-time are the numeric messages.
2013-06-28 16:04:16 +01:00
a01bd83c64 Organized cap inbound code in inbound.c instead of proto-irc.c. 2013-06-28 16:04:06 +01:00
6a0240aa18 server-time supported in most named messages. 2013-06-28 16:03:37 +01:00
179747a7bc Implemented handle_message_tag_time() for time-server messages. 2013-06-28 16:03:20 +01:00
94186f7888 First step towards message tags extension support
(see http://ircv3.atheme.org/specification/message-tags-3.2).

In particular this commit implements a (very) dummy implementation
sketch of the server-time extension
(see http://ircv3.atheme.org/specification/message-tags-3.2 and #499).
2013-06-28 16:03:12 +01:00
ac5771377e fe-gtk: Only escape notification bodies for notification servers that support "body-markup". 2013-06-28 00:14:54 -07:00
863dc2e841 docs: Typo. 2013-06-27 10:53:29 -07:00
59b9ee3417 plugins: Implemented get_info("password") and re-added get_info("nickserv") as an alias to that. 2013-06-23 11:39:12 -07:00
3285934703 Update hacking.md 2013-06-23 07:29:26 -03:00
c7d1102c61 perl: Fixed get_list('networks') to work with new servlist.conf syntax for autojoin channels. 2013-06-22 22:06:49 -07:00
6e3f05fcc7 Fixed indent: spaces -> tabs. 2013-06-20 19:03:26 +01:00
d8286a63ec Add more uri schemes 2013-06-19 18:57:52 -03:00
9854b100fb Detect Spotify URIs 2013-06-19 05:07:45 -04:00
ef5588b9c0 Use chat.freenode.net 2013-06-18 22:38:10 -03:00
64ba92593e fix merge conflict 2013-06-18 20:40:07 -04:00
33b5dc1c75 Use tabs 2013-06-18 21:20:09 -03:00
02139fbb79 Handle IPv6 addresses correcly in fe_open_url_locale(). 2013-06-19 00:15:47 +01:00
9ef1d1db96 Now WORD_HOST6 is handled the same way as WORD_HOST. 2013-06-18 23:30:38 +01:00
225acd0ce2 Merge pull request #649 from RichardHitt/urlgrabber
Fix urlgrabber right click selection.
2013-06-18 15:08:56 -07:00
b4496216db Fix urlgrabber right click selection. 2013-06-18 14:53:18 -07:00
d88c4ad411 Added a few more useful url schemes. 2013-06-18 12:32:55 +01:00
8b217981ed Removed unused argument of make_re(). 2013-06-18 12:07:46 +01:00
8ce8a359c1 Now url_check_word() returns WORD_HOST6 when a ipv6 address is matched. 2013-06-18 12:01:39 +01:00
55734baed8 Fix IPv6 addr matching in url: must be enclosed in []. 2013-06-17 22:43:18 +01:00
52ce55341b Fix Open Data Folder on unix
Mentioned in #646
2013-06-16 16:20:06 -03:00
e4b6f4b375 Refined IPv6 address matching in url.c. 2013-06-16 20:16:58 +01:00
32dee82c58 Added support for passwords in userinfo of urls. 2013-06-16 20:00:35 +01:00
2870586cf9 Fixed irc:// and ircs:// url matching: irc://freenode was not working because
"freenode" doesn't match a hostname.
2013-06-16 19:11:26 +01:00
cb1975f450 Fixed file:// url matching. 2013-06-16 19:09:50 +01:00
805b33552b Rework url matching to make it easier to add schemes.
The new way allows great control of what a url is composed of.

Added a bunch of new schemes.
2013-06-16 15:36:52 +01:00
6bc05a8bc8 Improved host matching in url:
* Refined ipv4 addr
 * Added ipv6 addr
2013-06-16 04:22:28 +01:00
3ffae231de Fix building with static spell 2013-06-15 21:52:04 -03:00
6a7557da01 Merge branch 'master' of http://github.com/hexchat/hexchat 2013-06-15 17:26:13 -07:00
d7045e2b61 Fix Fedora-19 Segmentation fault, bugid 968817. 2013-06-15 17:21:55 -07:00
e68635b8e4 Add configure patch from gentoo 2013-06-15 17:26:10 -03:00
7ef8d0d443 More autojoin wording tweaks 2013-06-13 20:53:55 -04:00
9b958ed393 Use snprintf 2013-06-13 18:38:59 -03:00
84e8c658f6 Tweak travis template 2013-06-13 15:33:25 -04:00
21a5eb2702 Formatting 2013-06-13 16:20:58 -03:00
1d62465e5b Add irc notifications to travis 2013-06-13 15:08:35 -04:00
cb1b1c6e1c Tweak autojoin wording 2013-06-13 15:55:38 -03:00
8be56d7003 Don't open libcanberra connection for every event
Closes #645
2013-06-12 10:41:52 -04:00
8ce1a9476d Merge pull request #640 from orium/default-language
Default language
2013-06-09 14:10:55 -07:00
0689b54827 Add irc_ban_type to preferences 2013-06-09 16:51:57 -03:00
b569943059 Specify what for completion amount 2013-06-09 16:01:00 -03:00
eb001433e4 Emit FOUNDIP in server session 2013-06-09 15:55:56 -03:00
a591c875ae Add completion_amount to prefs
... and remove completion_auto which is confusing to say the least.
2013-06-09 15:48:42 -03:00
08cd36bef0 Fix printing ipv6 addresses with identd
Closes #639
2013-06-09 10:42:42 -03:00
5d0599976e Add more mnemonics to the menu 2013-06-08 20:09:22 -04:00
2e014bbc72 Merge pull request #641 from orium/possible-buffer-overflow-fix
Fixed possible overflow in create_mask().
2013-06-08 02:45:00 -07:00
88e9611444 Minor cosmetic changes 2013-06-08 03:14:24 +01:00
97e88b885a Renamed tbuf to buf in create_mask() to avoid confusion. 2013-06-08 03:01:36 +01:00
f84476cf87 Fixed possible overflow in create_mask(). 2013-06-08 02:56:36 +01:00
473ab16739 Now the default configuration tries to set the language from the system
locale, and defaults to english if no language match.

This closes #473.
2013-06-08 02:34:01 +01:00
951292abe1 Change default irc_ban_type to 1 2013-06-07 09:55:56 -03:00
612032c9f8 Add QUIET command 2013-06-07 08:24:13 -04:00
0dd9ac2e44 Take two at fixing xtext copying to secondary clipboard 2013-06-07 08:20:36 -03:00
8f551de4f4 Merge pull request #636 from Remmy/master
Addition to the list of available IRC networks. Serenity-IRC is a small friendly network which has been around since 2003.
2013-06-07 01:31:41 -07:00
0c2e08cf2b Add Serenity-IRC to the list of networks available by default. 2013-06-07 04:58:34 +02:00
0e420fbee8 Save chanopt after any changes 2013-06-06 19:16:50 -04:00
cf505b850b Add chanopt for stripping colors 2013-06-06 17:47:01 -04:00
fd762303b0 Add autoconnect option to menu of networks 2013-06-06 16:49:57 -04:00
a6f05db34b Make autojoin a toggle menu 2013-06-06 16:12:59 -04:00
df0ee53765 Handle /CAP LIST output
Closes #635
2013-06-05 13:35:30 -03:00
d0b3476839 update help message for /menu 2013-06-05 08:27:16 -04:00
4d16f5bf28 Add missing gtk_tree_path_free() 2013-06-04 12:32:51 -03:00
c45cc78548 Add copy option to right click in banlist
Closes #626
2013-06-04 12:25:12 -03:00
d16aedf6c4 Merge pull request #634 from youknowone/ipv6
Retrieve reachable addresses only.
2013-06-04 05:04:48 -07:00
d3a27947fe Retrieve reachable addresses only.
AI_ADDRCONFIG helps not to try to connect unreachable ipv6 address if
user doesn't have ipv6 network stack.
2013-06-04 20:19:37 +09:00
42e3587fd5 copy xtext selection to all clipboards 2013-06-04 07:00:08 -03:00
e3f699a9d8 Improve error message from /load -e 2013-06-04 06:34:15 -03:00
5201f0fd06 Python: revert 43bd9483ce
Will possibly come back to this at a later time...
2013-06-04 06:13:28 -03:00
df0e97550b fix loading startup.txt automatically 2013-06-04 06:07:51 -03:00
983b4ace89 treat banlist event as a generic list event (for quiets etc) 2013-06-03 08:19:27 -04:00
f0684dc74e translate servlist tabs 2013-06-02 20:50:43 -04:00
39923e05f3 Rename favorite channels to autojoin channels 2013-06-02 20:44:05 -04:00
51bf9165b2 Merge pull request #633 from FionnK/master
Add IRCNode to network list
2013-06-02 17:27:50 -07:00
f1735f3ae1 Remove IPv6 check for IRCNode entry in server list. 2013-06-03 02:21:42 +02:00
2ba785f648 Add IRCNode to the server list. 2013-06-03 02:10:44 +02:00
c9b7a3f86e Python: return true/false from set/del_pluginpref 2013-06-02 00:29:34 -03:00
43bd9483ce Python: Save pluginprefs to seperate files 2013-06-02 00:22:00 -03:00
1277b4c30f be more specific about sysinfo menu entry 2013-06-01 19:06:58 -04:00
e1ce1c90f7 configure.ac: Use pkg-config's CFLAGS for libxml2 instead of guessing our own. 2013-06-01 13:46:33 -07:00
f45c2dd061 Add valleynode to network list
Closes #631
2013-05-31 20:12:21 -03:00
855c20501b fix crash 2013-05-30 22:23:00 -03:00
945251c6b8 add .js to list of loadable filetypes 2013-05-29 01:55:41 -03:00
e47dd3eb89 Don't send previous session's password
closes #616
2013-05-25 20:47:16 -03:00
c9c8993b9d Merge pull request #625 from orium/network-name-improve
Improved server_get_network()
2013-05-25 16:31:51 -07:00
d934e60c2b Improved server_get_network(): if we don't have the current network in the
network list use the server name in received in event 005.
(This fixes the problem that the network (%n) in the log file names would be
"NETWORK" instead of the real network name (this happened if the network was
not in the network list).)
2013-05-25 22:31:45 +01:00
11478719cd Merge pull request #624 from Niichan/master
PonyChat added to network list
2013-05-24 21:12:00 -07:00
7284addb09 Added PonyChat to network list 2013-05-24 21:01:06 -07:00
270cde42f1 Merge pull request #590 from orium/run-as-root-589-504
Now hexchat doesn't abnormally terminate when started as root.
2013-05-24 15:01:27 -07:00
b690098941 Merge pull request #622 from orium/null-ptr-favchan-fix
Fixed null pointer deref when we try to autojoin a channel
2013-05-24 14:07:14 -07:00
fffe9f4bd9 Restored inbound.c to make the pull request cleaner. 2013-05-24 22:04:34 +01:00
7353bf2698 Followed richtroye suggestion and implemented the net == NULL guard in
servlist_favchan_find().
2013-05-24 21:49:46 +01:00
133b0f7d94 Fixed null pointer deref when we try to autojoin a channel of a network not
in the network list.
2013-05-24 20:29:15 +01:00
4878012065 Merge pull request #621 from orium/dictionaries-update-fix
Spell check dictionaries were not being updated when changed
2013-05-24 08:53:48 -07:00
4402ea34de Fixed mistake in last commit. 2013-05-24 16:46:35 +01:00
faa53a5335 Spell check dictionaries were not being updated when changed. 2013-05-24 00:01:25 +01:00
44a88fc1ab Merge pull request #618 from orium/server-command-password-fix
Fix issue with /server command
2013-05-23 07:28:58 -07:00
d3ce4f64f6 Passing a password to the /server command was ignored because the login method
was not set.
2013-05-23 13:22:34 +01:00
fcdd85ae5e Merge pull request #603 from orium/lag-meter-stuck
Fix an issue where the lag meter could get stuck after reconnect
2013-05-22 17:17:28 -07:00
fd71bb768a Python: Allow unhooking commands and prints by name 2013-05-22 19:30:49 -03:00
66bb79ef10 Improve sort keybinding in servlist
also disable auto sorting on fav channels, closes #606
2013-05-20 13:19:20 -03:00
3b4cc9d806 Use png instead of svg 2013-05-20 15:59:41 +02:00
79221c403b Temporary workaround for reconnect crashes on win32
Yes, we really need to fix this ASAP
2013-05-20 14:39:24 +02:00
0ab11cc09a Add structs and use treeview 2013-05-20 13:21:27 +02:00
1432ecfb33 Sample code docs for challengeauth_response() 2013-05-20 12:38:50 +02:00
341cfbb527 Set up Doxyfile 2013-05-20 12:31:09 +02:00
78573ae0c9 Add default Doxyfile 2013-05-20 12:24:25 +02:00
8a9d3e21f2 Update dirent.h win32 implementation 2013-05-20 00:22:20 +02:00
8655c4b007 Reorganize Preferences 2013-05-19 20:43:21 +02:00
5fa23341b3 Avoid useless strdup() and free() calls 2013-05-19 12:17:37 +02:00
67274f91e9 Add default connect commands for networks with obscure login methods
Yeah, QuakeNet is an exception
2013-05-19 12:15:31 +02:00
c0cc6a2c93 Cosmetics 2013-05-19 11:49:27 +03:00
b2fec642fe Login type cleanup 2013-05-19 05:17:13 +02:00
d60cecb8d3 Add custom login type to avoid collisions 2013-05-19 04:34:20 +02:00
c168a9adc6 Add variables for user credentials in connect commands 2013-05-19 03:30:45 +02:00
f778245a86 Simplify SASL auth string generation code 2013-05-19 01:21:27 +02:00
5701ba287b Translate search window tooltips 2013-05-18 17:40:35 -04:00
c471388021 Don't use popup when search is not found 2013-05-18 17:32:41 -04:00
9d717ffee9 Fix text event for erroneous nicks 2013-05-18 22:09:44 +02:00
bac96d1fa8 Add FurryLand 2013-05-18 21:40:42 +02:00
f313a83474 Update Perl library name 2013-05-18 21:33:22 +02:00
9891f94e41 Rebrand python about message 2013-05-18 15:42:30 -03:00
a22ae9f39a Support time lists via python 2013-05-18 15:13:05 -03:00
02298c8e76 Fix prototype, return value is used by joindelay_tag 2013-05-18 19:48:54 +02:00
73badc67ff Fix warning from hwmon.c in plugins/sysinfo 2013-05-17 21:51:34 -07:00
1181b56211 Add omsg user command 2013-05-17 06:17:16 -03:00
78eb3e7522 Handle limited channel messages
Maybe improved later to signify they are limited messages. closes #315
2013-05-17 06:10:02 -03:00
57b74c3de9 Increase default irc_join_delay to 5 2013-05-17 05:32:53 -03:00
c83ca8f85a Respect irc_join_delay if connect command set 2013-05-17 05:28:45 -03:00
ef58a267b0 Omit CHALLENGE hashes in the server tab 2013-05-17 02:48:32 +02:00
4130954c15 Fix removing keys from favorites 2013-05-17 02:24:47 +02:00
0a2af0ab62 Fix crash when using global username for QuakeNet 2013-05-17 02:08:34 +02:00
a1a94ed319 Add support for QuakeNet /CHALLENGEAUTH, remove legacy /AUTH 2013-05-17 01:40:07 +02:00
096d0660e2 Merge pull request #594 from Tux/master
Allow the special colors 32..41 in %Cfg,bg
2013-05-16 10:50:43 -07:00
b28734c4a8 Merge pull request #581 from orium/numeric-session-with-open-query
Session of numeric events passed to text_emit() for nicks with open query dialogs
2013-05-16 09:21:02 -07:00
69c2893234 Merge pull request #586 from bviktor/authcleanup
Login and network list cleanup
2013-05-16 09:07:38 -07:00
89078eb3b3 Fix an issue where the lag meter would be stuck after a reconnect caused by a
ping timeout.
2013-05-16 15:11:52 +01:00
26cefd0587 Have rawlog properly handle newlines
This is most noticable with /cycle or the missing USER command on connect.
2013-05-16 09:21:55 +00:00
8ccd11ee4b Remove comment 2013-05-16 00:08:43 +02:00
fd1b276aab Make sure the created favchannel instances have a NULL key when the session's key is empty 2013-05-16 00:04:58 +02:00
2ff8e74061 Omit filler keys if no channel's using them 2013-05-15 23:52:14 +02:00
0020f81e79 Fix reconnect keys 2013-05-15 18:26:54 +02:00
6f09752db4 Cosmetics 2013-05-15 11:48:37 +02:00
8cf025f18d Fix autojoins for sessions 2013-05-15 11:43:38 +02:00
81990ce53b Change prototype 2013-05-15 08:49:28 +02:00
12cdb7704c Fix command splitting when the channel list is too long 2013-05-14 18:20:05 +02:00
947dd45294 Fix warnings 2013-05-14 16:52:16 +02:00
a435e8648f Fix initial autojoins and some erroneous copies/frees 2013-05-14 16:40:32 +02:00
25d0793766 Merge pull request #596 from Arnavion/python3-allow-unhook-within-hook
python: Hold a reference to plugin instead of dereferencing hook to get to it.
2013-05-14 01:33:50 -07:00
5c9652bf13 python: Hold a reference to plugin instead of dereferencing hook to get to it.
hook might have been free'd by the callback via hexchat.unhook().
2013-05-14 01:25:01 -07:00
7a242a8331 Allow the special colors 32..41 in %Cfg,bg
Text events allow %Cfg,bg as decribed in "Theming" on
https://hexchat.readthedocs.org/en/latest/appearance.html?#theming

That section describes mIRC colors 0-15 and local colors 16-31, but
when selecting background colors, the 9 special internal colors are
extremely useful, like %C20,33 will do bright red on the selected
text background color.

As the documentation is on-line, this patch has no doc-change.
Ideally, the color-codes should show in the colored squares in the
preferences color-dialog just as with colors 0-31

Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>
2013-05-13 15:26:33 +02:00
7cdfeff204 Add note about preferred tab size 2013-05-13 13:38:01 +02:00
83107ee222 Use macros instead of raw numbers for login type 2013-05-13 13:22:25 +02:00
d9d05e83ba Restructured a fair bit of cfgfiles.c. Besides making the code cleaner this allows
for better error handling (in fact the error message of check_prefs_dir () whould
make hexchat abort).
2013-05-13 01:58:08 +01:00
631664645d Add "#define GLIB_DISABLE_DEPRECATION_WARNINGS" to eliminate a warning message 2013-05-12 17:25:43 -07:00
61ed0829bd Forget to put an empty line after a function definition 2013-05-12 23:33:44 +01:00
f023de0faf Removed unnecessary call to check_prefs_dir() in load_config().
This function is called in save_config(), where it is actually needed.
2013-05-12 23:25:36 +01:00
7238853f0f Factored locale related code in main() to a new function. 2013-05-12 23:15:23 +01:00
6a8cad6f94 Now hexchat doesn't abnormally terminal when started as root.
This fixes #589/#504.
2013-05-12 16:37:38 +01:00
2c15270be1 Remember selected tab 2013-05-12 16:59:21 +02:00
c044bdfe32 Fix warning 2013-05-12 16:38:31 +02:00
aac7079562 Add code for migrating existing configs 2013-05-12 16:38:21 +02:00
cadcfc553c Cosmetics 2013-05-12 16:37:32 +02:00
5df669a329 Make the order consistent for load and save 2013-05-12 16:02:26 +02:00
4c307f6ac9 Add auto-reconnect to preferences 2013-05-12 04:08:01 -04:00
37aa38617e Merge pull request #588 from Repentinus/patch-2
Fixed misleading comments identifying the colours
2013-05-12 00:00:08 -07:00
07acb6f7b6 Fixed misleading comments identifying the colours
Replaced incorrect numbers (16 to 31) for mIRC colours with the correct ones (0 to 15).
2013-05-12 05:50:52 +00:00
9c96528a98 Remove unused variable 2013-05-12 06:19:42 +02:00
9327a5c71f Reduce GLib requirement 2013-05-12 06:16:26 +02:00
171dbcdedf Remove dead GLib code 2013-05-12 05:58:16 +02:00
de819e12bf g_slist_copy_deep() requires GLib 2.34 2013-05-12 05:55:14 +02:00
198dc9eb43 Fix favorite channels except in inbound.c 2013-05-12 05:44:32 +02:00
04d282fae3 Fix crash when quickly attaching/detaching tabs 2013-05-11 23:07:42 -03:00
bb86771425 Add explanation as well 2013-05-11 20:47:39 +02:00
791e0fc11f Make login type more intuitive and disable unused /NS 2013-05-11 20:42:29 +02:00
0badd9b874 Remove dead code 2013-05-11 20:09:07 +02:00
af03fa3c7c Fix connect commands 2013-05-11 20:06:22 +02:00
4d30512e05 Fix layout when resized 2013-05-11 16:30:45 +02:00
d5e8fa47f0 Allocate all extra vertical space to the treeviews 2013-05-11 16:21:38 +02:00
85c7e07351 Set up window sizes correctly 2013-05-11 15:58:52 +02:00
fde85c79df Reorganize the network editor 2013-05-11 15:22:28 +02:00
712eb5428e GtkComboBoxText requires GTK+ 2.24, dump code for older versions 2013-05-11 13:06:25 +02:00
5c663adf35 Reorganize a bit and fix spacing 2013-05-11 12:56:26 +02:00
68fa033483 Re-enable resize 2013-05-11 11:54:42 +02:00
b33f70571e fix error 2013-05-11 09:31:56 -04:00
cdc2bb0216 serverlistgui cleanup 2013-05-11 09:20:03 -04:00
250d9b565c Merge pull request #582 from Repentinus/patch-1
Support for away tracking regardless of channel size
2013-05-11 02:10:42 -07:00
6e7c0395e1 Merge pull request #585 from rahatarmanahmed/master
Added help text to sysinfo
2013-05-10 21:38:10 -07:00
be35154376 Added help text for sysinfo plugin. 2013-05-10 23:32:29 -05:00
de2fdc093a Cosmetics 2013-05-11 04:19:18 +02:00
3679dfe93e Make logmask consistent with scrollback mask 2013-05-11 04:18:44 +02:00
2e1425451d Remove some redundancy 2013-05-11 03:13:50 +02:00
0e1da0d33d Also disable labels, not just entries 2013-05-11 03:02:31 +02:00
7b0b86c9f7 Nuke nickserv password field and some cosmetics 2013-05-11 02:40:08 +02:00
a98b95923b Get rid of this unnecessary buffer 2013-05-11 02:00:32 +02:00
cf3d1ebb8b Skeleton for tabbed ui 2013-05-11 01:20:53 +02:00
5db1541f95 Reorganize the network list 2013-05-11 00:49:04 +02:00
873a3ef047 Replace various network options with universal login method option 2013-05-10 23:52:47 +02:00
beb3ab506d Import hexchat automatically when calling /py exec 2013-05-09 23:45:04 -03:00
494364d437 Fix returning gtkwin_ptr from python api 2013-05-09 22:55:06 -03:00
2f1f2c6a85 Added support for marking nicks that are away in different colour when away_size_max = 0, but tracking enabled. 2013-05-09 23:04:46 +00:00
66853d9715 Add option to support away tracking regardless of channel size
As there is option to disable away tracking, it would make sense to treat channel size limit of 0 as infinity for away tracking purposes. These changes attempt to implement this.
2013-05-09 21:11:58 +00:00
cf59ad2c76 Now process_numeric() passes the right session context to text_emit() when an
numeric event occurs regarding a nick with a open dialog.

Since this session context is potentially passed to plugins this can change the
behavior of plugins, but I think this is the intended semantics
(http://docs.hexchat.org/en/latest/script_python.html#context-theory).

Another consequence is that event messages will be displayed in the query dialog
of the nick in question (if a query dialog is open, of course), which I think is
sensible. (The initial intention of this patch was actually to report the
"No such nick" message in the query dialog when sending a message to a user that
has quit.)
2013-05-09 20:32:05 +01:00
dba9c42473 stop using gconf 2013-05-08 23:41:52 -04:00
f8556360ca Merge pull request #580 from hasufell/master
Build failure: fix undefined reference to `g_type_init'
2013-05-08 20:33:40 -07:00
28fe051aa5 Fix server tab changing color when active 2013-05-08 23:56:03 -03:00
607e5a567c CONFIGURE: fix undefined reference to `g_type_init'
These two assignments have no place here and will overwrite the
previous COMMON_LIBS="$COMMON_LIBS -lgmodule-2.0 -lgobject-2.0".
This can lead to build failure during linking stage depending on
the chosen configure options.
2013-05-09 01:48:10 +02:00
df31e239a9 add pkgconfig file to gitignore 2013-05-08 19:22:04 -03:00
df7a15e910 Show hours for last seen in friends list
closes #579
2013-05-08 19:08:37 -03:00
860ef759f5 Have gui_input_icon depend on gui_input_nick in prefs 2013-05-07 23:28:59 -03:00
4ba79fd489 Clean up IRCNet 2013-05-06 00:53:07 -03:00
fb01d4e9ab Replace g_strdup_printf with g_build_filename where possible 2013-05-04 18:21:48 +02:00
b2317d8800 Typofix 2013-05-04 17:40:48 +02:00
3283c71936 Use system include syntax 2013-05-04 17:40:23 +02:00
22a0d5a3fb Add Python major version to plugin description 2013-05-04 17:39:24 +02:00
46443cbd1c python: fully delete failed plugins 2013-05-04 02:02:10 -03:00
efd21ce982 fix possible crash 2013-05-04 00:00:48 -03:00
c4e96dd481 Fix output name 2013-05-04 02:57:03 +02:00
65e384523a Make copy depend on python3 as well 2013-05-04 02:41:53 +02:00
80aee2af6c Fix VS edition 2013-05-04 02:35:38 +02:00
1f525a6f4b Merge branch 'py3k' of git://github.com/TingPing/hexchat 2013-05-03 20:32:23 -04:00
ffa1ea7358 Add python3 plugin 2013-05-03 20:26:58 -04:00
ce7eb02601 Consistency 2013-05-04 03:24:30 +03:00
ce80e571f2 comma 2013-05-03 17:14:31 -03:00
11044c6264 update gamesurge's default nickserv type 2013-05-03 17:13:35 -03:00
7243f5bc2c Merge pull request #565 from bviktor/nickservtype
Make NickServ registration configurable per-network
2013-05-03 09:19:01 -07:00
863ff811e6 Don't make assumptions about the function being called 2013-05-03 18:12:36 +02:00
414ab39db5 Add Italian GenericName 2013-05-03 13:08:03 -03:00
ba78c0527f Fix QuakeNet registration 2013-05-03 18:00:30 +02:00
fb696b7a68 Provide default NickServ types where necessary 2013-05-03 17:23:36 +02:00
295da18414 Merge pull request #571 from amalmurali/master
Update textevents.in
2013-05-03 07:26:42 -07:00
8272df5ec2 Fix desktop translations
closes #567
2013-05-03 11:24:12 -03:00
99fed089cf Line breaks and typofix 2013-05-03 15:54:18 +02:00
e3fd501057 Do save_config() on Channel List window min, max changes
#570
2013-05-01 12:47:53 -07:00
7403dfa9aa Do save_config() on Search-window checkbox change
#570
2013-05-01 12:25:29 -07:00
b08d9cfb56 Fix warning about g_type_init() in dbus/example.c 2013-05-01 12:12:05 -07:00
1969db5f94 Save nicks when closing network list
#570
2013-05-01 10:36:16 -03:00
866299b508 Update textevents.in
Corrected text events for Channel Invite and Channel Remove Invite
2013-05-01 13:53:10 +05:30
c4384265e4 remove incorrect notice help info 2013-04-30 21:27:41 -03:00
b4c885861d Remove away announce 2013-04-28 17:19:26 -04:00
d9be5e098f Remove useless slash 2013-04-28 21:32:47 +02:00
0a54efdd0c Make NickServ registration configurable per-network
Fixes #394
2013-04-28 21:24:53 +02:00
708c5a7347 Make /msg nickserv the default registration type
Fixes #394 and hopefully doesn't break others
2013-04-28 17:03:41 +02:00
50373f4ff9 Get rid of some hardcoded network recognition 2013-04-28 17:01:37 +02:00
2df866bdf8 Don't autoload WMPA, it's dead in the water 2013-04-28 16:50:19 +02:00
5b8567919d Install a pkgconfig .pc file. This allows external plugins to find
where the header file is located, where Hexchat expects to find
plugins so it can load them at startup and which version of
Hexchat is installed. The path where pkgconfig files are stored
is determined by a macro available in newer versions of pkgconfig
which can be overridden by the --with-pkgconfig= configure switch.
However, if this macro is unavailable (older versions of
pkgconfig) then m4ifdef will make it fallback to simply use
${libdir}/pkgconfig (which is the default).

	modified:   configure.ac
	modified:   share/Makefile.am
	new file:   share/pkgconfig/Makefile.am
	new file:   share/pkgconfig/hexchat-plugin.pc.in
2013-04-28 16:48:32 +02:00
77cad8e716 Don't hardcode "plugins" as the subdirectory for plugins in many
places.

	modified:   config-win32.h
	modified:   configure.ac
	modified:   plugins/checksum/Makefile.am
	modified:   plugins/doat/Makefile.am
	modified:   plugins/fishlim/Makefile.am
	modified:   plugins/perl/Makefile.am
	modified:   plugins/python/Makefile.am
	modified:   plugins/sysinfo/Makefile.am
	modified:   plugins/xdcc/Makefile.am
	modified:   src/common/plugin.c
	modified:   src/fe-text/fe-text.c
2013-04-28 16:42:48 +02:00
700d699f5b Cosmetics 2013-04-28 15:30:08 +03:00
87413e9d3c Add hints about the beep file 2013-04-28 05:31:45 +02:00
dbe6deab45 Rename Sound to Sounds and reorder Chatting pages 2013-04-28 04:57:01 +02:00
b2ae3b9dd1 Update gtkrc 2013-04-28 05:47:20 +03:00
92dca50dfc Eliminate compiler warning
free() requires stdlib.h
2013-04-28 04:19:31 +02:00
a3ba8d575e Store just the filename if the sound file comes from the default sound dir
And get rid of some hardcoding while we're at it
2013-04-28 04:12:00 +02:00
ea48d18130 Fix spacing 2013-04-28 03:06:02 +02:00
4547719358 Update .travis.yml 2013-04-27 21:29:33 -03:00
bb878848f7 Use regular canberra not gtk 2013-04-27 20:28:39 -04:00
5bb284267b Remove dead code for sound_command 2013-04-28 01:57:00 +02:00
7e3c8c461e Escape all the things 2013-04-27 20:38:39 -03:00
24034b5b8b More cleanup 2013-04-27 20:35:04 -03:00
78f9f3f87c clean up canberra code 2013-04-27 20:29:28 -03:00
bc1169e979 Use canberra for files 2013-04-27 20:02:27 -03:00
012105e115 Let's just say the word 2013-04-28 00:56:24 +02:00
5c5eb1df14 udpate travis build w/ canberra 2013-04-27 19:19:26 -03:00
e714c7d53f Remove extra omitalerts check 2013-04-27 19:16:34 -03:00
78e39bfb1c use libcanberra for beeps 2013-04-27 18:05:05 -04:00
7323f7c561 Fix unused variable 2013-04-27 23:28:24 +02:00
c6513ea7a2 Use "Instant Message Notification" system sound on Windows, use gdk_beep() on Unix
Note: gdk_beep() is expected to be replaced with libcanberra stuff.
2013-04-27 23:26:26 +02:00
6001ceff9f Get rid of bundled beep 2013-04-27 23:00:18 +02:00
8e3db00dac Don't include if unused 2013-04-27 21:38:13 +02:00
d20dccbe02 Some crucial cosmetics 2013-04-27 21:35:19 +02:00
e834783cb8 Fix compiler warning 2013-04-27 21:31:54 +02:00
01f24aae07 Don't use external players on Windows 2013-04-27 21:07:34 +02:00
584dc6a626 typo 2013-04-27 15:52:18 -03:00
756080831d fix url opening on osx
oops
2013-04-27 15:47:40 -03:00
ffce6c5788 Clean up old url handling on unix 2013-04-27 15:30:40 -03:00
565a492724 Reverts commit d964af8142 2013-04-27 06:32:30 -04:00
6982bbfef9 fix false positives when checking chanopts 2013-04-26 09:37:14 -03:00
07bc467d03 win32: Moved PlatformToolset configuration to individual project files. It should be set before setting other properties or importing other props.
This fixes the broken GUI Platform Toolset indicator, as well as VS compilation itself if another version such as 2010 was also installed.
2013-04-25 21:03:03 -07:00
a39f8ea71f Do not allow blank realname in preferences 2013-04-25 04:51:19 -03:00
4ad9a69aeb Early on, call g_type_init() unless deprecated 2013-04-24 14:33:05 -07:00
ee200b97aa Fix left-click of URL/HOST by tidying what we pass to fe_open_url() 2013-04-24 13:18:34 -07:00
fc659a67f0 Merge pull request #561 from RichardHitt/no-depr-decl
Add '#define GLIB_DISABLE_DEPRECATION_WARNINGS' to fix fkeys.c warnings
2013-04-24 12:27:53 -07:00
de0b0b9467 Merge pull request #560 from RichardHitt/warning-fix
Add '(void)'  to fix perl.c unused-value warning message
2013-04-23 18:33:49 -07:00
eef74ed263 Add '#define GLIB_DISABLE_DEPRECATION_WARNINGS' to fix fkeys.c warnings 2013-04-23 12:46:32 -07:00
facf0ab9c4 Add '(void)' to fix perl.c unused-value warning message 2013-04-23 12:09:05 -07:00
5318c953ed reduce abuse of ternary operator
The ?: operator should not be used as a generic shorthand for if/else.
(Which isn't needed here either...)
2013-04-23 01:09:58 -04:00
2550a94f05 fix omitting custom sounds 2013-04-23 00:45:37 -04:00
bd73c80152 Clean up balloon formatting 2013-04-22 20:13:34 -03:00
43cbe83d61 fix warning in new glib 2013-04-22 18:04:26 -03:00
075c5dfad6 Merge pull request #556 from RichardHitt/ignore-unused
Fix Ubuntu build warnings by using gcc flag -Wno-unused-result
2013-04-22 13:54:45 -07:00
ba1dfabf11 Fix Ubuntu build warnings by using gcc flag -Wno-unused-result 2013-04-22 11:22:04 -07:00
9603248a5b Fall back to global username for sasl 2013-04-22 07:30:33 -03:00
4e891102f2 Merge pull request #550 from RichardHitt/issue440a
In do_an_re() put WORD_CHANNEL before WORD_HOST.  fixes #440
2013-04-20 17:05:18 -07:00
bc1c84347d fix install error 2013-04-20 18:37:30 -03:00
2db01371b3 Build with travis 2013-04-19 15:55:14 -04:00
e17a9c6503 In do_an_re() put WORD_CHANNEL before WORD_HOST. fixes #440 2013-04-19 12:41:49 -07:00
3994126a09 Add english generic name 2013-04-18 01:21:12 -03:00
70174be823 Fix a typo.
modified:   share/misc/hexchat.desktop
2013-04-18 00:14:40 -04:00
9254f9284c Add GTK and IRCClient to Categories. This is Based on:
http://standards.freedesktop.org/menu-spec/latest

	modified:   share/misc/hexchat.desktop
2013-04-18 00:11:17 -04:00
c819adf830 Translate Comment in french, german, italian and norwegian bokmål
modified:   share/misc/hexchat.desktop
2013-04-18 00:10:54 -04:00
13c717159d Change "no" to "nb" for Norsk Bokmål. In norway there is not only
one official language but two.

	modified:   share/misc/hexchat.desktop
2013-04-18 00:10:14 -04:00
4c90a9b2d5 Change most Comment lines to be GenericName. GenericName should be
used when only one IRC client in installed.

	modified:   share/misc/hexchat.desktop
2013-04-18 00:09:52 -04:00
a14bd119b7 typo 2013-04-17 22:45:08 -03:00
f9cf25f797 Use more useful example for url handler 2013-04-17 22:39:50 -03:00
450b92f6c0 add paplay 2013-04-17 06:13:34 -03:00
9790151ec0 beep sound is gtk only 2013-04-17 06:02:17 -03:00
3fbea449b5 g_file requires gio 2013-04-17 05:45:51 -03:00
02cdc57eb5 Install sound file on unix
for #542
2013-04-17 03:45:41 -04:00
d7571ce1e3 Update installers as well 2013-04-16 11:35:22 +02:00
ccc8601624 Move beep to proper place 2013-04-16 11:32:58 +02:00
7e2ae20ecf only 1 2013-04-15 22:10:25 -03:00
b856065167 fix warning 2013-04-15 22:03:03 -03:00
f3efdaf40f finish removing sound_dir 2013-04-15 18:16:51 -03:00
86564c8741 Merge pull request #545 from RichardHitt/issue522
Fix broken logic in mg_word_clicked().  fixes #522
2013-04-15 13:54:00 -07:00
a5eb7784c6 Fix broken logic in mg_word_clicked(). fixes #522 2013-04-15 12:05:53 -07:00
f0d0f90e13 no error on beeps 2013-04-15 00:12:06 -03:00
27d828172d try play first. 2013-04-14 17:54:28 -03:00
a7ffdf3d65 Remove one warning bypass 2013-04-14 13:19:49 +02:00
dd624950c6 Eliminate compiler warning 2013-04-14 13:15:10 +02:00
b407bfa168 Fix missing first letter in busy server error popup 2013-04-14 13:11:35 +02:00
069a6adb19 If no path given, try to load plugins from config dir, not from install dir 2013-04-14 12:55:02 +02:00
9dd2c85df4 Load connect commands from config dir 2013-04-14 12:31:27 +02:00
b7f0f6abc8 Fix tabulation 2013-04-14 12:11:38 +02:00
ea0479998a Use bundled beep file for beep alerts 2013-04-14 11:56:50 +02:00
9272eb4325 G_FILE_COPY_TARGET_DEFAULT_PERMS requires GLib 2.20+ 2013-04-14 11:00:01 +02:00
4e601cf14c Browse into the sounds folder by default 2013-04-14 10:52:34 +02:00
db582a4e5c Remove sound_dir, it's pointless 2013-04-14 10:47:37 +02:00
059e4ec9c8 Add default beep sound, deploy on Windows
FIXME on Unix yet
2013-04-14 10:30:51 +02:00
a96be226b2 Really relocate 2013-04-14 10:15:52 +02:00
bed00e525d Relocate plugin icons 2013-04-14 10:14:17 +02:00
096e837ece Add accounts to users in get_list 2013-04-14 00:33:03 -03:00
e67371d269 Add option for omitting alerts while focused 2013-04-13 23:03:54 -04:00
a996549577 Rewrite desensitizing options in preferences 2013-04-13 20:54:42 -04:00
9917b7e3df hook reload command 2013-04-13 02:02:57 -03:00
541f221a61 fix crash after reloading script 2013-04-13 02:01:04 -03:00
44a2ed5a97 Fix possible crash
Thanks to - http://forum.xchat.org/viewtopic.php?f=5&t=7558
2013-04-12 23:08:02 -03:00
ba3f4daee8 Rebrand object types 2013-04-12 22:58:29 -03:00
2d3d4db16b Nuke last Tcl and SASL remnants 2013-04-13 04:27:10 +03:00
0c351c9cbc Nuke WMPA, not supported by Express 2013-04-13 02:38:44 +02:00
cc1f2b2d27 Fix last filename
Left here to make changes trackable
2013-04-13 02:27:02 +02:00
6ee3a4a978 Get rid of multiple Perl versions 2013-04-13 02:27:01 +02:00
5326f76a40 Fix tray not respecting away_omit_alerts 2013-04-12 19:59:46 -03:00
7f86fbad1e We ship bundles, this is unnecessary too 2013-04-12 18:05:54 +02:00
30fa189cbb We don't release git head anymore, github does that for us 2013-04-12 18:05:28 +02:00
2fdb2a8b6f Revert "win32: Fixed YourDepsPath."
This reverts commit b07e5fafaf.
2013-04-12 18:04:22 +02:00
b07e5fafaf win32: Fixed YourDepsPath. 2013-04-11 21:59:58 -07:00
ba1a1ab28d Don't call it package, it causes line break 2013-04-11 17:44:33 +02:00
a9643234ae It's official: VS2012.2 needs VS2012.1 redist 2013-04-11 14:03:27 +02:00
7870c8028f warning 2013-04-10 15:41:29 -03:00
6510e8961e Delete left over themes 2013-04-10 14:39:43 -03:00
6e8b7367d7 comma 2013-04-10 13:43:22 -03:00
feb5b41642 Readd irc charset to the list 2013-04-10 13:27:53 -03:00
36694afe0e Don't send ping's to the server if we are still waiting for a pong.
If the server don't respond in 30s just report the lag as +30s.

This fixes the bug where hexchat reset the lag meter every time a ping
was sent and no pong was received.
2013-04-09 19:14:46 -07:00
a99111172d Merge pull request #527 from grawity/cap-req-sasl
Request 'sasl' even if it's the only recognized cap
2013-04-09 17:50:26 -07:00
780c3d29c7 Request 'sasl' even if it's the only recognized cap 2013-04-10 02:43:09 +03:00
1a7831df2a Fix spelling checkbox with libsexy 2013-04-09 12:28:44 -03:00
924178cde7 cosmetics 2013-04-09 03:08:26 +02:00
77fa72924b readme cleanup 2013-04-09 03:06:07 +02:00
b90633d406 Fix deps path 2013-04-08 22:39:35 +02:00
cd64e02096 Use EAT_HEXCHAT on hexchat module 2013-04-08 17:23:07 -03:00
ad820cef8a Give both modules the version too. 2013-04-08 17:16:32 -03:00
68de2bcb00 Add constants to both modules 2013-04-08 17:09:36 -03:00
68b6be11d6 Add hexchat module to python interface 2013-04-08 17:07:13 -03:00
d13ae114a2 Handle numeric 900 2013-04-08 16:52:14 -03:00
3a6103564e Merge pull request #516 from Misdre/optout-extra-alerts
Closes #290 - opt-out for extra alerts now working
2013-04-08 10:35:53 -07:00
0424e5a329 Closes #290 - opt-out for extra alerts now working 2013-04-08 19:19:55 +02:00
561ad635cd Merge pull request #515 from Misdre/optin-optout-scrollback
fix issue #491 - opt-in/opt-out of scrollback per channel
2013-04-08 08:04:48 -07:00
2427c095e5 fix issue #491 - opt-in/opt-out of scrollback per channel 2013-04-08 15:07:58 +02:00
ed27009285 Notify away status of friends 2013-04-07 20:41:29 -04:00
92654bdd9b Make copy depend on perl-5.18, not perl-5.16 2013-04-08 02:31:47 +02:00
fdf7ec22f5 I might regret this, but let's do the brave jump 2013-04-08 01:12:19 +02:00
3c4a154f0a Add events for quiet 2013-04-07 17:49:30 -04:00
c766b24920 Merge pull request #508 from Misdre/split-long-action-notice
Long ctcp action/notice split
2013-04-07 12:40:29 -07:00
af652a6639 Merge pull request #510 from RichardHitt/allownick
Allow nick starting with digit despite rfc 2812 violation
2013-04-06 15:53:21 -07:00
812628acb2 Update textevents.in 2013-04-06 17:30:19 -03:00
6b86940b7b Allow nick starting with digit despite rfc 2812 violation 2013-04-06 11:51:22 -07:00
08d948435d split cmd_msg too 2013-04-06 01:11:28 +02:00
5004f69b5e 'splitted' is'nt a word 2013-04-06 00:11:45 +02:00
bc5d16c4fb split long message on action and notice 2013-04-05 23:14:51 +02:00
c2a5b4fb7d Disable esc keybinding on tabbed utils 2013-04-05 17:33:35 -03:00
cca8ab4640 Fix esc closing detached util tabs 2013-04-05 16:56:57 -03:00
d964af8142 Fix root user warning running before g_type_init
closes #504
2013-04-05 10:12:33 -04:00
7746ff9a12 Fix manpage EOL 2013-04-05 06:38:12 +02:00
c4cf67bee4 Merge pull request #501 from gusnan/master
Minor spelling fix
2013-04-04 08:20:29 -07:00
a1daf03538 Fix spelling seperate/separate 2013-04-04 17:11:05 +02:00
2be0530c34 get account from whois 2013-04-04 10:29:15 -03:00
b0d1c884e0 regular who doesn't send account 2013-04-04 05:07:42 -04:00
e0a7f0ae59 Fixed compiler error. 2013-04-04 01:56:40 -07:00
5779691efb Update hiding menu text 2013-04-03 20:35:42 -03:00
496ed18e85 Add MONITOR support 2013-04-03 18:51:54 -04:00
86cf7de430 add %u to userlist popups for account 2013-04-03 18:10:14 -04:00
477d7470c1 renable irc_who_join by default 2013-04-03 18:35:40 -03:00
3706b51159 Fix realname 2013-04-03 18:28:00 -03:00
b4c8d53394 Support account-notify and extended-join capabilities 2013-04-03 17:10:09 -04:00
4c217d4ba3 Merge pull request #448 from TingPing/awaynotify2
Add away-notify support
2013-04-03 12:12:26 -07:00
23b2081385 update man page
Close #498
2013-04-03 15:11:43 -03:00
0534b54e51 Remove strlutil 2013-04-03 16:48:03 +02:00
faf4575e9a Enable cast checks 2013-04-02 23:58:43 -07:00
52efe3abff Add missing declaration 2013-04-02 23:57:43 -07:00
59510cf8a1 Move Perl from hexchat to gtk-win32 2013-04-03 08:05:26 +02:00
905705910b Remove hardcoded clear keybinding
You can re-add this easily in settings > keyboard shortcuts
2013-04-03 02:50:57 -03:00
bb78d8dd59 Add new window keybinding 2013-04-03 02:41:59 -03:00
8b72d53dcc Merge pull request #496 from bviktor/toplevel-includes
Only include top level includes from GTK+, GLib and GDK-PixBuf Closes #486
2013-04-02 22:39:17 -07:00
ef4aa16730 Apply to fe-text too 2013-04-02 22:37:24 -07:00
14b089ef90 Set up CFLAGS on Unix too 2013-04-02 22:35:42 -07:00
b5fef8d0e2 gtk_show_uri() requires GTK+ 2.14 2013-04-03 06:49:57 +02:00
561f3044d6 update --url help string 2013-04-03 01:36:52 -03:00
9c49254abd Only include top level includes from GTK+, GLib and GDK-PixBuf 2013-04-02 20:39:37 -07:00
5e59578e28 Remove most of HexTray and one instance
You can still build HexTray manually if you want to try fixing it
2013-04-02 11:56:08 -07:00
7317535c28 Fix textfe with dbus disabled 2013-04-02 09:06:47 -03:00
920839cf1c fix strptime on bsd 2013-04-02 08:06:38 -03:00
d8eec06473 Missing include
#492
2013-04-02 07:50:08 -03:00
4748405277 This is useless too 2013-04-01 21:28:54 -07:00
13d574b455 Revert XP version check; as it turned out, it's completely irrelevant now
This reverts commit cd2f775fe4.
2013-04-01 21:15:46 -07:00
2b13d0f527 Apparently XP won't work anymore, Uniscribe problem with the redistributable 2013-04-01 20:51:40 -07:00
e054a6512f We all knew I'll forget something, right? 2013-04-01 18:33:12 -07:00
eb5313f850 Clean up away-notify patch 2013-03-12 23:54:55 -04:00
bf0fb9f327 Add away-notify support 2013-03-12 02:21:18 -04:00
428 changed files with 134515 additions and 143593 deletions

31
.gitignore vendored
View File

@ -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
View 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

View File

@ -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

1904
Doxyfile Normal file

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
View File

@ -0,0 +1,5 @@
SUBDIRS = pkgconfig man
if DO_GTK
SUBDIRS += icons misc
endif

View 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>

View File

@ -1,4 +1,4 @@
icon_DATA = ../../src/pixmaps/hexchat.png
icon_DATA = hexchat.png
icondir = $(datadir)/icons/hicolor/48x48/apps
hicolor_DATA = hexchat.svg

View File

Before

Width:  |  Height:  |  Size: 841 B

After

Width:  |  Height:  |  Size: 841 B

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -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

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

746
data/icons/hexchat.svg Normal file
View 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

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View File

Before

Width:  |  Height:  |  Size: 422 B

After

Width:  |  Height:  |  Size: 422 B

View File

Before

Width:  |  Height:  |  Size: 911 B

After

Width:  |  Height:  |  Size: 911 B

View File

Before

Width:  |  Height:  |  Size: 568 B

After

Width:  |  Height:  |  Size: 568 B

View File

Before

Width:  |  Height:  |  Size: 611 B

After

Width:  |  Height:  |  Size: 611 B

View File

Before

Width:  |  Height:  |  Size: 660 B

After

Width:  |  Height:  |  Size: 660 B

View File

Before

Width:  |  Height:  |  Size: 668 B

After

Width:  |  Height:  |  Size: 668 B

View File

Before

Width:  |  Height:  |  Size: 593 B

After

Width:  |  Height:  |  Size: 593 B

View File

Before

Width:  |  Height:  |  Size: 691 B

After

Width:  |  Height:  |  Size: 691 B

View File

Before

Width:  |  Height:  |  Size: 678 B

After

Width:  |  Height:  |  Size: 678 B

View File

Before

Width:  |  Height:  |  Size: 670 B

After

Width:  |  Height:  |  Size: 670 B

3
data/man/Makefile.am Normal file
View File

@ -0,0 +1,3 @@
man_MANS = hexchat.1
EXTRA_DIST = hexchat.1.in

View File

@ -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
View 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)

View 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>

View 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
View 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
View File

@ -0,0 +1,7 @@
[Desktop Entry]
_Name=HexChat Theme Manager
Exec=thememan %f
Icon=hexchat
Terminal=false
Type=Application
MimeType=application/x-hct;

View File

@ -0,0 +1,4 @@
pkgcfgdir = $(pkgconfigdir)
pkgcfg_DATA = hexchat-plugin.pc
EXTRA_DIST = hexchat-plugin.pc.in

View 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}

View File

@ -1 +0,0 @@
man_MANS = hexchat.1

30
osx/Info.plist.in Normal file
View 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
View 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
View 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

Binary file not shown.

178
osx/launcher.sh Executable file
View 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
View 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

View File

@ -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)

View File

@ -1,4 +1,4 @@
libdir = $(hexchatlibdir)/plugins
libdir = $(hexchatlibdir)
lib_LTLIBRARIES = checksum.la
checksum_la_SOURCES = checksum.c

View File

@ -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>

View File

@ -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>

View File

@ -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 */
}

View File

@ -1,3 +0,0 @@
EXPORTS
hexchat_plugin_init
hexchat_plugin_deinit

View File

@ -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>

View File

@ -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;
}

View File

@ -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);

View File

@ -1,4 +1,4 @@
libdir = $(hexchatlibdir)/plugins
libdir = $(hexchatlibdir)
lib_LTLIBRARIES = doat.la
doat_la_SOURCES = doat.c

View File

@ -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>

View File

@ -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!

View File

@ -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;
}

View File

@ -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

View File

@ -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;
}

View File

@ -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>

View File

@ -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

View File

@ -1,5 +0,0 @@
/* stdbool.h replacement for MSVC */
#define false 0
#define true 1
#define bool _Bool
typedef int _Bool;

View File

@ -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>

View File

@ -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);

View File

@ -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>

View File

@ -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[],

View File

@ -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);

View File

@ -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;
}

View File

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

View File

@ -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;
}

View File

@ -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

View File

@ -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);
}

View File

@ -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

View File

@ -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;
}

View File

@ -1,3 +0,0 @@
EXPORTS
hexchat_plugin_init
hexchat_plugin_deinit

View File

@ -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

View File

@ -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>

View File

@ -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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@ -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

View File

@ -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

View File

@ -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;
}

View File

@ -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

View File

@ -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);
}

View File

@ -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

View File

@ -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);
}

View File

@ -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

View File

@ -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/*

Some files were not shown because too many files have changed in this diff Show More