Compare commits

..

47 Commits
v2.10.1 ... znc

Author SHA1 Message Date
08ce54bbb5 Create ZNC plugin 2014-09-05 17:18:56 -04:00
2aa3eb8cfb Escape values set via pluginpref
Fixes #790
2014-09-01 18:17:26 -04:00
d1b9118056 Fix DOMAIN and EMAIL patterns.
Closes #1107
2014-09-01 17:55:22 -04:00
fd95c729d5 xtext: Add word and line selection modes
Similar to a GtkTextView if you double click you enter word selection mode
and if you triple click you enter line selection mode.
Allowing you to drag and select more than a single character.

Closes #1108
2014-09-01 17:53:03 -04:00
d1c40196e3 Fix using negative index 2014-08-23 14:13:34 -04:00
9716185edf Use glib to get portable mode dir
This should fix any non-ascii paths
2014-08-23 12:45:02 -04:00
a38892ff3b Use GFile API in gtkutil_check_file instead of stat/access.
The latter functions expect codepage-encoded filenames on Windows but GLib's API returns filesystem-encoded paths, which on Windows are UTF-8. GLib API should be used to deal with GLib API results.

Also fixed leaks in two of the callers of gtkutil_check_file()

Fixes #968
2014-08-20 12:50:08 -07:00
dc18e3da07 Update badges in readme 2014-08-20 15:19:57 -04:00
9127b510f2 Update readme.md 2014-08-15 19:55:40 -04:00
8f9ed6d942 Bump master to development release 2.11.0
To anybody confused this is not the next stable release, it is just a way to differentiate master
from the 2.10 branch and next stable will be 2.12.0 similar to Gnome's versioning scheme.
2014-08-07 16:30:28 -04:00
422edd8812 osx: Create bundles using homebrew
Just easier to maintain than jhbuild.

See https://github.com/TingPing/homebrew-gnome for deps.
2014-08-01 04:03:54 -04:00
345c8a29ad Stupid github editor adding newlines 2014-07-28 16:24:43 -04:00
a854234c1f Fix warning 2014-07-28 16:18:27 -04:00
4b549eeac8 Bump updater version on Windows 2014-07-28 16:14:10 -04:00
7c2c8b1403 Fixed expand_homedir to handle paths like "~user" correctly. 2014-07-28 14:49:14 -04:00
c2ecb4c68c Fix various crashes with pluginpref 2014-07-28 14:47:19 -04:00
ea9dafcd43 Add GeeksIRC and IRC4Fun to network list
Closes #1057
Closes #1058
2014-07-21 15:37:03 -04:00
7a7b9c682d Fix apostrophe related spell check issues 2014-07-21 15:10:21 -04:00
0d3706e2ee Fix possible crash in spell check
Closes #1048
2014-07-19 15:51:06 -04:00
3c584e2cd5 win32: Update Python links 2014-07-19 10:08:12 -04:00
9372972ad4 win32: Don't allow installing on Vista
It does not run on Vista
2014-07-19 10:06:29 -04:00
121cb8b88d Fix formatting warnings
Found by #1059
2014-07-18 07:16:43 -04:00
93caf4c7b4 Use GNUC format attribute on print functions
Closes #1059
2014-07-18 07:09:07 -04:00
21c0e47869 travis: update before installing deps 2014-07-17 07:33:57 -04:00
f1e853c1cb Disable tray support on Elementary
They followed Ubuntu in breaking any gtk trays..
2014-07-05 13:08:48 -04:00
aa7291fc9c configure: Improve python logic
- add checks for python3.4
- only warn once for failure to find a version
- only run pkg-config call if the .pc file was actually found
- make unsupported python version non-fatal

Closes #1006
Closes #989
2014-06-27 19:23:11 -04:00
3de79bca10 Update server list
Closes #1013
2014-06-27 19:19:13 -04:00
466646f84a win32: Silent installer improvements
- Launch uninstaller as VERYSILENT
- Don't launch Python/Perl installers when silent
2014-06-27 19:10:55 -04:00
e0f80e41bf win32: Use theme shipped with gtk
No reason for us to maintain own copy. This also
makes custom theme installing easier.
2014-06-25 20:38:53 -04:00
9a5977a9c9 Fix autotools warning 2014-06-21 23:13:05 -04:00
c3c6b46230 Clean up includes for gettext
It is always enabled.
2014-06-21 23:10:18 -04:00
47b4b0da8a Remove unused defines 2014-06-21 22:45:21 -04:00
45526205ab Remove broken debug code 2014-06-21 22:21:12 -04:00
3342af4185 Make plugin-timer translatable 2014-06-21 22:11:37 -04:00
7374637d34 Some problems in banlist.c are fixed 2014-06-17 17:16:45 -07:00
62209618e1 We don't ship DNS as a plugin anymore 2014-06-13 22:31:08 -04:00
7bfa2ee8a7 Fix GTK+ bundle licenses missing from installer 2014-06-13 22:31:00 -04:00
73c914cca9 Enable logging by default 2014-06-13 18:21:41 +02:00
77d9d421fb Partial fix for out of source builds
Patch from LRN

Perl's makefile needs fixed and the relative include
of config.h needs removed from hexchat.h

Mentioned in #1018
2014-06-09 13:54:16 -04:00
59f3a65911 Fix sending notify list to correct networks
Fixes #1015
2014-06-08 01:41:50 -04:00
9181ea068a Fix dcc dir warning showing when not auto-accept 2014-06-04 20:55:34 -04:00
c1d9aad546 win32: Fix path in installer project 2014-06-04 14:07:43 -04:00
3cd8556c54 Use GDir instead of dirent 2014-06-04 13:56:33 -04:00
9c981cfc6b Fix warning 2014-06-04 13:47:09 -04:00
11e3ecc739 Stop hardcoding plugin extensions everywhere 2014-06-04 11:15:35 -04:00
5849a0588e Use glib to parse and launch commands for util_exec
Fixes #958
2014-06-04 10:38:23 -04:00
b8c02f71d9 win32: Use config.h instead of config-win32.h 2014-06-04 10:30:18 -04:00
77 changed files with 1465 additions and 1601 deletions

View File

@ -1,6 +1,7 @@
language: c
compiler: gcc
before_script:
- sudo apt-get update
- sudo apt-get build-dep -qq xchat
- sudo apt-get install -qq libnotify-dev libproxy-dev libpci-dev libcanberra-dev monodevelop gnome-common
script:

View File

