Compare commits
8 Commits
v2.10.2
...
xtext-cair
Author | SHA1 | Date | |
---|---|---|---|
![]() |
218ad519e9 | ||
![]() |
7769de4018 | ||
![]() |
c1d9aad546 | ||
![]() |
3cd8556c54 | ||
![]() |
9c981cfc6b | ||
![]() |
11e3ecc739 | ||
![]() |
5849a0588e | ||
![]() |
b8c02f71d9 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -7,7 +7,6 @@ Makefile.in
|
||||
aclocal.m4
|
||||
autom4te.cache/
|
||||
compile
|
||||
ar-lib
|
||||
confdefs.h
|
||||
conftest
|
||||
conftest.c
|
||||
|
37
configure.ac
37
configure.ac
@@ -1,6 +1,6 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_INIT([HexChat],[2.10.2])
|
||||
AC_INIT([HexChat],[2.10.0])
|
||||
|
||||
AC_PREREQ([2.60])
|
||||
AC_COPYRIGHT([Copyright (C) 1998-2010 Peter Zelezny])
|
||||
@@ -19,7 +19,6 @@ AC_PROG_CC
|
||||
AM_PROG_CC_C_O
|
||||
AC_PROG_CPP
|
||||
AM_PROG_AS
|
||||
AM_PROG_AR
|
||||
AM_DISABLE_STATIC
|
||||
AC_PROG_LIBTOOL
|
||||
AC_PATH_PROG(MDTOOL, mdtool, no)
|
||||
@@ -208,7 +207,7 @@ if test "$gtkfe" = yes ; then
|
||||
fi
|
||||
|
||||
GUI_LIBS="$GUI_LIBS $GTK_LIBS"
|
||||
GUI_CFLAGS="$GUI_CFLAGS $GTK_CFLAGS -DG_DISABLE_SINGLE_INCLUDES -DGDK_PIXBUF_DISABLE_SINGLE_INCLUDES -DGTK_DISABLE_SINGLE_INCLUDES -DGTK_DISABLE_DEPRECATED"
|
||||
GUI_CFLAGS="$GUI_CFLAGS $GTK_CFLAGS -DG_DISABLE_SINGLE_INCLUDES -DGDK_PIXBUF_DISABLE_SINGLE_INCLUDES -DGTK_DISABLE_SINGLE_INCLUDES -DGTK_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED"
|
||||
|
||||
dnl *********************************************************************
|
||||
dnl ** MAC_INTEGRATION **************************************************
|
||||
@@ -255,11 +254,8 @@ if test "$perl" = yes; then
|
||||
original_ldflags="$LDFLAGS"
|
||||
CFLAGS="$PERL_CFLAGS"
|
||||
LDFLAGS="$PERL_LDFLAGS"
|
||||
AC_TRY_LINK([
|
||||
#define PERL_NO_INLINE_FUNCTIONS
|
||||
#include <EXTERN.h>
|
||||
#include <perl.h>
|
||||
], [], perl_is_usable=yes, perl_is_usable=no)
|
||||
AC_TRY_LINK([#include <EXTERN.h>
|
||||
#include <perl.h>], [], perl_is_usable=yes, perl_is_usable=no)
|
||||
CFLAGS="$original_cflags"
|
||||
LDFLAGS="$original_ldflags"
|
||||
if test x$perl_is_usable = xno ; then
|
||||
@@ -298,30 +294,19 @@ if test "x$python" != xno ; then
|
||||
case $python in
|
||||
dnl set python2 default here
|
||||
python2)
|
||||
PKG_CHECK_MODULES([PY], [python-2.7],
|
||||
[PY_VER="`$PKG_CONFIG --modversion python-2.7`"],
|
||||
[true])
|
||||
;;
|
||||
PKG_CHECK_MODULES([PY], [python-2.7], [], [AC_MSG_WARN(Cannot find python-2.7!)])
|
||||
PY_VER="`$PKG_CONFIG --modversion python-2.7`";;
|
||||
dnl set python3 default here
|
||||
python3)
|
||||
PKG_CHECK_MODULES([PY], [python-3.4],
|
||||
[PY_VER="`$PKG_CONFIG --modversion python-3.4`"],
|
||||
[true])
|
||||
if test "$PY_VER" = "" ; then
|
||||
PKG_CHECK_MODULES([PY], [python-3.3],
|
||||
[PY_VER="`$PKG_CONFIG --modversion python-3.3`"],
|
||||
[true])
|
||||
fi
|
||||
;;
|
||||
PKG_CHECK_MODULES([PY], [python-3.3], [], [AC_MSG_WARN(Cannot find python-3.3!)])
|
||||
PY_VER="`$PKG_CONFIG --modversion python-3.3`";;
|
||||
dnl add broken versions here
|
||||
python2.5|python2.6|python3.1|python3.2)
|
||||
AC_MSG_WARN(Unsupported Python version ${python}!);;
|
||||
AC_MSG_ERROR(Unsupported Python version ${python}!);;
|
||||
python*)
|
||||
python="python-${python#python}" # stay posix compliant
|
||||
PKG_CHECK_MODULES([PY], [${python}],
|
||||
[PY_VER="`$PKG_CONFIG --modversion ${python}`"],
|
||||
[AC_MSG_WARN(Cannot find "${python}.pc"!)])
|
||||
;;
|
||||
PKG_CHECK_MODULES([PY], [${python}], [], [AC_MSG_WARN(Cannot find "${python}.pc"!)])
|
||||
PY_VER="`$PKG_CONFIG --modversion ${python}`";;
|
||||
*)
|
||||
AC_MSG_WARN(Unsupported Python ${python}!)
|
||||
esac
|
||||
|
@@ -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 */
|
||||
|
@@ -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");
|
||||
|
||||
|
@@ -750,7 +750,7 @@ sysinfo_cb (char *word[], char *word_eol[], void *userdata)
|
||||
|
||||
if (!g_ascii_strcasecmp ("HELP", word[2+offset]))
|
||||
{
|
||||
hexchat_printf (ph, "%s", sysinfo_help);
|
||||
hexchat_printf (ph, sysinfo_help);
|
||||
return HEXCHAT_EAT_ALL;
|
||||
}
|
||||
else if (!g_ascii_strcasecmp ("LIST", word[2+offset]))
|
||||
@@ -870,7 +870,7 @@ sysinfo_cb (char *word[], char *word_eol[], void *userdata)
|
||||
}
|
||||
else
|
||||
{
|
||||
hexchat_printf (ph, "%s", sysinfo_help);
|
||||
hexchat_printf (ph, sysinfo_help);
|
||||
return HEXCHAT_EAT_ALL;
|
||||
}
|
||||
}
|
||||
|
@@ -128,7 +128,7 @@ print_version (char *word[], char *word_eol[], void *userdata)
|
||||
|
||||
if (!g_ascii_strcasecmp ("HELP", word[2]))
|
||||
{
|
||||
hexchat_printf (ph, "%s", upd_help);
|
||||
hexchat_printf (ph, upd_help);
|
||||
return HEXCHAT_EAT_HEXCHAT;
|
||||
}
|
||||
else if (!g_ascii_strcasecmp ("SET", word[2]))
|
||||
@@ -200,7 +200,7 @@ print_version (char *word[], char *word_eol[], void *userdata)
|
||||
}
|
||||
else
|
||||
{
|
||||
hexchat_printf (ph, "%s", upd_help);
|
||||
hexchat_printf (ph, upd_help);
|
||||
return HEXCHAT_EAT_HEXCHAT;
|
||||
}
|
||||
}
|
||||
|
2
po/bg.po
2
po/bg.po
@@ -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"
|
||||
|
2
po/da.po
2
po/da.po
@@ -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
134
po/de.po
@@ -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"
|
||||
|
2
po/el.po
2
po/el.po
@@ -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 ""
|
||||
|
22
po/en_GB.po
22
po/en_GB.po
@@ -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
|
||||
|
12
po/es.po
12
po/es.po
@@ -4,18 +4,16 @@
|
||||
#
|
||||
# Translators:
|
||||
# bviktor, 2012
|
||||
# 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>, 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-09-25 00:30+0000\n"
|
||||
"Last-Translator: Gato Loko\n"
|
||||
"PO-Revision-Date: 2014-05-14 17:34+0000\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"
|
||||
|
47
po/et.po
47
po/et.po
@@ -5,14 +5,13 @@
|
||||
# Translators:
|
||||
# Ekke Vasli <ekke@chamber.ee>, 2001
|
||||
# Ilmar Kerm <ikerm@hot.ee>, 2002
|
||||
# jasva, 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-09-28 09:26+0000\n"
|
||||
"Last-Translator: jasva\n"
|
||||
"PO-Revision-Date: 2014-05-14 17:20+0000\n"
|
||||
"Last-Translator: TingPing <tingping@tingping.se>\n"
|
||||
"Language-Team: Estonian (http://www.transifex.com/projects/p/hexchat/language/et/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -25,25 +24,25 @@ msgid ""
|
||||
"HexChat is an easy to use yet extensible IRC Client. It allows you to "
|
||||
"securely join multiple networks and talk to users privately or in channels "
|
||||
"using a customizable interface. You can even transfer files."
|
||||
msgstr "HexChat on lihtne ja paljude võimalustega IRC klient. See võimaldab turvaliselt ühenduda mitme võrguda samaaegselt ja suhelda inimestega privaatselt või liituda vestluskanalitega, kasutades selleks kohandatavat rakendust. Samuti on võimalus failivahetuseks."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.appdata.xml.in.h:2
|
||||
msgid ""
|
||||
"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, "
|
||||
"logging, custom themes, and Python/Perl scripts."
|
||||
msgstr "HexChat toetab kasutamiseks: DCC, SASL, hoiatusi, logide koguminst, kohandatud teemasid ja Python/Perl skripte."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:1
|
||||
msgid "HexChat"
|
||||
msgstr "HexChat"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:2
|
||||
msgid "IRC Client"
|
||||
msgstr "IRC klient"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:3
|
||||
msgid "Chat with other people online"
|
||||
msgstr "Vestle teiste kasutajatega internetis"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:4
|
||||
msgid "IM;Chat;"
|
||||
@@ -51,11 +50,11 @@ msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:5
|
||||
msgid "Open Safe Mode"
|
||||
msgstr "Ava turvarežiim"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/misc/htm.desktop.in.h:1
|
||||
msgid "HexChat Theme Manager"
|
||||
msgstr "HexChat teemahaldur"
|
||||
msgstr ""
|
||||
|
||||
#. 0 means unlimited
|
||||
#. STRINGS
|
||||
@@ -122,27 +121,27 @@ msgstr "Ei ole ühtegi aktiivset DCCd\n"
|
||||
|
||||
#: ../src/common/hexchat.c:867
|
||||
msgid "_Open Dialog Window"
|
||||
msgstr "_Ava dialoogiaken"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/hexchat.c:868
|
||||
msgid "_Send a File"
|
||||
msgstr "_Saada fail"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/hexchat.c:869
|
||||
msgid "_User Info (WhoIs)"
|
||||
msgstr "_Kasutaja info (Whois)"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/hexchat.c:870
|
||||
msgid "_Add to Friends List"
|
||||
msgstr "_Lisa sõprade nimekirja"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/hexchat.c:871
|
||||
msgid "_Ignore"
|
||||
msgstr "_Ignoreeri"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/hexchat.c:872
|
||||
msgid "O_perator Actions"
|
||||
msgstr "O_peraatori toimingud"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/hexchat.c:874
|
||||
msgid "Give Ops"
|
||||
@@ -223,7 +222,7 @@ msgstr "Põhjus %s väljaviskamiseks:"
|
||||
|
||||
#: ../src/common/hexchat.c:920
|
||||
msgid "Sendfile"
|
||||
msgstr "Saada fail"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/hexchat.c:921
|
||||
msgid "Dialog"
|
||||
@@ -255,7 +254,7 @@ msgstr "Ping"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"You do not have write access to %s. Nothing from this session can be saved."
|
||||
msgstr "Sul puuduvad kirjutamisõigused asukohta %s. Sellest sessioonist ei salvestata midagi."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/hexchat.c:1139
|
||||
msgid ""
|
||||
@@ -285,7 +284,7 @@ msgstr "%s ujutab sind CTCP päringutega üle, ignoreerin kasutajat %s\n"
|
||||
#: ../src/common/ignore.c:410
|
||||
#, c-format
|
||||
msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n"
|
||||
msgstr "%s uputab sind üle massiliste sõnumitega, mistõttu lülitame gui_autoopen_dialog VÄLJA.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/notify.c:558
|
||||
#, c-format
|
||||
@@ -308,12 +307,12 @@ msgstr "Pole ühendatud. Proovi /server <host> [<port>]\n"
|
||||
#: ../src/common/outbound.c:280
|
||||
#, c-format
|
||||
msgid "Server %s already exists on network %s.\n"
|
||||
msgstr "Server %s eksisteerib juba võrguloendis %s.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/outbound.c:286
|
||||
#, c-format
|
||||
msgid "Added server %s to network %s.\n"
|
||||
msgstr "Server %s on võrkuda nimekirja %s lisatud.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/outbound.c:371
|
||||
#, c-format
|
||||
@@ -351,7 +350,7 @@ msgstr "Tundmatut parameetrit '%s' ignoreeriti."
|
||||
|
||||
#: ../src/common/outbound.c:3093 ../src/common/outbound.c:3123
|
||||
msgid "Quiet is not supported by this server."
|
||||
msgstr "Vaigistamine pole antud serveris toetatud."
|
||||
msgstr ""
|
||||
|
||||
#. error
|
||||
#: ../src/common/outbound.c:3585 ../src/common/outbound.c:3619
|
||||
@@ -370,7 +369,7 @@ msgstr "ADDBUTTON <nimi> <tegevus>, lisab kasutajate nimekirja alla uue nupu"
|
||||
msgid ""
|
||||
"ADDSERVER <NewNetwork> <newserver/6667>, adds a new network with a new "
|
||||
"server to the network list"
|
||||
msgstr "ADDSERVER <UusVõrk> <uusserver/6667> lisab uue võrgu koos uue serveriga võrguloendisse."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/outbound.c:3904
|
||||
msgid "ALLCHAN <cmd>, sends a command to all channels you're in"
|
||||
@@ -378,7 +377,7 @@ msgstr "ALLCHAN <käsk>, saadab käsu kõikidele kanalitele, kus oled"
|
||||
|
||||
#: ../src/common/outbound.c:3906
|
||||
msgid "ALLCHANL <cmd>, sends a command to all channels on the current server"
|
||||
msgstr "ALLCHANL <käsk>, saadab käsu kõikidesse kanalitesse antud serveris"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/outbound.c:3908
|
||||
msgid "ALLSERV <cmd>, sends a command to all servers you're in"
|
||||
|
27
po/eu.po
27
po/eu.po
@@ -4,15 +4,14 @@
|
||||
#
|
||||
# Translators:
|
||||
# Mikel Olasagasti <hey_neken@euskal.org>, 2004
|
||||
# Mikel Olasagasti Uranga <mikel@olasagasti.info>, 2012
|
||||
# Mikel Olasagasti Uranga <mikel@olasagasti.info>, 2014
|
||||
# Hey_neken <mikel@olasagasti.info>, 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-10-13 08:06+0000\n"
|
||||
"Last-Translator: Mikel Olasagasti Uranga <mikel@olasagasti.info>\n"
|
||||
"PO-Revision-Date: 2014-05-14 17:20+0000\n"
|
||||
"Last-Translator: TingPing <tingping@tingping.se>\n"
|
||||
"Language-Team: Basque (http://www.transifex.com/projects/p/hexchat/language/eu/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -35,11 +34,11 @@ msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:1
|
||||
msgid "HexChat"
|
||||
msgstr "HexChat"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:2
|
||||
msgid "IRC Client"
|
||||
msgstr "IRC bezeroa"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:3
|
||||
msgid "Chat with other people online"
|
||||
@@ -47,7 +46,7 @@ msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:4
|
||||
msgid "IM;Chat;"
|
||||
msgstr "IM;Chat;Txat;"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:5
|
||||
msgid "Open Safe Mode"
|
||||
@@ -122,7 +121,7 @@ msgstr "Ez dago DCC aktiborik\n"
|
||||
|
||||
#: ../src/common/hexchat.c:867
|
||||
msgid "_Open Dialog Window"
|
||||
msgstr "Ir_eki elkarrizketa leihoa"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/hexchat.c:868
|
||||
msgid "_Send a File"
|
||||
@@ -1139,7 +1138,7 @@ msgstr ""
|
||||
#: ../src/common/textevents.h:234
|
||||
#, c-format
|
||||
msgid "%C16,17 "
|
||||
msgstr "%C16,17 "
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/textevents.h:237
|
||||
#, c-format
|
||||
@@ -5234,7 +5233,7 @@ msgstr "Eskaria egiten den fitxetan soilik"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:293
|
||||
msgid "Automatic"
|
||||
msgstr "Automatikoa"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/setup.c:294
|
||||
msgid "In an extra tab"
|
||||
@@ -5325,7 +5324,7 @@ msgstr "Ireki DCC, ezikusi, notifikazio etab. fitxetan ala leihoetan?"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:333
|
||||
msgid "Messages"
|
||||
msgstr "Mezuak"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/setup.c:334
|
||||
msgid "Scrollback"
|
||||
@@ -5983,7 +5982,7 @@ msgstr "Elkarrizketan"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:1816
|
||||
msgid "Sounds"
|
||||
msgstr "Soinuak"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/setup.c:1818
|
||||
msgid "Advanced"
|
||||
@@ -6033,7 +6032,7 @@ msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/sexy-spell-entry.c:559
|
||||
msgid "More..."
|
||||
msgstr "Gehiago..."
|
||||
msgstr ""
|
||||
|
||||
#. + Add to Dictionary
|
||||
#: ../src/fe-gtk/sexy-spell-entry.c:631
|
||||
@@ -6086,7 +6085,7 @@ msgstr "Egiaztatu denak"
|
||||
|
||||
#: ../src/fe-gtk/textgui.c:485
|
||||
msgid "OK"
|
||||
msgstr "Ados"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/urlgrab.c:198
|
||||
msgid ": URL Grabber"
|
||||
|
214
po/fr.po
214
po/fr.po
@@ -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-11-06 16:06+0000\n"
|
||||
"Last-Translator: Yannick Le Guen <leguen.yannick@gmail.com>\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"
|
||||
@@ -30,13 +28,13 @@ msgid ""
|
||||
"HexChat is an easy to use yet extensible IRC Client. It allows you to "
|
||||
"securely join multiple networks and talk to users privately or in channels "
|
||||
"using a customizable interface. You can even transfer files."
|
||||
msgstr "HexChat est un client IRC facile à utiliser et extensible. Il vous permet de rejoindre en toute sécurité plusieurs réseaux et de parler à d'autres utilisateurs en privé ou dans des canaux grâce à une interface personnalisable. Vous pouvez même transférer des fichiers."
|
||||
msgstr "HexChat est un client IRC facile à utiliser et extensible. Il vous permet de rejoindre en toute sécurité plusieurs réseaux et parler à d'autres utilisateurs en privé ou dans des canaux grâce à une interface personnalisable. Vous pouvez même transférer des fichiers."
|
||||
|
||||
#: ../data/misc/hexchat.appdata.xml.in.h:2
|
||||
msgid ""
|
||||
"HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, "
|
||||
"logging, custom themes, and Python/Perl scripts."
|
||||
msgstr "HexChat prend en charge des fonctionnalités telles que : DCC, SASL, serveurs mandataires, vérification orthographique, alertes, journalisation, thèmes personnalisés et scripts Python et Perl."
|
||||
msgstr "HexChat prend en charge des fonctionnalités telles que : DCC, SASL, serveur mandataire, vérification orthographie, alertes, journalisation, thèmes personnalisés et scripts Python et Perl."
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:1
|
||||
msgid "HexChat"
|
||||
@@ -557,13 +555,13 @@ msgstr "JOIN <canal>, rejoindre le canal"
|
||||
#: ../src/common/outbound.c:3989
|
||||
msgid ""
|
||||
"KICK <nick> [reason], kicks the nick from the current channel (needs chanop)"
|
||||
msgstr "KICK <pseudo> [raison], expulse le pseudo du canal actuel (nécessite d'être opérateur [chanop])"
|
||||
msgstr "KICK <pseudo> [raison], expulse le pseudo du canal actuel (opérateur requis)"
|
||||
|
||||
#: ../src/common/outbound.c:3991
|
||||
msgid ""
|
||||
"KICKBAN <nick> [reason], bans then kicks the nick from the current channel "
|
||||
"(needs chanop)"
|
||||
msgstr "KICKBAN <pseudo> [raison], bannit puis expulse le pseudo du canal actuel (nécessite d'être opérateur [chanop])"
|
||||
msgstr "KICKBAN <pseudo> [raison], bannit puis expulse le pseudo du canal actuel (opérateur requis)"
|
||||
|
||||
#: ../src/common/outbound.c:3994
|
||||
msgid "LAGCHECK, forces a new lag check"
|
||||
@@ -693,7 +691,7 @@ msgstr "RECV <texte>, envoie des données brutes à HexChat, comme si elles éta
|
||||
|
||||
#: ../src/common/outbound.c:4052
|
||||
msgid "RELOAD <name>, reloads a plugin or script"
|
||||
msgstr "RELOAD <nom>, recharge un greffon ou script"
|
||||
msgstr "RELOAD <nom>, recharge un plugin ou script"
|
||||
|
||||
#: ../src/common/outbound.c:4054
|
||||
msgid "SAY <text>, sends the text to the object in the current window"
|
||||
@@ -753,7 +751,7 @@ msgid ""
|
||||
"TRAY -i <number> Blink tray with an internal icon.\n"
|
||||
"TRAY -t <text> Set the tray tooltip.\n"
|
||||
"TRAY -b <title> <text> Set the tray balloon."
|
||||
msgstr "\nTRAY -f <délai> <fichier1> [<fichier2>] Définit les fichiers à utiliser pour faire clignoter l'icône de barre d'état.\nTRAY -f <fichier> Définit le fichier à utiliser pour l'icône de barre d'état.\nTRAY -i <numéro> Définit une icône interne pour le clignotement de la barre d'état.\nTRAY -t <texte> Définit le message d'aide de l'icône de barre d'état.\nTRAY -b <titre> <texte> Définit le message flottant de l'icône de barre d'état."
|
||||
msgstr "\nTRAY -f <délai> <fichier1> [<fichier2>] Spécifie les fichiers à utiliser pour faire clignoter l'icone de barre d'état.\nTRAY -f <fichier> Spécifie le fichier à utiliser pour l'icone de barre d'état.\nTRAY -i <numéro> Spécifie un icone interne pour le clignotement de la barre d'état.\nTRAY -t <texte> Spécifie le message d'aide de l'icone de barre d'état.\nTRAY -b <titre> <texte> Spécifie le message flottant de l'icone de barre d'état."
|
||||
|
||||
#: ../src/common/outbound.c:4085
|
||||
msgid "UNBAN <mask> [<mask>...], unbans the specified masks."
|
||||
@@ -897,11 +895,11 @@ msgstr "%C22*%O$tCanal %C22$1%O créé le %C24$2%O"
|
||||
|
||||
#: ../src/common/textevents.h:42
|
||||
msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O"
|
||||
msgstr "%C22*%O$t%C26$1%O a enlevé l'état de semi-opérateur de canal à %C18$2%O"
|
||||
msgstr "%C22*%O$t%C26$1%O a enlevé le statut de semi-opérateur de canal à %C18$2%O"
|
||||
|
||||
#: ../src/common/textevents.h:45
|
||||
msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O"
|
||||
msgstr "%C22*%O$t%C26$1%O a enlevé l'état d'opérateur de canal à %C18$2%O"
|
||||
msgstr "%C22*%O$t%C26$1%O a enlevé le statut d'opérateur de canal à %C18$2%O"
|
||||
|
||||
#: ../src/common/textevents.h:48
|
||||
msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O"
|
||||
@@ -913,7 +911,7 @@ msgstr "%C22*%O$t%C26$1%C a mis une exception sur %C18$2%O"
|
||||
|
||||
#: ../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 a donné l'état de semi-opérateur de canal à %C18$2%O"
|
||||
msgstr "%C22*%O$t%C26$1%O a donné le statut de semi-opérateur de canal à %C18$2%O"
|
||||
|
||||
#: ../src/common/textevents.h:57
|
||||
msgid "%C22*%O$t%C26$1%C sets invite exempt on %C18$2%O"
|
||||
@@ -933,7 +931,7 @@ msgstr "%C22*%O$tCanal %C22$1%O mode : %C24$2"
|
||||
|
||||
#: ../src/common/textevents.h:78
|
||||
msgid "%C22*%O$t%C26$1%O gives channel operator status to %C18$2%O"
|
||||
msgstr "%C22*%O$t%C26$1%O a donné l'état d'opérateur de canal à %C18$2%O"
|
||||
msgstr "%C22*%O$t%C26$1%O a donné le statut d'opérateur de canal à %C18$2%O"
|
||||
|
||||
#: ../src/common/textevents.h:81
|
||||
msgid "%C22*%O$t%C26$1%O sets quiet on %C18$2%O"
|
||||
@@ -981,7 +979,7 @@ msgstr "%C22*%O$t%C26$1%O a donné la parole à %C18$2%O"
|
||||
|
||||
#: ../src/common/textevents.h:114
|
||||
msgid "%C23*%O$tConnected. Now logging in."
|
||||
msgstr "%C23*%O$tConnecté. Maintenant entrons..."
|
||||
msgstr "%C23*%O$tConnecté. maintenant entrons..."
|
||||
|
||||
#: ../src/common/textevents.h:117
|
||||
msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)"
|
||||
@@ -989,7 +987,7 @@ msgstr "%C23*%O$tConnexion à %C29$1%C (%C23$2 :$3%O)"
|
||||
|
||||
#: ../src/common/textevents.h:120
|
||||
msgid "%C20*%O$tConnection failed (%C20$1%O)"
|
||||
msgstr "%C20*%O$tLa connexion a échoué (%C20$1%O)"
|
||||
msgstr "%C20*%O$tLa connexion a échouée (%C20$1%O)"
|
||||
|
||||
#: ../src/common/textevents.h:123
|
||||
msgid "%C24*%O$tReceived a CTCP %C24$1%C from %C18$2%O"
|
||||
@@ -1085,7 +1083,7 @@ msgstr "%C20*%O$tDCC RECV : Impossible d'ouvrir '%C23$1%C' en écriture (%C20$2%
|
||||
msgid ""
|
||||
"%C23*%O$tThe file '%C24$1%C' already exists, saving it as '%C23$2%O' "
|
||||
"instead."
|
||||
msgstr "%C23*%O$tLe fichier '%C24$1%C' existe déjà, il sera enregistré sous « %C23$2%O » à la place."
|
||||
msgstr "%C23*%O$tLe fichier '%C24$1%C' existe déjà, il sera sauvé sous '%C23$2%O' à la place."
|
||||
|
||||
#: ../src/common/textevents.h:192
|
||||
msgid "%C24*%O$t%C18$1%C has requested to resume '%C23$2%C' from %C24$3%O."
|
||||
@@ -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
|
||||
@@ -1943,7 +1941,7 @@ msgstr "Connexion réinitialisée à l'autre extrémité"
|
||||
|
||||
#: ../src/common/util.c:985
|
||||
msgid "Ascension Island"
|
||||
msgstr "Ascension, île"
|
||||
msgstr "Île Ascension"
|
||||
|
||||
#: ../src/common/util.c:986
|
||||
msgid "Andorra"
|
||||
@@ -2371,7 +2369,7 @@ msgstr "Hong-kong"
|
||||
|
||||
#: ../src/common/util.c:1092
|
||||
msgid "Heard and McDonald Islands"
|
||||
msgstr "Heard, île et McDonald, îles"
|
||||
msgstr "Heard, île et mcdonald, îles"
|
||||
|
||||
#: ../src/common/util.c:1093
|
||||
msgid "Honduras"
|
||||
@@ -3162,7 +3160,7 @@ msgstr "L'ouverture de la liste de bannissements a échoué."
|
||||
#: ../src/fe-gtk/banlist.c:813
|
||||
#, c-format
|
||||
msgid ": Ban List (%s)"
|
||||
msgstr ": Liste de bannissement (%s)"
|
||||
msgstr "XChat : liste de bannissement (%s)"
|
||||
|
||||
#: ../src/fe-gtk/banlist.c:848 ../src/fe-gtk/notifygui.c:425
|
||||
msgid "Remove"
|
||||
@@ -3201,7 +3199,7 @@ msgstr "Copie le suje_t du canal"
|
||||
#: ../src/fe-gtk/chanlist.c:720
|
||||
#, c-format
|
||||
msgid ": Channel List (%s)"
|
||||
msgstr ": liste des canaux (%s)"
|
||||
msgstr "XChat : liste des canaux (%s)"
|
||||
|
||||
#: ../src/fe-gtk/chanlist.c:794
|
||||
msgid "_Search"
|
||||
@@ -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
|
||||
@@ -3293,7 +3291,7 @@ msgstr "Impossible de reprendre le même fichier en provenance de deux personnes
|
||||
|
||||
#: ../src/fe-gtk/dccgui.c:798
|
||||
msgid ": Uploads and Downloads"
|
||||
msgstr ": envois et réceptions"
|
||||
msgstr "XChat: Envois et réceptions"
|
||||
|
||||
#: ../src/fe-gtk/dccgui.c:815 ../src/fe-gtk/dccgui.c:1056
|
||||
#: ../src/fe-gtk/notifygui.c:124
|
||||
@@ -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"
|
||||
@@ -3351,7 +3349,7 @@ msgstr "Ouvrir le dossier..."
|
||||
|
||||
#: ../src/fe-gtk/dccgui.c:1045
|
||||
msgid ": DCC Chat List"
|
||||
msgstr ": liste de Chat DCC"
|
||||
msgstr "XChat : liste de Chat DCC"
|
||||
|
||||
#: ../src/fe-gtk/dccgui.c:1058
|
||||
msgid "Recv"
|
||||
@@ -3416,7 +3414,7 @@ msgstr "Ouvrir l'URL ou exécuter la commande dans un HexChat existant"
|
||||
|
||||
#: ../src/fe-gtk/fe-gtk.c:90
|
||||
msgid "Begin minimized. Level 0=Normal 1=Iconified 2=Tray"
|
||||
msgstr "Démarré minimisé. 0=Normal 1=Minimisé 2=Dans l'icône d'état"
|
||||
msgstr "Démarré minimisé. 0=Normal 1=Minimisé 2=Dans l'icone d'état"
|
||||
|
||||
#: ../src/fe-gtk/fe-gtk.c:90
|
||||
msgid "level"
|
||||
@@ -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 ""
|
||||
@@ -3543,11 +3541,11 @@ msgstr "Il y a eu une erreur au chargement de la configuration des raccourcis cl
|
||||
|
||||
#: ../src/fe-gtk/fkeys.c:540
|
||||
msgid "Select a row to get help information on its Action."
|
||||
msgstr "Sélectionner une ligne pour obtenir des informations sur son action."
|
||||
msgstr "Sélectionnez une ligne pour obtenir de l'information sur son Action."
|
||||
|
||||
#: ../src/fe-gtk/fkeys.c:809
|
||||
msgid ": Keyboard Shortcuts"
|
||||
msgstr ": raccourcis clavier"
|
||||
msgstr "XChat : raccourcis clavier"
|
||||
|
||||
#: ../src/fe-gtk/gtkutil.c:108
|
||||
msgid "Cannot write to that file."
|
||||
@@ -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?"
|
||||
@@ -3592,7 +3590,7 @@ msgstr "Entrer le masque d'exclusion :"
|
||||
|
||||
#: ../src/fe-gtk/ignoregui.c:350
|
||||
msgid ": Ignore list"
|
||||
msgstr ": liste d'ignorance"
|
||||
msgstr "XChat : liste d'ignorance"
|
||||
|
||||
#: ../src/fe-gtk/ignoregui.c:358
|
||||
msgid "Ignore Stats:"
|
||||
@@ -3628,7 +3626,7 @@ msgstr "Le nom de canal est trop court, veuillez réessayer."
|
||||
|
||||
#: ../src/fe-gtk/joind.c:133
|
||||
msgid ": Connection Complete"
|
||||
msgstr ": fin de la procédure de connexion"
|
||||
msgstr "XChat : fin de la procédure de connexion"
|
||||
|
||||
#: ../src/fe-gtk/joind.c:161
|
||||
#, c-format
|
||||
@@ -3691,7 +3689,7 @@ msgstr "Ce serveur comporte déjà %d canaux ou dialogues qui lui sont associés
|
||||
|
||||
#: ../src/fe-gtk/maingui.c:1203
|
||||
msgid "Quit HexChat?"
|
||||
msgstr "Quitter HexChat ?"
|
||||
msgstr "Quitter HeXChat ?"
|
||||
|
||||
#: ../src/fe-gtk/maingui.c:1223
|
||||
msgid "Don't ask next time."
|
||||
@@ -3756,7 +3754,7 @@ msgstr "_Recharger le tampon"
|
||||
|
||||
#: ../src/fe-gtk/maingui.c:1540
|
||||
msgid "Strip _Colors"
|
||||
msgstr "Enlever les _couleurs"
|
||||
msgstr "Enlever les couleurs"
|
||||
|
||||
#: ../src/fe-gtk/maingui.c:1541
|
||||
msgid "_Hide Join/Part Messages"
|
||||
@@ -3776,7 +3774,7 @@ msgstr "Faire clignoter l'_icône de barre d'état"
|
||||
|
||||
#: ../src/fe-gtk/maingui.c:1556
|
||||
msgid "Blink Task _Bar"
|
||||
msgstr "Faire clignoter la _barre des tâches"
|
||||
msgstr "Faire clignoter la _barre d'état"
|
||||
|
||||
#: ../src/fe-gtk/maingui.c:1569 ../src/fe-gtk/maingui.c:1689
|
||||
#: ../src/fe-gtk/maingui.c:3386
|
||||
@@ -3798,7 +3796,7 @@ msgstr "La limite d'utilisateurs doit être un nombre !\n"
|
||||
|
||||
#: ../src/fe-gtk/maingui.c:2066
|
||||
msgid "Filter Colors"
|
||||
msgstr "Filtrer les couleurs"
|
||||
msgstr "Couleurs de filtre"
|
||||
|
||||
#: ../src/fe-gtk/maingui.c:2067
|
||||
msgid "No outside messages"
|
||||
@@ -3858,7 +3856,7 @@ msgstr "Mettre en surbrillance toutes les occurrences et souligner l'occurrence
|
||||
|
||||
#: ../src/fe-gtk/maingui.c:2952
|
||||
msgid "Mat_ch case"
|
||||
msgstr "Sensible à la _casse"
|
||||
msgstr "Sensible à la _case"
|
||||
|
||||
#: ../src/fe-gtk/maingui.c:2957
|
||||
msgid "Perform a case-sensitive search."
|
||||
@@ -3866,11 +3864,11 @@ msgstr "Réaliser une recherche sensible à la casse."
|
||||
|
||||
#: ../src/fe-gtk/maingui.c:2959
|
||||
msgid "_Regex"
|
||||
msgstr "Expression _rationnelle"
|
||||
msgstr "_Rege"
|
||||
|
||||
#: ../src/fe-gtk/maingui.c:2964
|
||||
msgid "Regard search string as a regular expression."
|
||||
msgstr "Traiter la chaîne de recherche comme une expression rationnelle."
|
||||
msgstr "Voir la chaîne de recherche comme une expression régulière."
|
||||
|
||||
#: ../src/fe-gtk/menu.c:115
|
||||
msgid "Host unknown"
|
||||
@@ -3956,19 +3954,19 @@ msgstr "Cycler canal"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1077
|
||||
msgid "_Autojoin"
|
||||
msgstr "Rejoindre _automatiquement"
|
||||
msgstr "Rejoindre automatiquement si expulsé"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1079
|
||||
msgid "Autojoin Channel"
|
||||
msgstr "Rejoindre le canal automatiquement"
|
||||
msgstr "Joindre le canal automatiquement"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1113 ../src/fe-gtk/menu.c:1117
|
||||
msgid "_Auto-Connect"
|
||||
msgstr "Connexion _automatique"
|
||||
msgstr "Connexion automatique"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1137
|
||||
msgid ": User menu"
|
||||
msgstr ": menu utilisateur"
|
||||
msgstr "XChat : menu utilisateur"
|
||||
|
||||
#. sep
|
||||
#: ../src/fe-gtk/menu.c:1146
|
||||
@@ -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..."
|
||||
@@ -4005,7 +4003,7 @@ msgstr "Récupérer la liste des canaux..."
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1461
|
||||
msgid " has been build without plugin support."
|
||||
msgstr "a été compilé sans prise en charge des greffons."
|
||||
msgstr "a été compilé sans prise en charge des extensions."
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1469
|
||||
msgid ""
|
||||
@@ -4042,7 +4040,7 @@ msgid ""
|
||||
"%s = selected nick\n"
|
||||
"%t = time/date\n"
|
||||
"%u = selected users account"
|
||||
msgstr "Boutons de la liste d'utilisateurs - codes spéciaux :\n\n%a = tous les pseudos sélectionnés\n%c = canal actuel\n%e = nom du réseau actuel\n%h = hôte des pseudos sélectionnés\n%m = informations sur la machine\n%n = votre pseudo\n%s = pseudo sélectionné\n%t = date et heure\n%u = nom de compte des pseudos sélectionnés"
|
||||
msgstr "Bouttons de la liste d'utilisateurs - codes spéciaux :\n\n%a = tous les pseudos sélectionnés\n%c = canal actuel\n%e = nom du réseau actuel\n%h = hôte des pseudos sélectionnés\n%m = information machine\n%n = votre pseudo\n%s = pseudo sélectionné\n%t = date et heure\n%u = nom de compte des pseudos sélectionnés"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1496
|
||||
msgid ""
|
||||
@@ -4057,7 +4055,7 @@ msgid ""
|
||||
"%s = selected nick\n"
|
||||
"%t = time/date\n"
|
||||
"%u = selected users account"
|
||||
msgstr "Boutons de dialogue - codes spéciaux :\n\n%a = tous les pseudos sélectionnés\n%c = canal actuel\n%e = nom du réseau actuel\n%h = hôte du pseudo sélectionné\n% = informations sur la machine\n%n = votre pseudo\n%s = pseudo sélectionné\n%t = date et heure\n%u = nom de compte du pseudo sélectionné"
|
||||
msgstr "Boutons de dialogue - codes spéciaux :\n\n%a = tous les pseudos sélectionnés\n%c = canal actuel\n%e = nom du réseau actuel\n%h = hôte du pseudo sélectionné\n% = information machine\n%n = votre pseudo\n%s = pseudo sélectionné\n%t = date et heure\n%u = nom de compte du pseudo sélectionné"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1507
|
||||
msgid ""
|
||||
@@ -4089,11 +4087,11 @@ msgstr "Gestionnaire d'URL - Codes d'échappement :\n\n%s = la chaîne URL\n\n
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1527
|
||||
msgid ": User Defined Commands"
|
||||
msgstr ": commandes définies par l'utilisateur"
|
||||
msgstr "XChat : commandes définies par l'utilisateur"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1534
|
||||
msgid ": Userlist Popup menu"
|
||||
msgstr ": menu de la liste des utilisateurs"
|
||||
msgstr "XChat : menu de la liste des utilisateurs"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1541
|
||||
msgid "Replace with"
|
||||
@@ -4101,23 +4099,23 @@ msgstr "Remplacer par"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1541
|
||||
msgid ": Replace"
|
||||
msgstr ": remplacer"
|
||||
msgstr "XChat : remplacer"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1548
|
||||
msgid ": URL Handlers"
|
||||
msgstr ": gestionnaires d'URL"
|
||||
msgstr "XChat : gestionnaires d'URL"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1567
|
||||
msgid ": Userlist buttons"
|
||||
msgstr ": boutons de la liste des utilisateurs"
|
||||
msgstr "XChat : boutons de la liste des utilisateurs"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1574
|
||||
msgid ": Dialog buttons"
|
||||
msgstr ": boutons de dialogue"
|
||||
msgstr "XChat : boutons de dialogue"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1581
|
||||
msgid ": CTCP Replies"
|
||||
msgstr ": réponses CTCP"
|
||||
msgstr "XChat : réponses CTCP"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1743
|
||||
msgid "He_xChat"
|
||||
@@ -4226,15 +4224,15 @@ msgstr "Re_joindre un canal..."
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1791
|
||||
msgid "_List of Channels..."
|
||||
msgstr "_Liste des canaux..."
|
||||
msgstr "_Liste de canaux..."
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1794
|
||||
msgid "Marked _Away"
|
||||
msgstr "Se marquer _absent"
|
||||
msgstr "Marqué _absent"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1796
|
||||
msgid "_Usermenu"
|
||||
msgstr "Menu de l'_utilisateur"
|
||||
msgstr "Menu de l_utilisateur"
|
||||
|
||||
#. 40
|
||||
#: ../src/fe-gtk/menu.c:1798
|
||||
@@ -4312,7 +4310,7 @@ msgstr "Liste d'ignorance..."
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1818
|
||||
msgid "_Plugins and Scripts..."
|
||||
msgstr "_Greffons et scripts..."
|
||||
msgstr "_Plugins et scripts..."
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1819
|
||||
msgid "_Raw Log..."
|
||||
@@ -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"
|
||||
@@ -4421,7 +4419,7 @@ msgstr "Notifier depuis les réseaux suivants :"
|
||||
|
||||
#: ../src/fe-gtk/notifygui.c:381
|
||||
msgid "Comma separated list of networks is accepted."
|
||||
msgstr "Une liste de réseaux séparés par une virgule est acceptée."
|
||||
msgstr "Entrez les réseaux séparés par une virgule."
|
||||
|
||||
#: ../src/fe-gtk/notifygui.c:407
|
||||
msgid ": Friends List"
|
||||
@@ -4434,7 +4432,7 @@ msgstr "Ouvrir la fenêtre de dialogue"
|
||||
#: ../src/fe-gtk/plugin-tray.c:264
|
||||
#, c-format
|
||||
msgid ": Connected to %u networks and %u channels"
|
||||
msgstr ": Vous êtes connecté à %u réseaux et %u canaux"
|
||||
msgstr "XChat : Vous êtes connecté à %u réseaux et %u canaux"
|
||||
|
||||
#: ../src/fe-gtk/plugin-tray.c:628
|
||||
msgid "_Restore Window"
|
||||
@@ -4463,7 +4461,7 @@ msgstr "Messages en surbrillance"
|
||||
#. blink_item (BIT_FILEOFFER, submenu, _("File Offer"));
|
||||
#: ../src/fe-gtk/plugin-tray.c:640
|
||||
msgid "_Change status"
|
||||
msgstr "_Changer d'état"
|
||||
msgstr "_Changer l'état"
|
||||
|
||||
#: ../src/fe-gtk/plugin-tray.c:646
|
||||
msgid "_Away"
|
||||
@@ -4476,12 +4474,12 @@ msgstr "_Retour"
|
||||
#: ../src/fe-gtk/plugin-tray.c:714
|
||||
#, c-format
|
||||
msgid ": Highlighted message from: %s (%s)"
|
||||
msgstr ": Message en surbrillance de %s (%s)"
|
||||
msgstr "XChat : Message en surbrillance de %s (%s)"
|
||||
|
||||
#: ../src/fe-gtk/plugin-tray.c:717
|
||||
#, c-format
|
||||
msgid ": %u highlighted messages, latest from: %s (%s)"
|
||||
msgstr ": %u messages en surbrillance. Le dernier est de %s (%s)"
|
||||
msgstr "XChat : %u messages en surbrillance. Le dernier est de %s (%s)"
|
||||
|
||||
#: ../src/fe-gtk/plugin-tray.c:722
|
||||
#, c-format
|
||||
@@ -4506,12 +4504,12 @@ msgstr "Message de canal de : %s (%s)"
|
||||
#: ../src/fe-gtk/plugin-tray.c:771
|
||||
#, c-format
|
||||
msgid ": Private message from: %s (%s)"
|
||||
msgstr ": Message privé de %s (%s)"
|
||||
msgstr "XChat : Message privé de %s (%s)"
|
||||
|
||||
#: ../src/fe-gtk/plugin-tray.c:774
|
||||
#, c-format
|
||||
msgid ": %u private messages, latest from: %s (%s)"
|
||||
msgstr ": %u messages privés. Le dernier est de %s (%s)"
|
||||
msgstr "XChat : %u messages privés. Le dernier est de %s (%s)"
|
||||
|
||||
#: ../src/fe-gtk/plugin-tray.c:779
|
||||
#, c-format
|
||||
@@ -4521,17 +4519,17 @@ msgstr "Message privé de : %s (%s)"
|
||||
#: ../src/fe-gtk/plugin-tray.c:818
|
||||
#, c-format
|
||||
msgid ": File offer from: %s (%s)"
|
||||
msgstr ": Demande de transfert de fichier de %s (%s)"
|
||||
msgstr "XChat : Demande de transfert de fichier de %s (%s)"
|
||||
|
||||
#: ../src/fe-gtk/plugin-tray.c:821
|
||||
#, c-format
|
||||
msgid ": %u file offers, latest from: %s (%s)"
|
||||
msgstr ": %u demandes de transferts de fichier. Le dernier est de %s (%s)"
|
||||
msgstr "XChat : %u demandes de transferts de fichier. Le dernier est de %s (%s)"
|
||||
|
||||
#: ../src/fe-gtk/plugin-tray.c:826
|
||||
#, c-format
|
||||
msgid "File offer from: %s (%s)"
|
||||
msgstr ": Demande de transfert de fichier de %s (%s)"
|
||||
msgstr "XChat : Demande de transfert de fichier de %s (%s)"
|
||||
|
||||
#: ../src/fe-gtk/plugingui.c:64
|
||||
msgid "Version"
|
||||
@@ -4547,7 +4545,7 @@ msgstr "Sélectionner un greffon ou un script à charger"
|
||||
|
||||
#: ../src/fe-gtk/plugingui.c:252
|
||||
msgid ": Plugins and Scripts"
|
||||
msgstr ": greffons et scripts"
|
||||
msgstr "XChat : greffons et scripts"
|
||||
|
||||
#: ../src/fe-gtk/plugingui.c:267
|
||||
msgid "_Load..."
|
||||
@@ -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 ""
|
||||
@@ -4693,11 +4691,11 @@ msgstr "Jeu de caractères :"
|
||||
|
||||
#: ../src/fe-gtk/servlistgui.c:1970
|
||||
msgid ": Network List"
|
||||
msgstr ": liste des réseaux"
|
||||
msgstr "XChat : liste des réseaux"
|
||||
|
||||
#: ../src/fe-gtk/servlistgui.c:1981
|
||||
msgid "User Information"
|
||||
msgstr "Informations utilisateur"
|
||||
msgstr "Information utilisateur"
|
||||
|
||||
#: ../src/fe-gtk/servlistgui.c:2005
|
||||
msgid "Third choice:"
|
||||
@@ -4727,7 +4725,7 @@ msgstr "_Trier"
|
||||
msgid ""
|
||||
"Sorts the network list in alphabetical order. Use SHIFT-UP and SHIFT-DOWN "
|
||||
"keys to move a row."
|
||||
msgstr "Trie les réseaux par ordre alphabétique. Utiliser MAJ + Haut et MAJ + Bas pour déplacer une ligne."
|
||||
msgstr "Trie les réseaux dans l'ordre alphabétique. Utilisez Shift-Haut et Shift-Bas pour déplacer une ligne."
|
||||
|
||||
#: ../src/fe-gtk/servlistgui.c:2168
|
||||
msgid "_Favor"
|
||||
@@ -4943,7 +4941,7 @@ msgstr "Ukrainien"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:139
|
||||
msgid "Vietnamese"
|
||||
msgstr "Vietnamien"
|
||||
msgstr "Viétnamien"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:140
|
||||
msgid "Walloon"
|
||||
@@ -5077,11 +5075,11 @@ msgstr "Dictionnaire à utiliser : "
|
||||
msgid ""
|
||||
"Use language codes (as in \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\n"
|
||||
"Separate multiple entries with commas."
|
||||
msgstr "Utiliser des codes de langues (comme dans « %LOCALAPPDATA%\\enchant\\myspell\\dicts »).\nSéparer les entrées multiples avec des virgules."
|
||||
msgstr "Utiliser des codes de langues (en tant que \"%LOCALAPPDATA%\\enchant\\myspell\\dicts\").\nSéparez les entrées par des virgules."
|
||||
|
||||
#: ../src/fe-gtk/setup.c:199
|
||||
msgid "Use language codes. Separate multiple entries with commas."
|
||||
msgstr "Utiliser des codes de langue. Séparer les entrées multiples avec des virgules."
|
||||
msgstr "Entrez des codes de langue Séparer les par une virgule."
|
||||
|
||||
#: ../src/fe-gtk/setup.c:202
|
||||
msgid "Nick Completion"
|
||||
@@ -5093,7 +5091,7 @@ msgstr "Suffixe pour la complétion des pseudonymes :"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:204
|
||||
msgid "Nick completion sorted:"
|
||||
msgstr "Tri de la complétion des pseudonymes :"
|
||||
msgstr "Tri de la complétion des pseudo :"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:205
|
||||
msgid "Nick completion amount:"
|
||||
@@ -5101,7 +5099,7 @@ msgstr "Maximum pour la complétion de pseudonymes :"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:205
|
||||
msgid "Threshold of nicks to start listing instead of completing"
|
||||
msgstr "Lister les pseudonymes au lieu de les compléter au-delà de ce seuil"
|
||||
msgstr "Seuil du nombre de pseudonymes à lister au lieu de compléter"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:205
|
||||
msgid "nicks."
|
||||
@@ -5165,11 +5163,11 @@ msgstr "Afficher les noms d'hôtes dans la liste des utilisateurs"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:255
|
||||
msgid "Show icons for user modes"
|
||||
msgstr "Afficher des icônes pour les modes utilisateurs"
|
||||
msgstr "Afficher des icones pour les modes utilisateurs"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:255
|
||||
msgid "Use graphical icons instead of text symbols in the user list."
|
||||
msgstr "Afficher des icônes plutôt que du texte dans la liste des utilisateurs."
|
||||
msgstr "Afficher des icones plutôt que du texte dans la liste des utilisateurs."
|
||||
|
||||
#: ../src/fe-gtk/setup.c:256
|
||||
msgid "Color nicknames in userlist"
|
||||
@@ -5274,7 +5272,7 @@ msgstr "Trier les onglets par ordre alphabétique"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:314
|
||||
msgid "Show icons in the channel tree"
|
||||
msgstr "Afficher des icônes dans l'arbre des canaux"
|
||||
msgstr "Montrer des icones dans l'arbre des canaux"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:315
|
||||
msgid "Show dotted lines in the channel tree"
|
||||
@@ -5362,7 +5360,7 @@ msgstr "Télécharger les fichiers vers :"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:353
|
||||
msgid "Move completed files to:"
|
||||
msgstr "Déplacer les fichiers complets vers :"
|
||||
msgstr "Déplacer les fichiers terminés vers :"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:354
|
||||
msgid "Save nick name in filenames"
|
||||
@@ -5419,24 +5417,24 @@ msgstr "Alertes"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:400 ../src/fe-gtk/setup.c:452
|
||||
msgid "Show tray balloons on:"
|
||||
msgstr "Afficher une fenêtre de notification pour :"
|
||||
msgstr "Quand montrer une fenêtre de notification :"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:402
|
||||
msgid "Blink tray icon on:"
|
||||
msgstr "Faire clignoter l'icône de barre d'état pour :"
|
||||
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 pour :"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/setup.c:407 ../src/fe-gtk/setup.c:453
|
||||
msgid "Blink task bar on:"
|
||||
msgstr "Faire clignoter la barre des tâches pour :"
|
||||
msgstr "Quand faire clignoter la barre d'état :"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:411 ../src/fe-gtk/setup.c:414
|
||||
#: ../src/fe-gtk/setup.c:416 ../src/fe-gtk/setup.c:454
|
||||
msgid "Make a beep sound on:"
|
||||
msgstr "Émettre un bip pour :"
|
||||
msgstr "Quand émettre un bip : "
|
||||
|
||||
#: ../src/fe-gtk/setup.c:411
|
||||
msgid ""
|
||||
@@ -5452,7 +5450,7 @@ msgstr "Jouer « message-new-instant » depuis le thème de sons freedesktop.org
|
||||
|
||||
#: ../src/fe-gtk/setup.c:416
|
||||
msgid "Play a GTK beep upon the selected events"
|
||||
msgstr "Jouer un bip GTK sur les événements sélectionnés"
|
||||
msgstr "Jouer un bip GTK quand le ou les événements arrivent"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:420 ../src/fe-gtk/setup.c:456
|
||||
msgid "Omit alerts when marked as being away"
|
||||
@@ -5484,7 +5482,7 @@ msgstr "Gérer le statut absent/présent automatiquement"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:431
|
||||
msgid "Automatically change status when hiding to tray."
|
||||
msgstr "Automatiquement changer d'état en cachant l'application dans la barre de tâches."
|
||||
msgstr "Automatiquement changer de statut en cachant l'application dans la barre de tâches."
|
||||
|
||||
#: ../src/fe-gtk/setup.c:433
|
||||
msgid "Only show tray balloons when hidden or iconified"
|
||||
@@ -5505,7 +5503,7 @@ msgstr "Mots déclenchant une surbrillance :"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:440 ../src/fe-gtk/setup.c:463
|
||||
msgid "Nick names not to highlight:"
|
||||
msgstr "Pseudos à ne pas mettre en surbrillance :"
|
||||
msgstr "Pseudo à ne pas mettre en surbrillance :"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:441 ../src/fe-gtk/setup.c:464
|
||||
msgid "Nick names to always highlight:"
|
||||
@@ -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:"
|
||||
@@ -5641,7 +5639,7 @@ msgstr "Police alternative :"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:517
|
||||
msgid "Separate multiple entries with commas without spaces before or after."
|
||||
msgstr "Séparer plusieurs entrées avec des virgules sans espaces avant ou après la virgule."
|
||||
msgstr "Séparez plusieurs entrées avec des virgules sans espaces avant ou après la virgule."
|
||||
|
||||
#: ../src/fe-gtk/setup.c:519
|
||||
msgid "Display lists in compact mode"
|
||||
@@ -5653,13 +5651,13 @@ msgstr "Utiliser moins d'espace entre la liste des utilisateurs et l'arbre des c
|
||||
|
||||
#: ../src/fe-gtk/setup.c:520
|
||||
msgid "Use server time if supported"
|
||||
msgstr "Utiliser le temps serveur si pris en charge"
|
||||
msgstr "Utiliser le temps serveur si pris en charg"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:520
|
||||
msgid ""
|
||||
"Display timestamps obtained from server if it supports the time-server "
|
||||
"extension."
|
||||
msgstr "Afficher les horodatages obtenus depuis le serveur s'il prend en charge l'extension serveur de temps."
|
||||
msgstr "Afficher les horodatages obtenus depuis le serveur s'il supporte l'extension du temps côté serveur."
|
||||
|
||||
#: ../src/fe-gtk/setup.c:521
|
||||
msgid "Automatically reconnect to servers on disconnect"
|
||||
@@ -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"
|
||||
@@ -6030,7 +6028,7 @@ msgstr "*ATTENTION*\nAccepter automatiquement les DCC dans votre répertoire per
|
||||
|
||||
#: ../src/fe-gtk/setup.c:2198
|
||||
msgid ": Preferences"
|
||||
msgstr ": préférences"
|
||||
msgstr "XChat : préférences"
|
||||
|
||||
#: ../src/fe-gtk/sexy-spell-entry.c:545
|
||||
msgid "<i>(no suggestions)</i>"
|
||||
@@ -6091,11 +6089,11 @@ msgstr "Tout tester"
|
||||
|
||||
#: ../src/fe-gtk/textgui.c:485
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/urlgrab.c:198
|
||||
msgid ": URL Grabber"
|
||||
msgstr ": récupération d'URL"
|
||||
msgstr "XChat : récupération d'URL"
|
||||
|
||||
#: ../src/fe-gtk/urlgrab.c:212
|
||||
msgid "Clear list"
|
||||
|
4
po/id.po
4
po/id.po
@@ -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"
|
||||
|
5
po/it.po
5
po/it.po
@@ -6,14 +6,13 @@
|
||||
# Claudio Arseni <claudio.arseni@gmail.com>, 2013-2014
|
||||
# Eros Palberti - Fabio Viola : How-Tux Team <admin@how-tux.com>, 2006
|
||||
# Random_R, 2013
|
||||
# Random_R, 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-09-03 19:07+0000\n"
|
||||
"Last-Translator: Teodoro Santoni <asbrasbra@gmail.com>\n"
|
||||
"PO-Revision-Date: 2014-05-30 13:32+0000\n"
|
||||
"Last-Translator: Claudio Arseni <claudio.arseni@gmail.com>\n"
|
||||
"Language-Team: Italian (http://www.transifex.com/projects/p/hexchat/language/it/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
547
po/ja_JP.po
547
po/ja_JP.po
File diff suppressed because it is too large
Load Diff
6
po/ko.po
6
po/ko.po
@@ -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"
|
||||
|
4
po/ml.po
4
po/ml.po
@@ -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"
|
||||
|
6
po/nb.po
6
po/nb.po
@@ -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"
|
||||
|
2610
po/pt_BR.po
2610
po/pt_BR.po
File diff suppressed because it is too large
Load Diff
2
po/ru.po
2
po/ru.po
@@ -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 ""
|
||||
|
2
po/sr.po
2
po/sr.po
@@ -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 ""
|
||||
|
@@ -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 ""
|
||||
|
66
po/sv.po
66
po/sv.po
@@ -3,16 +3,14 @@
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
#
|
||||
# Translators:
|
||||
# Jakob <jakob@knugen.nu>, 2014
|
||||
# Jakob <jakob@knugen.nu>, 2012
|
||||
# Martin Jernberg <bittin@cafe8bitar.se>, 2014
|
||||
# androidnisse <jakob@knugen.nu>, 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-08-22 13:24+0000\n"
|
||||
"Last-Translator: Martin Jernberg <bittin@cafe8bitar.se>\n"
|
||||
"PO-Revision-Date: 2014-05-14 17:20+0000\n"
|
||||
"Last-Translator: TingPing <tingping@tingping.se>\n"
|
||||
"Language-Team: Swedish (http://www.transifex.com/projects/p/hexchat/language/sv/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -25,7 +23,7 @@ msgid ""
|
||||
"HexChat is an easy to use yet extensible IRC Client. It allows you to "
|
||||
"securely join multiple networks and talk to users privately or in channels "
|
||||
"using a customizable interface. You can even transfer files."
|
||||
msgstr "HexChat är en lättanvänd men även utbyggbar IRC klient. Den låter dig säkert ansluta till flera nätverk och prata med användare privat eller i kanaler med ett anpassningsbart utseende. Du kan även överföra filer."
|
||||
msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.appdata.xml.in.h:2
|
||||
msgid ""
|
||||
@@ -35,15 +33,15 @@ msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:1
|
||||
msgid "HexChat"
|
||||
msgstr "HexChat"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:2
|
||||
msgid "IRC Client"
|
||||
msgstr "IRC klient"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:3
|
||||
msgid "Chat with other people online"
|
||||
msgstr "Chatta med andra människor online"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:4
|
||||
msgid "IM;Chat;"
|
||||
@@ -51,11 +49,11 @@ msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:5
|
||||
msgid "Open Safe Mode"
|
||||
msgstr "Öppna säkert läge"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/misc/htm.desktop.in.h:1
|
||||
msgid "HexChat Theme Manager"
|
||||
msgstr "HexChat temahanterare "
|
||||
msgstr ""
|
||||
|
||||
#. 0 means unlimited
|
||||
#. STRINGS
|
||||
@@ -130,15 +128,15 @@ msgstr "_Skicka en fil"
|
||||
|
||||
#: ../src/common/hexchat.c:869
|
||||
msgid "_User Info (WhoIs)"
|
||||
msgstr "_Användarinfo (Whois)"
|
||||
msgstr "An_vändarinfo (Whois)"
|
||||
|
||||
#: ../src/common/hexchat.c:870
|
||||
msgid "_Add to Friends List"
|
||||
msgstr "_Lägg till i vänlista"
|
||||
msgstr "_Lägg till i vännerlista"
|
||||
|
||||
#: ../src/common/hexchat.c:871
|
||||
msgid "_Ignore"
|
||||
msgstr "_Ignorera"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/hexchat.c:872
|
||||
msgid "O_perator Actions"
|
||||
@@ -214,7 +212,7 @@ msgstr "Ta bort op"
|
||||
|
||||
#: ../src/common/hexchat.c:918
|
||||
msgid "bye"
|
||||
msgstr "hej då"
|
||||
msgstr "hejdå"
|
||||
|
||||
#: ../src/common/hexchat.c:919
|
||||
#, c-format
|
||||
@@ -255,7 +253,7 @@ msgstr "Ping"
|
||||
#, c-format
|
||||
msgid ""
|
||||
"You do not have write access to %s. Nothing from this session can be saved."
|
||||
msgstr "Du har inte skrivrättigheter till %s. Ingenting från den här sessionen kan bli sparat"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/hexchat.c:1139
|
||||
msgid ""
|
||||
@@ -2446,7 +2444,7 @@ msgstr "Jordanien"
|
||||
|
||||
#: ../src/common/util.c:1112
|
||||
msgid "Company Jobs"
|
||||
msgstr "Företags jobb"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/util.c:1113
|
||||
msgid "Japan"
|
||||
@@ -2554,7 +2552,7 @@ msgstr "Moldavien"
|
||||
|
||||
#: ../src/common/util.c:1139
|
||||
msgid "Montenegro"
|
||||
msgstr "Montenegro"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/util.c:1140
|
||||
msgid "United States Medical"
|
||||
@@ -2622,7 +2620,7 @@ msgstr "Mauritius"
|
||||
|
||||
#: ../src/common/util.c:1156
|
||||
msgid "Museums"
|
||||
msgstr "Museum"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/util.c:1157
|
||||
msgid "Maldives"
|
||||
@@ -2786,7 +2784,7 @@ msgstr "Gammaldags ARPAnet"
|
||||
|
||||
#: ../src/common/util.c:1197
|
||||
msgid "Serbia"
|
||||
msgstr "Serbien"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/util.c:1198
|
||||
msgid "Russian Federation"
|
||||
@@ -2858,7 +2856,7 @@ msgstr "Surinam"
|
||||
|
||||
#: ../src/common/util.c:1215
|
||||
msgid "South Sudan"
|
||||
msgstr "Syd Sudan"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/util.c:1216
|
||||
msgid "Sao Tome and Principe"
|
||||
@@ -3088,7 +3086,7 @@ msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/banlist.c:67
|
||||
msgid "Invites"
|
||||
msgstr "Inbjudningar"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/banlist.c:68 ../src/fe-gtk/ignoregui.c:164
|
||||
msgid "Invite"
|
||||
@@ -3723,7 +3721,7 @@ msgstr "<u>Understruken</u>"
|
||||
|
||||
#: ../src/fe-gtk/maingui.c:1475
|
||||
msgid "<i>Italic</i>"
|
||||
msgstr "<i>kursiv</i>"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/maingui.c:1476
|
||||
msgid "Normal"
|
||||
@@ -3837,7 +3835,7 @@ msgstr "Ange nytt smeknamn:"
|
||||
|
||||
#: ../src/fe-gtk/maingui.c:2832
|
||||
msgid "No results found."
|
||||
msgstr "Inga resultat funna."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/maingui.c:2928
|
||||
msgid "Search hit end or not found."
|
||||
@@ -3895,7 +3893,7 @@ msgstr "Användare:"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:637
|
||||
msgid "Account:"
|
||||
msgstr "Konto:"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/menu.c:647
|
||||
msgid "Country:"
|
||||
@@ -4116,7 +4114,7 @@ msgstr "XChat: CTCP-svar"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1743
|
||||
msgid "He_xChat"
|
||||
msgstr "He_xChat"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1744
|
||||
msgid "Network Li_st..."
|
||||
@@ -4201,7 +4199,7 @@ msgstr "Diagram"
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1785
|
||||
msgid "_Fullscreen"
|
||||
msgstr "_Fullskärm"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/menu.c:1787
|
||||
msgid "_Server"
|
||||
@@ -5959,7 +5957,7 @@ msgstr "Gränssnitt"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:1807
|
||||
msgid "Appearance"
|
||||
msgstr "Utseende "
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/setup.c:1808
|
||||
msgid "Input box"
|
||||
@@ -5983,7 +5981,7 @@ msgstr "Chattande"
|
||||
|
||||
#: ../src/fe-gtk/setup.c:1816
|
||||
msgid "Sounds"
|
||||
msgstr "Ljud"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/setup.c:1818
|
||||
msgid "Advanced"
|
||||
@@ -6025,7 +6023,7 @@ msgstr "*VARNING*\nAtt automatiskt acceptera DCC till din\nhemkatalog kan vara f
|
||||
|
||||
#: ../src/fe-gtk/setup.c:2198
|
||||
msgid ": Preferences"
|
||||
msgstr ": Inställningar"
|
||||
msgstr "XChat: Inställningar"
|
||||
|
||||
#: ../src/fe-gtk/sexy-spell-entry.c:545
|
||||
msgid "<i>(no suggestions)</i>"
|
||||
@@ -6033,7 +6031,7 @@ msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/sexy-spell-entry.c:559
|
||||
msgid "More..."
|
||||
msgstr "Mer..."
|
||||
msgstr ""
|
||||
|
||||
#. + Add to Dictionary
|
||||
#: ../src/fe-gtk/sexy-spell-entry.c:631
|
||||
@@ -6044,11 +6042,11 @@ msgstr ""
|
||||
#. - Ignore All
|
||||
#: ../src/fe-gtk/sexy-spell-entry.c:676
|
||||
msgid "Ignore All"
|
||||
msgstr "Ignorera alla"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/sexy-spell-entry.c:711
|
||||
msgid "Spelling Suggestions"
|
||||
msgstr "Stavningsförslag"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/sexy-spell-entry.c:1272
|
||||
#, c-format
|
||||
@@ -6086,7 +6084,7 @@ msgstr "Testa allt"
|
||||
|
||||
#: ../src/fe-gtk/textgui.c:485
|
||||
msgid "OK"
|
||||
msgstr "OK"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/fe-gtk/urlgrab.c:198
|
||||
msgid ": URL Grabber"
|
||||
|
95
po/tr.po
95
po/tr.po
@@ -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-10-06 16:54+0000\n"
|
||||
"Last-Translator: Demiray Muhterem <mdemiray@msn.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"
|
||||
@@ -38,27 +37,27 @@ msgstr ""
|
||||
|
||||
#: ../data/misc/hexchat.desktop.in.h:1
|
||||
msgid "HexChat"
|
||||
msgstr "HexChat"
|
||||
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"
|
||||
msgstr "İnsanlar ile çevrimiçi sohbet"
|
||||
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"
|
||||
msgstr "Güvenli Modda Aç"
|
||||
msgstr ""
|
||||
|
||||
#: ../data/misc/htm.desktop.in.h:1
|
||||
msgid "HexChat Theme Manager"
|
||||
msgstr "Hexchat Tema Yöneticisi"
|
||||
msgstr ""
|
||||
|
||||
#. 0 means unlimited
|
||||
#. STRINGS
|
||||
@@ -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 ""
|
||||
@@ -1407,7 +1406,7 @@ msgstr "Katılan kişinin adı"
|
||||
|
||||
#: ../src/common/text.c:1033
|
||||
msgid "The channel being joined"
|
||||
msgstr "Kanala girildi."
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1034 ../src/common/text.c:1097
|
||||
#: ../src/common/text.c:1148
|
||||
@@ -1416,7 +1415,7 @@ msgstr "Kişinin bilgisayarı"
|
||||
|
||||
#: ../src/common/text.c:1035
|
||||
msgid "The account of the person"
|
||||
msgstr "Kişinin hesabı"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1039 ../src/common/text.c:1046
|
||||
#: ../src/common/text.c:1053 ../src/common/text.c:1265
|
||||
@@ -1470,7 +1469,7 @@ msgstr "Sunucu Adı"
|
||||
|
||||
#: ../src/common/text.c:1060
|
||||
msgid "Acknowledged Capabilities"
|
||||
msgstr "Sunucu Özellikleri"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1065
|
||||
msgid "Server Capabilities"
|
||||
@@ -1578,7 +1577,7 @@ msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1171
|
||||
msgid "The nick of the person who set the key"
|
||||
msgstr "Kilidi ayarlayan kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1172
|
||||
msgid "The key"
|
||||
@@ -1586,7 +1585,7 @@ msgstr "Anahtar"
|
||||
|
||||
#: ../src/common/text.c:1176
|
||||
msgid "The nick of the person who set the limit"
|
||||
msgstr "Limiti ayarlayan kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1177
|
||||
msgid "The limit"
|
||||
@@ -1594,31 +1593,31 @@ msgstr "Sınır"
|
||||
|
||||
#: ../src/common/text.c:1181
|
||||
msgid "The nick of the person who did the op'ing"
|
||||
msgstr "Op veren kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1182
|
||||
msgid "The nick of the person who has been op'ed"
|
||||
msgstr "Op olan kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1186
|
||||
msgid "The nick of the person who has been halfop'ed"
|
||||
msgstr "Yarım Op olan kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1187
|
||||
msgid "The nick of the person who did the halfop'ing"
|
||||
msgstr "Yarım Op veren kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1191
|
||||
msgid "The nick of the person who did the voice'ing"
|
||||
msgstr "Konuşma izni veren kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1192
|
||||
msgid "The nick of the person who has been voice'ed"
|
||||
msgstr "Konuşma izni alan kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1196
|
||||
msgid "The nick of the person who did the banning"
|
||||
msgstr "Banlayan kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1197 ../src/common/text.c:1229
|
||||
msgid "The ban mask"
|
||||
@@ -1626,7 +1625,7 @@ msgstr "Yasak maskesi"
|
||||
|
||||
#: ../src/common/text.c:1201
|
||||
msgid "The nick of the person who did the quieting"
|
||||
msgstr "Konuşma iznini alan kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1202 ../src/common/text.c:1234
|
||||
msgid "The quiet mask"
|
||||
@@ -1634,43 +1633,43 @@ msgstr "Sessiz maske"
|
||||
|
||||
#: ../src/common/text.c:1206
|
||||
msgid "The nick who removed the key"
|
||||
msgstr "Kilidi kaldıranın rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1210
|
||||
msgid "The nick who removed the limit"
|
||||
msgstr "Limiti kaldıranın rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1214
|
||||
msgid "The nick of the person of did the deop'ing"
|
||||
msgstr "Op alan kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1215
|
||||
msgid "The nick of the person who has been deop'ed"
|
||||
msgstr "Op'u alınan kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1218
|
||||
msgid "The nick of the person of did the dehalfop'ing"
|
||||
msgstr "Yarım Op'u alan kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1219
|
||||
msgid "The nick of the person who has been dehalfop'ed"
|
||||
msgstr "Yarım Op'u elinden alınan kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1223
|
||||
msgid "The nick of the person of did the devoice'ing"
|
||||
msgstr "Konuşma iznini alan kişini rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1224
|
||||
msgid "The nick of the person who has been devoice'ed"
|
||||
msgstr "Konuşma izni alınan kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1228
|
||||
msgid "The nick of the person of did the unban'ing"
|
||||
msgstr "Yasağı kaldıran kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1233
|
||||
msgid "The nick of the person of did the unquiet'ing"
|
||||
msgstr "Konuşma yasağını kaldıran kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1238
|
||||
msgid "The nick of the person who did the exempt"
|
||||
@@ -1686,7 +1685,7 @@ msgstr "Kişinin kullanıcı adı serbest bırakıldı."
|
||||
|
||||
#: ../src/common/text.c:1248
|
||||
msgid "The nick of the person who did the invite"
|
||||
msgstr "Davet eden kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1249 ../src/common/text.c:1254
|
||||
msgid "The invite mask"
|
||||
@@ -1694,15 +1693,15 @@ msgstr "Davet maskesi"
|
||||
|
||||
#: ../src/common/text.c:1253
|
||||
msgid "The nick of the person removed the invite"
|
||||
msgstr "Daveti kaldıran kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1258
|
||||
msgid "The nick of the person setting the mode"
|
||||
msgstr "Mod ayarlarını yapan kişinin rumuzu"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1259
|
||||
msgid "The mode's sign (+/-)"
|
||||
msgstr "Mod'lar imza (+/-)"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1260
|
||||
msgid "The mode letter"
|
||||
@@ -1710,7 +1709,7 @@ msgstr "Mektup Modu"
|
||||
|
||||
#: ../src/common/text.c:1261
|
||||
msgid "The channel it's being set on"
|
||||
msgstr "Bu şu anda kanal ayarlanıyor"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/text.c:1268
|
||||
msgid "Full name"
|
||||
@@ -2893,7 +2892,7 @@ msgstr "Chad"
|
||||
|
||||
#: ../src/common/util.c:1223
|
||||
msgid "Internet Communication Services"
|
||||
msgstr "İnternet İletişim Hizmetleri"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/util.c:1224
|
||||
msgid "French Southern Territories"
|
||||
@@ -2937,7 +2936,7 @@ msgstr "Türkiye"
|
||||
|
||||
#: ../src/common/util.c:1235
|
||||
msgid "Travel and Tourism"
|
||||
msgstr "Seyahat ve Turizm"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/util.c:1236
|
||||
msgid "Trinidad and Tobago"
|
||||
@@ -3017,7 +3016,7 @@ msgstr "Samoa"
|
||||
|
||||
#: ../src/common/util.c:1255
|
||||
msgid "Adult Entertainment"
|
||||
msgstr "Yetişkin Eğlence"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/util.c:1256
|
||||
msgid "Yemen"
|
||||
@@ -3053,7 +3052,7 @@ msgstr ""
|
||||
|
||||
#: ../src/common/dbus/dbus-client.c:114 ../src/common/dbus/dbus-client.c:128
|
||||
msgid "Failed to complete Command"
|
||||
msgstr "Komut başarısız"
|
||||
msgstr ""
|
||||
|
||||
#: ../src/common/dbus/dbus-plugin.c:30
|
||||
msgid "remote access"
|
||||
|
46
po/zh_CN.po
46
po/zh_CN.po
@@ -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-11-02 15:21+0000\n"
|
||||
"Last-Translator: Michael Jay Tong <michaeljayt@gmail.com>\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,12 +289,12 @@ 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
|
||||
msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n"
|
||||
msgstr "您正受到来自 %s 的 MSG 洪水攻击,设置图形化自动对话框为关闭。\n"
|
||||
msgstr "您正受到来自 %s 的 MSG 洪水攻击,自动打开图形化对话框参数gui_autoopen_dialog 将设置为关闭。\n"
|
||||
|
||||
#: ../src/common/notify.c:558
|
||||
#, 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"
|
||||
@@ -987,7 +985,7 @@ msgstr "%C22*%O$t%C26$1%O 给了 %C18$2%O 发言权"
|
||||
|
||||
#: ../src/common/textevents.h:114
|
||||
msgid "%C23*%O$tConnected. Now logging in."
|
||||
msgstr "%C23*%O$t 已连接。正在登录..."
|
||||
msgstr "%C23*%O$tC 已连接。正在登录..."
|
||||
|
||||
#: ../src/common/textevents.h:117
|
||||
msgid "%C23*%O$tConnecting to %C29$1%C (%C23$2:$3%O)"
|
||||
@@ -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 ""
|
||||
@@ -4737,7 +4735,7 @@ msgstr "按字母顺序排练网络列表。使用SHIFT+上下方向键来移动
|
||||
|
||||
#: ../src/fe-gtk/servlistgui.c:2168
|
||||
msgid "_Favor"
|
||||
msgstr "收藏(_F)"
|
||||
msgstr "收藏 (_F)"
|
||||
|
||||
#: ../src/fe-gtk/servlistgui.c:2169
|
||||
msgid "Mark or unmark this network as a favorite."
|
||||
@@ -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"
|
||||
|
@@ -313,10 +313,13 @@ get_xdir (void)
|
||||
if (portable_mode () || SHGetKnownFolderPath (&FOLDERID_RoamingAppData, 0, NULL, &roaming_path_wide) != S_OK)
|
||||
{
|
||||
char *path;
|
||||
|
||||
path = g_win32_get_package_installation_directory_of_module (NULL);
|
||||
if (path)
|
||||
char file[MAX_PATH];
|
||||
HMODULE hModule;
|
||||
|
||||
hModule = GetModuleHandle (NULL);
|
||||
if (GetModuleFileName (hModule, file, sizeof(file)))
|
||||
{
|
||||
path = g_path_get_dirname (file);
|
||||
xdir = g_build_filename (path, "config", NULL);
|
||||
g_free (path);
|
||||
}
|
||||
|
@@ -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"
|
||||
|
||||
|
@@ -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>
|
@@ -55,6 +55,11 @@
|
||||
#include <glib-object.h> /* for g_type_init() */
|
||||
#endif
|
||||
|
||||
#ifdef USE_OPENSSL
|
||||
#include <openssl/ssl.h> /* SSL_() */
|
||||
#include "ssl.h"
|
||||
#endif
|
||||
|
||||
#ifdef USE_MSPROXY
|
||||
#include "msproxy.h"
|
||||
#endif
|
||||
@@ -113,6 +118,10 @@ struct session *current_tab;
|
||||
struct session *current_sess = 0;
|
||||
struct hexchatprefs prefs;
|
||||
|
||||
#ifdef USE_OPENSSL
|
||||
SSL_CTX *ctx = NULL;
|
||||
#endif
|
||||
|
||||
#ifdef USE_LIBPROXY
|
||||
pxProxyFactory *libproxy_factory;
|
||||
#endif
|
||||
@@ -982,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)
|
||||
@@ -1140,6 +1114,15 @@ main (int argc, char *argv[])
|
||||
px_proxy_factory_free(libproxy_factory);
|
||||
#endif
|
||||
|
||||
#ifdef USE_OPENSSL
|
||||
if (ctx)
|
||||
_SSL_context_free (ctx);
|
||||
#endif
|
||||
|
||||
#ifdef USE_DEBUG
|
||||
hexchat_mem_list ();
|
||||
#endif
|
||||
|
||||
#ifdef WIN32
|
||||
WSACleanup ();
|
||||
#endif
|
||||
|
@@ -17,11 +17,7 @@
|
||||
* 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>
|
||||
@@ -532,7 +528,6 @@ typedef struct server
|
||||
struct msproxy_state_t msp_state;
|
||||
int id; /* unique ID number (for plugin API) */
|
||||
#ifdef USE_OPENSSL
|
||||
SSL_CTX *ctx;
|
||||
SSL *ssl;
|
||||
int ssl_do_connect_tag;
|
||||
#else
|
||||
|
@@ -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
|
||||
|
@@ -47,7 +47,7 @@
|
||||
|
||||
#else
|
||||
|
||||
#include "../../config-win32.h"
|
||||
#include "../../config.h"
|
||||
#ifdef USE_IPV6
|
||||
#include <winsock2.h>
|
||||
#include <ws2tcpip.h>
|
||||
|
@@ -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
|
||||
|
@@ -293,20 +293,26 @@ notify_set_offline_list (server * serv, char *users, int quiet,
|
||||
struct notify_per_server *servnot;
|
||||
char nick[NICKLEN];
|
||||
char *token, *chr;
|
||||
int pos;
|
||||
|
||||
token = strtok (users, ",");
|
||||
while (token != NULL)
|
||||
{
|
||||
chr = strchr (token, '!');
|
||||
if (chr != NULL)
|
||||
*chr = '\0';
|
||||
if (!chr)
|
||||
goto end;
|
||||
|
||||
g_strlcpy (nick, token, sizeof(nick));
|
||||
pos = chr - token;
|
||||
if (pos + 1 >= sizeof(nick))
|
||||
goto end;
|
||||
|
||||
memset (nick, 0, sizeof(nick));
|
||||
strncpy (nick, token, pos);
|
||||
|
||||
servnot = notify_find (serv, nick);
|
||||
if (servnot)
|
||||
notify_announce_offline (serv, servnot, nick, quiet, tags_data);
|
||||
|
||||
end:
|
||||
token = strtok (NULL, ",");
|
||||
}
|
||||
}
|
||||
@@ -318,20 +324,26 @@ notify_set_online_list (server * serv, char *users,
|
||||
struct notify_per_server *servnot;
|
||||
char nick[NICKLEN];
|
||||
char *token, *chr;
|
||||
int pos;
|
||||
|
||||
token = strtok (users, ",");
|
||||
while (token != NULL)
|
||||
{
|
||||
chr = strchr (token, '!');
|
||||
if (chr != NULL)
|
||||
*chr = '\0';
|
||||
if (!chr)
|
||||
goto end;
|
||||
|
||||
g_strlcpy (nick, token, sizeof(nick));
|
||||
pos = chr - token;
|
||||
if (pos + 1 >= sizeof(nick))
|
||||
goto end;
|
||||
|
||||
memset (nick, 0, sizeof(nick));
|
||||
strncpy (nick, token, pos);
|
||||
|
||||
servnot = notify_find (serv, nick);
|
||||
if (servnot)
|
||||
notify_announce_online (serv, servnot, nick, tags_data);
|
||||
|
||||
end:
|
||||
token = strtok (NULL, ",");
|
||||
}
|
||||
}
|
||||
@@ -398,50 +410,32 @@ void
|
||||
notify_send_watches (server * serv)
|
||||
{
|
||||
struct notify *notify;
|
||||
const int format_len = serv->supports_monitor ? 1 : 2; /* just , for monitor or + and space for watch */
|
||||
GSList *list;
|
||||
GSList *point;
|
||||
GSList *send_list = NULL;
|
||||
int len = 0;
|
||||
int len;
|
||||
|
||||
/* Only get the list for this network */
|
||||
list = notify_list;
|
||||
len = 0;
|
||||
point = list = notify_list;
|
||||
while (list)
|
||||
{
|
||||
notify = list->data;
|
||||
|
||||
if (notify_do_network (notify, serv))
|
||||
{
|
||||
send_list = g_slist_append (send_list, notify);
|
||||
len += strlen (notify->name) + serv->supports_monitor ? 1 : 2; /* just , for monitor or + and space for watch */;
|
||||
if (len > 500)
|
||||
{
|
||||
notify_flush_watches (serv, point, list);
|
||||
len = strlen (notify->name) + serv->supports_monitor ? 1 : 2;
|
||||
point = list;
|
||||
}
|
||||
}
|
||||
|
||||
list = list->next;
|
||||
}
|
||||
|
||||
/* Now send that list in batches */
|
||||
point = list = send_list;
|
||||
while (list)
|
||||
{
|
||||
notify = list->data;
|
||||
|
||||
len += strlen (notify->name) + format_len;
|
||||
if (len > 500)
|
||||
{
|
||||
/* Too long send existing list */
|
||||
notify_flush_watches (serv, point, list);
|
||||
len = strlen (notify->name) + format_len;
|
||||
point = list; /* We left off here */
|
||||
}
|
||||
|
||||
list = g_slist_next (list);
|
||||
}
|
||||
|
||||
if (len) /* We had leftovers under 500, send them all */
|
||||
{
|
||||
if (point)
|
||||
notify_flush_watches (serv, point, NULL);
|
||||
}
|
||||
|
||||
g_slist_free (send_list);
|
||||
}
|
||||
|
||||
/* called when receiving a ISON 303 - should this func go? */
|
||||
|
@@ -1841,8 +1841,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 +2541,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 +2561,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 +3557,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 +3582,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))
|
||||
|
@@ -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);
|
||||
}
|
||||
@@ -1891,39 +1885,56 @@ hexchat_pluginpref_set_str (hexchat_plugin *pl, const char *var, const char *val
|
||||
return hexchat_pluginpref_set_str_real (pl, var, value, 1);
|
||||
}
|
||||
|
||||
static int
|
||||
hexchat_pluginpref_get_str_real (hexchat_plugin *pl, const char *var, char *dest, int dest_len)
|
||||
{
|
||||
char *confname, *canon, *cfg;
|
||||
|
||||
canon = g_strdup (pl->name);
|
||||
canonalize_key (canon);
|
||||
confname = g_strdup_printf ("%s%caddon_%s.conf", get_xdir(), G_DIR_SEPARATOR, canon);
|
||||
g_free (canon);
|
||||
|
||||
if (!g_file_get_contents (confname, &cfg, NULL, NULL))
|
||||
{
|
||||
g_free (confname);
|
||||
return 0;
|
||||
}
|
||||
|
||||
g_free (confname);
|
||||
|
||||
if (!cfg_get_str (cfg, var, dest, dest_len))
|
||||
{
|
||||
g_free (cfg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
g_free (cfg);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
hexchat_pluginpref_get_str (hexchat_plugin *pl, const char *var, char *dest)
|
||||
{
|
||||
/* All users of this must ensure dest is >= 512... */
|
||||
return hexchat_pluginpref_get_str_real (pl, var, dest, 512);
|
||||
int fh;
|
||||
int l;
|
||||
char confname[64];
|
||||
char *canon;
|
||||
char *cfg;
|
||||
struct stat st;
|
||||
|
||||
canon = g_strdup (pl->name);
|
||||
canonalize_key (canon);
|
||||
sprintf (confname, "addon_%s.conf", canon);
|
||||
g_free (canon);
|
||||
|
||||
/* partly borrowed from palette.c */
|
||||
fh = hexchat_open_file (confname, O_RDONLY, 0, 0);
|
||||
|
||||
if (fh == -1)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
fstat (fh, &st);
|
||||
cfg = malloc (st.st_size + 1);
|
||||
|
||||
if (!cfg)
|
||||
{
|
||||
close (fh);
|
||||
return 0;
|
||||
}
|
||||
|
||||
cfg[0] = '\0';
|
||||
l = read (fh, cfg, st.st_size);
|
||||
|
||||
if (l >= 0)
|
||||
{
|
||||
cfg[l] = '\0';
|
||||
}
|
||||
|
||||
if (!cfg_get_str (cfg, var, dest, 512)) /* dest_len is the same as buffer size in set */
|
||||
{
|
||||
free (cfg);
|
||||
close (fh);
|
||||
return 0;
|
||||
}
|
||||
|
||||
free (cfg);
|
||||
close (fh);
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
@@ -1940,7 +1951,7 @@ hexchat_pluginpref_get_int (hexchat_plugin *pl, const char *var)
|
||||
{
|
||||
char buffer[12];
|
||||
|
||||
if (hexchat_pluginpref_get_str_real (pl, var, buffer, sizeof(buffer)))
|
||||
if (hexchat_pluginpref_get_str (pl, var, buffer))
|
||||
{
|
||||
return atoi (buffer);
|
||||
}
|
||||
|
@@ -76,6 +76,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef USE_OPENSSL
|
||||
extern SSL_CTX *ctx; /* hexchat.c */
|
||||
/* local variables */
|
||||
static struct session *g_sess = NULL;
|
||||
#endif
|
||||
@@ -723,22 +724,9 @@ ssl_do_connect (server * serv)
|
||||
switch (verify_error)
|
||||
{
|
||||
case X509_V_OK:
|
||||
{
|
||||
X509 *cert = SSL_get_peer_certificate (serv->ssl);
|
||||
int hostname_err;
|
||||
if ((hostname_err = _SSL_check_hostname(cert, serv->hostname)) != 0)
|
||||
{
|
||||
snprintf (buf, sizeof (buf), "* Verify E: Failed to validate hostname? (%d)%s",
|
||||
hostname_err, serv->accept_invalid_cert ? " -- Ignored" : "");
|
||||
if (serv->accept_invalid_cert)
|
||||
EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, NULL, 0);
|
||||
else
|
||||
goto conn_fail;
|
||||
}
|
||||
break;
|
||||
}
|
||||
/* snprintf (buf, sizeof (buf), "* Verify OK (?)"); */
|
||||
/* EMIT_SIGNAL (XP_TE_SSLMESSAGE, serv->server_session, buf, NULL, NULL, NULL, 0); */
|
||||
break;
|
||||
case X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY:
|
||||
case X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE:
|
||||
case X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT:
|
||||
@@ -757,7 +745,6 @@ ssl_do_connect (server * serv)
|
||||
snprintf (buf, sizeof (buf), "%s.? (%d)",
|
||||
X509_verify_cert_error_string (verify_error),
|
||||
verify_error);
|
||||
conn_fail:
|
||||
EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, buf, NULL, NULL,
|
||||
NULL, 0);
|
||||
|
||||
@@ -874,8 +861,8 @@ server_connect_success (server *serv)
|
||||
|
||||
/* it'll be a memory leak, if connection isn't terminated by
|
||||
server_cleanup() */
|
||||
serv->ssl = _SSL_socket (serv->ctx, serv->sok);
|
||||
if ((err = _SSL_set_verify (serv->ctx, ssl_cb_verify, NULL)))
|
||||
serv->ssl = _SSL_socket (ctx, serv->sok);
|
||||
if ((err = _SSL_set_verify (ctx, ssl_cb_verify, NULL)))
|
||||
{
|
||||
EMIT_SIGNAL (XP_TE_CONNFAIL, serv->server_session, err, NULL,
|
||||
NULL, NULL, 0);
|
||||
@@ -1679,9 +1666,9 @@ server_connect (server *serv, char *hostname, int port, int no_login)
|
||||
session *sess = serv->server_session;
|
||||
|
||||
#ifdef USE_OPENSSL
|
||||
if (!serv->ctx && serv->use_ssl)
|
||||
if (!ctx && serv->use_ssl)
|
||||
{
|
||||
if (!(serv->ctx = _SSL_context_init (ssl_cb_info, FALSE)))
|
||||
if (!(ctx = _SSL_context_init (ssl_cb_info, FALSE)))
|
||||
{
|
||||
fprintf (stderr, "_SSL_context_init failed\n");
|
||||
exit (1);
|
||||
@@ -1724,18 +1711,18 @@ server_connect (server *serv, char *hostname, int port, int no_login)
|
||||
/* first try network specific cert/key */
|
||||
cert_file = g_strdup_printf ("%s" G_DIR_SEPARATOR_S "certs" G_DIR_SEPARATOR_S "%s.pem",
|
||||
get_xdir (), server_get_network (serv, TRUE));
|
||||
if (SSL_CTX_use_certificate_file (serv->ctx, cert_file, SSL_FILETYPE_PEM) == 1)
|
||||
if (SSL_CTX_use_certificate_file (ctx, cert_file, SSL_FILETYPE_PEM) == 1)
|
||||
{
|
||||
if (SSL_CTX_use_PrivateKey_file (serv->ctx, cert_file, SSL_FILETYPE_PEM) == 1)
|
||||
if (SSL_CTX_use_PrivateKey_file (ctx, cert_file, SSL_FILETYPE_PEM) == 1)
|
||||
serv->have_cert = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* if that doesn't exist, try <config>/certs/client.pem */
|
||||
cert_file = g_build_filename (get_xdir (), "certs", "client.pem", NULL);
|
||||
if (SSL_CTX_use_certificate_file (serv->ctx, cert_file, SSL_FILETYPE_PEM) == 1)
|
||||
if (SSL_CTX_use_certificate_file (ctx, cert_file, SSL_FILETYPE_PEM) == 1)
|
||||
{
|
||||
if (SSL_CTX_use_PrivateKey_file (serv->ctx, cert_file, SSL_FILETYPE_PEM) == 1)
|
||||
if (SSL_CTX_use_PrivateKey_file (ctx, cert_file, SSL_FILETYPE_PEM) == 1)
|
||||
serv->have_cert = TRUE;
|
||||
}
|
||||
}
|
||||
@@ -2060,10 +2047,6 @@ server_free (server *serv)
|
||||
free (serv->encoding);
|
||||
if (serv->favlist)
|
||||
g_slist_free_full (serv->favlist, (GDestroyNotify) servlist_favchan_free);
|
||||
#ifdef USE_OPENSSL
|
||||
if (serv->ctx)
|
||||
_SSL_context_free (serv->ctx);
|
||||
#endif
|
||||
|
||||
fe_server_callback (serv);
|
||||
|
||||
|
@@ -75,16 +75,12 @@ static const struct defaultserver def[] =
|
||||
#endif
|
||||
#ifdef USE_OPENSSL
|
||||
{0, "irc.data.lt/+6668"},
|
||||
{0, "irc.omnitel.net/+6668"},
|
||||
{0, "irc.ktu.lt/+6668"},
|
||||
{0, "irc.kis.lt/+6668"},
|
||||
{0, "irc.vub.lt/+6668"},
|
||||
{0, "irc-ssl.omnitel.net/+6668"},
|
||||
#endif
|
||||
{0, "irc.data.lt"},
|
||||
{0, "irc.omnitel.net"},
|
||||
{0, "irc.ktu.lt"},
|
||||
{0, "irc.kis.lt"},
|
||||
{0, "irc.vub.lt"},
|
||||
|
||||
{"AlphaChat", 0, 0, 0, LOGIN_SASL},
|
||||
{0, "irc.alphachat.net"},
|
||||
@@ -245,12 +241,6 @@ static const struct defaultserver def[] =
|
||||
{"GameSurge", 0},
|
||||
{0, "irc.gamesurge.net"},
|
||||
|
||||
{"GeeksIRC", 0, 0, 0, LOGIN_SASL},
|
||||
#ifdef USE_OPENSSL
|
||||
{0, "irc.geeksirc.net/+6697"},
|
||||
#endif
|
||||
{0, "irc.geeksirc.net"},
|
||||
|
||||
{"GeekShed", 0},
|
||||
{0, "irc.geekshed.net"},
|
||||
|
||||
@@ -280,12 +270,6 @@ static const struct defaultserver def[] =
|
||||
#endif
|
||||
{0, "irc.interlinked.me"},
|
||||
|
||||
{"IRC4Fun", 0, 0, 0, LOGIN_SASL},
|
||||
#ifdef USE_OPENSSL
|
||||
{0, "irc.irc4fun.net/+6697"},
|
||||
#endif
|
||||
{0, "irc.irc4fun.net"},
|
||||
|
||||
{"IRCHighWay", 0},
|
||||
#ifdef USE_OPENSSL
|
||||
{0, "irc.irchighway.net/+9999"},
|
||||
|
237
src/common/ssl.c
237
src/common/ssl.c
@@ -25,25 +25,18 @@
|
||||
#include "inet.h" /* make it first to avoid macro redefinitions */
|
||||
#include <openssl/ssl.h> /* SSL_() */
|
||||
#include <openssl/err.h> /* ERR_() */
|
||||
#include <openssl/x509v3.h>
|
||||
#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 */
|
||||
|
||||
#ifndef HAVE_SNPRINTF
|
||||
#include <glib.h>
|
||||
#include <glib/gprintf.h>
|
||||
#include <gio/gio.h>
|
||||
#include "util.h"
|
||||
|
||||
/* If openssl was built without ec */
|
||||
#ifndef SSL_OP_SINGLE_ECDH_USE
|
||||
#define SSL_OP_SINGLE_ECDH_USE 0
|
||||
#define snprintf g_snprintf
|
||||
#endif
|
||||
|
||||
/* globals */
|
||||
@@ -62,7 +55,7 @@ __SSL_fill_err_buf (char *funcname)
|
||||
|
||||
err = ERR_get_error ();
|
||||
ERR_error_string (err, buf);
|
||||
g_snprintf (err_buf, sizeof (err_buf), "%s: %s (%d)\n", funcname, buf, err);
|
||||
snprintf (err_buf, sizeof (err_buf), "%s: %s (%d)\n", funcname, buf, err);
|
||||
}
|
||||
|
||||
|
||||
@@ -91,11 +84,6 @@ _SSL_context_init (void (*info_cb_func), int server)
|
||||
|
||||
SSL_CTX_set_session_cache_mode (ctx, SSL_SESS_CACHE_BOTH);
|
||||
SSL_CTX_set_timeout (ctx, 300);
|
||||
SSL_CTX_set_options (ctx, SSL_OP_NO_SSLv2|SSL_OP_NO_SSLv3
|
||||
|SSL_OP_NO_COMPRESSION
|
||||
|SSL_OP_SINGLE_DH_USE|SSL_OP_SINGLE_ECDH_USE
|
||||
|SSL_OP_NO_TICKET
|
||||
|SSL_OP_CIPHER_SERVER_PREFERENCE);
|
||||
|
||||
/* used in SSL_connect(), SSL_accept() */
|
||||
SSL_CTX_set_info_callback (ctx, info_cb_func);
|
||||
@@ -123,8 +111,8 @@ ASN1_TIME_snprintf (char *buf, int buf_len, ASN1_TIME * tm)
|
||||
buf[0] = 0;
|
||||
if (expires != NULL)
|
||||
{
|
||||
/* expires is not \0 terminated */
|
||||
safe_strcpy (buf, expires, MIN(24, buf_len));
|
||||
memset (buf, 0, buf_len);
|
||||
strncpy (buf, expires, 24);
|
||||
}
|
||||
BIO_free (inMem);
|
||||
}
|
||||
@@ -186,17 +174,17 @@ _SSL_get_cert_info (struct cert_info *cert_info, SSL * ssl)
|
||||
|
||||
peer_pkey = X509_get_pubkey (peer_cert);
|
||||
|
||||
safe_strcpy (cert_info->algorithm,
|
||||
strncpy (cert_info->algorithm,
|
||||
(alg == NID_undef) ? "Unknown" : OBJ_nid2ln (alg),
|
||||
sizeof (cert_info->algorithm));
|
||||
cert_info->algorithm_bits = EVP_PKEY_bits (peer_pkey);
|
||||
safe_strcpy (cert_info->sign_algorithm,
|
||||
strncpy (cert_info->sign_algorithm,
|
||||
(sign_alg == NID_undef) ? "Unknown" : OBJ_nid2ln (sign_alg),
|
||||
sizeof (cert_info->sign_algorithm));
|
||||
/* EVP_PKEY_bits(ca_pkey)); */
|
||||
cert_info->sign_algorithm_bits = 0;
|
||||
safe_strcpy (cert_info->notbefore, notBefore, sizeof (cert_info->notbefore));
|
||||
safe_strcpy (cert_info->notafter, notAfter, sizeof (cert_info->notafter));
|
||||
strncpy (cert_info->notbefore, notBefore, sizeof (cert_info->notbefore));
|
||||
strncpy (cert_info->notafter, notAfter, sizeof (cert_info->notafter));
|
||||
|
||||
EVP_PKEY_free (peer_pkey);
|
||||
|
||||
@@ -225,9 +213,9 @@ _SSL_get_cipher_info (SSL * ssl)
|
||||
|
||||
|
||||
c = SSL_get_current_cipher (ssl);
|
||||
safe_strcpy (chiper_info.version, SSL_CIPHER_get_version (c),
|
||||
strncpy (chiper_info.version, SSL_CIPHER_get_version (c),
|
||||
sizeof (chiper_info.version));
|
||||
safe_strcpy (chiper_info.chiper, SSL_CIPHER_get_name (c),
|
||||
strncpy (chiper_info.chiper, SSL_CIPHER_get_name (c),
|
||||
sizeof (chiper_info.chiper));
|
||||
SSL_CIPHER_get_bits (c, &chiper_info.chiper_bits);
|
||||
|
||||
@@ -343,204 +331,3 @@ _SSL_close (SSL * ssl)
|
||||
SSL_free (ssl);
|
||||
ERR_remove_state (0); /* free state buffer */
|
||||
}
|
||||
|
||||
/* Hostname validation code based on OpenBSD's libtls. */
|
||||
|
||||
static int
|
||||
_SSL_match_hostname (const char *cert_hostname, const char *hostname)
|
||||
{
|
||||
const char *cert_domain, *domain, *next_dot;
|
||||
|
||||
if (g_ascii_strcasecmp (cert_hostname, hostname) == 0)
|
||||
return 0;
|
||||
|
||||
/* Wildcard match? */
|
||||
if (cert_hostname[0] == '*')
|
||||
{
|
||||
/*
|
||||
* Valid wildcards:
|
||||
* - "*.domain.tld"
|
||||
* - "*.sub.domain.tld"
|
||||
* - etc.
|
||||
* Reject "*.tld".
|
||||
* No attempt to prevent the use of eg. "*.co.uk".
|
||||
*/
|
||||
cert_domain = &cert_hostname[1];
|
||||
/* Disallow "*" */
|
||||
if (cert_domain[0] == '\0')
|
||||
return -1;
|
||||
/* Disallow "*foo" */
|
||||
if (cert_domain[0] != '.')
|
||||
return -1;
|
||||
/* Disallow "*.." */
|
||||
if (cert_domain[1] == '.')
|
||||
return -1;
|
||||
next_dot = strchr (&cert_domain[1], '.');
|
||||
/* Disallow "*.bar" */
|
||||
if (next_dot == NULL)
|
||||
return -1;
|
||||
/* Disallow "*.bar.." */
|
||||
if (next_dot[1] == '.')
|
||||
return -1;
|
||||
|
||||
domain = strchr (hostname, '.');
|
||||
|
||||
/* No wildcard match against a hostname with no domain part. */
|
||||
if (domain == NULL || strlen(domain) == 1)
|
||||
return -1;
|
||||
|
||||
if (g_ascii_strcasecmp (cert_domain, domain) == 0)
|
||||
return 0;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int
|
||||
_SSL_check_subject_altname (X509 *cert, const char *host)
|
||||
{
|
||||
STACK_OF(GENERAL_NAME) *altname_stack = NULL;
|
||||
GInetAddress *addr;
|
||||
GSocketFamily family;
|
||||
int type = GEN_DNS;
|
||||
int count, i;
|
||||
int rv = -1;
|
||||
|
||||
altname_stack = X509_get_ext_d2i (cert, NID_subject_alt_name, NULL, NULL);
|
||||
if (altname_stack == NULL)
|
||||
return -1;
|
||||
|
||||
addr = g_inet_address_new_from_string (host);
|
||||
if (addr != NULL)
|
||||
{
|
||||
family = g_inet_address_get_family (addr);
|
||||
if (family == G_SOCKET_FAMILY_IPV4 || family == G_SOCKET_FAMILY_IPV6)
|
||||
type = GEN_IPADD;
|
||||
}
|
||||
|
||||
count = sk_GENERAL_NAME_num(altname_stack);
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
GENERAL_NAME *altname;
|
||||
|
||||
altname = sk_GENERAL_NAME_value (altname_stack, i);
|
||||
|
||||
if (altname->type != type)
|
||||
continue;
|
||||
|
||||
if (type == GEN_DNS)
|
||||
{
|
||||
unsigned char *data;
|
||||
int format;
|
||||
|
||||
format = ASN1_STRING_type (altname->d.dNSName);
|
||||
if (format == V_ASN1_IA5STRING)
|
||||
{
|
||||
data = ASN1_STRING_data (altname->d.dNSName);
|
||||
|
||||
if (ASN1_STRING_length (altname->d.dNSName) != (int)strlen(data))
|
||||
{
|
||||
g_warning("NUL byte in subjectAltName, probably a malicious certificate.\n");
|
||||
rv = -2;
|
||||
break;
|
||||
}
|
||||
|
||||
if (_SSL_match_hostname (data, host) == 0)
|
||||
{
|
||||
rv = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
g_warning ("unhandled subjectAltName dNSName encoding (%d)\n", format);
|
||||
|
||||
}
|
||||
else if (type == GEN_IPADD)
|
||||
{
|
||||
unsigned char *data;
|
||||
const guint8 *addr_bytes;
|
||||
int datalen, addr_len;
|
||||
|
||||
datalen = ASN1_STRING_length (altname->d.iPAddress);
|
||||
data = ASN1_STRING_data (altname->d.iPAddress);
|
||||
|
||||
addr_bytes = g_inet_address_to_bytes (addr);
|
||||
addr_len = (int)g_inet_address_get_native_size (addr);
|
||||
|
||||
if (datalen == addr_len && memcmp (data, addr_bytes, addr_len) == 0)
|
||||
{
|
||||
rv = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (addr != NULL)
|
||||
g_object_unref (addr);
|
||||
sk_GENERAL_NAME_free (altname_stack);
|
||||
return rv;
|
||||
}
|
||||
|
||||
static int
|
||||
_SSL_check_common_name (X509 *cert, const char *host)
|
||||
{
|
||||
X509_NAME *name;
|
||||
char *common_name = NULL;
|
||||
int common_name_len;
|
||||
int rv = -1;
|
||||
GInetAddress *addr;
|
||||
|
||||
name = X509_get_subject_name (cert);
|
||||
if (name == NULL)
|
||||
return -1;
|
||||
|
||||
common_name_len = X509_NAME_get_text_by_NID (name, NID_commonName, NULL, 0);
|
||||
if (common_name_len < 0)
|
||||
return -1;
|
||||
|
||||
common_name = calloc (common_name_len + 1, 1);
|
||||
if (common_name == NULL)
|
||||
return -1;
|
||||
|
||||
X509_NAME_get_text_by_NID (name, NID_commonName, common_name, common_name_len + 1);
|
||||
|
||||
/* NUL bytes in CN? */
|
||||
if (common_name_len != (int)strlen(common_name))
|
||||
{
|
||||
g_warning ("NUL byte in Common Name field, probably a malicious certificate.\n");
|
||||
rv = -2;
|
||||
goto out;
|
||||
}
|
||||
|
||||
if ((addr = g_inet_address_new_from_string (host)) != NULL)
|
||||
{
|
||||
/*
|
||||
* We don't want to attempt wildcard matching against IP
|
||||
* addresses, so perform a simple comparison here.
|
||||
*/
|
||||
if (g_strcmp0 (common_name, host) == 0)
|
||||
rv = 0;
|
||||
else
|
||||
rv = -1;
|
||||
|
||||
g_object_unref (addr);
|
||||
}
|
||||
else if (_SSL_match_hostname (common_name, host) == 0)
|
||||
rv = 0;
|
||||
|
||||
out:
|
||||
free(common_name);
|
||||
return rv;
|
||||
}
|
||||
|
||||
int
|
||||
_SSL_check_hostname (X509 *cert, const char *host)
|
||||
{
|
||||
int rv;
|
||||
|
||||
rv = _SSL_check_subject_altname (cert, host);
|
||||
if (rv == 0 || rv == -2)
|
||||
return rv;
|
||||
|
||||
return _SSL_check_common_name (cert, host);
|
||||
}
|
@@ -37,7 +37,7 @@ struct cert_info {
|
||||
|
||||
struct chiper_info {
|
||||
char version[16];
|
||||
char chiper[48];
|
||||
char chiper[24];
|
||||
int chiper_bits;
|
||||
};
|
||||
|
||||
@@ -52,7 +52,7 @@ char *_SSL_set_verify (SSL_CTX *ctx, void *(verify_callback), char *cacert);
|
||||
int SSL_get_fd(SSL *);
|
||||
*/
|
||||
void _SSL_close (SSL * ssl);
|
||||
int _SSL_check_hostname(X509 *cert, const char *host);
|
||||
|
||||
int _SSL_get_cert_info (struct cert_info *cert_info, SSL * ssl);
|
||||
struct chiper_info *_SSL_get_cipher_info (SSL * ssl);
|
||||
|
||||
|
@@ -2300,14 +2300,7 @@ sound_play (const char *file, gboolean quiet)
|
||||
if (g_access (wavfile, R_OK) == 0)
|
||||
{
|
||||
#ifdef WIN32
|
||||
gunichar2 *wavfile_utf16 = g_utf8_to_utf16 (wavfile, -1, NULL, NULL, NULL);
|
||||
|
||||
if (wavfile_utf16 != NULL)
|
||||
{
|
||||
PlaySoundW (wavfile_utf16, NULL, SND_NODEFAULT | SND_FILENAME | SND_ASYNC);
|
||||
|
||||
g_free (wavfile_utf16);
|
||||
}
|
||||
PlaySound (wavfile, NULL, SND_NODEFAULT|SND_FILENAME|SND_ASYNC);
|
||||
#else
|
||||
#ifdef USE_LIBCANBERRA
|
||||
if (ca_con == NULL)
|
||||
|
@@ -415,8 +415,8 @@ regex_match (const GRegex *re, const char *word, int *start, int *end)
|
||||
}
|
||||
|
||||
/* Miscellaneous description --- */
|
||||
#define DOMAIN "[_\\pL\\pN][-_\\pL\\pN]*(\\.[-_\\pL\\pN]+)*"
|
||||
#define TLD "\\.[\\pL][-\\pL\\pN]*[\\pL]"
|
||||
#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})"
|
||||
#define IPV6ADDR "((" IPV6GROUP "(:" IPV6GROUP "){7})" \
|
||||
@@ -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)
|
||||
|
@@ -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"
|
||||
@@ -433,33 +430,33 @@ char *
|
||||
expand_homedir (char *file)
|
||||
{
|
||||
#ifndef WIN32
|
||||
char *user;
|
||||
char *ret, *user;
|
||||
struct passwd *pw;
|
||||
|
||||
if (file[0] == '~')
|
||||
if (*file == '~')
|
||||
{
|
||||
if (file[1] == '\0' || file[1] == '/')
|
||||
return g_strconcat (g_get_home_dir (), &file[1], NULL);
|
||||
|
||||
char *slash_pos;
|
||||
|
||||
user = g_strdup(file);
|
||||
|
||||
slash_pos = strchr(user, '/');
|
||||
if (slash_pos != NULL)
|
||||
*slash_pos = '\0';
|
||||
|
||||
pw = getpwnam(user + 1);
|
||||
g_free(user);
|
||||
|
||||
if (pw == NULL)
|
||||
return g_strdup(file);
|
||||
|
||||
slash_pos = strchr(file, '/');
|
||||
if (slash_pos == NULL)
|
||||
return g_strdup (pw->pw_dir);
|
||||
if (file[1] != '\0' && file[1] != '/')
|
||||
{
|
||||
user = strdup(file);
|
||||
if (strchr(user,'/') != NULL)
|
||||
*(strchr(user,'/')) = '\0';
|
||||
if ((pw = getpwnam(user + 1)) == NULL)
|
||||
{
|
||||
free(user);
|
||||
return strdup(file);
|
||||
}
|
||||
free(user);
|
||||
user = strchr(file, '/') != NULL ? strchr(file,'/') : file;
|
||||
ret = malloc(strlen(user) + strlen(pw->pw_dir) + 1);
|
||||
strcpy(ret, pw->pw_dir);
|
||||
strcat(ret, user);
|
||||
}
|
||||
else
|
||||
return g_strconcat (pw->pw_dir, slash_pos, NULL);
|
||||
{
|
||||
ret = malloc (strlen (file) + strlen (g_get_home_dir ()) + 1);
|
||||
sprintf (ret, "%s%s", g_get_home_dir (), file + 1);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
return g_strdup (file);
|
||||
@@ -935,27 +932,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 +1295,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
|
||||
@@ -1893,8 +1728,7 @@ unity_mode ()
|
||||
{
|
||||
#ifdef G_OS_UNIX
|
||||
const char *env = g_getenv("XDG_CURRENT_DESKTOP");
|
||||
if (env && (strcmp (env, "Unity") == 0
|
||||
|| strcmp (env, "Pantheon") == 0))
|
||||
if (env && strcmp (env, "Unity") == 0)
|
||||
return 1;
|
||||
#endif
|
||||
return 0;
|
||||
@@ -2017,7 +1851,7 @@ encode_sasl_pass_blowfish (char *user, char *pass, char *data)
|
||||
memset (encrypted_pass, 0, pass_len);
|
||||
plain_pass = (char*)malloc (pass_len);
|
||||
memset (plain_pass, 0, pass_len);
|
||||
memcpy (plain_pass, pass, strlen(pass));
|
||||
memcpy (plain_pass, pass, pass_len);
|
||||
out_ptr = (char*)encrypted_pass;
|
||||
in_ptr = (char*)plain_pass;
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -239,9 +239,6 @@ banlist_sensitize (banlist_info *banl)
|
||||
int checkable, i;
|
||||
gboolean is_op = FALSE;
|
||||
|
||||
if (banl->sess->me == NULL)
|
||||
return;
|
||||
|
||||
/* FIXME: More access levels than these can unban */
|
||||
if (banl->sess->me->op || banl->sess->me->hop)
|
||||
is_op = TRUE;
|
||||
@@ -286,7 +283,7 @@ banlist_sensitize (banlist_info *banl)
|
||||
else
|
||||
{
|
||||
gtk_widget_set_sensitive (banl->but_clear, FALSE);
|
||||
gtk_widget_set_sensitive (banl->but_crop, banl->line_ct == banl->select_ct? FALSE: TRUE);
|
||||
gtk_widget_set_sensitive (banl->but_crop, TRUE);
|
||||
gtk_widget_set_sensitive (banl->but_remove, TRUE);
|
||||
}
|
||||
}
|
||||
@@ -413,7 +410,7 @@ banlist_select_changed (GtkWidget *item, banlist_info *banl)
|
||||
else
|
||||
{
|
||||
list = gtk_tree_selection_get_selected_rows (GTK_TREE_SELECTION (item), NULL);
|
||||
banl->select_ct = g_list_length (list);
|
||||
banl->select_ct = list? 1: 0;
|
||||
g_list_foreach (list, (GFunc) gtk_tree_path_free, NULL);
|
||||
g_list_free (list);
|
||||
}
|
||||
@@ -429,6 +426,7 @@ banlist_do_refresh (banlist_info *banl)
|
||||
session *sess = banl->sess;
|
||||
char tbuf[256];
|
||||
int i;
|
||||
char *tbufp;
|
||||
|
||||
banlist_sensitize (banl);
|
||||
|
||||
@@ -446,12 +444,14 @@ banlist_do_refresh (banlist_info *banl)
|
||||
banl->pending = banl->checked;
|
||||
if (banl->pending)
|
||||
{
|
||||
tbufp = tbuf + g_snprintf (tbuf, sizeof tbuf, "quote mode %s +", sess->channel);
|
||||
for (i = 0; i < MODE_CT; i++)
|
||||
if (banl->pending & 1<<i)
|
||||
{
|
||||
g_snprintf (tbuf, sizeof tbuf, "quote mode %s +%c", sess->channel, modes[i].letter);
|
||||
handle_command (sess, tbuf, FALSE);
|
||||
*tbufp++ = modes[i].letter;
|
||||
}
|
||||
*tbufp = 0;
|
||||
handle_command (sess, tbuf, FALSE);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@@ -53,6 +53,7 @@ typedef struct banlist_info_s {
|
||||
int current; /* index of currently processing mode */
|
||||
int line_ct; /* count of presented lines */
|
||||
int select_ct; /* count of selected lines */
|
||||
/* Not really; 1 if any are selected otherwise 0 */
|
||||
GtkWidget *window;
|
||||
GtkWidget *treeview;
|
||||
GtkWidget *checkboxes[MODE_CT];
|
||||
|
@@ -57,7 +57,7 @@
|
||||
#include <canberra.h>
|
||||
#endif
|
||||
|
||||
GdkPixmap *channelwin_pix;
|
||||
GdkPixbuf *channelwin_pix;
|
||||
|
||||
#ifdef USE_LIBCANBERRA
|
||||
static ca_context *ca_con;
|
||||
@@ -296,7 +296,7 @@ fe_init (void)
|
||||
#ifdef HAVE_GTK_MAC
|
||||
gtkosx_application_set_dock_icon_pixbuf (osx_app, pix_hexchat);
|
||||
#endif
|
||||
channelwin_pix = pixmap_load_from_file (prefs.hex_text_background);
|
||||
channelwin_pix = gdk_pixbuf_new_from_file (prefs.hex_text_background, NULL);
|
||||
input_style = create_input_style (gtk_style_new ());
|
||||
}
|
||||
|
||||
@@ -656,11 +656,10 @@ void
|
||||
fe_beep (session *sess)
|
||||
{
|
||||
#ifdef WIN32
|
||||
/* Play the "Instant Message Notification" system sound
|
||||
*/
|
||||
if (!PlaySoundW (L"Notification.IM", NULL, SND_ALIAS | SND_ASYNC))
|
||||
if (!PlaySound ("Notification.IM", NULL, SND_ALIAS|SND_ASYNC))
|
||||
{
|
||||
/* The user does not have the "Instant Message Notification" sound set. Fall back to system beep.
|
||||
/* This is really just a fallback attempt, may or may not work on new Windows releases, especially on x64.
|
||||
* You should set up the "Instant Message Notification" system sound instead, supported on Vista and up.
|
||||
*/
|
||||
Beep (1000, 50);
|
||||
}
|
||||
@@ -984,84 +983,23 @@ fe_set_inputbox_contents (session *sess, char *text)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __APPLE__
|
||||
static char *
|
||||
url_escape_hostname (const char *url)
|
||||
{
|
||||
char *host_start, *host_end, *ret, *hostname;
|
||||
|
||||
host_start = strstr (url, "://");
|
||||
if (host_start != NULL)
|
||||
{
|
||||
*host_start = '\0';
|
||||
host_start += 3;
|
||||
host_end = strchr (host_start, '/');
|
||||
|
||||
if (host_end != NULL)
|
||||
{
|
||||
*host_end = '\0';
|
||||
host_end++;
|
||||
}
|
||||
|
||||
hostname = g_hostname_to_ascii (host_start);
|
||||
if (host_end != NULL)
|
||||
ret = g_strdup_printf ("%s://%s/%s", url, hostname, host_end);
|
||||
else
|
||||
ret = g_strdup_printf ("%s://%s", url, hostname);
|
||||
|
||||
g_free (hostname);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return g_strdup (url);
|
||||
}
|
||||
|
||||
static void
|
||||
osx_show_uri (const char *url)
|
||||
{
|
||||
char *escaped_url, *encoded_url, *open, *cmd;
|
||||
|
||||
escaped_url = url_escape_hostname (url);
|
||||
encoded_url = g_filename_from_utf8 (escaped_url, -1, NULL, NULL, NULL);
|
||||
if (encoded_url)
|
||||
{
|
||||
open = g_find_program_in_path ("open");
|
||||
cmd = g_strjoin (" ", open, encoded_url, NULL);
|
||||
|
||||
hexchat_exec (cmd);
|
||||
|
||||
g_free (encoded_url);
|
||||
g_free (cmd);
|
||||
}
|
||||
|
||||
g_free (escaped_url);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static void
|
||||
fe_open_url_inner (const char *url)
|
||||
{
|
||||
#ifdef WIN32
|
||||
gunichar2 *url_utf16 = g_utf8_to_utf16 (url, -1, NULL, NULL, NULL);
|
||||
|
||||
if (url_utf16 == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ShellExecuteW (0, L"open", url_utf16, NULL, NULL, SW_SHOWNORMAL);
|
||||
|
||||
g_free (url_utf16);
|
||||
#elif defined(__APPLE__)
|
||||
osx_show_uri (url);
|
||||
ShellExecute (0, "open", url, NULL, NULL, SW_SHOWNORMAL);
|
||||
#elif defined __APPLE__
|
||||
/* on Mac you can just 'open http://foo.bar/' */
|
||||
gchar open[512];
|
||||
g_snprintf (open, sizeof(open), "%s %s", g_find_program_in_path ("open"), url, NULL);
|
||||
hexchat_exec (open);
|
||||
#else
|
||||
gtk_show_uri (NULL, url, GDK_CURRENT_TIME, NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
fe_open_url (const char *url)
|
||||
static void
|
||||
fe_open_url_locale (const char *url)
|
||||
{
|
||||
int url_type = url_check_word (url);
|
||||
char *uri;
|
||||
@@ -1103,6 +1041,27 @@ fe_open_url (const char *url)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
fe_open_url (const char *url)
|
||||
{
|
||||
char *loc;
|
||||
|
||||
if (prefs.utf8_locale)
|
||||
{
|
||||
fe_open_url_locale (url);
|
||||
return;
|
||||
}
|
||||
|
||||
/* the OS expects it in "locale" encoding. This makes it work on
|
||||
unix systems that use ISO-8859-x and Win32. */
|
||||
loc = g_locale_from_utf8 (url, -1, 0, 0, 0);
|
||||
if (loc)
|
||||
{
|
||||
fe_open_url_locale (loc);
|
||||
g_free (loc);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
fe_server_event (server *serv, int type, int arg)
|
||||
{
|
||||
|
@@ -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"
|
||||
|
||||
@@ -197,7 +193,7 @@ typedef struct session_gui
|
||||
|
||||
} session_gui;
|
||||
|
||||
extern GdkPixmap *channelwin_pix;
|
||||
extern GdkPixbuf *channelwin_pix;
|
||||
extern GdkPixmap *dialogwin_pix;
|
||||
|
||||
#define SPELL_ENTRY_GET_TEXT(e) ((char *)(gtk_entry_get_text (GTK_ENTRY(e))))
|
||||
|
@@ -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"
|
||||
|
@@ -66,69 +66,48 @@ gtkutil_file_req_destroy (GtkWidget * wid, struct file_req *freq)
|
||||
}
|
||||
|
||||
static void
|
||||
gtkutil_check_file (char *filename, struct file_req *freq)
|
||||
gtkutil_check_file (char *file, struct file_req *freq)
|
||||
{
|
||||
struct stat st;
|
||||
int axs = FALSE;
|
||||
char temp[256];
|
||||
|
||||
GFile *file = g_file_new_for_path (filename);
|
||||
path_part (file, temp, sizeof (temp));
|
||||
|
||||
/* check if the file is readable or writable */
|
||||
if (freq->flags & FRF_WRITE)
|
||||
{
|
||||
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 (g_file_info_get_attribute_boolean (fi, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE))
|
||||
{
|
||||
axs = TRUE;
|
||||
}
|
||||
|
||||
g_object_unref (fi);
|
||||
}
|
||||
|
||||
g_object_unref (parent);
|
||||
}
|
||||
else
|
||||
if (access (temp, W_OK) == 0)
|
||||
axs = TRUE;
|
||||
} 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 (stat (file, &st) != -1)
|
||||
{
|
||||
if (g_file_info_get_file_type (fi) != G_FILE_TYPE_DIRECTORY || (freq->flags & FRF_CHOOSEFOLDER))
|
||||
{
|
||||
if (!S_ISDIR (st.st_mode) || (freq->flags & FRF_CHOOSEFOLDER))
|
||||
axs = TRUE;
|
||||
}
|
||||
|
||||
g_object_unref (fi);
|
||||
}
|
||||
}
|
||||
|
||||
g_object_unref (file);
|
||||
|
||||
if (axs)
|
||||
{
|
||||
char *filename_utf8 = g_filename_to_utf8 (filename, -1, NULL, NULL, NULL);
|
||||
if (filename_utf8 != NULL)
|
||||
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)
|
||||
{
|
||||
freq->callback (freq->userdata, filename_utf8);
|
||||
g_free (filename_utf8);
|
||||
}
|
||||
else
|
||||
freq->callback (freq->userdata, utf8_file);
|
||||
g_free (utf8_file);
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,21 +128,12 @@ gtkutil_file_req_done (GtkWidget * wid, struct file_req *freq)
|
||||
}
|
||||
if (files)
|
||||
g_slist_free (files);
|
||||
}
|
||||
else
|
||||
} else
|
||||
{
|
||||
if (freq->flags & FRF_CHOOSEFOLDER)
|
||||
{
|
||||
gchar *filename = gtk_file_chooser_get_current_folder (fs);
|
||||
gtkutil_check_file (filename, freq);
|
||||
g_free (filename);
|
||||
}
|
||||
gtkutil_check_file (gtk_file_chooser_get_current_folder (fs), freq);
|
||||
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) */
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#include <winver.h>
|
||||
#include "../../config-win32.h"
|
||||
#include "../../config.h"
|
||||
|
||||
#define COMMA_VERSION <#= [string]::Join(',', $versionParts) #>,0
|
||||
|
||||
|
@@ -441,8 +441,7 @@ mg_windowstate_cb (GtkWindow *wid, GdkEventWindowState *event, gpointer userdata
|
||||
{
|
||||
if ((event->changed_mask & GDK_WINDOW_STATE_ICONIFIED) &&
|
||||
(event->new_window_state & GDK_WINDOW_STATE_ICONIFIED) &&
|
||||
prefs.hex_gui_tray_minimize && prefs.hex_gui_tray &&
|
||||
!unity_mode ())
|
||||
prefs.hex_gui_tray_minimize && !unity_mode ())
|
||||
{
|
||||
tray_toggle_visibility (TRUE);
|
||||
gtk_window_deiconify (wid);
|
||||
@@ -3843,18 +3842,17 @@ mg_drag_drop_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, guint
|
||||
gboolean
|
||||
mg_drag_motion_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, guint time, gpointer scbar)
|
||||
{
|
||||
GdkGC *gc;
|
||||
GdkColor col;
|
||||
GdkGCValues val;
|
||||
cairo_t *cr;
|
||||
int half, width, height;
|
||||
int ox, oy;
|
||||
GdkDrawable *draw;
|
||||
GtkAllocation allocation;
|
||||
|
||||
/* ignore file drops */
|
||||
if (!mg_is_gui_target (context))
|
||||
return FALSE;
|
||||
|
||||
gtk_widget_set_app_paintable (widget, TRUE);
|
||||
|
||||
if (scbar) /* scrollbar */
|
||||
{
|
||||
gtk_widget_get_allocation (widget, &allocation);
|
||||
@@ -3862,55 +3860,28 @@ mg_drag_motion_cb (GtkWidget *widget, GdkDragContext *context, int x, int y, gui
|
||||
oy = allocation.y;
|
||||
width = allocation.width;
|
||||
height = allocation.height;
|
||||
draw = gtk_widget_get_window (widget);
|
||||
}
|
||||
else
|
||||
{
|
||||
ox = oy = 0;
|
||||
width = gdk_window_get_width (gtk_widget_get_window (widget));
|
||||
height = gdk_window_get_height (gtk_widget_get_window (widget));
|
||||
draw = gtk_widget_get_window (widget);
|
||||
}
|
||||
|
||||
val.subwindow_mode = GDK_INCLUDE_INFERIORS;
|
||||
val.graphics_exposures = 0;
|
||||
val.function = GDK_XOR;
|
||||
|
||||
gc = gdk_gc_new_with_values (gtk_widget_get_window (widget), &val, GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW | GDK_GC_FUNCTION);
|
||||
col.red = rand() % 0xffff;
|
||||
col.green = rand() % 0xffff;
|
||||
col.blue = rand() % 0xffff;
|
||||
gdk_colormap_alloc_color (gtk_widget_get_colormap (widget), &col, FALSE, TRUE);
|
||||
gdk_gc_set_foreground (gc, &col);
|
||||
cr = gdk_cairo_create (gtk_widget_get_window (widget));
|
||||
cairo_set_source_rgb (cr, 0, 0, 1.0);
|
||||
cairo_set_line_width (cr, 0.1);
|
||||
|
||||
half = height / 2;
|
||||
|
||||
#if 0
|
||||
/* are both tree/userlist on the same side? */
|
||||
paned = (GtkPaned *)widget->parent->parent;
|
||||
if (paned->child1 != NULL && paned->child2 != NULL)
|
||||
{
|
||||
gdk_draw_rectangle (draw, gc, 0, 1, 2, width - 3, height - 4);
|
||||
gdk_draw_rectangle (draw, gc, 0, 0, 1, width - 1, height - 2);
|
||||
g_object_unref (gc);
|
||||
return TRUE;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (y < half)
|
||||
{
|
||||
gdk_draw_rectangle (draw, gc, FALSE, 1 + ox, 2 + oy, width - 3, half - 4);
|
||||
gdk_draw_rectangle (draw, gc, FALSE, 0 + ox, 1 + oy, width - 1, half - 2);
|
||||
gtk_widget_queue_draw_area (widget, ox, half + oy, width, height - half);
|
||||
}
|
||||
cairo_rectangle (cr, ox, oy, width, half);
|
||||
else
|
||||
{
|
||||
gdk_draw_rectangle (draw, gc, FALSE, 0 + ox, half + 1 + oy, width - 1, half - 2);
|
||||
gdk_draw_rectangle (draw, gc, FALSE, 1 + ox, half + 2 + oy, width - 3, half - 4);
|
||||
gtk_widget_queue_draw_area (widget, ox, oy, width, half);
|
||||
}
|
||||
cairo_rectangle (cr, ox, half + oy, width, half);
|
||||
|
||||
g_object_unref (gc);
|
||||
cairo_stroke (cr);
|
||||
cairo_destroy (cr);
|
||||
|
||||
gtk_widget_queue_draw_area (widget, ox, oy, width, height);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@@ -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);
|
||||
|
@@ -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);
|
||||
|
@@ -1526,14 +1526,13 @@ 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)
|
||||
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 (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 (login_types_conf[index] == LOGIN_CUSTOM)
|
||||
{
|
||||
gtk_notebook_set_current_page (GTK_NOTEBOOK (userdata), 2); /* FIXME avoid hardcoding? */
|
||||
|
@@ -2032,7 +2032,7 @@ setup_apply_real (int new_pix, int do_ulist, int do_layout)
|
||||
{
|
||||
if (channelwin_pix)
|
||||
g_object_unref (channelwin_pix);
|
||||
channelwin_pix = pixmap_load_from_file (prefs.hex_text_background);
|
||||
channelwin_pix = gdk_pixbuf_new_from_file (prefs.hex_text_background, NULL);
|
||||
}
|
||||
|
||||
input_style = create_input_style (input_style);
|
||||
@@ -2168,7 +2168,7 @@ setup_apply (struct hexchatprefs *pr)
|
||||
" restart to take full effect."), FE_MSG_WARN);
|
||||
|
||||
#ifndef WIN32
|
||||
if (prefs.hex_dcc_auto_recv == 2) /* Auto */
|
||||
if (prefs.hex_dcc_auto_recv)
|
||||
{
|
||||
if (!strcmp ((char *)g_get_home_dir (), prefs.hex_dcc_dir))
|
||||
{
|
||||
|
@@ -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"
|
||||
|
@@ -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
|
||||
@@ -1115,40 +1112,32 @@ entry_strsplit_utf8(GtkEntry *entry, gchar ***set, gint **starts, gint **ends)
|
||||
const PangoLogAttr *log_attrs;
|
||||
const gchar *text;
|
||||
gint n_attrs, n_strings, i, j;
|
||||
PangoLogAttr a;
|
||||
|
||||
layout = gtk_entry_get_layout(GTK_ENTRY(entry));
|
||||
text = gtk_entry_get_text(GTK_ENTRY(entry));
|
||||
log_attrs = pango_layout_get_log_attrs_readonly (layout, &n_attrs);
|
||||
|
||||
/* Find how many words we have */
|
||||
for (i = 0, n_strings = 0; i < n_attrs; i++)
|
||||
{
|
||||
a = log_attrs[i];
|
||||
if (a.is_word_start && a.is_word_boundary)
|
||||
n_strings = 0;
|
||||
for (i = 0; i < n_attrs; i++)
|
||||
if (log_attrs[i].is_word_start)
|
||||
n_strings++;
|
||||
}
|
||||
|
||||
*set = g_new0(gchar *, n_strings + 1);
|
||||
*starts = g_new0(gint, n_strings);
|
||||
*ends = g_new0(gint, n_strings);
|
||||
|
||||
/* Copy out strings */
|
||||
for (i = 0, j = 0; i < n_attrs; i++)
|
||||
{
|
||||
a = log_attrs[i];
|
||||
if (a.is_word_start && a.is_word_boundary)
|
||||
{
|
||||
for (i = 0, j = 0; i < n_attrs; i++) {
|
||||
if (log_attrs[i].is_word_start) {
|
||||
gint cend, bytes;
|
||||
gchar *start;
|
||||
|
||||
/* Find the end of this string */
|
||||
for (cend = i; cend < n_attrs; cend++)
|
||||
{
|
||||
a = log_attrs[cend];
|
||||
if (a.is_word_end && a.is_word_boundary)
|
||||
break;
|
||||
}
|
||||
cend = i;
|
||||
while ((!log_attrs[cend].is_word_end || !log_attrs[cend].is_word_boundary)
|
||||
&& !log_attrs[cend].is_white)
|
||||
cend++;
|
||||
|
||||
/* Copy sub-string */
|
||||
start = g_utf8_offset_to_pointer(text, i);
|
||||
|
@@ -18,6 +18,7 @@
|
||||
*
|
||||
* xtext, the text widget used by X-Chat.
|
||||
* By Peter Zelezny <zed@xchat.org>.
|
||||
* Includes work from Conspire and xchat-gnome
|
||||
*
|
||||
*/
|
||||
|
||||
@@ -31,12 +32,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"
|
||||
@@ -144,27 +140,54 @@ 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);
|
||||
|
||||
/* Avoid warning messages for this unused function */
|
||||
#if 0
|
||||
/* gives width of a 8bit string - with no mIRC codes in it */
|
||||
|
||||
static int
|
||||
gtk_xtext_text_width_8bit (GtkXText *xtext, unsigned char *str, int len)
|
||||
static inline void
|
||||
xtext_set_source_color (cairo_t *cr, GdkColor *color, gdouble alpha)
|
||||
{
|
||||
int width = 0;
|
||||
|
||||
while (len)
|
||||
{
|
||||
width += xtext->fontwidth[*str];
|
||||
str++;
|
||||
len--;
|
||||
}
|
||||
|
||||
return width;
|
||||
cairo_set_source_rgba (cr, color->red / 65535.0, color->green / 65535.0,
|
||||
color->blue / 65535.0, alpha);
|
||||
}
|
||||
#endif
|
||||
|
||||
#define xtext_draw_bg(xt,x,y,w,h) gdk_draw_rectangle(xt->draw_buf, xt->bgc, 1, x, y, w, h);
|
||||
static inline void
|
||||
xtext_draw_rectangle (GtkXText *xtext, cairo_t *cr, GdkColor *color, int x, int y, int width, int height)
|
||||
{
|
||||
cairo_save (cr);
|
||||
|
||||
xtext_set_source_color (cr, color, 1.0);
|
||||
cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
|
||||
cairo_rectangle (cr, (double)x, (double)y, (double)width, (double)height);
|
||||
cairo_fill (cr);
|
||||
|
||||
cairo_restore (cr);
|
||||
}
|
||||
|
||||
static inline void
|
||||
xtext_draw_line (GtkXText *xtext, cairo_t *cr, GdkColor *color, int x1, int y1, int x2, int y2)
|
||||
{
|
||||
cairo_save (cr);
|
||||
|
||||
/* Disable antialiasing for crispy 1-pixel lines */
|
||||
cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE);
|
||||
gdk_cairo_set_source_color (cr, color);
|
||||
cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE);
|
||||
cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE);
|
||||
cairo_set_line_width (cr, 1.0);
|
||||
cairo_move_to (cr, x1, y1);
|
||||
cairo_line_to (cr, x2, y2);
|
||||
cairo_stroke (cr);
|
||||
|
||||
cairo_restore (cr);
|
||||
}
|
||||
|
||||
static inline void
|
||||
xtext_draw_bg (GtkXText *xtext, int x, int y, int width, int height)
|
||||
{
|
||||
cairo_t *cr;
|
||||
cr = gdk_cairo_create (gtk_widget_get_window (&xtext->widget));
|
||||
|
||||
xtext_draw_rectangle (xtext, cr, &xtext->palette[XTEXT_BG], x, y, width, height);
|
||||
|
||||
cairo_destroy (cr);
|
||||
}
|
||||
|
||||
/* ======================================= */
|
||||
/* ============ PANGO BACKEND ============ */
|
||||
@@ -354,77 +377,50 @@ backend_get_text_width_slp (GtkXText *xtext, guchar *str, GSList *slp)
|
||||
return width;
|
||||
}
|
||||
|
||||
/* simplified version of gdk_draw_layout_line_with_colors() */
|
||||
|
||||
static void
|
||||
xtext_draw_layout_line (GdkDrawable *drawable,
|
||||
GdkGC *gc,
|
||||
gint x,
|
||||
gint y,
|
||||
PangoLayoutLine *line)
|
||||
{
|
||||
GSList *tmp_list = line->runs;
|
||||
PangoRectangle logical_rect;
|
||||
gint x_off = 0;
|
||||
|
||||
while (tmp_list)
|
||||
{
|
||||
PangoLayoutRun *run = tmp_list->data;
|
||||
|
||||
pango_glyph_string_extents (run->glyphs, run->item->analysis.font,
|
||||
NULL, &logical_rect);
|
||||
|
||||
gdk_draw_glyphs (drawable, gc, run->item->analysis.font,
|
||||
x + x_off / PANGO_SCALE, y, run->glyphs);
|
||||
|
||||
x_off += logical_rect.width;
|
||||
tmp_list = tmp_list->next;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
backend_draw_text_emph (GtkXText *xtext, int dofill, GdkGC *gc, int x, int y,
|
||||
char *str, int len, int str_width, int emphasis)
|
||||
backend_draw_text_emph (GtkXText *xtext, gboolean dofill, int x, int y, char *str, int len, int str_width, int emphasis)
|
||||
{
|
||||
GdkGCValues val;
|
||||
GdkColor col;
|
||||
cairo_t *cr;
|
||||
PangoLayoutLine *line;
|
||||
|
||||
cr = gdk_cairo_create (gtk_widget_get_window (&xtext->widget));
|
||||
|
||||
pango_layout_set_attributes (xtext->layout, attr_lists[emphasis]);
|
||||
pango_layout_set_text (xtext->layout, str, len);
|
||||
|
||||
if (dofill)
|
||||
{
|
||||
gdk_gc_get_values (gc, &val);
|
||||
col.pixel = val.background.pixel;
|
||||
gdk_gc_set_foreground (gc, &col);
|
||||
gdk_draw_rectangle (xtext->draw_buf, gc, 1, x, y -
|
||||
xtext->font->ascent, str_width, xtext->fontsize);
|
||||
col.pixel = val.foreground.pixel;
|
||||
gdk_gc_set_foreground (gc, &col);
|
||||
xtext_draw_rectangle (xtext, cr, &xtext->bgc, x, y - xtext->font->ascent,
|
||||
str_width, xtext->fontsize);
|
||||
}
|
||||
|
||||
line = pango_layout_get_lines (xtext->layout)->data;
|
||||
gdk_cairo_set_source_color (cr, &xtext->fgc);
|
||||
line = pango_layout_get_line_readonly (xtext->layout, 0);
|
||||
|
||||
xtext_draw_layout_line (xtext->draw_buf, gc, x, y, line);
|
||||
cairo_save (cr);
|
||||
cairo_move_to (cr, x, y);
|
||||
pango_cairo_show_layout_line (cr, line);
|
||||
cairo_restore (cr);
|
||||
|
||||
cairo_destroy (cr);
|
||||
}
|
||||
|
||||
static void
|
||||
xtext_set_fg (GtkXText *xtext, GdkGC *gc, int index)
|
||||
static inline void
|
||||
xtext_set_fg (GtkXText *xtext, int index)
|
||||
{
|
||||
gdk_gc_set_foreground (gc, &xtext->palette[index]);
|
||||
xtext->fgc = xtext->palette[index];
|
||||
}
|
||||
|
||||
static void
|
||||
xtext_set_bg (GtkXText *xtext, GdkGC *gc, int index)
|
||||
static inline void
|
||||
xtext_set_bg (GtkXText *xtext, int index)
|
||||
{
|
||||
gdk_gc_set_background (gc, &xtext->palette[index]);
|
||||
xtext->bgc = xtext->palette[index];
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_xtext_init (GtkXText * xtext)
|
||||
{
|
||||
xtext->pixmap = NULL;
|
||||
xtext->pixbuf = NULL;
|
||||
xtext->io_tag = 0;
|
||||
xtext->add_io_tag = 0;
|
||||
xtext->scroll_tag = 0;
|
||||
@@ -439,8 +435,6 @@ gtk_xtext_init (GtkXText * xtext)
|
||||
xtext->layout = NULL;
|
||||
xtext->jump_out_offset = 0;
|
||||
xtext->jump_in_offset = 0;
|
||||
xtext->ts_x = 0;
|
||||
xtext->ts_y = 0;
|
||||
xtext->clip_x = 0;
|
||||
xtext->clip_x2 = 1000000;
|
||||
xtext->clip_y = 0;
|
||||
@@ -488,10 +482,7 @@ gtk_xtext_adjustment_set (xtext_buffer *buf, int fire_signal)
|
||||
adj->page_increment = adj->page_size;
|
||||
|
||||
if (adj->value > adj->upper - adj->page_size)
|
||||
{
|
||||
buf->scrollbar_down = TRUE;
|
||||
adj->value = adj->upper - adj->page_size;
|
||||
}
|
||||
|
||||
if (adj->value < 0)
|
||||
adj->value = 0;
|
||||
@@ -583,10 +574,10 @@ gtk_xtext_destroy (GtkObject * object)
|
||||
xtext->io_tag = 0;
|
||||
}
|
||||
|
||||
if (xtext->pixmap)
|
||||
if (xtext->pixbuf)
|
||||
{
|
||||
g_object_unref (xtext->pixmap);
|
||||
xtext->pixmap = NULL;
|
||||
g_object_unref (xtext->pixbuf);
|
||||
xtext->pixbuf = NULL;
|
||||
}
|
||||
|
||||
if (xtext->font)
|
||||
@@ -604,42 +595,6 @@ gtk_xtext_destroy (GtkObject * object)
|
||||
xtext->adj = NULL;
|
||||
}
|
||||
|
||||
if (xtext->bgc)
|
||||
{
|
||||
g_object_unref (xtext->bgc);
|
||||
xtext->bgc = NULL;
|
||||
}
|
||||
|
||||
if (xtext->fgc)
|
||||
{
|
||||
g_object_unref (xtext->fgc);
|
||||
xtext->fgc = NULL;
|
||||
}
|
||||
|
||||
if (xtext->light_gc)
|
||||
{
|
||||
g_object_unref (xtext->light_gc);
|
||||
xtext->light_gc = NULL;
|
||||
}
|
||||
|
||||
if (xtext->dark_gc)
|
||||
{
|
||||
g_object_unref (xtext->dark_gc);
|
||||
xtext->dark_gc = NULL;
|
||||
}
|
||||
|
||||
if (xtext->thin_gc)
|
||||
{
|
||||
g_object_unref (xtext->thin_gc);
|
||||
xtext->thin_gc = NULL;
|
||||
}
|
||||
|
||||
if (xtext->marker_gc)
|
||||
{
|
||||
g_object_unref (xtext->marker_gc);
|
||||
xtext->marker_gc = NULL;
|
||||
}
|
||||
|
||||
if (xtext->hand_cursor)
|
||||
{
|
||||
gdk_cursor_unref (xtext->hand_cursor);
|
||||
@@ -679,8 +634,6 @@ gtk_xtext_realize (GtkWidget * widget)
|
||||
{
|
||||
GtkXText *xtext;
|
||||
GdkWindowAttr attributes;
|
||||
GdkGCValues val;
|
||||
GdkColor col;
|
||||
GdkColormap *cmap;
|
||||
|
||||
gtk_widget_set_realized (widget, TRUE);
|
||||
@@ -708,59 +661,12 @@ gtk_xtext_realize (GtkWidget * widget)
|
||||
|
||||
xtext->depth = gdk_window_get_visual (widget->window)->depth;
|
||||
|
||||
val.subwindow_mode = GDK_INCLUDE_INFERIORS;
|
||||
val.graphics_exposures = 0;
|
||||
|
||||
xtext->bgc = gdk_gc_new_with_values (widget->window, &val,
|
||||
GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW);
|
||||
xtext->fgc = gdk_gc_new_with_values (widget->window, &val,
|
||||
GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW);
|
||||
xtext->light_gc = gdk_gc_new_with_values (widget->window, &val,
|
||||
GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW);
|
||||
xtext->dark_gc = gdk_gc_new_with_values (widget->window, &val,
|
||||
GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW);
|
||||
xtext->thin_gc = gdk_gc_new_with_values (widget->window, &val,
|
||||
GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW);
|
||||
xtext->marker_gc = gdk_gc_new_with_values (widget->window, &val,
|
||||
GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW);
|
||||
|
||||
/* for the separator bar (light) */
|
||||
col.red = 0xffff; col.green = 0xffff; col.blue = 0xffff;
|
||||
gdk_colormap_alloc_color (cmap, &col, FALSE, TRUE);
|
||||
gdk_gc_set_foreground (xtext->light_gc, &col);
|
||||
|
||||
/* for the separator bar (dark) */
|
||||
col.red = 0x1111; col.green = 0x1111; col.blue = 0x1111;
|
||||
gdk_colormap_alloc_color (cmap, &col, FALSE, TRUE);
|
||||
gdk_gc_set_foreground (xtext->dark_gc, &col);
|
||||
|
||||
/* for the separator bar (thinline) */
|
||||
col.red = 0x8e38; col.green = 0x8e38; col.blue = 0x9f38;
|
||||
gdk_colormap_alloc_color (cmap, &col, FALSE, TRUE);
|
||||
gdk_gc_set_foreground (xtext->thin_gc, &col);
|
||||
|
||||
/* for the marker bar (marker) */
|
||||
gdk_gc_set_foreground (xtext->marker_gc, &xtext->palette[XTEXT_MARKER]);
|
||||
|
||||
xtext_set_fg (xtext, xtext->fgc, XTEXT_FG);
|
||||
xtext_set_bg (xtext, xtext->fgc, XTEXT_BG);
|
||||
xtext_set_fg (xtext, xtext->bgc, XTEXT_BG);
|
||||
|
||||
/* draw directly to window */
|
||||
xtext->draw_buf = widget->window;
|
||||
|
||||
if (xtext->pixmap)
|
||||
{
|
||||
gdk_gc_set_tile (xtext->bgc, xtext->pixmap);
|
||||
gdk_gc_set_ts_origin (xtext->bgc, 0, 0);
|
||||
xtext->ts_x = xtext->ts_y = 0;
|
||||
gdk_gc_set_fill (xtext->bgc, GDK_TILED);
|
||||
}
|
||||
xtext_set_fg (xtext, XTEXT_FG);
|
||||
xtext_set_bg (xtext, XTEXT_BG);
|
||||
|
||||
xtext->hand_cursor = gdk_cursor_new_for_display (gdk_window_get_display (widget->window), GDK_HAND1);
|
||||
xtext->resize_cursor = gdk_cursor_new_for_display (gdk_window_get_display (widget->window), GDK_LEFT_SIDE);
|
||||
|
||||
gdk_window_set_back_pixmap (widget->window, NULL, FALSE);
|
||||
widget->style = gtk_style_attach (widget->style, widget->window);
|
||||
|
||||
backend_init (xtext);
|
||||
@@ -967,13 +873,17 @@ static void
|
||||
gtk_xtext_draw_sep (GtkXText * xtext, int y)
|
||||
{
|
||||
int x, height;
|
||||
GdkGC *light, *dark;
|
||||
GdkColor light, dark, thin;
|
||||
GtkAllocation allocation;
|
||||
cairo_t *cr;
|
||||
|
||||
if (y == -1)
|
||||
{
|
||||
y = 0;
|
||||
height = GTK_WIDGET (xtext)->allocation.height;
|
||||
} else
|
||||
gtk_widget_get_allocation (GTK_WIDGET (xtext), &allocation);
|
||||
height = allocation.height;
|
||||
}
|
||||
else
|
||||
{
|
||||
height = xtext->fontsize;
|
||||
}
|
||||
@@ -981,31 +891,38 @@ gtk_xtext_draw_sep (GtkXText * xtext, int y)
|
||||
/* draw the separator line */
|
||||
if (xtext->separator && xtext->buffer->indent)
|
||||
{
|
||||
light = xtext->light_gc;
|
||||
dark = xtext->dark_gc;
|
||||
thin.red = 0x8e38; thin.green = 0x8e38; thin.blue = 0x9f38;
|
||||
dark.red = 0x1111; dark.green = 0x1111; dark.blue = 0x1111;
|
||||
light.red = 0xffff; light.green = 0xffff; light.blue = 0xffff;
|
||||
|
||||
x = xtext->buffer->indent - ((xtext->space_width + 1) / 2);
|
||||
if (x < 1)
|
||||
return;
|
||||
|
||||
cr = gdk_cairo_create (gtk_widget_get_window (&xtext->widget));
|
||||
|
||||
if (xtext->thinline)
|
||||
{
|
||||
if (xtext->moving_separator)
|
||||
gdk_draw_line (xtext->draw_buf, light, x, y, x, y + height);
|
||||
xtext_draw_line (xtext, cr, &light, x, y, x, y + height);
|
||||
else
|
||||
gdk_draw_line (xtext->draw_buf, xtext->thin_gc, x, y, x, y + height);
|
||||
} else
|
||||
xtext_draw_line (xtext, cr, &thin, x, y, x, y + height);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (xtext->moving_separator)
|
||||
{
|
||||
gdk_draw_line (xtext->draw_buf, light, x - 1, y, x - 1, y + height);
|
||||
gdk_draw_line (xtext->draw_buf, dark, x, y, x, y + height);
|
||||
} else
|
||||
xtext_draw_line (xtext, cr, &light, x - 1, y, x - 1, y + height);
|
||||
xtext_draw_line (xtext, cr, &dark, x, y, x, y + height);
|
||||
}
|
||||
else
|
||||
{
|
||||
gdk_draw_line (xtext->draw_buf, dark, x - 1, y, x - 1, y + height);
|
||||
gdk_draw_line (xtext->draw_buf, light, x, y, x, y + height);
|
||||
xtext_draw_line (xtext, cr, &dark, x - 1, y, x - 1, y + height);
|
||||
xtext_draw_line (xtext, cr, &light, x, y, x, y + height);
|
||||
}
|
||||
}
|
||||
|
||||
cairo_destroy (cr);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1013,6 +930,8 @@ static void
|
||||
gtk_xtext_draw_marker (GtkXText * xtext, textentry * ent, int y)
|
||||
{
|
||||
int x, width, render_y;
|
||||
GtkAllocation allocation;
|
||||
cairo_t *cr;
|
||||
|
||||
if (!xtext->marker) return;
|
||||
|
||||
@@ -1026,15 +945,21 @@ gtk_xtext_draw_marker (GtkXText * xtext, textentry * ent, int y)
|
||||
}
|
||||
else return;
|
||||
|
||||
x = 0;
|
||||
width = GTK_WIDGET (xtext)->allocation.width;
|
||||
cr = gdk_cairo_create (gtk_widget_get_window (&xtext->widget));
|
||||
|
||||
gdk_draw_line (xtext->draw_buf, xtext->marker_gc, x, render_y, x + width, render_y);
|
||||
gtk_widget_get_allocation (GTK_WIDGET (xtext), &allocation);
|
||||
|
||||
x = 0;
|
||||
width = allocation.width;
|
||||
|
||||
xtext_draw_line (xtext, cr, &xtext->palette[XTEXT_MARKER], x, render_y, x + width, render_y);
|
||||
|
||||
if (gtk_window_has_toplevel_focus (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (xtext)))))
|
||||
{
|
||||
xtext->buffer->marker_seen = TRUE;
|
||||
}
|
||||
|
||||
cairo_destroy (cr);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1411,6 +1336,7 @@ gtk_xtext_timeout_ms (GtkXText *xtext, int pixes)
|
||||
if (apixes < 20) return 20;
|
||||
return 10;
|
||||
}
|
||||
|
||||
static gint
|
||||
gtk_xtext_scrolldown_timeout (GtkXText * xtext)
|
||||
{
|
||||
@@ -2225,14 +2151,14 @@ gtk_xtext_scroll (GtkWidget *widget, GdkEventScroll *event)
|
||||
new_value = xtext->adj->value - (xtext->adj->page_increment / 10);
|
||||
if (new_value < xtext->adj->lower)
|
||||
new_value = xtext->adj->lower;
|
||||
gtk_adjustment_set_value (xtext->adj, new_value);
|
||||
gtk_adjustment_set_value (xtext->adj, (int)new_value);
|
||||
}
|
||||
else if (event->direction == GDK_SCROLL_DOWN) /* mouse wheel pageDn */
|
||||
{
|
||||
new_value = xtext->adj->value + (xtext->adj->page_increment / 10);
|
||||
if (new_value > (xtext->adj->upper - xtext->adj->page_size))
|
||||
new_value = xtext->adj->upper - xtext->adj->page_size;
|
||||
gtk_adjustment_set_value (xtext->adj, new_value);
|
||||
gtk_adjustment_set_value (xtext->adj, (int)new_value);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
@@ -2522,11 +2448,14 @@ gtk_xtext_text_width (GtkXText *xtext, unsigned char *text, int len)
|
||||
|
||||
static int
|
||||
gtk_xtext_render_flush (GtkXText * xtext, int x, int y, unsigned char *str,
|
||||
int len, GdkGC *gc, int *emphasis)
|
||||
int len, int *emphasis)
|
||||
{
|
||||
int str_width, dofill;
|
||||
GdkDrawable *pix = NULL;
|
||||
int dest_x = 0, dest_y = 0;
|
||||
int dest_x, dest_y;
|
||||
int str_width;
|
||||
gboolean dofill = TRUE;
|
||||
cairo_t *cr;
|
||||
|
||||
dest_x = dest_y = 0;
|
||||
|
||||
if (xtext->dont_render || len < 1 || xtext->hidden)
|
||||
return 0;
|
||||
@@ -2536,7 +2465,7 @@ gtk_xtext_render_flush (GtkXText * xtext, int x, int y, unsigned char *str,
|
||||
if (xtext->dont_render2)
|
||||
return str_width;
|
||||
|
||||
/* roll-your-own clipping (avoiding XftDrawString is always good!) */
|
||||
/* roll-your-own clipping */
|
||||
if (x > xtext->clip_x2 || x + str_width < xtext->clip_x)
|
||||
return str_width;
|
||||
if (y - xtext->font->ascent > xtext->clip_y2 || (y - xtext->font->ascent) + xtext->fontsize < xtext->clip_y)
|
||||
@@ -2547,75 +2476,66 @@ gtk_xtext_render_flush (GtkXText * xtext, int x, int y, unsigned char *str,
|
||||
if (!xtext->in_hilight) /* is it a hilight prefix? */
|
||||
return str_width;
|
||||
if (!xtext->un_hilight) /* doing a hilight? no need to draw the text */
|
||||
goto dounder;
|
||||
}
|
||||
|
||||
pix = gdk_pixmap_new (xtext->draw_buf, str_width, xtext->fontsize, xtext->depth);
|
||||
if (pix)
|
||||
{
|
||||
dest_x = x;
|
||||
dest_y = y - xtext->font->ascent;
|
||||
|
||||
gdk_gc_set_ts_origin (xtext->bgc, xtext->ts_x - x, xtext->ts_y - dest_y);
|
||||
|
||||
x = 0;
|
||||
y = xtext->font->ascent;
|
||||
xtext->draw_buf = pix;
|
||||
}
|
||||
|
||||
dofill = TRUE;
|
||||
|
||||
/* backcolor is always handled by XDrawImageString */
|
||||
if (!xtext->backcolor && xtext->pixmap)
|
||||
{
|
||||
/* draw the background pixmap behind the text - CAUSES FLICKER HERE!! */
|
||||
xtext_draw_bg (xtext, x, y - xtext->font->ascent, str_width,
|
||||
xtext->fontsize);
|
||||
dofill = FALSE; /* already drawn the background */
|
||||
}
|
||||
|
||||
backend_draw_text_emph (xtext, dofill, gc, x, y, str, len, str_width, *emphasis);
|
||||
|
||||
if (pix)
|
||||
{
|
||||
GdkRectangle clip;
|
||||
GdkRectangle dest;
|
||||
|
||||
gdk_gc_set_ts_origin (xtext->bgc, xtext->ts_x, xtext->ts_y);
|
||||
xtext->draw_buf = GTK_WIDGET (xtext)->window;
|
||||
clip.x = xtext->clip_x;
|
||||
clip.y = xtext->clip_y;
|
||||
clip.width = xtext->clip_x2 - xtext->clip_x;
|
||||
clip.height = xtext->clip_y2 - xtext->clip_y;
|
||||
|
||||
dest.x = dest_x;
|
||||
dest.y = dest_y;
|
||||
dest.width = str_width;
|
||||
dest.height = xtext->fontsize;
|
||||
|
||||
if (gdk_rectangle_intersect (&clip, &dest, &dest))
|
||||
/* dump the DB to window, but only within the clip_x/x2/y/y2 */
|
||||
gdk_draw_drawable (xtext->draw_buf, xtext->bgc, pix,
|
||||
dest.x - dest_x, dest.y - dest_y,
|
||||
dest.x, dest.y, dest.width, dest.height);
|
||||
g_object_unref (pix);
|
||||
}
|
||||
|
||||
if (xtext->underline)
|
||||
{
|
||||
dounder:
|
||||
|
||||
if (pix)
|
||||
y = dest_y + xtext->font->ascent + 1;
|
||||
else
|
||||
{
|
||||
cr = gdk_cairo_create (gtk_widget_get_window (&xtext->widget));
|
||||
|
||||
y++;
|
||||
dest_x = x;
|
||||
|
||||
xtext_draw_line (xtext, cr, &xtext->fgc, dest_x + 1, y + 1, dest_x + str_width - 1, y + 1);
|
||||
cairo_destroy (cr);
|
||||
|
||||
return str_width;
|
||||
}
|
||||
/* draw directly to window, it's out of the range of our DB */
|
||||
gdk_draw_line (xtext->draw_buf, gc, dest_x, y, dest_x + str_width - 1, y);
|
||||
}
|
||||
|
||||
if (!xtext->backcolor && xtext->pixbuf)
|
||||
{
|
||||
cr = gdk_cairo_create (gtk_widget_get_window (&xtext->widget));
|
||||
gdk_cairo_set_source_pixbuf (cr, xtext->pixbuf, 0, 0);
|
||||
cairo_pattern_set_extend (cairo_get_source (cr), CAIRO_EXTEND_REPEAT);
|
||||
cairo_rectangle (cr, x, y - xtext->font->ascent, str_width, xtext->fontsize);
|
||||
cairo_fill (cr);
|
||||
cairo_destroy (cr);
|
||||
|
||||
dofill = FALSE;
|
||||
}
|
||||
|
||||
//if (xtext->pixbuf)
|
||||
//{
|
||||
// GdkRectangle clip, dest;
|
||||
// cairo_t *cr = gdk_cairo_create (gtk_widget_get_window (&xtext->widget));
|
||||
|
||||
//backend_draw_text_emph (xtext, dofill, gc, x, y, str, len, str_width, *emphasis);
|
||||
|
||||
|
||||
// gdk_cairo_set_source_pixbuf (cr, xtext->pixbuf, 0, 0);
|
||||
|
||||
// /* Only redraw what is required */
|
||||
// clip.x = xtext->clip_x;
|
||||
// clip.y = xtext->clip_y;
|
||||
// clip.width = xtext->clip_x2 - xtext->clip_x;
|
||||
// clip.height = xtext->clip_y2 - xtext->clip_y;
|
||||
|
||||
// dest.x = dest_x;
|
||||
// dest.y = dest_y;
|
||||
// dest.width = str_width;
|
||||
// dest.height = xtext->fontsize;
|
||||
|
||||
// if (gdk_rectangle_intersect (&clip, &dest, &dest))
|
||||
// {
|
||||
// gdk_cairo_rectangle (cr, &dest);
|
||||
|
||||
// cairo_clip (cr);
|
||||
// }
|
||||
// cairo_paint (cr);
|
||||
// cairo_destroy (cr);
|
||||
|
||||
// dofill = FALSE;
|
||||
//}
|
||||
|
||||
backend_draw_text_emph (xtext, dofill, x, y, (char *)str, len, str_width, *emphasis);
|
||||
|
||||
return str_width;
|
||||
}
|
||||
|
||||
@@ -2631,9 +2551,9 @@ gtk_xtext_reset (GtkXText * xtext, int mark, int attribs)
|
||||
{
|
||||
xtext->backcolor = FALSE;
|
||||
if (xtext->col_fore != XTEXT_FG)
|
||||
xtext_set_fg (xtext, xtext->fgc, XTEXT_FG);
|
||||
xtext_set_fg (xtext, XTEXT_FG);
|
||||
if (xtext->col_back != XTEXT_BG)
|
||||
xtext_set_bg (xtext, xtext->fgc, XTEXT_BG);
|
||||
xtext_set_bg (xtext, XTEXT_BG);
|
||||
}
|
||||
xtext->col_fore = XTEXT_FG;
|
||||
xtext->col_back = XTEXT_BG;
|
||||
@@ -2701,14 +2621,13 @@ gtk_xtext_search_offset (xtext_buffer *buf, textentry *ent, unsigned int off)
|
||||
|
||||
/* render a single line, which WONT wrap, and parse mIRC colors */
|
||||
|
||||
#define RENDER_FLUSH x += gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, emphasis)
|
||||
#define RENDER_FLUSH x += gtk_xtext_render_flush (xtext, x, y, pstr, j, emphasis)
|
||||
|
||||
static int
|
||||
gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
unsigned char *str, int len, int win_width, int indent,
|
||||
int line, int left_only, int *x_size_ret, int *emphasis)
|
||||
{
|
||||
GdkGC *gc;
|
||||
int i = 0, x = indent, j = 0;
|
||||
unsigned char *pstr = str;
|
||||
int col_num, tmp;
|
||||
@@ -2723,18 +2642,16 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
|
||||
offset = str - ent->str;
|
||||
|
||||
gc = xtext->fgc; /* our foreground GC */
|
||||
|
||||
if (ent->mark_start != -1 &&
|
||||
ent->mark_start <= i + offset && ent->mark_end > i + offset)
|
||||
ent->mark_start <= i + offset && ent->mark_end > i + offset)
|
||||
{
|
||||
xtext_set_bg (xtext, gc, XTEXT_MARK_BG);
|
||||
xtext_set_fg (xtext, gc, XTEXT_MARK_FG);
|
||||
xtext_set_bg (xtext, XTEXT_MARK_BG);
|
||||
xtext_set_fg (xtext, XTEXT_MARK_FG);
|
||||
xtext->backcolor = TRUE;
|
||||
mark = TRUE;
|
||||
}
|
||||
if (xtext->hilight_ent == ent &&
|
||||
xtext->hilight_start <= i + offset && xtext->hilight_end > i + offset)
|
||||
xtext->hilight_start <= i + offset && xtext->hilight_end > i + offset)
|
||||
{
|
||||
if (!xtext->un_hilight)
|
||||
{
|
||||
@@ -2752,7 +2669,7 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
if (indent > xtext->stamp_width)
|
||||
{
|
||||
xtext_draw_bg (xtext, xtext->stamp_width, y - xtext->font->ascent,
|
||||
indent - xtext->stamp_width, xtext->fontsize);
|
||||
indent - xtext->stamp_width, xtext->fontsize);
|
||||
}
|
||||
} else
|
||||
{
|
||||
@@ -2760,7 +2677,7 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
if (indent >= xtext->clip_x)
|
||||
{
|
||||
xtext_draw_bg (xtext, 0, y - xtext->font->ascent,
|
||||
MIN (indent, xtext->clip_x2), xtext->fontsize);
|
||||
MIN (indent, xtext->clip_x2), xtext->fontsize);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2785,7 +2702,7 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
}
|
||||
|
||||
if ((xtext->parsing_color && isdigit (str[i]) && xtext->nc < 2) ||
|
||||
(xtext->parsing_color && str[i] == ',' && isdigit (str[i+1]) && xtext->nc < 3 && !xtext->parsing_backcolor))
|
||||
(xtext->parsing_color && str[i] == ',' && isdigit (str[i+1]) && xtext->nc < 3 && !xtext->parsing_backcolor))
|
||||
{
|
||||
pstr++;
|
||||
if (str[i] == ',')
|
||||
@@ -2803,7 +2720,7 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
col_num = col_num % XTEXT_MIRC_COLS;
|
||||
xtext->col_fore = col_num;
|
||||
if (!mark)
|
||||
xtext_set_fg (xtext, gc, col_num);
|
||||
xtext_set_fg (xtext, col_num);
|
||||
}
|
||||
} else
|
||||
{
|
||||
@@ -2833,7 +2750,7 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
else
|
||||
xtext->backcolor = TRUE;
|
||||
if (!mark)
|
||||
xtext_set_bg (xtext, gc, col_num);
|
||||
xtext_set_bg (xtext, col_num);
|
||||
xtext->col_back = col_num;
|
||||
} else
|
||||
{
|
||||
@@ -2843,11 +2760,12 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
if (col_num > XTEXT_MAX_COLOR)
|
||||
col_num = col_num % XTEXT_MIRC_COLS;
|
||||
if (!mark)
|
||||
xtext_set_fg (xtext, gc, col_num);
|
||||
xtext_set_fg (xtext, col_num);
|
||||
xtext->col_fore = col_num;
|
||||
}
|
||||
xtext->parsing_backcolor = FALSE;
|
||||
} else
|
||||
}
|
||||
else
|
||||
{
|
||||
/* got a \003<non-digit>... i.e. reset colors */
|
||||
RENDER_FLUSH;
|
||||
@@ -2858,7 +2776,7 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
}
|
||||
|
||||
if (!left_only && !mark &&
|
||||
(k = gtk_xtext_search_offset (xtext->buffer, ent, offset + i)))
|
||||
(k = gtk_xtext_search_offset (xtext->buffer, ent, offset + i)))
|
||||
{
|
||||
RENDER_FLUSH;
|
||||
pstr += j;
|
||||
@@ -2867,14 +2785,14 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
{
|
||||
if (k & GTK_MATCH_CUR)
|
||||
{
|
||||
xtext_set_bg (xtext, gc, XTEXT_MARK_BG);
|
||||
xtext_set_fg (xtext, gc, XTEXT_MARK_FG);
|
||||
xtext_set_bg (xtext, XTEXT_MARK_BG);
|
||||
xtext_set_fg (xtext, XTEXT_MARK_FG);
|
||||
xtext->backcolor = TRUE;
|
||||
srch_mark = TRUE;
|
||||
} else
|
||||
{
|
||||
xtext_set_bg (xtext, gc, xtext->col_back);
|
||||
xtext_set_fg (xtext, gc, xtext->col_fore);
|
||||
xtext_set_bg (xtext, xtext->col_back);
|
||||
xtext_set_fg (xtext, xtext->col_fore);
|
||||
xtext->backcolor = (xtext->col_back != XTEXT_BG)? TRUE: FALSE;
|
||||
srch_mark = FALSE;
|
||||
}
|
||||
@@ -2884,15 +2802,15 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
xtext->underline = (k & GTK_MATCH_CUR)? TRUE: FALSE;
|
||||
if (k & (GTK_MATCH_START | GTK_MATCH_MID))
|
||||
{
|
||||
xtext_set_bg (xtext, gc, XTEXT_MARK_BG);
|
||||
xtext_set_fg (xtext, gc, XTEXT_MARK_FG);
|
||||
xtext_set_bg (xtext, XTEXT_MARK_BG);
|
||||
xtext_set_fg (xtext, XTEXT_MARK_FG);
|
||||
xtext->backcolor = TRUE;
|
||||
srch_mark = TRUE;
|
||||
}
|
||||
if (k & GTK_MATCH_END)
|
||||
{
|
||||
xtext_set_bg (xtext, gc, xtext->col_back);
|
||||
xtext_set_fg (xtext, gc, xtext->col_fore);
|
||||
xtext_set_bg (xtext, xtext->col_back);
|
||||
xtext_set_fg (xtext, xtext->col_fore);
|
||||
xtext->backcolor = (xtext->col_back != XTEXT_BG)? TRUE: FALSE;
|
||||
srch_mark = FALSE;
|
||||
xtext->underline = FALSE;
|
||||
@@ -2904,7 +2822,7 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
switch (str[i])
|
||||
{
|
||||
case '\n':
|
||||
/*case ATTR_BEEP:*/
|
||||
/*case ATTR_BEEP:*/
|
||||
break;
|
||||
case ATTR_REVERSE:
|
||||
RENDER_FLUSH;
|
||||
@@ -2915,8 +2833,8 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
xtext->col_back = tmp;
|
||||
if (!mark)
|
||||
{
|
||||
xtext_set_fg (xtext, gc, xtext->col_fore);
|
||||
xtext_set_bg (xtext, gc, xtext->col_back);
|
||||
xtext_set_fg (xtext, xtext->col_fore);
|
||||
xtext_set_bg (xtext, xtext->col_back);
|
||||
}
|
||||
if (xtext->col_back != XTEXT_BG)
|
||||
xtext->backcolor = TRUE;
|
||||
@@ -2974,9 +2892,9 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
i = len;
|
||||
|
||||
/* Separate the left part, the space and the right part
|
||||
into separate runs, and reset bidi state inbetween.
|
||||
Perform this only on the first line of the message.
|
||||
*/
|
||||
into separate runs, and reset bidi state inbetween.
|
||||
Perform this only on the first line of the message.
|
||||
*/
|
||||
if (offset == 0)
|
||||
{
|
||||
/* we've reached the end of the left part? */
|
||||
@@ -2997,7 +2915,7 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
/* have we been told to stop rendering at this point? */
|
||||
if (xtext->jump_out_offset > 0 && xtext->jump_out_offset <= (i + offset))
|
||||
{
|
||||
gtk_xtext_render_flush (xtext, x, y, pstr, j, gc, emphasis);
|
||||
gtk_xtext_render_flush (xtext, x, y, pstr, j, emphasis);
|
||||
ret = 0; /* skip the rest of the lines, we're done. */
|
||||
j = 0;
|
||||
break;
|
||||
@@ -3031,8 +2949,8 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
RENDER_FLUSH;
|
||||
pstr += j;
|
||||
j = 0;
|
||||
xtext_set_bg (xtext, gc, XTEXT_MARK_BG);
|
||||
xtext_set_fg (xtext, gc, XTEXT_MARK_FG);
|
||||
xtext_set_bg (xtext, XTEXT_MARK_BG);
|
||||
xtext_set_fg (xtext, XTEXT_MARK_FG);
|
||||
xtext->backcolor = TRUE;
|
||||
if (srch_underline)
|
||||
{
|
||||
@@ -3047,8 +2965,8 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
RENDER_FLUSH;
|
||||
pstr += j;
|
||||
j = 0;
|
||||
xtext_set_bg (xtext, gc, xtext->col_back);
|
||||
xtext_set_fg (xtext, gc, xtext->col_fore);
|
||||
xtext_set_bg (xtext, xtext->col_back);
|
||||
xtext_set_fg (xtext, xtext->col_fore);
|
||||
if (xtext->col_back != XTEXT_BG)
|
||||
xtext->backcolor = TRUE;
|
||||
else
|
||||
@@ -3063,8 +2981,8 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
|
||||
if (mark || srch_mark)
|
||||
{
|
||||
xtext_set_bg (xtext, gc, xtext->col_back);
|
||||
xtext_set_fg (xtext, gc, xtext->col_fore);
|
||||
xtext_set_bg (xtext, xtext->col_back);
|
||||
xtext_set_fg (xtext, xtext->col_fore);
|
||||
if (xtext->col_back != XTEXT_BG)
|
||||
xtext->backcolor = TRUE;
|
||||
else
|
||||
@@ -3081,10 +2999,10 @@ gtk_xtext_render_str (GtkXText * xtext, int y, textentry * ent,
|
||||
int xx = MAX (x, xtext->clip_x);
|
||||
|
||||
xtext_draw_bg (xtext,
|
||||
xx, /* x */
|
||||
y - xtext->font->ascent, /* y */
|
||||
xx, /* x */
|
||||
y - xtext->font->ascent, /* y */
|
||||
MIN (xtext->clip_x2 - xx, (win_width + MARGIN) - xx), /* width */
|
||||
xtext->fontsize); /* height */
|
||||
xtext->fontsize); /* height */
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3398,11 +3316,9 @@ gtk_xtext_set_palette (GtkXText * xtext, GdkColor palette[])
|
||||
|
||||
if (gtk_widget_get_realized (GTK_WIDGET(xtext)))
|
||||
{
|
||||
xtext_set_fg (xtext, xtext->fgc, XTEXT_FG);
|
||||
xtext_set_bg (xtext, xtext->fgc, XTEXT_BG);
|
||||
xtext_set_fg (xtext, xtext->bgc, XTEXT_BG);
|
||||
|
||||
gdk_gc_set_foreground (xtext->marker_gc, &xtext->palette[XTEXT_MARKER]);
|
||||
xtext_set_fg (xtext, XTEXT_FG);
|
||||
xtext_set_bg (xtext, XTEXT_BG);
|
||||
xtext_set_fg (xtext, XTEXT_BG);
|
||||
}
|
||||
xtext->col_fore = XTEXT_FG;
|
||||
xtext->col_back = XTEXT_BG;
|
||||
@@ -3488,38 +3404,14 @@ gtk_xtext_set_font (GtkXText *xtext, char *name)
|
||||
}
|
||||
|
||||
void
|
||||
gtk_xtext_set_background (GtkXText * xtext, GdkPixmap * pixmap)
|
||||
gtk_xtext_set_background (GtkXText *xtext, GdkPixbuf *pixbuf)
|
||||
{
|
||||
GdkGCValues val;
|
||||
if (xtext->pixbuf && (xtext->pixbuf != pixbuf))
|
||||
g_object_unref (xtext->pixbuf);
|
||||
|
||||
if (xtext->pixmap)
|
||||
{
|
||||
g_object_unref (xtext->pixmap);
|
||||
xtext->pixmap = NULL;
|
||||
}
|
||||
xtext->pixbuf = pixbuf;
|
||||
|
||||
dontscroll (xtext->buffer);
|
||||
xtext->pixmap = pixmap;
|
||||
|
||||
if (pixmap != 0)
|
||||
{
|
||||
g_object_ref (pixmap);
|
||||
if (gtk_widget_get_realized (GTK_WIDGET(xtext)))
|
||||
{
|
||||
gdk_gc_set_tile (xtext->bgc, pixmap);
|
||||
gdk_gc_set_ts_origin (xtext->bgc, 0, 0);
|
||||
xtext->ts_x = xtext->ts_y = 0;
|
||||
gdk_gc_set_fill (xtext->bgc, GDK_TILED);
|
||||
}
|
||||
} else if (gtk_widget_get_realized (GTK_WIDGET(xtext)))
|
||||
{
|
||||
g_object_unref (xtext->bgc);
|
||||
val.subwindow_mode = GDK_INCLUDE_INFERIORS;
|
||||
val.graphics_exposures = 0;
|
||||
xtext->bgc = gdk_gc_new_with_values (GTK_WIDGET (xtext)->window,
|
||||
&val, GDK_GC_EXPOSURES | GDK_GC_SUBWINDOW);
|
||||
xtext_set_fg (xtext, xtext->bgc, XTEXT_BG);
|
||||
}
|
||||
/* TODO: redraw */
|
||||
}
|
||||
|
||||
void
|
||||
@@ -3762,20 +3654,20 @@ gtk_xtext_render_page (GtkXText * xtext)
|
||||
int height;
|
||||
int subline;
|
||||
int startline = xtext->adj->value;
|
||||
int pos, overlap;
|
||||
|
||||
if(!gtk_widget_get_realized(GTK_WIDGET(xtext)))
|
||||
return;
|
||||
if (!gtk_widget_get_realized (GTK_WIDGET (xtext)))
|
||||
return;
|
||||
|
||||
if (xtext->buffer->indent < MARGIN)
|
||||
xtext->buffer->indent = MARGIN; /* 2 pixels is our left margin */
|
||||
|
||||
gdk_drawable_get_size (GTK_WIDGET (xtext)->window, &width, &height);
|
||||
width = gdk_window_get_width (gtk_widget_get_window (GTK_WIDGET (xtext)));
|
||||
height = gdk_window_get_height (gtk_widget_get_window (GTK_WIDGET (xtext)));
|
||||
|
||||
if (width < 34 || height < xtext->fontsize || width < xtext->buffer->indent + 32)
|
||||
return;
|
||||
|
||||
xtext->pixel_offset = (xtext->adj->value - startline) * xtext->fontsize;
|
||||
xtext->pixel_offset = (gtk_adjustment_get_value (xtext->adj) - startline) * xtext->fontsize;
|
||||
|
||||
subline = line = 0;
|
||||
ent = xtext->buffer->text_first;
|
||||
@@ -3787,50 +3679,6 @@ gtk_xtext_render_page (GtkXText * xtext)
|
||||
xtext->buffer->pagetop_subline = subline;
|
||||
xtext->buffer->pagetop_line = startline;
|
||||
|
||||
if (xtext->buffer->num_lines <= xtext->adj->page_size)
|
||||
dontscroll (xtext->buffer);
|
||||
|
||||
pos = xtext->adj->value * xtext->fontsize;
|
||||
overlap = xtext->buffer->last_pixel_pos - pos;
|
||||
xtext->buffer->last_pixel_pos = pos;
|
||||
|
||||
#ifndef __APPLE__
|
||||
if (!xtext->pixmap && abs (overlap) < height)
|
||||
{
|
||||
GdkRectangle area;
|
||||
|
||||
/* so the obscured regions are exposed */
|
||||
gdk_gc_set_exposures (xtext->fgc, TRUE);
|
||||
if (overlap < 1) /* DOWN */
|
||||
{
|
||||
int remainder;
|
||||
|
||||
gdk_draw_drawable (xtext->draw_buf, xtext->fgc, xtext->draw_buf,
|
||||
0, -overlap, 0, 0, width, height + overlap);
|
||||
remainder = ((height - xtext->font->descent) % xtext->fontsize) +
|
||||
xtext->font->descent;
|
||||
area.y = (height + overlap) - remainder;
|
||||
area.height = remainder - overlap;
|
||||
} else
|
||||
{
|
||||
gdk_draw_drawable (xtext->draw_buf, xtext->fgc, xtext->draw_buf,
|
||||
0, 0, 0, overlap, width, height - overlap);
|
||||
area.y = 0;
|
||||
area.height = overlap;
|
||||
}
|
||||
gdk_gc_set_exposures (xtext->fgc, FALSE);
|
||||
|
||||
if (area.height > 0)
|
||||
{
|
||||
area.x = 0;
|
||||
area.width = width;
|
||||
gtk_xtext_paint (GTK_WIDGET (xtext), &area);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
width -= MARGIN;
|
||||
lines_max = ((height + xtext->pixel_offset) / xtext->fontsize) + 1;
|
||||
|
||||
@@ -3838,7 +3686,7 @@ gtk_xtext_render_page (GtkXText * xtext)
|
||||
{
|
||||
gtk_xtext_reset (xtext, FALSE, TRUE);
|
||||
line += gtk_xtext_render_line (xtext, ent, line, lines_max,
|
||||
subline, width);
|
||||
subline, width);
|
||||
subline = 0;
|
||||
|
||||
if (line >= lines_max)
|
||||
@@ -3848,7 +3696,7 @@ gtk_xtext_render_page (GtkXText * xtext)
|
||||
}
|
||||
|
||||
line = (xtext->fontsize * line) - xtext->pixel_offset;
|
||||
/* fill any space below the last line with our background GC */
|
||||
/* fill any space below the last line with our background */
|
||||
xtext_draw_bg (xtext, 0, line, width + MARGIN, height - line);
|
||||
|
||||
/* draw the separator line */
|
||||
|
@@ -129,8 +129,7 @@ struct _GtkXText
|
||||
xtext_buffer *selection_buffer;
|
||||
|
||||
GtkAdjustment *adj;
|
||||
GdkPixmap *pixmap; /* 0 = use palette[19] */
|
||||
GdkDrawable *draw_buf; /* points to ->window */
|
||||
GdkPixbuf *pixbuf; /* 0 = use palette[19] */
|
||||
GdkCursor *hand_cursor;
|
||||
GdkCursor *resize_cursor;
|
||||
|
||||
@@ -141,12 +140,8 @@ struct _GtkXText
|
||||
int last_win_h;
|
||||
int last_win_w;
|
||||
|
||||
GdkGC *bgc; /* backing pixmap */
|
||||
GdkGC *fgc; /* text foreground color */
|
||||
GdkGC *light_gc; /* sep bar */
|
||||
GdkGC *dark_gc;
|
||||
GdkGC *thin_gc;
|
||||
GdkGC *marker_gc;
|
||||
GdkColor bgc; /* text background color */
|
||||
GdkColor fgc; /* text foreground color */
|
||||
GdkColor palette[XTEXT_COLS];
|
||||
|
||||
gint io_tag; /* for delayed refresh events */
|
||||
@@ -196,9 +191,6 @@ struct _GtkXText
|
||||
int jump_out_offset; /* point at which to stop rendering */
|
||||
int jump_in_offset; /* "" start rendering */
|
||||
|
||||
int ts_x; /* ts origin for ->bgc GC */
|
||||
int ts_y;
|
||||
|
||||
int clip_x; /* clipping (x directions) */
|
||||
int clip_x2; /* from x to x2 */
|
||||
|
||||
@@ -257,7 +249,7 @@ void gtk_xtext_append_indent (xtext_buffer *buf,
|
||||
unsigned char *right_text, int right_len,
|
||||
time_t stamp);
|
||||
int gtk_xtext_set_font (GtkXText *xtext, char *name);
|
||||
void gtk_xtext_set_background (GtkXText * xtext, GdkPixmap * pixmap);
|
||||
void gtk_xtext_set_background (GtkXText * xtext, GdkPixbuf * pixbuf);
|
||||
void gtk_xtext_set_palette (GtkXText * xtext, GdkColor palette[]);
|
||||
void gtk_xtext_clear (xtext_buffer *buf, int lines);
|
||||
void gtk_xtext_save (GtkXText * xtext, int fh);
|
||||
|
@@ -77,10 +77,10 @@ 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 "..\..\COPYING" "$(HexChatRel)\"
|
||||
xcopy /q /s /i "$(DepsRoot)\lib\enchant\libenchant_myspell.dll" "$(HexChatRel)\lib\enchant\"
|
||||
xcopy /q /s /i "$(HexChatBin)hcchecksum.dll" "$(HexChatRel)\plugins\"
|
||||
copy "$(HexChatBin)hcdns.dll" "$(HexChatRel)\plugins"
|
||||
copy "$(HexChatBin)hcdoat.dll" "$(HexChatRel)\plugins"
|
||||
copy "$(HexChatBin)hcexec.dll" "$(HexChatRel)\plugins"
|
||||
copy "$(HexChatBin)hcfishlim.dll" "$(HexChatRel)\plugins"
|
||||
|
@@ -16,7 +16,7 @@ AppPublisherURL=http://hexchat.github.io
|
||||
AppCopyright=Copyright (C) 1998-2010 Peter Zelezny
|
||||
AppSupportURL=https://github.com/hexchat/hexchat/issues
|
||||
AppUpdatesURL=http://hexchat.github.io/downloads.html
|
||||
LicenseFile=share\doc\hexchat\COPYING
|
||||
LicenseFile=COPYING
|
||||
UninstallDisplayIcon={app}\hexchat.exe
|
||||
UninstallDisplayName=HexChat
|
||||
#if APPARCH == "x64"
|
||||
@@ -46,7 +46,7 @@ ArchitecturesInstallIn64BitMode=x64
|
||||
#else
|
||||
ArchitecturesAllowed=x86 x64
|
||||
#endif
|
||||
MinVersion=6.1
|
||||
MinVersion=6.0
|
||||
WizardImageFile={#PROJECTDIR}wizardimage.bmp
|
||||
WizardSmallImageFile={#PROJECTDIR}wizardsmallimage.bmp
|
||||
SetupIconFile={#PROJECTDIR}..\..\data\icons\hexchat.ico
|
||||
@@ -113,7 +113,7 @@ 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: "COPYING"; DestDir: "{app}"; Flags: ignoreversion; 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
|
||||
@@ -253,13 +253,13 @@ 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';
|
||||
PY2 := 'http://python.org/ftp/python/2.7.8/python-2.7.8.amd64.msi';
|
||||
PY3 := 'http://python.org/ftp/python/3.4.1/python-3.4.1.amd64.msi';
|
||||
PY2 := 'http://python.org/ftp/python/2.7.6/python-2.7.6.amd64.msi';
|
||||
PY3 := 'http://python.org/ftp/python/3.4.0/python-3.4.0.amd64.msi';
|
||||
#else
|
||||
REDIST := 'http://dl.hexchat.net/misc/vcredist_2013_x86.exe';
|
||||
PERL := 'http://dl.hexchat.net/misc/perl/Perl%205.20.0%20x86.msi';
|
||||
PY2 := 'http://python.org/ftp/python/2.7.8/python-2.7.8.msi';
|
||||
PY3 := 'http://python.org/ftp/python/3.4.1/python-3.4.1.msi';
|
||||
PY2 := 'http://python.org/ftp/python/2.7.6/python-2.7.6.msi';
|
||||
PY3 := 'http://python.org/ftp/python/3.4.0/python-3.4.0.msi';
|
||||
#endif
|
||||
DOTNET := 'http://dl.hexchat.net/misc/dotnet_40.exe';
|
||||
SPELL := 'http://dl.hexchat.net/hexchat/HexChat%20Spelling%20Dictionaries%20r2.exe';
|
||||
@@ -272,18 +272,15 @@ begin
|
||||
|
||||
if IsComponentSelected('spell') and not CheckSpellInstall() then
|
||||
idpAddFile(SPELL, ExpandConstant('{tmp}\spelling-dicts.exe'));
|
||||
|
||||
if not WizardSilent() then
|
||||
begin
|
||||
if IsComponentSelected('langs\perl') and not CheckDLL('perl520.dll') then
|
||||
idpAddFile(PERL, ExpandConstant('{tmp}\perl.msi'));
|
||||
|
||||
if IsComponentSelected('langs\python\python2') and not CheckDLL('python27.dll') then
|
||||
idpAddFile(PY2, ExpandConstant('{tmp}\python.msi'));
|
||||
|
||||
if IsComponentSelected('langs\python\python3') and not CheckDLL('python34.dll') then
|
||||
idpAddFile(PY3, ExpandConstant('{tmp}\python.msi'));
|
||||
end;
|
||||
|
||||
if IsComponentSelected('langs\perl') and not CheckDLL('perl520.dll') then
|
||||
idpAddFile(PERL, ExpandConstant('{tmp}\perl.msi'));
|
||||
|
||||
if IsComponentSelected('langs\python\python2') and not CheckDLL('python27.dll') then
|
||||
idpAddFile(PY2, ExpandConstant('{tmp}\python.msi'));
|
||||
|
||||
if IsComponentSelected('langs\python\python3') and not CheckDLL('python34.dll') then
|
||||
idpAddFile(PY3, ExpandConstant('{tmp}\python.msi'));
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@@ -359,7 +356,7 @@ begin
|
||||
sUnInstallString := GetUninstallString();
|
||||
if sUnInstallString <> '' then begin
|
||||
sUnInstallString := RemoveQuotes(sUnInstallString);
|
||||
if Exec(sUnInstallString, '/VERYSILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminated, iResultCode) then
|
||||
if Exec(sUnInstallString, '/SILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminated, iResultCode) then
|
||||
Result := 3
|
||||
else
|
||||
Result := 2;
|
||||
|
@@ -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"
|
||||
|
Reference in New Issue
Block a user