@ -1,6 +1,6 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT([HexChat],[2.10.1])
AC_INIT([HexChat],[2.11.0])
AC_PREREQ([2.60])
AC_COPYRIGHT([Copyright (C) 1998-2010 Peter Zelezny])
@ -123,6 +123,10 @@ AC_ARG_ENABLE(doat,
[AS_HELP_STRING([--disable-doat],[disable the Do At plugin])],
doat=$enableval, doat=yes)
AC_ARG_ENABLE(znc,
[AS_HELP_STRING([--disable-znc],[disable the ZNC plugin])],
znc=$enableval, znc=yes)
AC_ARG_ENABLE(fishlim,
[AS_HELP_STRING([--disable-fishlim],[disable the FiSHLiM plugin])],
fishlim=$enableval, fishlim=yes)
@ -216,7 +220,7 @@ dnl *********************************************************************
_gdk_tgt=`$PKG_CONFIG --variable=target gdk-2.0`
if test "x$_gdk_tgt" = xquartz; then
PKG_CHECK_MODULES(GTK_MAC, gtk-mac-integration, [
PKG_CHECK_MODULES(GTK_MAC, gtk-mac-integration-gtk2, [
GUI_LIBS="$GUI_LIBS $GTK_MAC_LIBS"
GUI_CFLAGS="$GUI_CFLAGS $GTK_MAC_CFLAGS"
AC_DEFINE(HAVE_GTK_MAC)
@ -478,6 +482,21 @@ if test "$doat" != "no"; then
fi
fi
dnl *********************************************************************
dnl ** ZNC **************************************************************
dnl *********************************************************************
if test "$znc" != "no"; then
AC_MSG_CHECKING(for plugin interface used by ZNC)
znc=no
if test "$plugin" = yes; then
znc=yes
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([plugins are disabled, use the --enable-plugin option for ZNC])
fi
fi
dnl *********************************************************************
dnl ** FiSHLiM **********************************************************
dnl *********************************************************************
@ -599,6 +618,7 @@ AM_CONDITIONAL(DO_PYTHON, test "x$python" != "xno")
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_ZNC, test "x$znc" = "xyes")
AM_CONDITIONAL(DO_FISHLIM, test "x$fishlim" = "xyes")
AM_CONDITIONAL(DO_SYSINFO, test "x$sysinfo" = "xyes")
AM_CONDITIONAL(USE_DBUS, test "x$dbus" = "xyes")
@ -836,6 +856,7 @@ plugins/python/Makefile
plugins/perl/Makefile
plugins/checksum/Makefile
plugins/doat/Makefile
plugins/znc/Makefile
plugins/fishlim/Makefile
plugins/sysinfo/Makefile
po/Makefile.in
@ -855,7 +876,6 @@ echo D-Bus support ......... : $dbus
echo libnotify support ..... : $libnotify
echo libcanberra support ... : $libcanberra
echo Plugin interface ...... : $plugin
echo NLS/gettext ........... : $USE_NLS
echo IPv6 support .......... : $ipv6
echo MS Proxy NTLM \(ISA\) ... : $have_ntlm
echo libproxy support ...... : $libproxy
@ -865,6 +885,7 @@ echo Python ................ : $python
echo
echo Checksum .............. : $checksum
echo Do At ................. : $doat
echo ZNC Extras ............ : $znc
echo FiSHLiM ............... : $fishlim
echo SysInfo ............... : $sysinfo
echo

View File

@ -2,7 +2,8 @@
<app-bundle>
<meta>
<prefix name="default">${env:JHBUILD_PREFIX}</prefix>
<prefix name="default">/usr/local</prefix>
<prefix name="enchant">/usr/local/opt/enchant-applespell</prefix>
<destination overwrite="yes">${project}</destination>
<run-install-name-tool/>
@ -21,25 +22,12 @@
</binary>
<binary>
${prefix}/lib/libenchant.dylib
${prefix:enchant}/lib/libenchant.dylib
</binary>
<binary>
${prefix}/lib/enchant/libenchant_applespell.so
${prefix:enchant}/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>
@ -59,7 +47,7 @@
${prefix}/lib/pango/${pkg:pango:pango_module_version}/modules/
</binary>
<data>
${prefix}/share/themes/Mac/
${prefix}/share/themes/Mac/gtk-2.0-key/gtkrc
</data>
<translations name="gtk20">
@ -77,7 +65,4 @@
${project}/hexchat.icns
</data>
<!-- icon-theme icons="none">
</icon-theme -->
</app-bundle>

View File

@ -36,10 +36,6 @@ 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"

View File

@ -1,24 +1,9 @@
#!/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
python $HOME/.local/bin/gtk-mac-bundler hexchat.bundle
echo "Compressing bundle"
#hdiutil create -format UDBZ -srcdir HexChat.app -quiet HexChat-2.9.6.1-$(git rev-parse --short master).dmg

View File

@ -10,6 +10,10 @@ if DO_DOAT
doatdir = doat
endif
if DO_ZNC
zncdir = znc
endif
if DO_FISHLIM
fishlimdir = fishlim
endif
@ -22,4 +26,4 @@ if DO_SYSINFO
sysinfodir = sysinfo
endif
SUBDIRS = $(pythondir) $(perldir) $(checksumdir) $(doatdir) $(fishlimdir) $(sysinfodir)
SUBDIRS = $(pythondir) $(perldir) $(checksumdir) $(doatdir) $(fishlimdir) $(sysinfodir) $(zncdir)

View File

@ -221,7 +221,7 @@ static int handle_setkey(char *word[], char *word_eol[], void *userdata) {
if (keystore_store_key(nick, key)) {
hexchat_printf(ph, "Stored key for %s\n", nick);
} else {
hexchat_printf(ph, "\00305Failed to store key in addon_fishlim.conf\n", nick, key);
hexchat_printf(ph, "\00305Failed to store key in addon_fishlim.conf\n");
}
return HEXCHAT_EAT_HEXCHAT;
@ -245,7 +245,7 @@ static int handle_delkey(char *word[], char *word_eol[], void *userdata) {
if (keystore_delete_nick(nick)) {
hexchat_printf(ph, "Deleted key for %s\n", nick);
} else {
hexchat_printf(ph, "\00305Failed to delete key in addon_fishlim.conf!\n", nick);
hexchat_printf(ph, "\00305Failed to delete key in addon_fishlim.conf!\n");
}
return HEXCHAT_EAT_HEXCHAT;

View File

@ -32,11 +32,8 @@
#endif
#undef PACKAGE
#ifdef WIN32
#include "../../config-win32.h" /* for #define OLD_PERL */
#else
#include "../../config.h"
#endif
#include "hexchat-plugin.h"
static hexchat_plugin *ph; /* plugin handle */

View File

@ -52,20 +52,19 @@
*/
#include <glib.h>
#include <glib/gstdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#ifdef WIN32
#include <direct.h>
#include <glib/gstdio.h>
#include "../../src/dirent/dirent-win32.h"
#include "../../config-win32.h"
#else
#include <unistd.h>
#include <dirent.h>
#endif
#include "../../config.h"
#include "hexchat-plugin.h"
#undef _POSIX_C_SOURCE /* Avoid warning: also in /usr/include/features.h from glib.h */
#include <Python.h>
@ -459,26 +458,31 @@ Util_BuildEOLList(char *word[])
static void
Util_Autoload_from (const char *dir_name)
{
#ifndef PATH_MAX
#define PATH_MAX 1024 /* Hurd doesn't define it */
#endif
char oldcwd[PATH_MAX];
struct dirent *ent;
DIR *dir;
if (getcwd(oldcwd, PATH_MAX) == NULL)
gchar *oldcwd;
const char *entry_name;
GDir *dir;
oldcwd = g_get_current_dir ();
if (oldcwd == NULL)
return;
if (chdir(dir_name) != 0)
if (g_chdir(dir_name) != 0)
{
g_free (oldcwd);
return;
dir = opendir(".");
if (dir == NULL)
return;
while ((ent = readdir(dir))) {
int len = strlen(ent->d_name);
if (len > 3 && strcmp(".py", ent->d_name+len-3) == 0)
Command_PyLoad(ent->d_name);
}
closedir(dir);
chdir(oldcwd);
dir = g_dir_open (".", 0, NULL);
if (dir == NULL)
{
g_free (oldcwd);
return;
}
while ((entry_name = g_dir_read_name (dir)))
{
if (g_str_has_suffix (entry_name, ".py"))
Command_PyLoad((char*)entry_name);
}
g_dir_close (dir);
g_chdir (oldcwd);
}
static void
@ -486,7 +490,7 @@ Util_Autoload()
{
const char *xdir;
char *sub_dir;
/* we need local filesystem encoding for chdir, opendir etc */
/* we need local filesystem encoding for g_chdir, g_dir_open etc */
xdir = hexchat_get_info(ph, "configdir");

7
plugins/znc/Makefile.am Normal file
View File

@ -0,0 +1,7 @@
libdir = $(hexchatlibdir)
lib_LTLIBRARIES = znc.la
znc_la_SOURCES = znc.c
znc_la_LDFLAGS = -avoid-version -module
znc_la_LIBADD =
AM_CPPFLAGS = $(COMMON_CFLAGS) -I$(srcdir)/../../src/common

387
plugins/znc/znc.c Normal file
View File

@ -0,0 +1,387 @@
/* HexChat
*
* 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 <string.h>
#include <stdio.h>
#include <glib.h>
#include "hexchat-plugin.h"
static hexchat_plugin *ph;
static char name[] = "ZNC Extras";
static char desc[] = "Integrate with optional ZNC plugins";
static char version[] = "1.0";
/* Playback: http://wiki.znc.in/Playback */
/* This should behave like this:
* On connect (end of MOTD):
* if new server, play all
* if old server, play all after latest timestamp
* On new query:
* play all
* On close query:
* clear all
* On new message:
* update latest timestamp
*/
static GHashTable *playback_servers = NULL;
#define PLAYBACK_CAP "znc.in/playback"
static int
get_current_context_type (void)
{
int type = 0;
hexchat_list *list;
hexchat_context *cur_ctx;
list = hexchat_list_get (ph, "channels");
if (!list)
return 0;
cur_ctx = hexchat_get_context (ph);
while (hexchat_list_next (ph, list))
{
if ((hexchat_context*)hexchat_list_str (ph, list, "context") == cur_ctx)
{
type = hexchat_list_int (ph, list, "type");
break;
}
}
hexchat_list_free (ph, list);
return type;
}
static int
get_current_context_id (void)
{
gint id;
if (hexchat_get_prefs (ph, "id", NULL, &id) != 2)
return -1;
return id;
}
static int
capls_cb (char *word[], void *userdata)
{
if (strstr (word[2], PLAYBACK_CAP) != NULL)
hexchat_command (ph, "quote CAP REQ :" PLAYBACK_CAP);
return HEXCHAT_EAT_NONE;
}
static int
capack_cb (char *word[], void *userdata)
{
if (strstr (word[2], PLAYBACK_CAP) != NULL)
{
int id;
/* FIXME: emit this after request but before ack.. */
hexchat_emit_print (ph, "Capability Request", PLAYBACK_CAP, NULL);
id = get_current_context_id ();
if (!g_hash_table_contains (playback_servers, GINT_TO_POINTER(id)))
g_hash_table_insert (playback_servers, GINT_TO_POINTER(id), g_strdup ("0"));
}
return HEXCHAT_EAT_NONE;
}
static int
connected_cb (char *word[], char *word_eol[], void *userdata)
{
int id = get_current_context_id ();
if (g_hash_table_contains (playback_servers, GINT_TO_POINTER(id)))
{
g_print("connected\n");
char *timestamp = g_hash_table_lookup (playback_servers, GINT_TO_POINTER(id));
hexchat_commandf (ph, "quote PRIVMSG *playback :play * %s", timestamp);
}
return HEXCHAT_EAT_NONE;
}
static int
opencontext_cb (char *word[], void *userdata)
{
#if 0
int id = get_current_context_id ();
if (g_hash_table_contains (playback_servers, GINT_TO_POINTER(id))
&& get_current_context_type () == 3)
{
const char *channel = hexchat_get_info (ph, "channel");
char *time_str = g_hash_table_lookup (playback_servers, GINT_TO_POINTER(id));
hexchat_commandf (ph, "quote PRIVMSG *playback :play %s %s", channel, time_str);
}
#endif
return HEXCHAT_EAT_NONE;
}
static int
closecontext_cb (char *word[], void *userdata)
{
int id = get_current_context_id ();
if (g_hash_table_contains (playback_servers, GINT_TO_POINTER(id)))
{
int type = get_current_context_type ();
if (type == 3) /* Dialog */
{
const char *channel = hexchat_get_info (ph, "channel");
hexchat_commandf (ph, "quote PRIVMSG *playback :clear %s", channel);
}
else if (type == 1) /* Server */
{
g_hash_table_remove (playback_servers, GINT_TO_POINTER(id));
}
}
return HEXCHAT_EAT_NONE;
}
static int
chanactivity_cb (char *word[], char *word_eol[], hexchat_event_attrs *attrs, void *userdata)
{
int id;
if (!attrs->server_time_utc)
return HEXCHAT_EAT_NONE;
id = get_current_context_id ();
if (g_hash_table_contains (playback_servers, GINT_TO_POINTER(id)))
{
char *time_str;
time_str = g_strdup_printf ("%ld", attrs->server_time_utc);
g_hash_table_replace (playback_servers, GINT_TO_POINTER(id), time_str);
}
return HEXCHAT_EAT_NONE;
}
/* End Playback */
/* Buffextras: http://wiki.znc.in/Buffextras */
static inline char *
strip_brackets (char *str)
{
str++;
str[strlen(str) - 1] = '\0';
return str;
}
static int
buffextras_cb (char *word[], char *word_eol[], hexchat_event_attrs *attrs, void *userdata)
{
char *channel, *user_nick, *user_host = NULL, *p;
if (g_ascii_strncasecmp (word[1] + 1, "*buffextras", 11) != 0)
return HEXCHAT_EAT_NONE;
channel = word[3];
user_nick = word[4] + 1;
p = strchr (user_nick, '!');
if (p != NULL)
{
*p = '\0';
user_host = p + 1;
}
/* This might be gross, but there are a lot of repeated calls.. */
#define EMIT(x,...) hexchat_emit_print_attrs(ph,attrs,x,__VA_ARGS__,NULL)
#define IS_EVENT(x) g_str_has_prefix(word_eol[5],x)
if (IS_EVENT ("joined"))
{
EMIT ("Join", user_nick, channel, user_host);
}
else if (IS_EVENT ("quit with message"))
{
EMIT ("Quit", user_nick, strip_brackets(word_eol[7]), user_host);
}
else if (IS_EVENT ("parted with message"))
{
char *reason = strip_brackets(word_eol[7]);
if (*reason)
EMIT ("Part with Reason", user_nick, user_host, channel, reason);
else
EMIT ("Part", user_nick, user_host, channel);
}
else if (IS_EVENT ("is now known as"))
{
EMIT ("Change Nick", user_nick, word[9]);
}
else if (IS_EVENT ("set mode"))
{
char *prefix = (word[7][0] == '+' ? "+" : "-");
EMIT ("Channel Mode Generic", user_nick, prefix, word[7] + 1, channel);
}
else if (IS_EVENT ("changed the topic to"))
{
EMIT ("Topic Change", user_nick, word_eol[9], channel);
}
else if (IS_EVENT ("kicked")) /* X Reason: [Y] */
{
EMIT ("Kick", user_nick, word[6], channel, strip_brackets(word_eol[8]));
}
else
{
return HEXCHAT_EAT_NONE; /* We don't know, let it print */
}
return HEXCHAT_EAT_ALL;
}
/* End Buffextras */
/* Privmsg: http://wiki.znc.in/Privmsg */
static gboolean
prefix_is_channel (char prefix)
{
gboolean is_channel = TRUE; /* Defaults to TRUE as being wrong would be annoying */
int id;
hexchat_list *list;
if (hexchat_get_prefs (ph, "id", NULL, &id) != 2)
return TRUE;
list = hexchat_list_get (ph, "channels");
if (!list)
return TRUE;
while (hexchat_list_next (ph, list))
{
if (hexchat_list_int (ph, list, "id") == id)
{
const char *chantypes = hexchat_list_str (ph, list, "chantypes");
if (strchr (chantypes, prefix) == NULL)
is_channel = FALSE;
break;
}
}
hexchat_list_free (ph, list);
return is_channel;
}
static int
privmsg_cb (char *word[], char *word_eol[], hexchat_event_attrs *attrs, void *userdata)
{
char *sender, *recipient, *msg, *p;
const char *network, *mynick;
if (prefix_is_channel (word[3][0]))
return HEXCHAT_EAT_NONE;
mynick = hexchat_get_info (ph, "nick");
network = hexchat_get_info (ph, "network");
recipient = word[3];
msg = word_eol[4] + 1;
sender = word[1] + 1;
p = strchr (sender, '!');
if (p != NULL)
*p = '\0';
if (hexchat_nickcmp (ph, sender, mynick) == 0
&& hexchat_nickcmp (ph, recipient, mynick) != 0)
{
hexchat_context *new_ctx;
char *event;
hexchat_commandf (ph, "query -nofocus %s", recipient);
new_ctx = hexchat_find_context (ph, network, recipient);
hexchat_set_context (ph, new_ctx);
if (g_ascii_strncasecmp (msg, "\001ACTION", 7) == 0)
{
msg += 7;
msg[strlen (msg) - 1] = '\0';
msg = g_strstrip (msg);
event = "Your Action";
}
else
{
event = "Your Message";
}
hexchat_emit_print_attrs (ph, attrs, event, mynick, msg, NULL);
return HEXCHAT_EAT_ALL;
}
return HEXCHAT_EAT_NONE;
}
/* End Privmsg */
int
hexchat_plugin_init (hexchat_plugin *plugin_handle, char **plugin_name, char **plugin_desc,
char **plugin_version, char *arg)
{
ph = plugin_handle;
*plugin_name = name;
*plugin_desc = desc;
*plugin_version = version;
/* Privmsg */
hexchat_hook_server_attrs (ph, "PRIVMSG", HEXCHAT_PRI_HIGH, privmsg_cb, NULL);
/* Buffextras */
hexchat_hook_server_attrs (ph, "PRIVMSG", HEXCHAT_PRI_HIGHEST, buffextras_cb, NULL);
/* Playback */
playback_servers = g_hash_table_new_full (NULL, NULL, NULL, g_free);
hexchat_hook_print (ph, "Capability List", HEXCHAT_PRI_NORM, capls_cb, NULL);
hexchat_hook_print (ph, "Capability Acknowledgement", HEXCHAT_PRI_NORM, capack_cb, NULL);
hexchat_hook_print (ph, "Open Context", HEXCHAT_PRI_NORM, opencontext_cb, NULL);
hexchat_hook_print (ph, "Close Context", HEXCHAT_PRI_NORM, closecontext_cb, NULL);
hexchat_hook_server (ph, "376", HEXCHAT_PRI_NORM, connected_cb, NULL);
/* FIXME: Events buffextras uses */
hexchat_hook_server_attrs (ph, "PRIVMSG", HEXCHAT_PRI_LOW, chanactivity_cb, NULL);
hexchat_printf (ph, "%s plugin loaded\n", name);
return 1;
}
int
hexchat_plugin_deinit (void)
{
g_hash_table_unref (playback_servers);
hexchat_printf (ph, "%s plugin unloaded\n", name);
return 1;
}

View File

@ -10,6 +10,7 @@ src/common/inbound.c
src/common/notify.c
src/common/outbound.c
src/common/plugin.c
src/common/plugin-timer.c
src/common/server.c
src/common/servlist.c
src/common/textevents.h

View File

@ -4,7 +4,7 @@
#
# Translators:
# Rostislav Raykov <zbrox@i-space.org>, 2005
# n0kS Phr33d0m <shibam@v-gz.cz.cc>, 2012
# Phr33d0m <shibam@v-gz.cz.cc>, 2012
msgid ""
msgstr ""
"Project-Id-Version: HexChat\n"

View File

@ -6,7 +6,7 @@
# Birger Langkjer <birger.langkjer@image.dk>, 1999
# bviktor, 2012
# Daniel Nylander <po@danielnylander.se>, 2007-2008,2010
# Dennis Skov Midjord <dennisskovhermannsen@gmail.com>, 2012-2013
# Incendia <dennisskovhermannsen@gmail.com>, 2012-2013
# Henrik Hansen <hh@mailserver.dk>, 1999
# Keld Simonsen, <keld2keldix.com>, 2011
# Morten Brix Pedersen <morten@wtf.dk>, 2001

134
po/de.po
View File

@ -4,7 +4,7 @@
#
# Translators:
# SSL <albkert@gmail.com>, 2013
# Alf Gaida <agaida@siduction.org>, 2014
# agaida <agaida@siduction.org>, 2014
# Benedikt Roth <Benedikt.Roth@gmx.net>, 2000
# Christian Meyer <linux@chrisim.de>, 2000
# Aray <dataray@web.de>, 2014
@ -13,11 +13,11 @@
# Jakob Kramer <jakob.kramer@gmx.de>, 2012-2013
# Karl Eichwalder <ke@gnu.franken.de>, 2003
# Klaas <klaasdemter@googlemail.com>, 2013
# RJ ., 2012
# Marcel Metz <mmetz@adrian-broher.net>, 2013
# subscious, 2012
# adrian_broher <mmetz@adrian-broher.net>, 2013
# Matthias Warkus <mawa@iname.com>, 1999
# RJ ., 2014
# Richard Schwab <mail@w.tf-w.tf>, 2013-2014
# subscious, 2014
# Nothing4You <mail@w.tf-w.tf>, 2013-2014
# Tamer Fahmy <e9526976@stud2.tuwien.ac.at>, 1999
# TheX <xerus@live.de>, 2013
msgid ""
@ -25,7 +25,7 @@ msgstr ""
"Project-Id-Version: HexChat\n"
"Report-Msgid-Bugs-To: www.hexchat.org\n"
"POT-Creation-Date: 2014-05-14 13:20-0400\n"
"PO-Revision-Date: 2014-07-25 21:49+0000\n"
"PO-Revision-Date: 2014-06-02 04:31+0000\n"
"Last-Translator: Aray <dataray@web.de>\n"
"Language-Team: German (http://www.transifex.com/projects/p/hexchat/language/de/)\n"
"MIME-Version: 1.0\n"
@ -45,7 +45,7 @@ msgstr "HexChar ist ein einfach zu benutzender, aber erweiterbarer IRC-CLient. E
msgid ""
"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, "
"logging, custom themes, and Python/Perl scripts."
msgstr "Hexchat unterstützt Features wie: DCC, SASL, procies, Rechtschreibprüfung, Benachrichtigungen, Logging, Benutzerdesigns und Python/Perl-Scripte"
msgstr ""
#: ../data/misc/hexchat.desktop.in.h:1
msgid "HexChat"
@ -57,11 +57,11 @@ msgstr "IRC-Client"
#: ../data/misc/hexchat.desktop.in.h:3
msgid "Chat with other people online"
msgstr "Chatte online mit anderen Leuten"
msgstr ""
#: ../data/misc/hexchat.desktop.in.h:4
msgid "IM;Chat;"
msgstr "IM;Chat;"
msgstr ""
#: ../data/misc/hexchat.desktop.in.h:5
msgid "Open Safe Mode"
@ -299,7 +299,7 @@ msgstr "CTCP-Flut von %s, %s wird jetzt ignoriert\n"
#: ../src/common/ignore.c:410
#, c-format
msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n"
msgstr "Du wirst gerade von %s ge\"MSGflooded\". Setze gui_autoopen_dialog auf AUS.\n"
msgstr ""
#: ../src/common/notify.c:558
#, c-format
@ -365,7 +365,7 @@ msgstr "Unbekanntes Argument »%s« ignoriert."
#: ../src/common/outbound.c:3093 ../src/common/outbound.c:3123
msgid "Quiet is not supported by this server."
msgstr "Ruhigstellen wird von diesem Server nicht unterstützt."
msgstr ""
#. error
#: ../src/common/outbound.c:3585 ../src/common/outbound.c:3619
@ -670,7 +670,7 @@ msgstr "QUERY [-nofocus] <Nick >, öffnet ein neues Dialogfenster [im Hintergrun
msgid ""
"QUIET <mask> [<quiettype>], quiet everyone matching the mask in the current "
"channel if supported by the server."
msgstr "QUIET <mask>[<quiettype>], stellt jeden im aktuellen Kanal ruhig, der auf diese Maske passt, wenn der Server Ruhigstellen unterstützt."
msgstr ""
#: ../src/common/outbound.c:4041
msgid "QUIT [<reason>], disconnects from the current server"
@ -780,7 +780,7 @@ msgstr "UNLOAD <Name>, entfernt ein Plugin oder Skript"
msgid ""
"UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the"
" server."
msgstr "UNQUIET <mask> [<mask>...], hebt eine Maske auf, die für automatische Ruhigstellung benutzt wird, wenn der Server es unterstützt."
msgstr ""
#: ../src/common/outbound.c:4090
msgid "URL <url>, opens a URL in your browser"
@ -874,27 +874,27 @@ msgstr "%C18*%O$t%C18$1%O zur Benachrichtigungsliste hinzugefügt."
#: ../src/common/textevents.h:9
msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O"
msgstr "%C22*%O$t%C22$1%O: %C18$2%O auf %C24$4%O von %C26$3%O"
msgstr ""
#: ../src/common/textevents.h:12
msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)."
msgstr "%C22*%O$t Kann nicht betreten: %C22$1 %O(%C20Du wurdest gebannt%O)."
msgstr ""
#: ../src/common/textevents.h:18
msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O"
msgstr "%C29*%O$tRechte erteilt: %C29$2%O"
msgstr ""
#: ../src/common/textevents.h:21
msgid "%C23*%O$tCapabilities supported: %C29$2%O"
msgstr "%C23*%O$tRechte unterstützt: %C29$2%O"
msgstr ""
#: ../src/common/textevents.h:24
msgid "%C23*%O$tCapabilities requested: %C29$1%O"
msgstr "%C23*%O$tRechte erbeten: %C29$1%O"
msgstr ""
#: ../src/common/textevents.h:27
msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O"
msgstr "%C24*%O$t%C28$1%O heißt jetzt %C18$2%O"
msgstr ""
#: ../src/common/textevents.h:36
msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O"
@ -902,7 +902,7 @@ msgstr "%C22*%O$t%C26$1%O setzt einen Bann auf %C18$2%O"
#: ../src/common/textevents.h:39
msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O"
msgstr "%C22*%O$tKanal %C22$1%O wurde erstellt am %C24$2%O"
msgstr ""
#: ../src/common/textevents.h:42
msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O"
@ -918,15 +918,15 @@ msgstr "%C22*%O$t%C26$1%O entfernt Voice-Status bei%C26 $2"
#: ../src/common/textevents.h:51
msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O"
msgstr "%C22*%O$t%C26$1%C setzt Ausnahme für %C18$2%O"
msgstr ""
#: ../src/common/textevents.h:54
msgid "%C22*%O$t%C26$1%O gives channel half-operator status to %C18$2%O"
msgstr "%C22*%O$t%C26$1%O erteilt %C18$2%O Halb-Operator-Status"
msgstr ""
#: ../src/common/textevents.h:57
msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O"
msgstr "%C22*%O$t%C26$1%C setzt Invite-Ausnahme für %C18$2%O"
msgstr ""
#: ../src/common/textevents.h:60
msgid "%UChannel Users Topic"
@ -1481,7 +1481,7 @@ msgstr "Server-Name"
#: ../src/common/text.c:1060
msgid "Acknowledged Capabilities"
msgstr "Verliehene Rechte"
msgstr ""
#: ../src/common/text.c:1065
msgid "Server Capabilities"
@ -1489,7 +1489,7 @@ msgstr "Server-Fähigkeiten"
#: ../src/common/text.c:1069
msgid "Requested Capabilities"
msgstr "Angeforderte Rechte"
msgstr ""
#: ../src/common/text.c:1073 ../src/common/text.c:1135
msgid "Old nickname"
@ -1637,11 +1637,11 @@ msgstr "Die Bannmaske"
#: ../src/common/text.c:1201
msgid "The nick of the person who did the quieting"
msgstr "Der Nick der Person, die ruhig stellte"
msgstr ""
#: ../src/common/text.c:1202 ../src/common/text.c:1234
msgid "The quiet mask"
msgstr "Die Ruhigstellungsmaske"
msgstr ""
#: ../src/common/text.c:1206
msgid "The nick who removed the key"
@ -1681,7 +1681,7 @@ msgstr "Der Nick der Person, die den Bann entfernte"
#: ../src/common/text.c:1233
msgid "The nick of the person of did the unquiet'ing"
msgstr "Nick der Person, die die Ruhigstellung aufhob"
msgstr ""
#: ../src/common/text.c:1238
msgid "The nick of the person who did the exempt"
@ -3110,11 +3110,11 @@ msgstr "Einlad."
#: ../src/fe-gtk/banlist.c:76
msgid "Quiets"
msgstr "Ruhigstellungen"
msgstr ""
#: ../src/fe-gtk/banlist.c:77
msgid "Quiet"
msgstr "Ruhigstellen"
msgstr ""
#. poor way to get which is selected but it works
#: ../src/fe-gtk/banlist.c:351 ../src/fe-gtk/banlist.c:385
@ -3405,7 +3405,7 @@ msgstr "Plugins nicht automatisch laden"
#: ../src/fe-gtk/fe-gtk.c:83
msgid "Show plugin/script auto-load directory"
msgstr "Zeige automatisches Ladeverzeichnis für Plugins/Scripte"
msgstr ""
#: ../src/fe-gtk/fe-gtk.c:84
msgid "Show user config directory"
@ -3475,7 +3475,7 @@ msgid ""
"switch to the page with the most recent and important activity (queries "
"first, then channels with hilight, channels with dialogue, channels with "
"other data)"
msgstr "Der \"Seite ändern\" Befehl wechselt zwischen den Seiten im Notizblock. Setze \"Data 1\" auf die Seite, zu der du wechseln möchtest. Wenn \"Data 2\" festgelegt wurde, wird der Wechsel relativ zur aktuellen Position erfolgen. Setze \"Data 1\", um automatisch zu der Seite mit den neuesten und wichtigsten Aktivitäten (Privatchats zuerst, dann Kanäle mit Highlight, Kanäle mit Dialog, Kanäle mit anderen Daten) zu wechseln."
msgstr ""
#: ../src/fe-gtk/fkeys.c:145
msgid ""
@ -3487,7 +3487,7 @@ msgstr "Die Insert in Buffer Aktion fügt den Inhalt von »Data 1« in die Zei
msgid ""
"The Scroll Page command scrolls the text widget up or down one page or one"
" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1."
msgstr "Der Bildlauf-Befehl verschiebt das Text-Widget um eine Seite oder eine Zeile aufwärts oder abwärts. Setze \"Data 1\" Anfang, Ende oder Auf, Ab um +1 oder -1."
msgstr ""
#: ../src/fe-gtk/fkeys.c:149
msgid ""
@ -3552,7 +3552,7 @@ msgstr "Fehler beim Laden der Tastaturkürzel-Konfiguration"
#: ../src/fe-gtk/fkeys.c:540
msgid "Select a row to get help information on its Action."
msgstr "Markiere eine Zeile, für Hilfestellung über die jeweilige Aktion."
msgstr ""
#: ../src/fe-gtk/fkeys.c:809
msgid ": Keyboard Shortcuts"
@ -3859,7 +3859,7 @@ msgstr "Suche beendet, kein Treffer."
#: ../src/fe-gtk/maingui.c:2944
msgid "Highlight _all"
msgstr "Highlight _alle"
msgstr ""
#: ../src/fe-gtk/maingui.c:2950
msgid "Highlight all occurrences, and underline the current occurrence."
@ -3867,7 +3867,7 @@ msgstr "Hebe alle Vorkommnisse hervor und unterstreiche das aktuelle Vorkommnis.
#: ../src/fe-gtk/maingui.c:2952
msgid "Mat_ch case"
msgstr "Groß-/Kleins_chreibung angleichen"
msgstr ""
#: ../src/fe-gtk/maingui.c:2957
msgid "Perform a case-sensitive search."
@ -3875,7 +3875,7 @@ msgstr "Eine Case-Sensitive Suche ausführen"
#: ../src/fe-gtk/maingui.c:2959
msgid "_Regex"
msgstr "_Regulärer Ausdruck"
msgstr ""
#: ../src/fe-gtk/maingui.c:2964
msgid "Regard search string as a regular expression."
@ -3973,7 +3973,7 @@ msgstr "Automatisches Betreten"
#: ../src/fe-gtk/menu.c:1113 ../src/fe-gtk/menu.c:1117
msgid "_Auto-Connect"
msgstr "_Automatisches Verbinden"
msgstr ""
#: ../src/fe-gtk/menu.c:1137
msgid ": User menu"
@ -3998,7 +3998,7 @@ msgstr "Markierungslinie manuell zurücksetzen"
#: ../src/fe-gtk/menu.c:1304
msgid "Marker line reset because exceeded scrollback limit."
msgstr "Markierungslinie wurde zurückgesetzt, weil die begrenzung des Scrollbalkens überschritten wurde."
msgstr ""
#: ../src/fe-gtk/menu.c:1306
msgid "Marker line reset by CLEAR command."
@ -4014,7 +4014,7 @@ msgstr "Empfange Channelliste …"
#: ../src/fe-gtk/menu.c:1461
msgid " has been build without plugin support."
msgstr "wurde ohne Plugin-Support erstellt"
msgstr ""
#: ../src/fe-gtk/menu.c:1469
msgid ""
@ -4215,7 +4215,7 @@ msgstr "Grafisch"
#: ../src/fe-gtk/menu.c:1785
msgid "_Fullscreen"
msgstr "_Vollbild"
msgstr ""
#: ../src/fe-gtk/menu.c:1787
msgid "_Server"
@ -4231,15 +4231,15 @@ msgstr "_Wiederverbinden"
#: ../src/fe-gtk/menu.c:1790
msgid "_Join a Channel..."
msgstr "_Betrete einen Kanal"
msgstr ""
#: ../src/fe-gtk/menu.c:1791
msgid "_List of Channels..."
msgstr "_Liste aller Kanäle"
msgstr ""
#: ../src/fe-gtk/menu.c:1794
msgid "Marked _Away"
msgstr "Als _Abwesend markiert"
msgstr ""
#: ../src/fe-gtk/menu.c:1796
msgid "_Usermenu"
@ -4297,7 +4297,7 @@ msgstr "_Fenster"
#: ../src/fe-gtk/menu.c:1812
msgid "_Ban List..."
msgstr "_Bannliste"
msgstr ""
#: ../src/fe-gtk/menu.c:1813
msgid "Character Chart..."
@ -4309,7 +4309,7 @@ msgstr "Direktchat …"
#: ../src/fe-gtk/menu.c:1815
msgid "File _Transfers..."
msgstr "Dateiüber_tragung"
msgstr ""
#: ../src/fe-gtk/menu.c:1816
msgid "Friends List..."
@ -4321,11 +4321,11 @@ msgstr "Ignorierliste …"
#: ../src/fe-gtk/menu.c:1818
msgid "_Plugins and Scripts..."
msgstr "_Plugins und Scripte"
msgstr ""
#: ../src/fe-gtk/menu.c:1819
msgid "_Raw Log..."
msgstr "_Roher Log"
msgstr ""
#. 61
#: ../src/fe-gtk/menu.c:1820
@ -4564,11 +4564,11 @@ msgstr "_Laden …"
#: ../src/fe-gtk/plugingui.c:270
msgid "_Unload"
msgstr "_Entladen"
msgstr ""
#: ../src/fe-gtk/plugingui.c:273
msgid "_Reload"
msgstr "_Neu laden"
msgstr ""
#: ../src/fe-gtk/rawlog.c:80 ../src/fe-gtk/rawlog.c:136
#: ../src/fe-gtk/textgui.c:479 ../src/fe-gtk/urlgrab.c:216
@ -4694,7 +4694,7 @@ msgstr "Passwort:"
#: ../src/fe-gtk/servlistgui.c:1885
msgid "Password used for login. If in doubt, leave blank."
msgstr "Passwort zum Einloggen. Im Zweifel leer lassen."
msgstr ""
#: ../src/fe-gtk/servlistgui.c:1890
msgid "Character set:"
@ -5106,11 +5106,11 @@ msgstr "Nickvervollständigung sortiert nach:"
#: ../src/fe-gtk/setup.c:205
msgid "Nick completion amount:"
msgstr "Anzahl Nickvervollständigung"
msgstr ""
#: ../src/fe-gtk/setup.c:205
msgid "Threshold of nicks to start listing instead of completing"
msgstr "Schwellwert zum Auflisten von Nicks anstatt Vervollständigung"
msgstr ""
#: ../src/fe-gtk/setup.c:205
msgid "nicks."
@ -5303,7 +5303,7 @@ msgstr "Neue Reiter im Vordergrund:"
#: ../src/fe-gtk/setup.c:319
msgid "Placement of notices:"
msgstr "Plaziern von Notizen:"
msgstr ""
#: ../src/fe-gtk/setup.c:320
msgid "Show channel switcher at:"
@ -5436,7 +5436,7 @@ msgstr "Symbol im Benachrichtigungsbereich blinken lassen bei:"
#: ../src/fe-gtk/setup.c:404
msgid "Bounce dock icon on:"
msgstr "Dock-Icon springen lassen bei:"
msgstr ""
#: ../src/fe-gtk/setup.c:407 ../src/fe-gtk/setup.c:453
msgid "Blink task bar on:"
@ -5451,17 +5451,17 @@ msgstr "Piepsen bei:"
msgid ""
"Play the \"Instant Message Notification\" system sound upon the selected "
"events"
msgstr "Den \"Sofortnachrichten-Benachrichtigungs\"-Systemton bei folgenden Ereignissen abspielen:"
msgstr ""
#: ../src/fe-gtk/setup.c:414
msgid ""
"Play \"message-new-instant\" from the freedesktop.org sound theme upon the "
"selected events"
msgstr "Den \"message-new-instant\"-Ton aus dem freedesktop.org Soundthema bei ausgewählten Ereignissen abspielen"
msgstr ""
#: ../src/fe-gtk/setup.c:416
msgid "Play a GTK beep upon the selected events"
msgstr "einen GTK Piepton bei den ausgewählten Ereignissen abspielen"
msgstr ""
#: ../src/fe-gtk/setup.c:420 ../src/fe-gtk/setup.c:456
msgid "Omit alerts when marked as being away"
@ -5489,7 +5489,7 @@ msgstr "Ins Infofeld schließen"
#: ../src/fe-gtk/setup.c:431
msgid "Automatically mark away/back"
msgstr "Automatisch als abwesend/zurück markieren"
msgstr ""
#: ../src/fe-gtk/setup.c:431
msgid "Automatically change status when hiding to tray."
@ -5497,7 +5497,7 @@ msgstr "Status automatisch wechseln, wenn das Programm in den Tray geschlossen w
#: ../src/fe-gtk/setup.c:433
msgid "Only show tray balloons when hidden or iconified"
msgstr "Balloon-Tipps nur anzeigen, wenn minimiert oder im Tray"
msgstr ""
#: ../src/fe-gtk/setup.c:436 ../src/fe-gtk/setup.c:459
msgid "Highlighted Messages"
@ -5668,7 +5668,7 @@ msgstr "Benutze Serverzeit, wenn unterstützt"
msgid ""
"Display timestamps obtained from server if it supports the time-server "
"extension."
msgstr "Zeitstempel vom Server holen, wenn die \"Time-Server\"-Erweiterung unterstützt wird."
msgstr ""
#: ../src/fe-gtk/setup.c:521
msgid "Automatically reconnect to servers on disconnect"
@ -5684,13 +5684,13 @@ msgstr "Verzögerung beim automatischen Betreten:"
#: ../src/fe-gtk/setup.c:524
msgid "Ban Type:"
msgstr "Bannart:"
msgstr ""
#: ../src/fe-gtk/setup.c:524
msgid ""
"Attempt to use this banmask when banning or quieting. (requires "
"irc_who_join)"
msgstr "Versuchen, diese Bannmaske zu benutzen, wenn gebannt oder ruhiggestellt wird. (benötigt irc_who_join)"
msgstr ""
#: ../src/fe-gtk/setup.c:531 ../src/fe-gtk/setup.c:1817
msgid "Logging"
@ -5795,7 +5795,7 @@ msgstr "Nur für Computer mit mehreren Adressen."
#: ../src/fe-gtk/setup.c:585
msgid "File Transfers"
msgstr "Dateiübertragungen"
msgstr ""
#: ../src/fe-gtk/setup.c:586
msgid "Get my address from the IRC server"
@ -5997,7 +5997,7 @@ msgstr "Chatten"
#: ../src/fe-gtk/setup.c:1816
msgid "Sounds"
msgstr "Töne"
msgstr ""
#: ../src/fe-gtk/setup.c:1818
msgid "Advanced"
@ -6062,12 +6062,12 @@ msgstr "Ignoriere Alles"
#: ../src/fe-gtk/sexy-spell-entry.c:711
msgid "Spelling Suggestions"
msgstr "Rechtschreib-Vorschläge"
msgstr ""
#: ../src/fe-gtk/sexy-spell-entry.c:1272
#, c-format
msgid "enchant error for language: %s"
msgstr "Fehler in der enchant-Bibliothek in Sprache: %s"
msgstr ""
#: ../src/fe-gtk/textgui.c:171
msgid "There was an error parsing the string"

View File

@ -3,7 +3,7 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Filippos Soulakis <txapollo243@gmail.com>, 2013
# txapollo243 <txapollo243@gmail.com>, 2013
# Stathis Kamperis <ekamperi@auth.gr>, 2006
# Γιάννης Ανθυμίδης <yannanth@gmail.com>, 2013
msgid ""

View File

@ -3,19 +3,19 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Alfred Daw <sacarasc@gmail.com>, 2013
# sacarasc <sacarasc@gmail.com>, 2013
# Sir_Burpalot <doctor.z01db3rg@gmail.com>, 2014
# Gareth Owen <gowen72@yahoo.com>, 2004
# Ivan Srbulov <Srbulov.Ivan@gmail.com>, 2013
# Richard Hitt <rbh00@netcom.com>, 2013
# Alfred Daw <sacarasc@gmail.com>, 2012
# tea <Srbulov.Ivan@gmail.com>, 2013
# rbh00 <rbh00@netcom.com>, 2013
# sacarasc <sacarasc@gmail.com>, 2012
# TheEndermen <theendermenofdoom@gmail.com>, 2012
msgid ""
msgstr ""
"Project-Id-Version: HexChat\n"
"Report-Msgid-Bugs-To: www.hexchat.org\n"
"POT-Creation-Date: 2014-05-14 13:20-0400\n"
"PO-Revision-Date: 2014-07-09 19:40+0000\n"
"PO-Revision-Date: 2014-05-21 20:52+0000\n"
"Last-Translator: Sir_Burpalot <doctor.z01db3rg@gmail.com>\n"
"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/hexchat/language/en_GB/)\n"
"MIME-Version: 1.0\n"
@ -126,7 +126,7 @@ msgstr "No active DCCs\n"
#: ../src/common/hexchat.c:867
msgid "_Open Dialog Window"
msgstr "_Open Dialogue Window"
msgstr "_Open Dialog Window"
#: ../src/common/hexchat.c:868
msgid "_Send a File"
@ -3670,7 +3670,7 @@ msgstr "_Always show this dialog after connecting."
#: ../src/fe-gtk/maingui.c:397
msgid "Dialog with"
msgstr "Dialogue with"
msgstr "Dialog with"
#: ../src/fe-gtk/maingui.c:695
#, c-format
@ -3686,7 +3686,7 @@ msgstr "No topic is set"
msgid ""
"This server still has %d channels or dialogs associated with it. Close them "
"all?"
msgstr "This server still has %d channels or dialogues associated with it. Close them all?"
msgstr "This server still has %d channels or dialogs associated with it. Close them all?"
#: ../src/fe-gtk/maingui.c:1203
msgid "Quit HexChat?"
@ -4056,7 +4056,7 @@ msgid ""
"%s = selected nick\n"
"%t = time/date\n"
"%u = selected users account"
msgstr "Dialogue Buttons - Special codes:\n\n%a = all selected nicks\n%c = current channel\n%e = current network name\n%h = selected nick's hostname\n%m = machine info\n%n = your nick\n%s = selected nick\n%t = time/date\n%u = selected users account"
msgstr "Dialog Buttons - Special codes:\n\n%a = all selected nicks\n%c = current channel\n%e = current network name\n%h = selected nick's hostname\n%m = machine info\n%n = your nick\n%s = selected nick\n%t = time/date\n%u = selected users account"
#: ../src/fe-gtk/menu.c:1507
msgid ""
@ -4112,7 +4112,7 @@ msgstr ": Userlist buttons"
#: ../src/fe-gtk/menu.c:1574
msgid ": Dialog buttons"
msgstr ": Dialogue buttons"
msgstr ": Dialog buttons"
#: ../src/fe-gtk/menu.c:1581
msgid ": CTCP Replies"
@ -4428,7 +4428,7 @@ msgstr ": Friends List"
#: ../src/fe-gtk/notifygui.c:429
msgid "Open Dialog"
msgstr "Open Dialogue"
msgstr "Open Dialog"
#: ../src/fe-gtk/plugin-tray.c:264
#, c-format

View File

@ -4,16 +4,16 @@
#
# Translators:
# bviktor, 2012
# Víctor <vegadark89@gmail.com>, 2013-2014
# Víctor <vegadark89@gmail.com>, 2012-2013
# Víctor <vegadark89@gmail.com>, 2014
# Víctor منتصر <vegadark89@gmail.com>, 2013-2014
# Víctor منتصر <vegadark89@gmail.com>, 2012-2013
# Víctor منتصر <vegadark89@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: HexChat\n"
"Report-Msgid-Bugs-To: www.hexchat.org\n"
"POT-Creation-Date: 2014-05-14 13:20-0400\n"
"PO-Revision-Date: 2014-05-14 17:34+0000\n"
"Last-Translator: Víctor <vegadark89@gmail.com>\n"
"Last-Translator: Víctor منتصر <vegadark89@gmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/hexchat/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"

View File

@ -4,7 +4,7 @@
#
# Translators:
# Mikel Olasagasti <hey_neken@euskal.org>, 2004
# Mikel Olasagasti Uranga <mikel@olasagasti.info>, 2012
# Hey_neken <mikel@olasagasti.info>, 2012
msgid ""
msgstr ""
"Project-Id-Version: HexChat\n"

157
po/fi.po
View File

@ -3,14 +3,13 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Toni Willberg, 2014
msgid ""
msgstr ""
"Project-Id-Version: HexChat\n"
"Report-Msgid-Bugs-To: www.hexchat.org\n"
"POT-Creation-Date: 2014-05-14 13:20-0400\n"
"PO-Revision-Date: 2014-06-24 13:54+0000\n"
"Last-Translator: Toni Willberg\n"
"PO-Revision-Date: 2014-05-14 17:20+0000\n"
"Last-Translator: TingPing <tingping@tingping.se>\n"
"Language-Team: Finnish (http://www.transifex.com/projects/p/hexchat/language/fi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -37,7 +36,7 @@ msgstr ""
#: ../data/misc/hexchat.desktop.in.h:2
msgid "IRC Client"
msgstr "IRC Client"
msgstr ""
#: ../data/misc/hexchat.desktop.in.h:3
msgid "Chat with other people online"
@ -120,19 +119,19 @@ msgstr "Ei aktiivisia DCC-yhteyksiä\n"
#: ../src/common/hexchat.c:867
msgid "_Open Dialog Window"
msgstr "Avaa keskusteluikkuna"
msgstr ""
#: ../src/common/hexchat.c:868
msgid "_Send a File"
msgstr "Lähetä tiedo_sto"
msgstr ""
#: ../src/common/hexchat.c:869
msgid "_User Info (WhoIs)"
msgstr "Käyttäjätiedot (Whois)"
msgstr ""
#: ../src/common/hexchat.c:870
msgid "_Add to Friends List"
msgstr "Lisää k_averilistalle"
msgstr ""
#: ../src/common/hexchat.c:871
msgid "_Ignore"
@ -306,12 +305,12 @@ msgstr "Mihinkään palvelimeen ei ole yhteyttä. Kokeile /server <isäntä> [<p
#: ../src/common/outbound.c:280
#, c-format
msgid "Server %s already exists on network %s.\n"
msgstr "Palvelin %s on jo verkossa %s.\n"
msgstr ""
#: ../src/common/outbound.c:286
#, c-format
msgid "Added server %s to network %s.\n"
msgstr "Lisättiin palvelin %s verkoon %s.\n"
msgstr ""
#: ../src/common/outbound.c:371
#, c-format
@ -607,7 +606,7 @@ msgstr ""
#: ../src/common/outbound.c:4020
msgid "NAMES [channel], Lists the nicks on the channel"
msgstr "NAMES [kanava], luettelee kanavalla olevat käyttäjät"
msgstr ""
#: ../src/common/outbound.c:4022
msgid "NCTCP <nick> <message>, Sends a CTCP notice"
@ -1192,7 +1191,7 @@ msgstr ""
#: ../src/common/textevents.h:279
msgid ""
"%C20*%O$tNickname is erroneous or already in use. Use /NICK to try another."
msgstr "%C20*%O$tNimi on virheellinen tai jo käytössä. Käytä /NICK -komentoa yrittääksesi uudelleen."
msgstr ""
#: ../src/common/textevents.h:282
msgid "%C20*%O$tNo such DCC."
@ -1204,11 +1203,11 @@ msgstr ""
#: ../src/common/textevents.h:294
msgid "%C23*%O$tNotify: %C18$1%C is away (%C24$2%O)"
msgstr "%C23*%O$tNotify: %C18$1%C on poissa (%C24$2%O)"
msgstr ""
#: ../src/common/textevents.h:297
msgid "%C23*%O$tNotify: %C18$1%C is back"
msgstr "%C23*%O$tNotify: %C18$1%C tuli takaisin"
msgstr ""
#: ../src/common/textevents.h:300
msgid "$tNotify list is empty."
@ -2108,7 +2107,7 @@ msgstr "Kanada"
#: ../src/common/util.c:1028 ../src/fe-gtk/setup.c:96
msgid "Catalan"
msgstr "Katalaani"
msgstr ""
#: ../src/common/util.c:1029
msgid "Cocos Islands"
@ -3360,7 +3359,7 @@ msgstr "Aloitusaika"
#: ../src/fe-gtk/editlist.c:358 ../src/fe-gtk/fkeys.c:826
msgid "Add"
msgstr "Lisää"
msgstr ""
#: ../src/fe-gtk/editlist.c:360 ../src/fe-gtk/fkeys.c:828
#: ../src/fe-gtk/ignoregui.c:383
@ -3684,7 +3683,7 @@ msgstr "Palvelimelta on edelleen auki %d kanavaa tai keskustelua. Suljetaanko ka
#: ../src/fe-gtk/maingui.c:1203
msgid "Quit HexChat?"
msgstr "Suljetaanko HexChat?"
msgstr ""
#: ../src/fe-gtk/maingui.c:1223
msgid "Don't ask next time."
@ -3721,7 +3720,7 @@ msgstr "<u>Alleviivattu</u>"
#: ../src/fe-gtk/maingui.c:1475
msgid "<i>Italic</i>"
msgstr "<i>Kursiivi</i>"
msgstr ""
#: ../src/fe-gtk/maingui.c:1476
msgid "Normal"
@ -3737,11 +3736,11 @@ msgstr "Värit 815"
#: ../src/fe-gtk/maingui.c:1534
msgid "_Settings"
msgstr "A_setukset"
msgstr ""
#: ../src/fe-gtk/maingui.c:1536
msgid "_Log to Disk"
msgstr "Tallenna _lokitiedosto levylle"
msgstr ""
#: ../src/fe-gtk/maingui.c:1537
msgid "_Reload Scrollback"
@ -3753,7 +3752,7 @@ msgstr ""
#: ../src/fe-gtk/maingui.c:1541
msgid "_Hide Join/Part Messages"
msgstr "Piilota liittymis- ja poistumisviestit"
msgstr ""
#: ../src/fe-gtk/maingui.c:1550
msgid "_Extra Alerts"
@ -3761,7 +3760,7 @@ msgstr ""
#: ../src/fe-gtk/maingui.c:1552
msgid "Beep on _Message"
msgstr "Anna ääni_merkki kun uusi viesti saapuu"
msgstr ""
#: ../src/fe-gtk/maingui.c:1554
msgid "Blink Tray _Icon"
@ -3835,7 +3834,7 @@ msgstr "Anna uusi kutsumanimi:"
#: ../src/fe-gtk/maingui.c:2832
msgid "No results found."
msgstr "Ei osumia."
msgstr ""
#: ../src/fe-gtk/maingui.c:2928
msgid "Search hit end or not found."
@ -3859,7 +3858,7 @@ msgstr ""
#: ../src/fe-gtk/maingui.c:2959
msgid "_Regex"
msgstr "_Regex"
msgstr ""
#: ../src/fe-gtk/maingui.c:2964
msgid "Regard search string as a regular expression."
@ -3919,7 +3918,7 @@ msgstr "Poissaoloviesti:"
#: ../src/fe-gtk/menu.c:737
#, c-format
msgid "%d nicks selected."
msgstr "%d nimeä valittu."
msgstr ""
#: ../src/fe-gtk/menu.c:862
msgid ""
@ -4338,7 +4337,7 @@ msgstr "Tallenna teksti..."
#: ../src/fe-gtk/menu.c:1828
msgid "Search"
msgstr "Etsi"
msgstr ""
#: ../src/fe-gtk/menu.c:1829
msgid "Search Text..."
@ -4346,11 +4345,11 @@ msgstr "Hae tekstistä..."
#: ../src/fe-gtk/menu.c:1830
msgid "Search Next"
msgstr "Etsi seuraava"
msgstr ""
#: ../src/fe-gtk/menu.c:1831
msgid "Search Previous"
msgstr "Etsi edellinen"
msgstr ""
#: ../src/fe-gtk/menu.c:1834 ../src/fe-gtk/menu.c:2321
msgid "_Help"
@ -4393,7 +4392,7 @@ msgstr "%d minuuttia sitten"
#: ../src/fe-gtk/notifygui.c:195
#, c-format
msgid "An hour ago"
msgstr "Tunti sitten"
msgstr ""
#: ../src/fe-gtk/notifygui.c:197
#, c-format
@ -4418,7 +4417,7 @@ msgstr "Pilkuilla eroteltu luettelo IRC-verkkoja."
#: ../src/fe-gtk/notifygui.c:407
msgid ": Friends List"
msgstr ": Kaverilista"
msgstr ""
#: ../src/fe-gtk/notifygui.c:429
msgid "Open Dialog"
@ -4579,11 +4578,11 @@ msgstr "Haluatko todella poistaa verkon \"%s\" ja kaikki sen palvelimet?"
#: ../src/fe-gtk/servlistgui.c:1126 ../src/fe-gtk/servlistgui.c:1557
msgid "User name cannot be left blank."
msgstr "Käyttäjätunnus ei voi olla tyhjä."
msgstr ""
#: ../src/fe-gtk/servlistgui.c:1578
msgid "You must have two unique nick names."
msgstr "Lempinimet pitää olla uniikkeja."
msgstr ""
#: ../src/fe-gtk/servlistgui.c:1630
msgid ""
@ -4598,11 +4597,11 @@ msgstr "XChat: Muokkaa %s-verkkoa"
#: ../src/fe-gtk/servlistgui.c:1725
msgid "Servers"
msgstr "Palvelimet"
msgstr ""
#: ../src/fe-gtk/servlistgui.c:1726
msgid "Autojoin channels"
msgstr "Liity kanaville automaattisesti"
msgstr ""
#: ../src/fe-gtk/servlistgui.c:1727
msgid "Connect commands"
@ -4634,7 +4633,7 @@ msgstr "Älä yritä yhdistää muihin palvelimiin, jos valittuun palvelimeen ei
#: ../src/fe-gtk/servlistgui.c:1862
msgid "Connect to this network automatically"
msgstr "Yhdistä tähän verkkoon automaattisesti"
msgstr ""
#: ../src/fe-gtk/servlistgui.c:1863
msgid "Bypass proxy server"
@ -4776,7 +4775,7 @@ msgstr ""
#: ../src/fe-gtk/setup.c:99
msgid "Czech"
msgstr "Tsekki"
msgstr ""
#: ../src/fe-gtk/setup.c:100
msgid "Danish"
@ -4784,11 +4783,11 @@ msgstr ""
#: ../src/fe-gtk/setup.c:101
msgid "Dutch"
msgstr "Hollanti"
msgstr ""
#: ../src/fe-gtk/setup.c:102
msgid "English (British)"
msgstr "Englanti (Brittiläinen)"
msgstr ""
#: ../src/fe-gtk/setup.c:103
msgid "English"
@ -4800,23 +4799,23 @@ msgstr "Viro"
#: ../src/fe-gtk/setup.c:105
msgid "Finnish"
msgstr "Suomi"
msgstr ""
#: ../src/fe-gtk/setup.c:106
msgid "French"
msgstr "Ranska"
msgstr ""
#: ../src/fe-gtk/setup.c:107
msgid "Galician"
msgstr "Galego"
msgstr ""
#: ../src/fe-gtk/setup.c:108
msgid "German"
msgstr "Saksa"
msgstr ""
#: ../src/fe-gtk/setup.c:109
msgid "Greek"
msgstr "Kreikka"
msgstr ""
#: ../src/fe-gtk/setup.c:110
msgid "Gujarati"
@ -4828,7 +4827,7 @@ msgstr "Intia"
#: ../src/fe-gtk/setup.c:112
msgid "Hungarian"
msgstr "Unkari"
msgstr ""
#: ../src/fe-gtk/setup.c:113
msgid "Indonesian"
@ -4836,15 +4835,15 @@ msgstr ""
#: ../src/fe-gtk/setup.c:114
msgid "Italian"
msgstr "Italia"
msgstr ""
#: ../src/fe-gtk/setup.c:115
msgid "Japanese"
msgstr "Japani"
msgstr ""
#: ../src/fe-gtk/setup.c:116
msgid "Kannada"
msgstr "Kannada"
msgstr ""
#: ../src/fe-gtk/setup.c:117
msgid "Kinyarwanda"
@ -4852,19 +4851,19 @@ msgstr ""
#: ../src/fe-gtk/setup.c:118
msgid "Korean"
msgstr "Korea"
msgstr ""
#: ../src/fe-gtk/setup.c:119
msgid "Latvian"
msgstr "Latvia"
msgstr ""
#: ../src/fe-gtk/setup.c:120
msgid "Lithuanian"
msgstr "Liettua"
msgstr ""
#: ../src/fe-gtk/setup.c:121
msgid "Macedonian"
msgstr "Makedonia"
msgstr ""
#: ../src/fe-gtk/setup.c:122
msgid "Malay"
@ -4876,51 +4875,51 @@ msgstr ""
#: ../src/fe-gtk/setup.c:124
msgid "Norwegian (Bokmal)"
msgstr "Norja (Bokmal)"
msgstr ""
#: ../src/fe-gtk/setup.c:125
msgid "Norwegian (Nynorsk)"
msgstr "Norja (Nynorsk)"
msgstr ""
#: ../src/fe-gtk/setup.c:126
msgid "Polish"
msgstr "Puola"
msgstr ""
#: ../src/fe-gtk/setup.c:127
msgid "Portuguese"
msgstr "Portugali"
msgstr ""
#: ../src/fe-gtk/setup.c:128
msgid "Portuguese (Brazilian)"
msgstr "Portugali (Brasilian)"
msgstr ""
#: ../src/fe-gtk/setup.c:129
msgid "Punjabi"
msgstr "Punjabi"
msgstr ""
#: ../src/fe-gtk/setup.c:130
msgid "Russian"
msgstr "Venäjä"
msgstr ""
#: ../src/fe-gtk/setup.c:131
msgid "Serbian"
msgstr "Serbia"
msgstr ""
#: ../src/fe-gtk/setup.c:132
msgid "Slovak"
msgstr "Slovakki"
msgstr ""
#: ../src/fe-gtk/setup.c:133
msgid "Slovenian"
msgstr "Sloveeni"
msgstr ""
#: ../src/fe-gtk/setup.c:134
msgid "Spanish"
msgstr "Espanja"
msgstr ""
#: ../src/fe-gtk/setup.c:135
msgid "Swedish"
msgstr "Ruotsi"
msgstr ""
#: ../src/fe-gtk/setup.c:136
msgid "Thai"
@ -4928,11 +4927,11 @@ msgstr "Thaimaa"
#: ../src/fe-gtk/setup.c:137
msgid "Turkish"
msgstr "Turkki"
msgstr ""
#: ../src/fe-gtk/setup.c:138
msgid "Ukrainian"
msgstr "Ukraina"
msgstr ""
#: ../src/fe-gtk/setup.c:139
msgid "Vietnamese"
@ -4940,7 +4939,7 @@ msgstr "Vietnam"
#: ../src/fe-gtk/setup.c:140
msgid "Walloon"
msgstr "Valloni"
msgstr ""
#: ../src/fe-gtk/setup.c:147 ../src/fe-gtk/setup.c:1814
msgid "General"
@ -4948,11 +4947,11 @@ msgstr "Yleiset"
#: ../src/fe-gtk/setup.c:149
msgid "Language:"
msgstr "Kieli:"
msgstr ""
#: ../src/fe-gtk/setup.c:150
msgid "Main font:"
msgstr "Pääfontti:"
msgstr ""
#: ../src/fe-gtk/setup.c:152
msgid "Font:"
@ -4996,7 +4995,7 @@ msgstr "Läpikuultavuuden säätö"
#: ../src/fe-gtk/setup.c:162
msgid "Window Opacity:"
msgstr "Ikkunan läpinäkyvyys:"
msgstr ""
#: ../src/fe-gtk/setup.c:164 ../src/fe-gtk/setup.c:538
msgid "Time Stamps"
@ -5064,7 +5063,7 @@ msgstr "Oikoluku"
#: ../src/fe-gtk/setup.c:195
msgid "Dictionaries to use:"
msgstr "Käytettävät sanakirjat:"
msgstr ""
#: ../src/fe-gtk/setup.c:197
msgid ""
@ -5098,7 +5097,7 @@ msgstr ""
#: ../src/fe-gtk/setup.c:205
msgid "nicks."
msgstr "nimeä."
msgstr ""
#: ../src/fe-gtk/setup.c:213
msgid "Graphical"
@ -5232,7 +5231,7 @@ msgstr "Vain itse avatut"
#: ../src/fe-gtk/setup.c:293
msgid "Automatic"
msgstr "Automaattinen"
msgstr ""
#: ../src/fe-gtk/setup.c:294
msgid "In an extra tab"
@ -5473,7 +5472,7 @@ msgstr ""
#: ../src/fe-gtk/setup.c:431
msgid "Automatically mark away/back"
msgstr "Päivitä paikalla/poissa -statuksesi automaattisesti"
msgstr ""
#: ../src/fe-gtk/setup.c:431
msgid "Automatically change status when hiding to tray."
@ -5548,7 +5547,7 @@ msgstr ""
#: ../src/fe-gtk/setup.c:481 ../src/fe-gtk/setup.c:514
msgid "Miscellaneous"
msgstr "Sekalaiset"
msgstr ""
#: ../src/fe-gtk/setup.c:482
msgid "Display MODEs in raw form"
@ -5626,7 +5625,7 @@ msgstr ""
#: ../src/fe-gtk/setup.c:515
msgid "Real name:"
msgstr "Oikea nimi:"
msgstr ""
#: ../src/fe-gtk/setup.c:517
msgid "Alternative fonts:"
@ -5779,7 +5778,7 @@ msgstr "Käyttökelpoinen vain, kun tietokoneessa on monta osoitetta."
#: ../src/fe-gtk/setup.c:585
msgid "File Transfers"
msgstr "Tiedostojen siirrot"
msgstr ""
#: ../src/fe-gtk/setup.c:586
msgid "Get my address from the IRC server"
@ -5981,7 +5980,7 @@ msgstr "Keskustelu"
#: ../src/fe-gtk/setup.c:1816
msgid "Sounds"
msgstr "Äänet"
msgstr ""
#: ../src/fe-gtk/setup.c:1818
msgid "Advanced"
@ -6007,7 +6006,7 @@ msgstr "Puuta ei voi laittaa ylös eikä alas!\nMuuta ensin välilehtiasettelua
#: ../src/fe-gtk/setup.c:2160
msgid "The Real name option cannot be left blank. Falling back to \"realname\"."
msgstr "Oikeaa nimeä ei voi jättää tyhjäksi."
msgstr ""
#: ../src/fe-gtk/setup.c:2167
msgid "Some settings were changed that require a restart to take full effect."
@ -6084,7 +6083,7 @@ msgstr "Kokeile kaikki"
#: ../src/fe-gtk/textgui.c:485
msgid "OK"
msgstr "OK"
msgstr ""
#: ../src/fe-gtk/urlgrab.c:198
msgid ": URL Grabber"

View File

@ -8,16 +8,14 @@
# Calinou, 2014
# Misdre <misdre@hexchat.misdre.info>, 2013
# Misdre <misdre@hexchat.misdre.info>, 2013
# Towinet, 2014
# Calinou, 2013
# Yannick Le Guen <leguen.yannick@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: HexChat\n"
"Report-Msgid-Bugs-To: www.hexchat.org\n"
"POT-Creation-Date: 2014-05-14 13:20-0400\n"
"PO-Revision-Date: 2014-07-21 15:47+0000\n"
"Last-Translator: Towinet\n"
"PO-Revision-Date: 2014-05-14 17:20+0000\n"
"Last-Translator: TingPing <tingping@tingping.se>\n"
"Language-Team: French (http://www.transifex.com/projects/p/hexchat/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -1418,7 +1416,7 @@ msgstr "Hôte de la personne"
#: ../src/common/text.c:1035
msgid "The account of the person"
msgstr "Le compte de la personne"
msgstr ""
#: ../src/common/text.c:1039 ../src/common/text.c:1046
#: ../src/common/text.c:1053 ../src/common/text.c:1265
@ -3213,7 +3211,7 @@ msgstr "_Télécharger"
#: ../src/fe-gtk/chanlist.c:806
msgid "Save _List..."
msgstr "Enregistrer la _Liste..."
msgstr "Sauver la _Liste"
#. =============================================================
#: ../src/fe-gtk/chanlist.c:819
@ -3319,7 +3317,7 @@ msgstr "Envois"
#: ../src/fe-gtk/dccgui.c:858
msgid "Downloads"
msgstr "Récupérations"
msgstr "Récupération"
#: ../src/fe-gtk/dccgui.c:863
msgid "Details"
@ -3456,7 +3454,7 @@ msgid ""
"When run all \\n characters in Data 1 are used to deliminate separate "
"commands so it is possible to run more than one command. If you want a \\ "
"in the actual text run then enter \\\\"
msgstr "La commande d'action Exécuter (Run) lance la donnée dans Data 1 telle que si elle avait été tapée dans la boîte de saisie dans laquelle vous pressez la séquence de touches. Ainsi elle peut contenir du texte (qui sera envoyé à la chaîne/personne), des commandes ou des commandes d'utilisateur. Lorsqu'elle est exécutée tous les caractères \\n dans Données 1 sont utilisés pour délimiter les commandes séparées, afin qu'il soit possible de faire fonctionner davantage qu'une commande. Si vous voulez un \\n dans le texte réel alors entrez \\\\"
msgstr ""
#: ../src/fe-gtk/fkeys.c:143
msgid ""
@ -3466,7 +3464,7 @@ msgid ""
"switch to the page with the most recent and important activity (queries "
"first, then channels with hilight, channels with dialogue, channels with "
"other data)"
msgstr "La page changements (Change Page) commande le basculement entre les pages du carnet. Si Donnée 2 est paramétrée à n'importe quoi alors le commutateur sera relatif à la position actuelle. Paramétrer Donnée 1 à auto afin de commuter vers la page ayant l'activité la plus récente et la plus fréquente (requêtes d'abord, puis canaux mis en évidence, canaux avec des dialogues, canaux avec d'autres données)"
msgstr ""
#: ../src/fe-gtk/fkeys.c:145
msgid ""
@ -3478,7 +3476,7 @@ msgstr "La commande Insert in Buffer insérera le contenu de Données 1 dans l
msgid ""
"The Scroll Page command scrolls the text widget up or down one page or one"
" line. Set Data 1 to either Top, Bottom, Up, Down, +1 or -1."
msgstr "La commande Scroll Page fait défiler le widget textuel vers le haut ou vers le bas d'une page ou d'une ligne. Définir Data 1 soit à Top, Bottom, Up, Down, +1 ou -1."
msgstr ""
#: ../src/fe-gtk/fkeys.c:149
msgid ""
@ -3580,7 +3578,7 @@ msgstr "DCC"
#: ../src/fe-gtk/ignoregui.c:165
msgid "Unignore"
msgstr "Ne plus ignorer"
msgstr "Ne plus exclure"
#: ../src/fe-gtk/ignoregui.c:293
msgid "Are you sure you want to remove all ignores?"
@ -3977,27 +3975,27 @@ msgstr "Éditer ce menu..."
#: ../src/fe-gtk/menu.c:1292
msgid "Marker line disabled."
msgstr "Ligne de repérage désactivée."
msgstr ""
#: ../src/fe-gtk/menu.c:1298
msgid "Marker line never set."
msgstr "Ligne de repérage jamais définie."
msgstr ""
#: ../src/fe-gtk/menu.c:1302
msgid "Marker line reset manually."
msgstr "Ligne de repérage repositionnée manuellement."
msgstr ""
#: ../src/fe-gtk/menu.c:1304
msgid "Marker line reset because exceeded scrollback limit."
msgstr "Ligne de repérage repositionnée à cause de la limite de défilement."
msgstr ""
#: ../src/fe-gtk/menu.c:1306
msgid "Marker line reset by CLEAR command."
msgstr "Ligne de repérage repositionnée avec la commande CLEAR."
msgstr ""
#: ../src/fe-gtk/menu.c:1308
msgid "Marker line state unknown."
msgstr "État de la ligne de repérage inconnu."
msgstr ""
#: ../src/fe-gtk/menu.c:1395
msgid "Retrieve channel list..."
@ -4329,7 +4327,7 @@ msgstr "Repositionner la ligne de repérage"
#: ../src/fe-gtk/menu.c:1823
msgid "Move to Marker Line"
msgstr "Aller à la ligne de repérage"
msgstr ""
#: ../src/fe-gtk/menu.c:1824
msgid "_Copy Selection"
@ -4590,7 +4588,7 @@ msgstr "Le nom d'utilisateur ne peut être vide."
#: ../src/fe-gtk/servlistgui.c:1578
msgid "You must have two unique nick names."
msgstr "Vous devez avoir deux pseudonymes uniques."
msgstr ""
#: ../src/fe-gtk/servlistgui.c:1630
msgid ""
@ -5427,7 +5425,7 @@ msgstr "Faire clignoter l'icône de barre d'état"
#: ../src/fe-gtk/setup.c:404
msgid "Bounce dock icon on:"
msgstr "Faire rebondir l'icône du dock sur :"
msgstr ""
#: ../src/fe-gtk/setup.c:407 ../src/fe-gtk/setup.c:453
msgid "Blink task bar on:"
@ -5579,7 +5577,7 @@ msgstr "Cacher les messages d'entrée/sortie par défaut."
#: ../src/fe-gtk/setup.c:485
msgid "Hide nick change messages"
msgstr "Cacher les messages de changement de pseudonyme"
msgstr ""
#: ../src/fe-gtk/setup.c:492
msgid "*!*@*.host"
@ -5629,7 +5627,7 @@ msgstr "Ajouter automatiquement les informations de couleur"
msgid ""
"Automatically include color information in copied lines of text. Otherwise,"
" include color information if the CONTROL key is held down while selecting."
msgstr "Ajouter automatiquement les informations de couleurs dans les lignes de texte copiées. Sinon, la couleur sera ajoutée uniquement si la touche Control est appuyée lors de la sélection."
msgstr "Ajouter automatiquement les informations de couleurs dans les lignes de texte copiées. Sinon, la couleur sera ajouté uniquement si la touche Control est appuyée lors de la sélection."
#: ../src/fe-gtk/setup.c:515
msgid "Real name:"
@ -5860,7 +5858,7 @@ msgstr "Sélectionner une image"
#: ../src/fe-gtk/setup.c:1088
msgid "Select Download Folder"
msgstr "Choisir le dossier pour la réception de fichiers"
msgstr "Choisir le dossier pour le réception de fichiers"
#: ../src/fe-gtk/setup.c:1098
msgid "Select font"
@ -6091,7 +6089,7 @@ msgstr "Tout tester"
#: ../src/fe-gtk/textgui.c:485
msgid "OK"
msgstr "OK"
msgstr ""
#: ../src/fe-gtk/urlgrab.c:198
msgid ": URL Grabber"

View File

@ -4,8 +4,8 @@
#
# Translators:
# Andhika Padmawan <andhika.padmawan@gmail.com>, 2010
# Rahmat Bambang <doplank@gmx.com>, 2012-2013
# Rahmat Bambang <doplank@gmx.com>, 2013
# doplank <doplank@gmx.com>, 2012-2013
# doplank <doplank@gmx.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: HexChat\n"

File diff suppressed because it is too large Load Diff

View File

@ -3,15 +3,15 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Seong-ho Cho <darkcircle.0426@gmail.com>, 2014
# Seong-ho Cho <darkcircle.0426@gmail.com>, 2014
# Darkcircle <darkcircle.0426@gmail.com>, 2014
# Darkcircle <darkcircle.0426@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: HexChat\n"
"Report-Msgid-Bugs-To: www.hexchat.org\n"
"POT-Creation-Date: 2014-05-14 13:20-0400\n"
"PO-Revision-Date: 2014-05-15 13:09+0000\n"
"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n"
"Last-Translator: Darkcircle <darkcircle.0426@gmail.com>\n"
"Language-Team: Korean (http://www.transifex.com/projects/p/hexchat/language/ko/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"

View File

@ -4,8 +4,8 @@
#
# Translators:
# bviktor, 2012
# Thorne Heathenspring <thorne@null.net>, 2013
# Thorne Heathenspring <thorne@null.net>, 2012
# Thorne <thorne@null.net>, 2013
# Thorne <thorne@null.net>, 2012
msgid ""
msgstr ""
"Project-Id-Version: HexChat\n"

View File

@ -3,9 +3,9 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Xtreme Power <neethan98@hotmail.ca>, 2013
# Thor K. H. <nitrolinken@gmail.com>, 2013
# Thor K. H. <nitrolinken@gmail.com>, 2012-2013
# xtremesmw <neethan98@hotmail.ca>, 2013
# Thor K.H. <nitrolinken@gmail.com>, 2013
# Thor K.H. <nitrolinken@gmail.com>, 2012-2013
msgid ""
msgstr ""
"Project-Id-Version: HexChat\n"

305
po/pl.po

File diff suppressed because it is too large Load Diff

View File

@ -3,8 +3,8 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# artur simões <artursimoes.pt@gmail.com>, 2013
# artur simões <artursimoes.pt@gmail.com>, 2012-2013
# artur_pt <artursimoes.pt@gmail.com>, 2013
# artur_pt <artursimoes.pt@gmail.com>, 2012-2013
# Sandro Amaral <sandro123iv@gmail.com>, 2013
# Vitor Antunes <vhda@mega.ist.utl.pt>, 2004
msgid ""

View File

@ -6,16 +6,15 @@
# Flamarion Jorge <flamarilinux@yahoo.com.br>, 2009
# Flamarion Jorge Flamarion <jorge.flamarion@gmail.com>, 2012
# Frédéric L. W. Meunier <fredlwm@olympiquedemarseille.org>, 20, 2009
# Leonardo Pires Felix <leonardo@piresfelix.com>, 2013
# Matheus Felipe Braga, 2014
# Matheus Macabu <mkbu95@gmail.com>, 2012
# Leonardopf <leonardo@piresfelix.com>, 2013
# mkbu95 <mkbu95@gmail.com>, 2012
msgid ""
msgstr ""
"Project-Id-Version: HexChat\n"
"Report-Msgid-Bugs-To: www.hexchat.org\n"
"POT-Creation-Date: 2014-05-14 13:20-0400\n"
"PO-Revision-Date: 2014-06-05 15:02+0000\n"
"Last-Translator: Matheus Felipe Braga\n"
"PO-Revision-Date: 2014-05-14 17:20+0000\n"
"Last-Translator: TingPing <tingping@tingping.se>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/hexchat/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -230,11 +229,11 @@ msgstr "Enviar arquivo"
#: ../src/common/hexchat.c:921
msgid "Dialog"
msgstr "Diálogo"
msgstr ""
#: ../src/common/hexchat.c:930
msgid "WhoIs"
msgstr "Quem É"
msgstr ""
#: ../src/common/hexchat.c:931
msgid "Send"
@ -1466,7 +1465,7 @@ msgstr "Mensagem"
#: ../src/common/text.c:1379 ../src/common/text.c:1507
#: ../src/common/text.c:1549
msgid "Server Name"
msgstr "Servidor"
msgstr ""
#: ../src/common/text.c:1060
msgid "Acknowledged Capabilities"
@ -1714,7 +1713,7 @@ msgstr ""
#: ../src/common/text.c:1268
msgid "Full name"
msgstr "Nome completo"
msgstr ""
#: ../src/common/text.c:1273
msgid "Channel Membership/\"is an IRC operator\""
@ -1722,11 +1721,11 @@ msgstr ""
#: ../src/common/text.c:1278
msgid "Server Information"
msgstr "Informações do servidor"
msgstr ""
#: ../src/common/text.c:1283 ../src/common/text.c:1288
msgid "Idle time"
msgstr "Tempo inativo"
msgstr ""
#: ../src/common/text.c:1289
msgid "Signon time"
@ -1773,7 +1772,7 @@ msgstr ""
#: ../src/fe-gtk/menu.c:1781 ../src/fe-gtk/setup.c:214
#: ../src/fe-gtk/textgui.c:382
msgid "Text"
msgstr "Texto"
msgstr ""
#: ../src/common/text.c:1349
msgid "Nick of person who invited you"
@ -1793,16 +1792,16 @@ msgstr ""
#: ../src/common/text.c:1369 ../src/common/text.c:1515
msgid "IP"
msgstr "IP"
msgstr ""
#: ../src/common/text.c:1370 ../src/common/text.c:1406
msgid "Port"
msgstr "Porta"
msgstr ""
#: ../src/common/text.c:1380 ../src/fe-gtk/notifygui.c:125
#: ../src/fe-gtk/setup.c:1820
msgid "Network"
msgstr "Rede"
msgstr ""
#: ../src/common/text.c:1385 ../src/common/text.c:1395
msgid "Modes string"
@ -1823,7 +1822,7 @@ msgstr ""
#: ../src/common/text.c:1472 ../src/common/text.c:1481
#: ../src/common/text.c:1487
msgid "Filename"
msgstr "Nome do arquivo"
msgstr ""
#: ../src/common/text.c:1423 ../src/common/text.c:1430
msgid "Destination filename"
@ -1843,7 +1842,7 @@ msgstr "Posição"
#: ../src/common/text.c:1488 ../src/fe-gtk/dccgui.c:817
msgid "Size"
msgstr "Tamanho"
msgstr ""
#: ../src/common/text.c:1493
msgid "DCC String"
@ -1993,7 +1992,7 @@ msgstr ""
#: ../src/common/util.c:998
msgid "Reverse DNS"
msgstr "DNS Reverso"
msgstr ""
#: ../src/common/util.c:999
msgid "American Samoa"
@ -2081,7 +2080,7 @@ msgstr ""
#: ../src/common/util.c:1020
msgid "Brazil"
msgstr "Brasil"
msgstr ""
#: ../src/common/util.c:1021
msgid "Bahamas"
@ -2237,7 +2236,7 @@ msgstr ""
#: ../src/common/util.c:1059
msgid "Egypt"
msgstr "Egito"
msgstr ""
#: ../src/common/util.c:1060
msgid "Western Sahara"
@ -3057,7 +3056,7 @@ msgstr ""
#: ../src/common/dbus/dbus-plugin.c:30
msgid "remote access"
msgstr "acesso remoto"
msgstr ""
#: ../src/common/dbus/dbus-plugin.c:31
msgid "plugin for remote access using DBUS"
@ -3143,11 +3142,11 @@ msgstr ""
#: ../src/fe-gtk/banlist.c:728
msgid "From"
msgstr "De"
msgstr ""
#: ../src/fe-gtk/banlist.c:729
msgid "Date"
msgstr "Data"
msgstr ""
#: ../src/fe-gtk/banlist.c:785
msgid "You can only open the Ban List window while in a channel tab."
@ -3164,7 +3163,7 @@ msgstr ": Lista de banidos (%s)"
#: ../src/fe-gtk/banlist.c:848 ../src/fe-gtk/notifygui.c:425
msgid "Remove"
msgstr "Remover"
msgstr ""
#: ../src/fe-gtk/banlist.c:850
msgid "Crop"
@ -3172,7 +3171,7 @@ msgstr ""
#: ../src/fe-gtk/banlist.c:854
msgid "Refresh"
msgstr "Atualizar"
msgstr ""
#: ../src/fe-gtk/chanlist.c:98
#, c-format
@ -3186,7 +3185,7 @@ msgstr ""
#: ../src/fe-gtk/chanlist.c:624 ../src/fe-gtk/chanlist.c:812
msgid "_Join Channel"
msgstr "_Entrar no Canal"
msgstr "E_ntrar no Canal"
#: ../src/fe-gtk/chanlist.c:626
msgid "_Copy Channel Name"
@ -3203,7 +3202,7 @@ msgstr ": Lista de Canais (%s)"
#: ../src/fe-gtk/chanlist.c:794
msgid "_Search"
msgstr "_Procurar"
msgstr ""
#: ../src/fe-gtk/chanlist.c:800
msgid "_Download List"
@ -3216,7 +3215,7 @@ msgstr "Salvar _Lista..."
#. =============================================================
#: ../src/fe-gtk/chanlist.c:819
msgid "Show only:"
msgstr "Exibir apenas:"
msgstr ""
#: ../src/fe-gtk/chanlist.c:831
msgid "channels with"
@ -3224,7 +3223,7 @@ msgstr "canais com"
#: ../src/fe-gtk/chanlist.c:844
msgid "to"
msgstr "para"
msgstr ""
#: ../src/fe-gtk/chanlist.c:856
msgid "users."
@ -3246,7 +3245,7 @@ msgstr "Tipo de pesquisa:"
#: ../src/fe-gtk/chanlist.c:901
msgid "Simple Search"
msgstr "Pesquisa Simples"
msgstr ""
#: ../src/fe-gtk/chanlist.c:902
msgid "Pattern Match (Wildcards)"
@ -3264,12 +3263,12 @@ msgstr "Encontrar:"
#: ../src/fe-gtk/dccgui.c:150
#, c-format
msgid "Send file to %s"
msgstr "Enviar arquivo para %s"
msgstr ""
#. unknown error
#: ../src/fe-gtk/dccgui.c:526
msgid "That file is not resumable."
msgstr "Este arquivo não é resumivel."
msgstr ""
#: ../src/fe-gtk/dccgui.c:530
#, c-format
@ -3277,7 +3276,7 @@ msgid ""
"Cannot access file: %s\n"
"%s.\n"
"Resuming not possible."
msgstr "Falha ao acessar arquivo: %s\n%s.\nResumir não é possivel."
msgstr ""
#: ../src/fe-gtk/dccgui.c:537
msgid ""
@ -3296,11 +3295,11 @@ msgstr ""
#: ../src/fe-gtk/dccgui.c:815 ../src/fe-gtk/dccgui.c:1056
#: ../src/fe-gtk/notifygui.c:124
msgid "Status"
msgstr "Status"
msgstr ""
#: ../src/fe-gtk/dccgui.c:816 ../src/fe-gtk/plugingui.c:65
msgid "File"
msgstr "Arquivo"
msgstr ""
#: ../src/fe-gtk/dccgui.c:821
msgid "ETA"
@ -3313,7 +3312,7 @@ msgstr "Ambos"
#: ../src/fe-gtk/dccgui.c:852
msgid "Uploads"
msgstr "Uploads"
msgstr ""
#: ../src/fe-gtk/dccgui.c:858
msgid "Downloads"
@ -3321,7 +3320,7 @@ msgstr "Downloads"
#: ../src/fe-gtk/dccgui.c:863
msgid "Details"
msgstr "Detalhes"
msgstr ""
#: ../src/fe-gtk/dccgui.c:874
msgid "File:"
@ -3333,19 +3332,19 @@ msgstr "Endereço:"
#: ../src/fe-gtk/dccgui.c:881 ../src/fe-gtk/dccgui.c:1080
msgid "Abort"
msgstr "Abortar"
msgstr ""
#: ../src/fe-gtk/dccgui.c:882 ../src/fe-gtk/dccgui.c:1081
msgid "Accept"
msgstr "Aceitar"
msgstr ""
#: ../src/fe-gtk/dccgui.c:883
msgid "Resume"
msgstr "Resumir"
msgstr ""
#: ../src/fe-gtk/dccgui.c:885
msgid "Open Folder..."
msgstr "Abrir Pasta..."
msgstr ""
#: ../src/fe-gtk/dccgui.c:1045
msgid ": DCC Chat List"
@ -3357,7 +3356,7 @@ msgstr ""
#: ../src/fe-gtk/dccgui.c:1059
msgid "Sent"
msgstr "Enviado"
msgstr ""
#: ../src/fe-gtk/dccgui.c:1060
msgid "Start Time"
@ -3370,7 +3369,7 @@ msgstr ""
#: ../src/fe-gtk/editlist.c:360 ../src/fe-gtk/fkeys.c:828
#: ../src/fe-gtk/ignoregui.c:383
msgid "Delete"
msgstr "Apagar"
msgstr ""
#: ../src/fe-gtk/editlist.c:362 ../src/fe-gtk/fkeys.c:830
msgid "Cancel"
@ -3378,7 +3377,7 @@ msgstr "Cancelar"
#: ../src/fe-gtk/editlist.c:364 ../src/fe-gtk/fkeys.c:832
msgid "Save"
msgstr "Salvar"
msgstr ""
#: ../src/fe-gtk/fe-gtk.c:80
msgid "Don't auto connect to servers"
@ -3390,7 +3389,7 @@ msgstr ""
#: ../src/fe-gtk/fe-gtk.c:82
msgid "Don't auto load any plugins"
msgstr "Não carregar automaticamente nenhum plugin"
msgstr ""
#: ../src/fe-gtk/fe-gtk.c:83
msgid "Show plugin/script auto-load directory"
@ -3398,7 +3397,7 @@ msgstr ""
#: ../src/fe-gtk/fe-gtk.c:84
msgid "Show user config directory"
msgstr "Exibir diretório de configuração do usuário"
msgstr ""
#: ../src/fe-gtk/fe-gtk.c:85 ../src/fe-gtk/fe-gtk.c:92
msgid "Open an irc://server:port/channel?key URL"
@ -3414,15 +3413,15 @@ msgstr ""
#: ../src/fe-gtk/fe-gtk.c:90
msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray"
msgstr "Iniciar minimizado. Nivel 0=Normal 1=Iconified 2=Bandeja"
msgstr ""
#: ../src/fe-gtk/fe-gtk.c:90
msgid "level"
msgstr "nivel"
msgstr ""
#: ../src/fe-gtk/fe-gtk.c:91
msgid "Show version information"
msgstr "Exibir informação da versão"
msgstr ""
#: ../src/fe-gtk/fe-gtk.c:268
#, c-format
@ -3562,11 +3561,11 @@ msgstr ""
#: ../src/fe-gtk/ignoregui.c:160
msgid "Private"
msgstr "Privado"
msgstr ""
#: ../src/fe-gtk/ignoregui.c:161
msgid "Notice"
msgstr "Aviso"
msgstr ""
#: ../src/fe-gtk/ignoregui.c:162
msgid "CTCP"
@ -3602,11 +3601,11 @@ msgstr "Canal:"
#: ../src/fe-gtk/ignoregui.c:367
msgid "Private:"
msgstr "Privado:"
msgstr ""
#: ../src/fe-gtk/ignoregui.c:368
msgid "Notice:"
msgstr "Aviso:"
msgstr ""
#: ../src/fe-gtk/ignoregui.c:369
msgid "CTCP:"
@ -3622,7 +3621,7 @@ msgstr "Adicionar..."
#: ../src/fe-gtk/joind.c:91
msgid "Channel name too short, try again."
msgstr "Nome do canal pequeno, tente novamente."
msgstr ""
#: ../src/fe-gtk/joind.c:133
msgid ": Connection Complete"
@ -3641,11 +3640,11 @@ msgstr ""
#: ../src/fe-gtk/joind.c:176
msgid "What would you like to do next?"
msgstr "O que voce gostaria de fazer em seguida?"
msgstr ""
#: ../src/fe-gtk/joind.c:181
msgid "_Nothing, I'll join a channel later."
msgstr "_Nada, entrarei em um canal depois."
msgstr ""
#: ../src/fe-gtk/joind.c:190
msgid "_Join this channel:"
@ -3653,7 +3652,7 @@ msgstr "_Entrar neste canal:"
#: ../src/fe-gtk/joind.c:202
msgid "If you know the name of the channel you want to join, enter it here."
msgstr "Se voce sabe o nome do canal que deseja entrar, digite aqui."
msgstr ""
#: ../src/fe-gtk/joind.c:209
msgid "O_pen the Channel-List window."
@ -3674,7 +3673,7 @@ msgstr "Diálogo com"
#: ../src/fe-gtk/maingui.c:695
#, c-format
msgid "Topic for %s is: %s"
msgstr "Tópico para %s é: %s"
msgstr ""
#: ../src/fe-gtk/maingui.c:700
msgid "No topic is set"
@ -3689,28 +3688,28 @@ msgstr ""
#: ../src/fe-gtk/maingui.c:1203
msgid "Quit HexChat?"
msgstr "Sair?"
msgstr ""
#: ../src/fe-gtk/maingui.c:1223
msgid "Don't ask next time."
msgstr "Não perguntar novamente."
msgstr ""
#: ../src/fe-gtk/maingui.c:1229
#, c-format
msgid "You are connected to %i IRC networks."
msgstr "Voce esta conectado a %i redes IRC."
msgstr ""
#: ../src/fe-gtk/maingui.c:1231
msgid "Are you sure you want to quit?"
msgstr "Voce tem certeza que deseja sair?"
msgstr ""
#: ../src/fe-gtk/maingui.c:1233
msgid "Some file transfers are still active."
msgstr "Algumas transferencias de arquivos continuam ativas."
msgstr ""
#: ../src/fe-gtk/maingui.c:1251
msgid "_Minimize to Tray"
msgstr "_Minimizar para bandeja"
msgstr ""
#: ../src/fe-gtk/maingui.c:1471
msgid "Insert Attribute or Color Code"
@ -3718,7 +3717,7 @@ msgstr ""
#: ../src/fe-gtk/maingui.c:1473
msgid "<b>Bold</b>"
msgstr "<b>Negrito</b>"
msgstr ""
#: ../src/fe-gtk/maingui.c:1474
msgid "<u>Underline</u>"
@ -3808,15 +3807,15 @@ msgstr ""
#: ../src/fe-gtk/maingui.c:2069
msgid "Topic Protection"
msgstr "Tópico Protegido"
msgstr ""
#: ../src/fe-gtk/maingui.c:2070
msgid "Invite Only"
msgstr "Apenas convidados"
msgstr ""
#: ../src/fe-gtk/maingui.c:2071
msgid "Moderated"
msgstr "Moderado"
msgstr ""
#: ../src/fe-gtk/maingui.c:2072
msgid "Ban List"
@ -3832,7 +3831,7 @@ msgstr "Limite de Usuários"
#: ../src/fe-gtk/maingui.c:2196
msgid "Show/Hide userlist"
msgstr "Exibir/Ocultar lista usuários"
msgstr ""
#: ../src/fe-gtk/maingui.c:2609
msgid "Enter new nickname:"
@ -3915,7 +3914,7 @@ msgstr ""
#: ../src/fe-gtk/menu.c:666 ../src/fe-gtk/menu.c:669
msgid "Last Msg:"
msgstr "Ultima msg:"
msgstr ""
#: ../src/fe-gtk/menu.c:679
msgid "Away Msg:"
@ -3934,11 +3933,11 @@ msgstr ""
#: ../src/fe-gtk/menu.c:970
msgid "Open Link in Browser"
msgstr "Abrir Link no Navegador"
msgstr ""
#: ../src/fe-gtk/menu.c:971
msgid "Copy Selected Link"
msgstr "Copiar Link Selecionado"
msgstr ""
#: ../src/fe-gtk/menu.c:1033 ../src/fe-gtk/menu.c:1393
msgid "Join Channel"
@ -4095,7 +4094,7 @@ msgstr ": Menu contextual da lista de usuários"
#: ../src/fe-gtk/menu.c:1541
msgid "Replace with"
msgstr "Substituir com"
msgstr ""
#: ../src/fe-gtk/menu.c:1541
msgid ": Replace"
@ -4339,19 +4338,19 @@ msgstr ""
#: ../src/fe-gtk/menu.c:1826
msgid "Save Text..."
msgstr "Salvar Texto..."
msgstr ""
#: ../src/fe-gtk/menu.c:1828
msgid "Search"
msgstr "Procurar"
msgstr ""
#: ../src/fe-gtk/menu.c:1829
msgid "Search Text..."
msgstr "Procurar Texto..."
msgstr ""
#: ../src/fe-gtk/menu.c:1830
msgid "Search Next"
msgstr "Procurar Proximo"
msgstr ""
#: ../src/fe-gtk/menu.c:1831
msgid "Search Previous"
@ -4376,7 +4375,7 @@ msgstr ""
#: ../src/fe-gtk/notifygui.c:123 ../src/fe-gtk/plugingui.c:63
msgid "Name"
msgstr "Nome"
msgstr ""
#: ../src/fe-gtk/notifygui.c:126
msgid "Last Seen"
@ -4388,7 +4387,7 @@ msgstr ""
#: ../src/fe-gtk/notifygui.c:188 ../src/fe-gtk/setup.c:285
msgid "Never"
msgstr "Nunca"
msgstr ""
#: ../src/fe-gtk/notifygui.c:193 ../src/fe-gtk/notifygui.c:222
#, c-format
@ -4537,7 +4536,7 @@ msgstr ""
#: ../src/fe-gtk/plugingui.c:66 ../src/fe-gtk/textgui.c:428
msgid "Description"
msgstr "Descrição"
msgstr ""
#: ../src/fe-gtk/plugingui.c:163
msgid "Select a Plugin or Script to load"

View File

@ -4,7 +4,7 @@
#
# Translators:
# Aleksandr P <davian818@gmail.com>, 2010
# Andrey Vihrov <andrey.vihrov@gmail.com>, 2013
# andreyv <andrey.vihrov@gmail.com>, 2013
# Valek Filippov <frob@df.ru>, 2001
# Volosenkov Dmitry <_bil_@mail.ru>, 1999
msgid ""

View File

@ -4,7 +4,7 @@
#
# Translators:
# o Zoltan Čala <zolika@sezampro.yu>, 1999
# Velimir Majstorov <majstorov@gmail.com>, 2013
# Ortak Velja <majstorov@gmail.com>, 2013
# Zlatan Vasović <legospace9876@gmail.com>, 2013-2014
msgid ""
msgstr ""

View File

@ -3,7 +3,7 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Velimir Majstorov <majstorov@gmail.com>, 2013
# Ortak Velja <majstorov@gmail.com>, 2013
# o Zoltan Čala <zolika@sezampro.yu>, 1999
# Zlatan Vasović <legospace9876@gmail.com>, 2013
msgid ""

View File

@ -3,7 +3,7 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Jakob <jakob@knugen.nu>, 2012
# androidnisse <jakob@knugen.nu>, 2012
msgid ""
msgstr ""
"Project-Id-Version: HexChat\n"

View File

@ -3,19 +3,18 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Atilla Öntaş <tarakbumba@gmail.com>, 2014
# Demiray Muhterem <mdemiray@msn.com>, 2014
# tulliana <mdemiray@msn.com>, 2014
# ifthenelse <ifthenelse@gmx.com>, 2013
# osmanos <osman.erkan@yandex.com>, 2014
# TingPing <tingping@tingping.se>, 2014
# Ufuk UYUMAZ <ufukuyumaz@gmail.com>, 2013
# Ufuk Uyumaz <ufukuyumaz@gmail.com>, 2013
msgid ""
msgstr ""
"Project-Id-Version: HexChat\n"
"Report-Msgid-Bugs-To: www.hexchat.org\n"
"POT-Creation-Date: 2014-05-14 13:20-0400\n"
"PO-Revision-Date: 2014-07-14 10:59+0000\n"
"Last-Translator: Atilla Öntaş <tarakbumba@gmail.com>\n"
"PO-Revision-Date: 2014-05-14 17:20+0000\n"
"Last-Translator: TingPing <tingping@tingping.se>\n"
"Language-Team: Turkish (http://www.transifex.com/projects/p/hexchat/language/tr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -404,13 +403,13 @@ msgstr "BAN <maske> [<yasaktipi>], maskeye uygun herkesi kanalda yasaklar. Zaten
#: ../src/common/outbound.c:3913
msgid "CHANOPT [-quiet] <variable> [<value>]"
msgstr "CHANOPT [-quiet] <değişken> [<değer>]"
msgstr ""
#: ../src/common/outbound.c:3914
msgid ""
"CHARSET [<encoding>], get or set the encoding used for the current "
"connection"
msgstr "CHARSET [<kodlama>], geçerli bağlantı için kullanılan kodlamayı getir veya ayarla"
msgstr ""
#: ../src/common/outbound.c:3915
msgid ""
@ -424,19 +423,19 @@ msgstr ""
#: ../src/common/outbound.c:3919
msgid "COUNTRY [-s] <code|wildcard>, finds a country code, eg: au = australia"
msgstr "COUNTRY [-s] <kodlama/değişken ifade>, bir ülke kodlaması bulur, mesela: au = australia"
msgstr ""
#: ../src/common/outbound.c:3921
msgid ""
"CTCP <nick> <message>, send the CTCP message to nick, common messages are "
"VERSION and USERINFO"
msgstr "CTCP <rumuz> <ileti>,CTCP iletisinii rumuza gönder, ortak iletiler VERSION ve USERINFO' dur"
msgstr ""
#: ../src/common/outbound.c:3923
msgid ""
"CYCLE [<channel>], parts the current or given channel and immediately "
"rejoins"
msgstr "CYCLE [<kanall>], geçerli olan veya verilen kanalı böler ve hemen yeniden katılır"
msgstr ""
#: ../src/common/outbound.c:3925
msgid ""

View File

@ -5,16 +5,14 @@
# Translators:
# Aron Xu <happyaron.xu@gmail.com>, 2010
# Dalin <ayi880@hotmail.com>, 2003
# Eleanor Chen <chenyueg@gmail.com>, 2010
# highwind <highwindmx@126.com>, 2014
# bababababanana1, 2014
# Michael Jay Tong <michaeljayt@gmail.com>, 2014
# chenyueg <chenyueg@gmail.com>, 2010
# michaeljayt <michaeljayt@gmail.com>, 2014
# Minor revision by Walte <webmaster@www.linuxfans.org>, 2003
# Rongjun Mu <elanmu@sina.com>, 2003
# Rongjun Mu <rongjunmu+i18n@gmail.com>, 2004
# Sarah Smith <sarahs@redhat.com>, 2003
# SEPTEM <septeman@gmail.com>, 2006
# Tong Hui <tonghuix@gmail.com>, 2014
# tonghuix <tonghuix@gmail.com>, 2014
# Zhuyuan Liu <gtkdict@yahoo.com.cn>, 2005
# Zong Yaotang <zong@cosix.com.au>, 2002
msgid ""
@ -22,8 +20,8 @@ msgstr ""
"Project-Id-Version: HexChat\n"
"Report-Msgid-Bugs-To: www.hexchat.org\n"
"POT-Creation-Date: 2014-05-14 13:20-0400\n"
"PO-Revision-Date: 2014-07-16 13:16+0000\n"
"Last-Translator: bababababanana1\n"
"PO-Revision-Date: 2014-05-14 17:20+0000\n"
"Last-Translator: TingPing <tingping@tingping.se>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/hexchat/language/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -291,7 +289,7 @@ msgstr "否 "
#: ../src/common/ignore.c:385
#, c-format
msgid "You are being CTCP flooded from %s, ignoring %s\n"
msgstr "您正受到来自 %s 的洗屏攻击,忽略 %s\n"
msgstr "您正受到来自 %s 的 CTCP 洪水攻击,忽略 %s\n"
#: ../src/common/ignore.c:410
#, c-format
@ -310,7 +308,7 @@ msgstr " %-20s 离线\n"
#: ../src/common/outbound.c:72
msgid "No channel joined. Try /join #<channel>\n"
msgstr "没有进入任何频道。请尝试输入 /join #<channel>\n"
msgstr "没有进入任何频道。请尝试 /join #<channel>\n"
#: ../src/common/outbound.c:78
msgid "Not connected. Try /server <host> [<port>]\n"
@ -1424,7 +1422,7 @@ msgstr "此人的主机名"
#: ../src/common/text.c:1035
msgid "The account of the person"
msgstr "这个人的帐号"
msgstr ""
#: ../src/common/text.c:1039 ../src/common/text.c:1046
#: ../src/common/text.c:1053 ../src/common/text.c:1265
@ -3983,27 +3981,27 @@ msgstr "编辑此菜单..."
#: ../src/fe-gtk/menu.c:1292
msgid "Marker line disabled."
msgstr "标记线已禁用."
msgstr ""
#: ../src/fe-gtk/menu.c:1298
msgid "Marker line never set."
msgstr "标记线永不设置."
msgstr ""
#: ../src/fe-gtk/menu.c:1302
msgid "Marker line reset manually."
msgstr "标记线手动重设."
msgstr ""
#: ../src/fe-gtk/menu.c:1304
msgid "Marker line reset because exceeded scrollback limit."
msgstr "因超越回滚限制重设标记线."
msgstr ""
#: ../src/fe-gtk/menu.c:1306
msgid "Marker line reset by CLEAR command."
msgstr "使用CLEAR命令重设标记线."
msgstr ""
#: ../src/fe-gtk/menu.c:1308
msgid "Marker line state unknown."
msgstr "标记线状态未知."
msgstr ""
#: ../src/fe-gtk/menu.c:1395
msgid "Retrieve channel list..."
@ -4335,7 +4333,7 @@ msgstr "重置标记线"
#: ../src/fe-gtk/menu.c:1823
msgid "Move to Marker Line"
msgstr "移动至标记线."
msgstr ""
#: ../src/fe-gtk/menu.c:1824
msgid "_Copy Selection"
@ -4596,7 +4594,7 @@ msgstr "用户名不可留空。"
#: ../src/fe-gtk/servlistgui.c:1578
msgid "You must have two unique nick names."
msgstr "您必须拥有两个昵称."
msgstr ""
#: ../src/fe-gtk/servlistgui.c:1630
msgid ""
@ -5433,7 +5431,7 @@ msgstr "托盘图标闪烁于:"
#: ../src/fe-gtk/setup.c:404
msgid "Bounce dock icon on:"
msgstr "弹跳托盘图标于:"
msgstr ""
#: ../src/fe-gtk/setup.c:407 ../src/fe-gtk/setup.c:453
msgid "Blink task bar on:"
@ -5585,7 +5583,7 @@ msgstr "默认隐藏频道里的进入/离开信息"
#: ../src/fe-gtk/setup.c:485
msgid "Hide nick change messages"
msgstr "隐藏昵称变更信息"
msgstr ""
#: ../src/fe-gtk/setup.c:492
msgid "*!*@*.host"
@ -6097,7 +6095,7 @@ msgstr "测试全部"
#: ../src/fe-gtk/textgui.c:485
msgid "OK"
msgstr "确认"
msgstr ""
#: ../src/fe-gtk/urlgrab.c:198
msgid ": URL Grabber"

View File

@ -1,4 +1,4 @@
# HexChat [![Build Status](https://travis-ci.org/hexchat/hexchat.png)](https://travis-ci.org/hexchat/hexchat) [![Build Status](http://nekomimi.cloudapp.net:8080/job/hexchat/badge/icon)](http://nekomimi.cloudapp.net:8080/job/hexchat/) [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/hexchat/hexchat/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
# HexChat [![Build Status](http://img.shields.io/travis/hexchat/hexchat.svg?style=flat)](https://travis-ci.org/hexchat/hexchat) [![Build Status](http://img.shields.io/jenkins/s/http/nekomimi.cloudapp.net:8080/hexchat.svg?style=flat)](http://nekomimi.cloudapp.net:8080/job/hexchat/)
HexChat is an IRC client for Windows and UNIX-like operating systems.
See [IRCHelp.org](http://irchelp.org) for information about IRC in general.

View File

@ -69,14 +69,14 @@ libhexchatcommon_a_CFLAGS = $(LIBPROXY_CFLAGS)
textenums.h: textevents.h
textevents.h: textevents.in make-te
$(AM_V_GEN) ./make-te < textevents.in > textevents.h 2> textenums.h
textevents.h: $(srcdir)/textevents.in make-te
$(AM_V_GEN) ./make-te < $< > $@ 2> textenums.h
marshal.h: marshalers.list
$(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_hexchat_marshal --header $(srcdir)/marshalers.list > $@
marshal.h: $(srcdir)/marshalers.list
$(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_hexchat_marshal --header $< > $@
marshal.c: marshalers.list
$(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_hexchat_marshal --body $(srcdir)/marshalers.list > $@
marshal.c: $(srcdir)/marshalers.list
$(AM_V_GEN) $(GLIB_GENMARSHAL) --prefix=_hexchat_marshal --body $< > $@
BUILT_SOURCES = textenums.h textevents.h marshal.c marshal.h

View File

@ -313,13 +313,10 @@ get_xdir (void)
if (portable_mode () || SHGetKnownFolderPath (&FOLDERID_RoamingAppData, 0, NULL, &roaming_path_wide) != S_OK)
{
char *path;
char file[MAX_PATH];
HMODULE hModule;
hModule = GetModuleHandle (NULL);
if (GetModuleFileName (hModule, file, sizeof(file)))
path = g_win32_get_package_installation_directory_of_module (NULL);
if (path)
{
path = g_path_get_dirname (file);
xdir = g_build_filename (path, "config", NULL);
g_free (path);
}
@ -785,6 +782,7 @@ load_default_config(void)
prefs.hex_input_tray_hilight = 1;
prefs.hex_input_tray_priv = 1;
prefs.hex_irc_cap_server_time = 1;
prefs.hex_irc_logging = 1;
prefs.hex_irc_who_join = 1; /* Can kick with inordinate amount of channels, required for some of our features though, TODO: add cap like away check? */
prefs.hex_irc_whois_front = 1;
prefs.hex_net_auto_reconnect = 1;

View File

@ -77,8 +77,8 @@
<ClCompile Include="hexchat.c" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\config-win32.h.tt" />
<ClInclude Include="..\..\config-win32.h" />
<None Include="..\..\win32\config.h.tt" />
<ClInclude Include="..\..\config.h" />
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{87554B59-006C-4D94-9714-897B27067BA3}</ProjectGuid>
@ -160,7 +160,7 @@
<PreBuildEvent>
<Command><![CDATA[
SET SOLUTIONDIR=$(SolutionDir)..\
powershell -File "$(SolutionDir)..\version-template.ps1" "$(SolutionDir)..\config-win32.h.tt" "$(SolutionDir)..\config-win32.h"
powershell -File "$(SolutionDir)..\win32\version-template.ps1" "$(SolutionDir)..\win32\config.h.tt" "$(SolutionDir)..\config.h"
"$(DepsRoot)\bin\glib-genmarshal.exe" --prefix=_hexchat_marshal --header "$(ProjectDir)marshalers.list" > "$(ProjectDir)marshal.h"
"$(DepsRoot)\bin\glib-genmarshal.exe" --prefix=_hexchat_marshal --body "$(ProjectDir)marshalers.list" > "$(ProjectDir)marshal.c"

View File

@ -104,7 +104,7 @@
<ClInclude Include="hexchat-plugin.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\config-win32.h">
<ClInclude Include="..\..\config.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="typedef.h">
@ -195,6 +195,6 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\..\config-win32.h.tt" />
<None Include="..\..\win32\config.h.tt" />
</ItemGroup>
</Project>

View File

@ -88,11 +88,19 @@ struct _hexchat_plugin
void (*hexchat_print) (hexchat_plugin *ph,
const char *text);
void (*hexchat_printf) (hexchat_plugin *ph,
const char *format, ...);
const char *format, ...)
#ifdef __GNUC__
__attribute__((format(printf, 2, 3)))
#endif
;
void (*hexchat_command) (hexchat_plugin *ph,
const char *command);
void (*hexchat_commandf) (hexchat_plugin *ph,
const char *format, ...);
const char *format, ...)
#ifdef __GNUC__
__attribute__((format(printf, 2, 3)))
#endif
;
int (*hexchat_nickcmp) (hexchat_plugin *ph,
const char *s1,
const char *s2);
@ -254,7 +262,11 @@ hexchat_print (hexchat_plugin *ph,
void
hexchat_printf (hexchat_plugin *ph,
const char *format, ...);
const char *format, ...)
#ifdef __GNUC__
__attribute__((format(printf, 2, 3)))
#endif
;
void
hexchat_command (hexchat_plugin *ph,
@ -262,7 +274,11 @@ hexchat_command (hexchat_plugin *ph,
void
hexchat_commandf (hexchat_plugin *ph,
const char *format, ...);
const char *format, ...)
#ifdef __GNUC__
__attribute__((format(printf, 2, 3)))
#endif
;
int
hexchat_nickcmp (hexchat_plugin *ph,

View File

@ -991,47 +991,12 @@ hexchat_exit (void)
fe_exit ();
}
#ifndef WIN32
static int
child_handler (gpointer userdata)
{
int pid = GPOINTER_TO_INT (userdata);
if (waitpid (pid, 0, WNOHANG) == pid)
return 0; /* remove timeout handler */
return 1; /* keep the timeout handler */
}
#endif
void
hexchat_exec (const char *cmd)
{
#ifdef WIN32
util_exec (cmd);
#else
int pid = util_exec (cmd);
if (pid != -1)
/* zombie avoiding system. Don't ask! it has to be like this to work
with zvt (which overrides the default handler) */
fe_timeout_add (1000, child_handler, GINT_TO_POINTER (pid));
#endif
}
void
hexchat_execv (char * const argv[])
{
#ifdef WIN32
util_execv (argv);
#else
int pid = util_execv (argv);
if (pid != -1)
/* zombie avoiding system. Don't ask! it has to be like this to work
with zvt (which overrides the default handler) */
fe_timeout_add (1000, child_handler, GINT_TO_POINTER (pid));
#endif
}
static void
set_locale (void)
@ -1154,10 +1119,6 @@ main (int argc, char *argv[])
_SSL_context_free (ctx);
#endif
#ifdef USE_DEBUG
hexchat_mem_list ();
#endif
#ifdef WIN32
WSACleanup ();
#endif

View File

@ -17,14 +17,11 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#ifdef WIN32
#include "../../config-win32.h"
#else
#include "../../config.h"
#endif
#include <glib.h>
#include <glib/gstdio.h>
#include <glib/gi18n.h>
#include <time.h> /* need time_t */
@ -48,17 +45,6 @@
#define vsnprintf _vsnprintf
#endif
#ifdef USE_DEBUG
#define malloc(n) hexchat_malloc(n, __FILE__, __LINE__)
#define realloc(n, m) hexchat_realloc(n, m, __FILE__, __LINE__)
#define free(n) hexchat_dfree(n, __FILE__, __LINE__)
#define strdup(n) hexchat_strdup(n, __FILE__, __LINE__)
void *hexchat_malloc (int size, char *file, int line);
void *hexchat_strdup (char *str, char *file, int line);
void hexchat_dfree (void *buf, char *file, int line);
void *hexchat_realloc (char *old, int len, char *file, int line);
#endif
#ifdef SOCKS
#ifdef __sgi
#include <sys/time.h>
@ -80,9 +66,7 @@ void *hexchat_realloc (char *old, int len, char *file, int line);
#endif
/* force a 32bit CMP.L */
#define CMPL(a, c0, c1, c2, c3) (a == (guint32)(c0 | (c1 << 8) | (c2 << 16) | (c3 << 24)))
#define WORDL(c0, c1, c2, c3) (guint32)(c0 | (c1 << 8) | (c2 << 16) | (c3 << 24))
#define WORDW(c0, c1) (guint16)(c0 | (c1 << 8))
#ifdef WIN32 /* for win32 */
#define OFLAGS O_BINARY
@ -109,20 +93,6 @@ void *hexchat_realloc (char *old, int len, char *file, int line);
#define USERNAMELEN 10
#define HIDDEN_CHAR 8 /* invisible character for xtext */
#if defined(ENABLE_NLS) && !defined(_)
# include <libintl.h>
# define _(x) gettext(x)
# ifdef gettext_noop
# define N_(String) gettext_noop (String)
# else
# define N_(String) (String)
# endif
#endif
#if !defined(_)
# define N_(String) (String)
# define _(x) (x)
#endif
struct nbexec
{
int myfd;

View File

@ -57,6 +57,5 @@ void session_free (session *killsess);
void lag_check (void);
void hexchat_exit (void);
void hexchat_exec (const char *cmd);
void hexchat_execv (char * const argv[]);
#endif

View File

@ -47,7 +47,7 @@
#else
#include "../../config-win32.h"
#include "../../config.h"
#ifdef USE_IPV6
#include <winsock2.h>
#include <ws2tcpip.h>

View File

@ -23,12 +23,10 @@
#include <stdio.h>
#include <glib.h>
#ifdef WIN32
#include "../../config-win32.h" /* grab USE_IPV6 and LOOKUPD defines */
#else
#ifndef WIN32
#include <unistd.h>
#include "../../config.h"
#endif
#include "../../config.h"
#define WANTSOCKET
#define WANTARPA

View File

@ -56,9 +56,6 @@
#include "outbound.h"
#include "chanopt.h"
#ifdef USE_DEBUG
extern int current_mem_usage;
#endif
#define TBUFSIZE 4096
static void help (session *sess, char *tbuf, char *helpcmd, int quiet);
@ -922,10 +919,6 @@ cmd_debug (struct session *sess, char *tbuf, char *word[], char *word_eol[])
"current_tab: %p\n\n",
sess->server->front_session, current_tab);
PrintText (sess, tbuf);
#ifdef USE_DEBUG
sprintf (tbuf, "current mem: %d\n\n", current_mem_usage);
PrintText (sess, tbuf);
#endif /* !MEMORY_DEBUG */
return TRUE;
}
@ -1841,8 +1834,10 @@ cmd_exec (struct session *sess, char *tbuf, char *word[], char *word_eol[])
char **argv;
int argc;
my_poptParseArgvString (cmd, &argc, &argv);
g_shell_parse_argv (cmd, &argc, &argv, NULL);
execvp (argv[0], argv);
g_strfreev (argv);
}
/* not reached unless error */
/*printf("exec error\n");*/
@ -2539,7 +2534,6 @@ cmd_load (struct session *sess, char *tbuf, char *word[], char *word_eol[])
char *file, *buf;
#ifdef USE_PLUGIN
char *error, *arg;
int len;
#endif
if (!word[2][0])
@ -2560,16 +2554,7 @@ cmd_load (struct session *sess, char *tbuf, char *word[], char *word_eol[])
}
#ifdef USE_PLUGIN
len = strlen (word[2]);
#ifdef WIN32
if (len > 4 && g_ascii_strcasecmp (".dll", word[2] + len - 4) == 0)
#else
#if defined(__hpux)
if (len > 3 && g_ascii_strcasecmp (".sl", word[2] + len - 3) == 0)
#else
if (len > 3 && g_ascii_strcasecmp (".so", word[2] + len - 3) == 0)
#endif
#endif
if (g_str_has_suffix (word[2], "."G_MODULE_SUFFIX))
{
arg = NULL;
if (word_eol[3][0])
@ -3565,18 +3550,9 @@ static int
cmd_unload (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
#ifdef USE_PLUGIN
int len, by_file = FALSE;
gboolean by_file = FALSE;
len = strlen (word[2]);
#ifdef WIN32
if (len > 4 && g_ascii_strcasecmp (word[2] + len - 4, ".dll") == 0)
#else
#if defined(__hpux)
if (len > 3 && g_ascii_strcasecmp (word[2] + len - 3, ".sl") == 0)
#else
if (len > 3 && g_ascii_strcasecmp (word[2] + len - 3, ".so") == 0)
#endif
#endif
if (g_str_has_suffix (word[2], "."G_MODULE_SUFFIX))
by_file = TRUE;
switch (plugin_kill (word[2], by_file))
@ -3599,18 +3575,9 @@ static int
cmd_reload (struct session *sess, char *tbuf, char *word[], char *word_eol[])
{
#ifdef USE_PLUGIN
int len, by_file = FALSE;
gboolean by_file = FALSE;
len = strlen (word[2]);
#ifdef WIN32
if (len > 4 && g_ascii_strcasecmp (word[2] + len - 4, ".dll") == 0)
#else
#if defined(__hpux)
if (len > 3 && g_ascii_strcasecmp (word[2] + len - 3, ".sl") == 0)
#else
if (len > 3 && g_ascii_strcasecmp (word[2] + len - 3, ".so") == 0)
#endif
#endif
if (g_str_has_suffix (word[2], "."G_MODULE_SUFFIX))
by_file = TRUE;
switch (plugin_reload (sess, word[2], by_file))
@ -3746,8 +3713,8 @@ userlist_cb (struct User *user, session *sess)
else
lt = time (0) - user->lasttalk;
PrintTextf (sess,
"\00306%s\t\00314[\00310%-38s\00314] \017ov\0033=\017%d%d away=%u lt\0033=\017%d\n",
user->nick, user->hostname, user->op, user->voice, user->away, lt);
"\00306%s\t\00314[\00310%-38s\00314] \017ov\0033=\017%d%d away=%u lt\0033=\017%ld\n",
user->nick, user->hostname, user->op, user->voice, user->away, (long)lt);
return TRUE;
}

View File

@ -26,6 +26,8 @@
#define g_ascii_strcasecmp stricmp
#endif
#define _(x) hexchat_gettext(ph,x)
static hexchat_plugin *ph; /* plugin handle */
static GSList *timer_list = NULL;
@ -68,13 +70,13 @@ timer_del_ref (int ref, int quiet)
{
timer_del (tim);
if (!quiet)
hexchat_printf (ph, "Timer %d deleted.\n", ref);
hexchat_printf (ph, _("Timer %d deleted.\n"), ref);
return;
}
list = list->next;
}
if (!quiet)
hexchat_print (ph, "No such ref number found.\n");
hexchat_print (ph, _("No such ref number found.\n"));
}
static int
@ -138,17 +140,17 @@ timer_showlist (void)
if (timer_list == NULL)
{
hexchat_print (ph, "No timers installed.\n");
hexchat_print (ph, HELP);
hexchat_print (ph, _("No timers installed.\n"));
hexchat_print (ph, _(HELP));
return;
}
/* 00000 00000000 0000000 abc */
hexchat_print (ph, "\026 Ref# Seconds Repeat Command \026\n");
hexchat_print (ph, _("\026 Ref# Seconds Repeat Command \026\n"));
list = timer_list;
while (list)
{
tim = list->data;
hexchat_printf (ph, "%5d %8.1f %7d %s\n", tim->ref, tim->timeout,
hexchat_printf (ph, _("%5d %8.1f %7d %s\n"), tim->ref, tim->timeout,
tim->repeat, tim->command);
list = list->next;
}
@ -221,7 +223,7 @@ hexchat_plugin_init
*plugin_desc = "IrcII style /TIMER command";
*plugin_version = "";
hexchat_hook_command (ph, "TIMER", HEXCHAT_PRI_NORM, timer_cb, HELP, 0);
hexchat_hook_command (ph, "TIMER", HEXCHAT_PRI_NORM, timer_cb, _(HELP), 0);
return 1; /* return 1 for success */
}

View File

@ -460,17 +460,11 @@ plugin_auto_load (session *sess)
for_files (lib_dir, "hcupd.dll", plugin_auto_load_cb);
for_files (lib_dir, "hcwinamp.dll", plugin_auto_load_cb);
for_files (lib_dir, "hcsysinfo.dll", plugin_auto_load_cb);
#else
for_files (lib_dir, "*."G_MODULE_SUFFIX, plugin_auto_load_cb);
#endif
for_files (sub_dir, "*.dll", plugin_auto_load_cb);
#else
#if defined(__hpux)
for_files (lib_dir, "*.sl", plugin_auto_load_cb);
for_files (sub_dir, "*.sl", plugin_auto_load_cb);
#else
for_files (lib_dir, "*.so", plugin_auto_load_cb);
for_files (sub_dir, "*.so", plugin_auto_load_cb);
#endif
#endif
for_files (sub_dir, "*."G_MODULE_SUFFIX, plugin_auto_load_cb);
g_free (sub_dir);
}
@ -1757,6 +1751,7 @@ hexchat_pluginpref_set_str_real (hexchat_plugin *pl, const char *var, const char
int prevSetting;
char *confname;
char *confname_tmp;
char *escaped_value;
char *buffer;
char *buffer_tmp;
char line_buffer[512]; /* the same as in cfg_put_str */
@ -1782,7 +1777,9 @@ hexchat_pluginpref_set_str_real (hexchat_plugin *pl, const char *var, const char
{
if (mode)
{
buffer = g_strdup_printf ("%s = %s\n", var, value);
escaped_value = g_strescape (value, NULL);
buffer = g_strdup_printf ("%s = %s\n", var, escaped_value);
g_free (escaped_value);
write (fhOut, buffer, strlen (buffer));
g_free (buffer);
close (fhOut);
@ -1830,7 +1827,9 @@ hexchat_pluginpref_set_str_real (hexchat_plugin *pl, const char *var, const char
{
if (mode) /* overwrite the existing matching setting if we are in save mode */
{
buffer = g_strdup_printf ("%s = %s\n", var, value);
escaped_value = g_strescape (value, NULL);
buffer = g_strdup_printf ("%s = %s\n", var, escaped_value);
g_free (escaped_value);
}
else /* erase the setting in delete mode */
{
@ -1854,7 +1853,9 @@ hexchat_pluginpref_set_str_real (hexchat_plugin *pl, const char *var, const char
if (!prevSetting && mode) /* var doesn't exist currently, append if we're in save mode */
{
buffer = g_strdup_printf ("%s = %s\n", var, value);
escaped_value = g_strescape (value, NULL);
buffer = g_strdup_printf ("%s = %s\n", var, escaped_value);
g_free (escaped_value);
write (fhOut, buffer, strlen (buffer));
g_free (buffer);
}
@ -1894,7 +1895,8 @@ hexchat_pluginpref_set_str (hexchat_plugin *pl, const char *var, const char *val
static int
hexchat_pluginpref_get_str_real (hexchat_plugin *pl, const char *var, char *dest, int dest_len)
{
char *confname, *canon, *cfg;
char *confname, *canon, *cfg, *unescaped_value;
char buf[512];
canon = g_strdup (pl->name);
canonalize_key (canon);
@ -1909,12 +1911,16 @@ hexchat_pluginpref_get_str_real (hexchat_plugin *pl, const char *var, char *dest
g_free (confname);
if (!cfg_get_str (cfg, var, dest, dest_len))
if (!cfg_get_str (cfg, var, buf, sizeof(buf)))
{
g_free (cfg);
return 0;
}
unescaped_value = g_strcompress (buf);
g_strlcpy (dest, unescaped_value, dest_len);
g_free (unescaped_value);
g_free (cfg);
return 1;
}

View File

@ -273,7 +273,7 @@ tcp_send (server *serv, char *buf)
}*/
void
tcp_sendf (server *serv, char *fmt, ...)
tcp_sendf (server *serv, const char *fmt, ...)
{
va_list args;
/* keep this buffer in BSS. Converting UTF-8 to ISO-8859-x might make the

View File

@ -25,7 +25,7 @@ extern GSList *serv_list;
/* eventually need to keep the tcp_* functions isolated to server.c */
int tcp_send_len (server *serv, char *buf, int len);
int tcp_send (server *serv, char *buf);
void tcp_sendf (server *serv, char *fmt, ...);
void tcp_sendf (server *serv, const char *fmt, ...) G_GNUC_PRINTF (2, 3);
int tcp_send_real (void *ssl, int sok, char *encoding, int using_irc, char *buf, int len);
server *server_new (void);

View File

@ -27,10 +27,8 @@
#include <openssl/err.h> /* ERR_() */
#ifdef WIN32
#include <openssl/rand.h> /* RAND_seed() */
#include "../../config-win32.h" /* HAVE_SNPRINTF */
#else
#include "../../config.h"
#endif
#include "../../config.h"
#include <time.h> /* asctime() */
#include <string.h> /* strncpy() */
#include "ssl.h" /* struct cert_info */

View File

@ -927,7 +927,7 @@ PrintText (session *sess, char *text)
}
void
PrintTextf (session *sess, char *format, ...)
PrintTextf (session *sess, const char *format, ...)
{
va_list args;
char *buf;
@ -941,7 +941,7 @@ PrintTextf (session *sess, char *format, ...)
}
void
PrintTextTimeStampf (session *sess, time_t timestamp, char *format, ...)
PrintTextTimeStampf (session *sess, time_t timestamp, const char *format, ...)
{
va_list args;
char *buf;

View File

@ -43,8 +43,8 @@ void scrollback_load (session *sess);
int text_word_check (char *word, int len);
void PrintText (session *sess, char *text);
void PrintTextTimeStamp (session *sess, char *text, time_t timestamp);
void PrintTextf (session *sess, char *format, ...);
void PrintTextTimeStampf (session *sess, time_t timestamp, char *format, ...);
void PrintTextf (session *sess, const char *format, ...) G_GNUC_PRINTF (2, 3);
void PrintTextTimeStampf (session *sess, time_t timestamp, const char *format, ...) G_GNUC_PRINTF (3, 4);
void log_close (session *sess);
void log_open_or_close (session *sess);
void load_text_events (void);

View File

@ -415,7 +415,7 @@ regex_match (const GRegex *re, const char *word, int *start, int *end)
}
/* Miscellaneous description --- */
#define DOMAIN "[a-z0-9][-a-z0-9]*(\\.[-a-z0-9]+)*"
#define DOMAIN "[_a-z0-9][-_a-z0-9]*(\\.[-_a-z0-9]+)*"
#define TLD "\\.[a-z][-a-z0-9]*[a-z]"
#define IPADDR "[0-9]{1,3}(\\.[0-9]{1,3}){3}"
#define IPV6GROUP "([0-9a-f]{0,4})"
@ -610,7 +610,7 @@ re_url (void)
}
/* EMAIL description --- */
#define EMAIL "[a-z][-_a-z0-9]+@" "(" HOST_URL ")"
#define EMAIL "[a-z][._%+-a-z0-9]+@" "(" HOST_URL ")"
static const GRegex *
re_email (void)

View File

@ -34,17 +34,14 @@
#include <process.h>
#include <io.h>
#include <VersionHelpers.h>
#include "../dirent/dirent-win32.h"
#include "../../config-win32.h"
#else
#include <unistd.h>
#include <pwd.h>
#include <sys/time.h>
#include <sys/utsname.h>
#include <dirent.h>
#include "../../config.h"
#endif
#include "../../config.h"
#include <fcntl.h>
#include <errno.h>
#include "hexchat.h"
@ -74,187 +71,6 @@
#define snprintf g_snprintf
#endif
#ifdef USE_DEBUG
#undef free
#undef malloc
#undef realloc
#undef strdup
int current_mem_usage;
struct mem_block
{
char *file;
void *buf;
int size;
int line;
int total;
struct mem_block *next;
};
struct mem_block *mroot = NULL;
void *
hexchat_malloc (int size, char *file, int line)
{
void *ret;
struct mem_block *new;
current_mem_usage += size;
ret = malloc (size);
if (!ret)
{
printf ("Out of memory! (%d)\n", current_mem_usage);
exit (255);
}
new = malloc (sizeof (struct mem_block));
new->buf = ret;
new->size = size;
new->next = mroot;
new->line = line;
new->file = strdup (file);
mroot = new;
printf ("%s:%d Malloc'ed %d bytes, now \033[35m%d\033[m\n", file, line,
size, current_mem_usage);
return ret;
}
void *
hexchat_realloc (char *old, int len, char *file, int line)
{
char *ret;
ret = hexchat_malloc (len, file, line);
if (ret)
{
strcpy (ret, old);
hexchat_dfree (old, file, line);
}
return ret;
}
void *
hexchat_strdup (char *str, char *file, int line)
{
void *ret;
struct mem_block *new;
int size;
size = strlen (str) + 1;
current_mem_usage += size;
ret = malloc (size);
if (!ret)
{
printf ("Out of memory! (%d)\n", current_mem_usage);
exit (255);
}
strcpy (ret, str);
new = malloc (sizeof (struct mem_block));
new->buf = ret;
new->size = size;
new->next = mroot;
new->line = line;
new->file = strdup (file);
mroot = new;
printf ("%s:%d strdup (\"%-.40s\") size: %d, total: \033[35m%d\033[m\n",
file, line, str, size, current_mem_usage);
return ret;
}
void
hexchat_mem_list (void)
{
struct mem_block *cur, *p;
GSList *totals = 0;
GSList *list;
cur = mroot;
while (cur)
{
list = totals;
while (list)
{
p = list->data;
if (p->line == cur->line &&
strcmp (p->file, cur->file) == 0)
{
p->total += p->size;
break;
}
list = list->next;
}
if (!list)
{
cur->total = cur->size;
totals = g_slist_prepend (totals, cur);
}
cur = cur->next;
}
fprintf (stderr, "file line size num total\n");
list = totals;
while (list)
{
cur = list->data;
fprintf (stderr, "%-15.15s %6d %6d %6d %6d\n", cur->file, cur->line,
cur->size, cur->total/cur->size, cur->total);
list = list->next;
}
}
void
hexchat_dfree (void *buf, char *file, int line)
{
struct mem_block *cur, *last;
if (buf == NULL)
{
printf ("%s:%d \033[33mTried to free NULL\033[m\n", file, line);
return;
}
last = NULL;
cur = mroot;
while (cur)
{
if (buf == cur->buf)
break;
last = cur;
cur = cur->next;
}
if (cur == NULL)
{
printf ("%s:%d \033[31mTried to free unknown block %lx!\033[m\n",
file, line, (unsigned long) buf);
/* abort(); */
free (buf);
return;
}
current_mem_usage -= cur->size;
printf ("%s:%d Free'ed %d bytes, usage now \033[35m%d\033[m\n",
file, line, cur->size, current_mem_usage);
if (last)
last->next = cur->next;
else
mroot = cur->next;
free (cur->file);
free (cur);
}
#define malloc(n) hexchat_malloc(n, __FILE__, __LINE__)
#define realloc(n, m) hexchat_realloc(n, m, __FILE__, __LINE__)
#define free(n) hexchat_dfree(n, __FILE__, __LINE__)
#define strdup(n) hexchat_strdup(n, __FILE__, __LINE__)
#endif /* MEMORY_DEBUG */
char *
file_part (char *file)
{
@ -433,7 +249,7 @@ char *
expand_homedir (char *file)
{
#ifndef WIN32
char *ret, *user;
char *user;
struct passwd *pw;
if (file[0] == '~')
@ -935,27 +751,26 @@ break_while:
void
for_files (char *dirname, char *mask, void callback (char *file))
{
DIR *dir;
struct dirent *ent;
GDir *dir;
const gchar *entry_name;
char *buf;
dir = opendir (dirname);
dir = g_dir_open (dirname, 0, NULL);
if (dir)
{
while ((ent = readdir (dir)))
while ((entry_name = g_dir_read_name (dir)))
{
if (strcmp (ent->d_name, ".") && strcmp (ent->d_name, ".."))
if (strcmp (entry_name, ".") && strcmp (entry_name, ".."))
{
if (match (mask, ent->d_name))
if (match (mask, entry_name))
{
buf = malloc (strlen (dirname) + strlen (ent->d_name) + 2);
sprintf (buf, "%s" G_DIR_SEPARATOR_S "%s", dirname, ent->d_name);
buf = g_build_filename (dirname, entry_name, NULL);
callback (buf);
free (buf);
g_free (buf);
}
}
}
closedir (dir);
g_dir_close (dir);
}
}
@ -1299,171 +1114,10 @@ country_search (char *pattern, void *ud, void (*print)(void *, char *, ...))
}
}
/* I think gnome1.0.x isn't necessarily linked against popt, ah well! */
/* !!! For now use this inlined function, or it would break fe-text building */
/* .... will find a better solution later. */
/*#ifndef USE_GNOME*/
/* this is taken from gnome-libs 1.2.4 */
#define POPT_ARGV_ARRAY_GROW_DELTA 5
int my_poptParseArgvString(const char * s, int * argcPtr, char *** argvPtr) {
char * buf, * bufStart, * dst;
const char * src;
char quote = '\0';
int argvAlloced = POPT_ARGV_ARRAY_GROW_DELTA;
char ** argv = malloc(sizeof(*argv) * argvAlloced);
const char ** argv2;
int argc = 0;
int i, buflen;
buflen = strlen(s) + 1;
/* bufStart = buf = alloca(buflen);*/
bufStart = buf = malloc (buflen);
memset(buf, '\0', buflen);
src = s;
argv[argc] = buf;
while (*src) {
if (quote == *src) {
quote = '\0';
} else if (quote) {
if (*src == '\\') {
src++;
if (!*src) {
free(argv);
free(bufStart);
return 1;
}
if (*src != quote) *buf++ = '\\';
}
*buf++ = *src;
/*} else if (isspace((unsigned char) *src)) {*/
} else if (*src == ' ') {
if (*argv[argc]) {
buf++, argc++;
if (argc == argvAlloced) {
char **temp;
argvAlloced += POPT_ARGV_ARRAY_GROW_DELTA;
temp = realloc(argv, sizeof(*argv) * argvAlloced);
if (temp)
argv = temp;
else
{
free(argv);
free(bufStart);
return 1;
}
}
argv[argc] = buf;
}
} else switch (*src) {
case '"':
case '\'':
quote = *src;
break;
case '\\':
src++;
if (!*src) {
free(argv);
free(bufStart);
return 1;
}
/* fallthrough */
default:
*buf++ = *src;
}
src++;
}
if (strlen(argv[argc])) {
argc++, buf++;
}
dst = malloc((argc + 1) * sizeof(*argv) + (buf - bufStart));
argv2 = (void *) dst;
dst += (argc + 1) * sizeof(*argv);
memcpy((void *)argv2, argv, argc * sizeof(*argv));
argv2[argc] = NULL;
memcpy(dst, bufStart, buf - bufStart);
for (i = 0; i < argc; i++) {
argv2[i] = dst + (argv[i] - bufStart);
}
free(argv);
*argvPtr = (char **)argv2; /* XXX don't change the API */
*argcPtr = argc;
free (bufStart);
return 0;
}
int
void
util_exec (const char *cmd)
{
char **argv;
int argc;
#ifndef WIN32
int pid;
int fd;
#endif
if (my_poptParseArgvString (cmd, &argc, &argv) != 0)
return -1;
#ifndef WIN32
pid = fork ();
if (pid == -1)
{
free (argv);
return -1;
}
if (pid == 0)
{
/* Now close all open file descriptors except stdin, stdout and stderr */
for (fd = 3; fd < 1024; fd++) close(fd);
execvp (argv[0], argv);
_exit (0);
} else
{
free (argv);
return pid;
}
#else
spawnvp (_P_DETACH, argv[0], argv);
free (argv);
return 0;
#endif
}
int
util_execv (char * const argv[])
{
#ifndef WIN32
int pid, fd;
pid = fork ();
if (pid == -1)
return -1;
if (pid == 0)
{
/* Now close all open file descriptors except stdin, stdout and stderr */
for (fd = 3; fd < 1024; fd++) close(fd);
execv (argv[0], argv);
_exit (0);
} else
{
return pid;
}
#else
spawnv (_P_DETACH, argv[0], argv);
return 0;
#endif
g_spawn_command_line_async (cmd, NULL);
}
unsigned long

View File

@ -37,7 +37,6 @@
extern const unsigned char rfc_tolowertab[];
int my_poptParseArgvString(const char * s, int * argcPtr, char *** argvPtr);
char *expand_homedir (char *file);
void path_part (char *file, char *path, int pathlen);
int match (const char *mask, const char *string);
@ -50,8 +49,7 @@ char *nocasestrstr (const char *text, const char *tofind);
char *country (char *);
void country_search (char *pattern, void *ud, void (*print)(void *, char *, ...));
char *get_sys_str (int with_cpu);
int util_exec (const char *cmd);
int util_execv (char * const argv[]);
void util_exec (const char *cmd);
#define STRIP_COLOR 1
#define STRIP_ATTRIB 2
#define STRIP_HIDDEN 4

View File

@ -31,6 +31,7 @@ hexchat_SOURCES = ascii.c banlist.c chanlist.c chanview.c custom-list.c \
maingui.c notifygui.c palette.c pixmaps.c plugin-tray.c $(plugingui_c) \
rawlog.c resources.c servlistgui.c setup.c $(iso_codes_c) \
sexy-spell-entry.c textgui.c urlgrab.c userlistgui.c xtext.c
hexchat_CPPFLAGS = $(AM_CPPFLAGS) -I$(top_builddir)/src/common
resources.c: ../../data/hexchat.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=../../data --generate-dependencies ../../data/hexchat.gresource.xml)
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=../../data --generate-source $<
resources.c: $(top_srcdir)/data/hexchat.gresource.xml $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(top_srcdir)/data --generate-dependencies $(top_srcdir)/data/hexchat.gresource.xml)
$(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(top_srcdir)/data --generate-source $<

View File

@ -20,11 +20,7 @@
#ifndef HEXCHAT_FE_GTK_H
#define HEXCHAT_FE_GTK_H
#ifdef WIN32
#include "../../config-win32.h"
#else
#include "../../config.h"
#endif
#define DISPLAY_NAME "HexChat"
@ -32,21 +28,7 @@
#include <sys/types.h>
#endif
#if defined(ENABLE_NLS) && !defined(_)
# include <libintl.h>
# define _(x) gettext(x)
# ifdef gettext_noop
# define N_(String) gettext_noop (String)
# else
# define N_(String) (String)
# endif
#endif
#if !defined(ENABLE_NLS) && defined(_)
# undef _
# define N_(String) (String)
# define _(x) (x)
#endif
#include <glib/gi18n.h>
#include <gtk/gtk.h>
#ifdef HAVE_GTK_MAC

View File

@ -99,7 +99,7 @@
<PreBuildEvent>
<Command><![CDATA[
SET SOLUTIONDIR=$(SolutionDir)..\
powershell -File "$(SolutionDir)..\version-template.ps1" "$(SolutionDir)..\src\fe-gtk\hexchat.rc.tt" "$(SolutionDir)..\src\fe-gtk\hexchat.rc.utf8"
powershell -File "$(SolutionDir)..\win32\version-template.ps1" "$(SolutionDir)..\src\fe-gtk\hexchat.rc.tt" "$(SolutionDir)..\src\fe-gtk\hexchat.rc.utf8"
REM hexchat.rc needs to be in UCS-2 or Resource Compiler will complain
powershell "Get-Content -Encoding UTF8 '$(SolutionDir)..\src\fe-gtk\hexchat.rc.utf8' | Out-File '$(SolutionDir)..\src\fe-gtk\hexchat.rc'; Remove-Item '$(SolutionDir)..\src\fe-gtk\hexchat.rc.utf8'"
"$(DepsRoot)\bin\glib-compile-resources.exe" --generate-source --sourcedir "$(DataDir)" --target "$(ProjectDir)resources.c" "$(DataDir)hexchat.gresource.xml"

View File

@ -66,48 +66,69 @@ gtkutil_file_req_destroy (GtkWidget * wid, struct file_req *freq)
}
static void
gtkutil_check_file (char *file, struct file_req *freq)
gtkutil_check_file (char *filename, struct file_req *freq)
{
struct stat st;
int axs = FALSE;
char temp[256];
path_part (file, temp, sizeof (temp));
GFile *file = g_file_new_for_path (filename);
/* check if the file is readable or writable */
if (freq->flags & FRF_WRITE)
{
if (access (temp, W_OK) == 0)
axs = TRUE;
} else
{
if (stat (file, &st) != -1)
GFile *parent = g_file_get_parent (file);
GFileInfo *fi = g_file_query_info (parent, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE, G_FILE_QUERY_INFO_NONE, NULL, NULL);
if (fi != NULL)
{
if (!S_ISDIR (st.st_mode) || (freq->flags & FRF_CHOOSEFOLDER))
if (g_file_info_get_attribute_boolean (fi, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE))
{
axs = TRUE;
}
g_object_unref (fi);
}
g_object_unref (parent);
}
else
{
GFileInfo *fi = g_file_query_info (file, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE, G_FILE_QUERY_INFO_NONE, NULL, NULL);
if (fi != NULL)
{
if (g_file_info_get_file_type (fi) != G_FILE_TYPE_DIRECTORY || (freq->flags & FRF_CHOOSEFOLDER))
{
axs = TRUE;
}
g_object_unref (fi);
}
}
g_object_unref (file);
if (axs)
{
char *utf8_file;
/* convert to UTF8. It might be converted back to locale by
server.c's g_convert */
utf8_file = hexchat_filename_to_utf8 (file, -1, NULL, NULL, NULL);
if (utf8_file)
char *filename_utf8 = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);
if (filename_utf8 != NULL)
{
freq->callback (freq->userdata, utf8_file);
g_free (utf8_file);
} else
freq->callback (freq->userdata, filename_utf8);
g_free (filename_utf8);
}
else
{
fe_message ("Filename encoding is corrupt.", FE_MSG_ERROR);
}
} else
}
else
{
if (freq->flags & FRF_WRITE)
{
fe_message (_("Cannot write to that file."), FE_MSG_ERROR);
}
else
{
fe_message (_("Cannot read that file."), FE_MSG_ERROR);
}
}
}
@ -128,12 +149,21 @@ gtkutil_file_req_done (GtkWidget * wid, struct file_req *freq)
}
if (files)
g_slist_free (files);
} else
}
else
{
if (freq->flags & FRF_CHOOSEFOLDER)
gtkutil_check_file (gtk_file_chooser_get_current_folder (fs), freq);
{
gchar *filename = gtk_file_chooser_get_current_folder (fs);
gtkutil_check_file (filename, freq);
g_free (filename);
}
else
{
gchar *filename = gtk_file_chooser_get_filename (fs);
gtkutil_check_file (gtk_file_chooser_get_filename (fs), freq);
g_free (filename);
}
}
/* this should call the "destroy" cb, where we free(freq) */

View File

@ -1,5 +1,5 @@
#include <winver.h>
#include "../../config-win32.h"
#include "../../config.h"
#define COMMA_VERSION <#= [string]::Join(',', $versionParts) #>,0

View File

@ -403,8 +403,10 @@ toggle_cb (GtkWidget *item, char *pref_name)
static int
is_in_path (char *cmd)
{
char *prog = strdup (cmd + 1); /* 1st char is "!" */
char *space, *path, *orig;
char *prog = g_strdup (cmd + 1); /* 1st char is "!" */
char *path, *orig;
char **argv;
int argc;
orig = prog; /* save for free()ing */
/* special-case these default entries. */
@ -413,16 +415,17 @@ is_in_path (char *cmd)
/* don't check for gnome-terminal, but the thing it's executing! */
prog += 18;
space = strchr (prog, ' '); /* this isn't 100% but good enuf */
if (space)
*space = 0;
path = g_find_program_in_path (prog);
if (path)
if (g_shell_parse_argv (prog, &argc, &argv, NULL))
{
g_free (path);
g_free (orig);
return 1;
path = g_find_program_in_path (argv[0]);
if (path)
{
g_free (path);
g_free (orig);
g_strfreev (argv);
return 1;
}
g_strfreev (argv);
}
g_free (orig);

View File

@ -161,11 +161,7 @@ plugingui_load (void)
sub_dir = g_build_filename (get_xdir(), "addons", NULL);
gtkutil_file_req (_("Select a Plugin or Script to load"), plugingui_load_cb, current_sess,
#ifdef WIN32
sub_dir, "*.dll;*.lua;*.pl;*.py;*.tcl;*.js", FRF_FILTERISINITIAL|FRF_EXTENSIONS);
#else
sub_dir, "*.so;*.lua;*.pl;*.py;*.tcl;*.js", FRF_FILTERISINITIAL|FRF_EXTENSIONS);
#endif
sub_dir, "*."G_MODULE_SUFFIX";*.lua;*.pl;*.py;*.tcl;*.js", FRF_FILTERISINITIAL|FRF_EXTENSIONS);
g_free (sub_dir);
}
@ -179,7 +175,6 @@ plugingui_loadbutton_cb (GtkWidget * wid, gpointer unused)
static void
plugingui_unload (GtkWidget * wid, gpointer unused)
{
int len;
char *modname, *file, *buf;
GtkTreeView *view;
GtkTreeIter iter;
@ -189,16 +184,7 @@ plugingui_unload (GtkWidget * wid, gpointer unused)
FILE_COLUMN, &file, -1))
return;
len = strlen (file);
#ifdef WIN32
if (len > 4 && g_ascii_strcasecmp (file + len - 4, ".dll") == 0)
#else
#if defined(__hpux)
if (len > 3 && g_ascii_strcasecmp (file + len - 3, ".sl") == 0)
#else
if (len > 3 && g_ascii_strcasecmp (file + len - 3, ".so") == 0)
#endif
#endif
if (g_str_has_suffix (file, "."G_MODULE_SUFFIX))
{
if (plugin_kill (modname, FALSE) == 2)
fe_message (_("That plugin is refusing to unload.\n"), FE_MSG_ERROR);

View File

@ -1526,13 +1526,14 @@ servlist_logintypecombo_cb (GtkComboBox *cb, gpointer *userdata)
index = gtk_combo_box_get_active (cb); /* starts at 0, returns -1 for invalid selections */
if (index != -1)
{
/* The selection is valid. It can be 0, which is the default type, but we need to allow
* that so that you can revert from other types. servlist_save() will dump 0 anyway.
*/
selected_net->logintype = login_types_conf[index];
}
if (index == -1)
return; /* Invalid */
/* The selection is valid. It can be 0, which is the default type, but we need to allow
* that so that you can revert from other types. servlist_save() will dump 0 anyway.
*/
selected_net->logintype = login_types_conf[index];
if (login_types_conf[index] == LOGIN_CUSTOM)
{
gtk_notebook_set_current_page (GTK_NOTEBOOK (userdata), 2); /* FIXME avoid hardcoding? */

View File

@ -22,12 +22,7 @@
#include "sexy-iso-codes.h"
#include <libintl.h>
#include <string.h>
#ifdef G_OS_WIN32
#include "../../config-win32.h"
#else
#include "../../config.h"
#endif
#define ISO_639_DOMAIN "iso_639"
#define ISO_3166_DOMAIN "iso_3166"

View File

@ -153,11 +153,8 @@ initialize_enchant ()
GModule *enchant;
gpointer funcptr;
#ifdef WIN32
enchant = g_module_open("libenchant.dll", 0);
#else
enchant = g_module_open("libenchant", 0);
#endif
enchant = g_module_open("libenchant."G_MODULE_SUFFIX, 0);
if (enchant == NULL)
{
#ifndef WIN32

View File

@ -31,12 +31,7 @@
#include <stdlib.h>
#include <time.h>
#ifdef WIN32
#include "../../config-win32.h"
#else
#include "../../config.h"
#endif
#include "../common/hexchat.h"
#include "../common/fe.h"
#include "../common/util.h"
@ -143,6 +138,7 @@ static void gtk_xtext_search_textentry_del (xtext_buffer *, textentry *);
static void gtk_xtext_search_textentry_fini (gpointer, gpointer);
static void gtk_xtext_search_fini (xtext_buffer *);
static gboolean gtk_xtext_search_init (xtext_buffer *buf, const gchar *text, gtk_xtext_search_flags flags, GError **perr);
static char * gtk_xtext_get_word (GtkXText * xtext, int x, int y, textentry ** ret_ent, int *ret_off, int *ret_len, GSList **slp);
/* Avoid warning messages for this unused function */
#if 0
@ -939,7 +935,7 @@ gtk_xtext_find_x (GtkXText * xtext, int x, textentry * ent, int subline,
static textentry *
gtk_xtext_find_char (GtkXText * xtext, int x, int y, int *off,
int *out_of_bounds)
int *out_of_bounds, int *ret_subline)
{
textentry *ent;
int line;
@ -957,6 +953,9 @@ gtk_xtext_find_char (GtkXText * xtext, int x, int y, int *off,
if (off)
*off = gtk_xtext_find_x (xtext, x, ent, subline, line, out_of_bounds);
if (ret_subline)
*ret_subline = subline;
return ent;
}
@ -1050,14 +1049,14 @@ gtk_xtext_paint (GtkWidget *widget, GdkRectangle *area)
return;
}
ent_start = gtk_xtext_find_char (xtext, area->x, area->y, NULL, NULL);
ent_start = gtk_xtext_find_char (xtext, area->x, area->y, NULL, NULL, NULL);
if (!ent_start)
{
xtext_draw_bg (xtext, area->x, area->y, area->width, area->height);
goto xit;
}
ent_end = gtk_xtext_find_char (xtext, area->x + area->width,
area->y + area->height, NULL, NULL);
area->y + area->height, NULL, NULL, NULL);
if (!ent_end)
ent_end = xtext->buffer->text_last;
@ -1302,84 +1301,95 @@ gtk_xtext_selection_draw (GtkXText * xtext, GdkEventMotion * event, gboolean ren
textentry *ent_start;
int offset_start;
int offset_end;
int low_x;
int low_y;
int high_x;
int high_y;
int tmp;
int subline_start;
int subline_end;
int oob;
int marking_up;
int marking_up = FALSE;
int len_start;
int len_end;
if (xtext->select_start_y > xtext->select_end_y)
{
low_x = xtext->select_end_x;
low_y = xtext->select_end_y;
marking_up = TRUE;
high_x = xtext->select_start_x;
high_y = xtext->select_start_y;
} else
{
low_x = xtext->select_start_x;
low_y = xtext->select_start_y;
high_x = xtext->select_end_x;
high_y = xtext->select_end_y;
marking_up = FALSE;
}
ent_start = gtk_xtext_find_char (xtext, xtext->select_start_x, xtext->select_start_y, &offset_start, &oob, &subline_start);
ent_end = gtk_xtext_find_char (xtext, xtext->select_end_x, xtext->select_end_y, &offset_end, &oob, &subline_end);
ent_start = gtk_xtext_find_char (xtext, low_x, low_y, &offset_start, &oob);
if (!ent_start)
if ((!ent_start || !ent_end) && !xtext->buffer->text_last && xtext->adj->value != xtext->buffer->old_value)
{
if (xtext->adj->value != xtext->buffer->old_value)
gtk_xtext_render_page (xtext);
gtk_xtext_render_page (xtext);
return;
}
else if (oob)
if (!ent_start)
{
offset_start = marking_up == TRUE? 0: xtext->buffer->last_offset_start;
ent_start = xtext->buffer->text_last;
offset_start = ent_start->str_len;
}
ent_end = gtk_xtext_find_char (xtext, high_x, high_y, &offset_end, &oob);
if (!ent_end)
{
ent_end = xtext->buffer->text_last;
if (!ent_end)
{
if (xtext->adj->value != xtext->buffer->old_value)
gtk_xtext_render_page (xtext);
return;
}
offset_end = ent_end->str_len;
}
else if (oob)
if ((ent_start != ent_end && xtext->select_start_y > xtext->select_end_y) || /* different entries */
(ent_start == ent_end && subline_start > subline_end) || /* different lines */
(ent_start == ent_end && subline_start == subline_end && xtext->select_start_x > xtext->select_end_x)) /* marking to the left */
{
offset_end = marking_up == FALSE? ent_end->str_len: xtext->buffer->last_offset_end;
marking_up = TRUE;
}
/* marking less than a complete line? */
/* make sure "start" is smaller than "end" (swap them if need be) */
if (ent_start == ent_end && offset_start > offset_end)
/* word selection */
if (xtext->word_select)
{
tmp = offset_start;
/* a word selection cannot be started if the cursor is out of bounds in gtk_xtext_button_press */
gtk_xtext_get_word (xtext, xtext->select_start_x, xtext->select_start_y, NULL, &offset_start, &len_start, NULL);
/* in case the cursor is out of bounds we keep offset_end from gtk_xtext_find_char and fix the length */
if (gtk_xtext_get_word (xtext, xtext->select_end_x, xtext->select_end_y, NULL, &offset_end, &len_end, NULL) == NULL)
len_end = offset_end == ent_end->str_len? 0: -1; /* -1 for the space, 0 if at the end */
if (!marking_up)
offset_end += len_end;
else
offset_start += len_start;
}
/* line/ent selection */
else if (xtext->line_select)
{
offset_start = marking_up? ent_start->str_len: 0;
offset_end = marking_up? 0: ent_end->str_len;
}
if (marking_up)
{
int temp;
/* ensure ent_start is above ent_end */
if (ent_start != ent_end)
{
ent = ent_start;
ent_start = ent_end;
ent_end = ent;
}
/* switch offsets as well */
temp = offset_start;
offset_start = offset_end;
offset_end = tmp;
offset_end = temp;
}
/* set all the old mark_ fields to -1 */
gtk_xtext_selection_clear (xtext->buffer);
ent_start->mark_start = offset_start;
ent_start->mark_end = offset_end;
/* set the default values */
ent_start->mark_end = ent_start->str_len;
ent_end->mark_start = 0;
/* set the calculated values (this overwrites the default values if we're on the same ent) */
ent_start->mark_start = offset_start;
ent_end->mark_end = offset_end;
/* set all the mark_ fields of the ents within the selection */
if (ent_start != ent_end)
{
ent_start->mark_end = ent_start->str_len;
if (offset_end != 0)
{
ent_end->mark_start = 0;
ent_end->mark_end = offset_end;
}
/* set all the mark_ fields of the ents within the selection */
ent = ent_start->next;
while (ent && ent != ent_end)
{
@ -1388,11 +1398,6 @@ gtk_xtext_selection_draw (GtkXText * xtext, GdkEventMotion * event, gboolean ren
ent = ent->next;
}
}
else
{
if (xtext->mark_stamp)
offset_start = 0;
}
if (render)
gtk_xtext_selection_render (xtext, ent_start, ent_end);
@ -1527,7 +1532,7 @@ gtk_xtext_get_word (GtkXText * xtext, int x, int y, textentry ** ret_ent,
int out_of_bounds = 0;
int len_to_offset = 0;
ent = gtk_xtext_find_char (xtext, x, y, &offset, &out_of_bounds);
ent = gtk_xtext_find_char (xtext, x, y, &offset, &out_of_bounds, NULL);
if (ent == NULL || out_of_bounds || offset < 0 || offset >= ent->str_len)
return NULL;
@ -1912,13 +1917,6 @@ gtk_xtext_button_release (GtkWidget * widget, GdkEventButton * event)
return FALSE;
}
if (xtext->word_or_line_select)
{
xtext->word_or_line_select = FALSE;
xtext->button_down = FALSE;
return FALSE;
}
if (event->button == 1)
{
xtext->button_down = FALSE;
@ -1943,6 +1941,13 @@ gtk_xtext_button_release (GtkWidget * widget, GdkEventButton * event)
}
}
if (xtext->word_select || xtext->line_select)
{
xtext->word_select = FALSE;
xtext->line_select = FALSE;
return FALSE;
}
if (xtext->select_start_x == event->x &&
xtext->select_start_y == event->y &&
xtext->buffer->last_ent_start)
@ -2003,11 +2008,7 @@ gtk_xtext_button_press (GtkWidget * widget, GdkEventButton * event)
ent->mark_start = offset;
ent->mark_end = offset + len;
gtk_xtext_selection_render (xtext, ent, ent);
xtext->word_or_line_select = TRUE;
if (prefs.hex_text_autocopy_text)
{
gtk_xtext_set_clip_owner (GTK_WIDGET (xtext), event);
}
xtext->word_select = TRUE;
}
return FALSE;
@ -2022,11 +2023,7 @@ gtk_xtext_button_press (GtkWidget * widget, GdkEventButton * event)
ent->mark_start = 0;
ent->mark_end = ent->str_len;
gtk_xtext_selection_render (xtext, ent, ent);
xtext->word_or_line_select = TRUE;
if (prefs.hex_text_autocopy_text)
{
gtk_xtext_set_clip_owner (GTK_WIDGET (xtext), event);
}
xtext->line_select = TRUE;
}
return FALSE;

View File

@ -216,7 +216,8 @@ struct _GtkXText
/* various state information */
unsigned int moving_separator:1;
unsigned int word_or_line_select:1;
unsigned int word_select:1;
unsigned int line_select:1;
unsigned int button_down:1;
unsigned int hilighting:1;
unsigned int dont_render:1;

View File

@ -80,11 +80,6 @@
</ItemDefinitionGroup>
<ItemGroup>
<None Include="changelog.url" />
<None Include="etc\download.png" />
<None Include="etc\gtk-2.0\gtkrc" />
<None Include="etc\gtkpref.png" />
<None Include="etc\music.png" />
<None Include="etc\system.png" />
<None Include="readme.url" />
<None Include="share\xml\iso-codes\iso_3166.xml" />
<None Include="share\xml\iso-codes\iso_639.xml" />

View File

@ -1,69 +0,0 @@
gtk-icon-sizes = "gtk-menu=13,13:gtk-small-toolbar=16,16:gtk-large-toolbar=24,24:gtk-dnd=32,32"
gtk-toolbar-icon-size = small-toolbar
# disable images in buttons. i've only seen ugly delphi apps use this feature.
gtk-button-images = 0
# enable/disable images in menus. most "stock" microsoft apps don't use these, except sparingly.
# the office apps use them heavily, though.
gtk-menu-images = 1
# use the win32 button ordering instead of the GNOME HIG one, where applicable
gtk-alternative-button-order = 1
# use the win32 sort indicators direction, as in Explorer
gtk-alternative-sort-arrows = 1
# Windows users don't expect the PC Speaker beeping at them when they backspace in an empty textview and stuff like that
gtk-error-bell = 0
# hide mnemonic underlines until the Alt key is pressed
gtk-auto-mnemonics = 1
style "msw-default"
{
GtkWidget::interior-focus = 1
GtkOptionMenu::indicator-size = { 9, 5 }
GtkOptionMenu::indicator-spacing = { 7, 5, 2, 2 }
GtkSpinButton::shadow-type = in
# Owen and I disagree that these should be themable
#GtkUIManager::add-tearoffs = 0
#GtkComboBox::add-tearoffs = 0
GtkComboBox::appears-as-list = 1
GtkComboBox::focus-on-click = 0
GOComboBox::add_tearoffs = 0
GtkTreeView::allow-rules = 0
GtkTreeView::expander-size = 12
GtkExpander::expander-size = 12
GtkScrolledWindow::scrollbar_spacing = 1
GtkSeparatorMenuItem::horizontal-padding = 2
engine "wimp"
{
}
}
class "*" style "msw-default"
binding "ms-windows-tree-view"
{
bind "Right" { "expand-collapse-cursor-row" (1,1,0) }
bind "Left" { "expand-collapse-cursor-row" (1,0,0) }
}
class "GtkTreeView" binding "ms-windows-tree-view"
style "msw-combobox-thickness" = "msw-default"
{
xthickness = 0
ythickness = 0
}
widget_class "*TreeView*ComboBox*" style "msw-combobox-thickness"
widget_class "*ComboBox*GtkFrame*" style "msw-combobox-thickness"

View File

@ -75,10 +75,10 @@ copy "$(DepsRoot)\bin\pixman-1.dll" "$(HexChatRel)"
copy "$(DepsRoot)\bin\ssleay32.dll" "$(HexChatRel)"
copy "$(DepsRoot)\bin\zlib1.dll" "$(HexChatRel)"
xcopy /q /s /i "$(DepsRoot)\lib\gtk-2.0\i686-pc-vs10\engines" "$(HexChatRel)\lib\gtk-2.0\i686-pc-vs10\engines"
xcopy /q /s /i etc "$(HexChatRel)\etc"
xcopy /q /s /i share "$(HexChatRel)\share"
xcopy /q /s /i "..\..\COPYING" "$(HexChatRel)\share\doc\hexchat\"
xcopy /q /s /i "$(DepsRoot)\share\doc" "$(HexChatRel)\share\doc"
xcopy /q /s /i "$(DepsRoot)\share\themes\MS-Windows" "$(HexChatRel)\share\themes\MS-Windows"
xcopy /q /s /i "$(DepsRoot)\lib\enchant\libenchant_myspell.dll" "$(HexChatRel)\lib\enchant\"
xcopy /q /s /i "$(HexChatBin)hcchecksum.dll" "$(HexChatRel)\plugins\"
copy "$(HexChatBin)hcdoat.dll" "$(HexChatRel)\plugins"

View File

@ -58,7 +58,6 @@ Name: "custom"; Description: "Custom Installation"; Flags: iscustom
[Components]
Name: "libs"; Description: "HexChat"; Types: normal minimal custom; Flags: fixed
Name: "gtktheme"; Description: "GTK+ Theme (Native Windows look)"; Types: normal minimal custom; Flags: disablenouninstallwarning
Name: "xctext"; Description: "HexChat-Text"; Types: custom; Flags: disablenouninstallwarning
Name: "xtm"; Description: "HexChat Theme Manager"; Types: normal custom; Flags: disablenouninstallwarning
Name: "translations"; Description: "Translations"; Types: normal custom; Flags: disablenouninstallwarning
@ -111,9 +110,9 @@ Source: "portable-mode"; DestDir: "{app}"; Tasks: portable
Source: "changelog.url"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "readme.url"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "cert.pem"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "etc\gtk-2.0\gtkrc"; DestDir: "{app}\etc\gtk-2.0"; Flags: ignoreversion; Components: gtktheme
Source: "share\xml\*"; DestDir: "{app}\share\xml"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: libs
Source: "share\doc\*"; DestDir: "{app}\share\doc"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: libs
Source: "share\themes\MS-Windows\*"; DestDir: "{app}\share\themes\MS-Windows"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: libs
Source: "share\locale\*"; DestDir: "{app}\share\locale"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: translations
Source: "atk-1.0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
@ -246,10 +245,10 @@ begin
if(CurPageID = wpReady) then
begin
idpClearFiles;
if not IsTaskSelected('portable') then
begin
#if APPARCH == "x64"
REDIST := 'http://dl.hexchat.net/misc/vcredist_2013_x64.exe';
PERL := 'http://dl.hexchat.net/misc/perl/Perl%205.20.0%20x64.msi';

View File

@ -64,7 +64,7 @@
<Command>
<![CDATA[
SET SOLUTIONDIR=$(SolutionDir)..\
powershell -File "$(SolutionDir)..\version-template.ps1" "$(SolutionDir)..\win32\installer\hexchat.iss.tt" "$(SolutionDir)..\win32\installer\hexchat.iss"
powershell -File "$(SolutionDir)..\win32\version-template.ps1" "$(SolutionDir)..\win32\installer\hexchat.iss.tt" "$(SolutionDir)..\win32\installer\hexchat.iss"
del "$(OutDir)hexchat.iss"
type hexchat.iss >> "$(OutDir)hexchat.iss"
$(IsccPath) /dPROJECTDIR="$(ProjectDir)" /dAPPARCH="$(Platform)" "$(OutDir)hexchat.iss"

View File

@ -1 +1 @@
2.10.0
2.10.1