mirror of
https://github.com/weechat/weechat.git
synced 2026-06-12 14:14:48 +02:00
Display DCC progress in realtime, added selected DCC color config option, move into DCC list is ok (scroll)
This commit is contained in:
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat 0.0.8-pre2\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2004-09-09 23:11+0200\n"
|
||||
"POT-Creation-Date: 2004-09-11 15:10+0200\n"
|
||||
"PO-Revision-Date: 2004-08-08 20:47+0200\n"
|
||||
"Last-Translator: FlashCode <flashcode@flashtux.org>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@@ -1557,41 +1557,49 @@ msgstr ""
|
||||
"%s: tous les noms d'utilisateurs déclarés sont déjà en cours d'utilisation, "
|
||||
"fermeture de la connexion avec le serveur !\n"
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Waiting"
|
||||
msgstr "Attente"
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Connecting"
|
||||
msgstr "Connexion"
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Active"
|
||||
msgstr "Actif"
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Done"
|
||||
msgstr "Terminé"
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Failed"
|
||||
msgstr "Echoué"
|
||||
|
||||
#: src/irc/irc-dcc.c:44
|
||||
#: src/irc/irc-dcc.c:45
|
||||
msgid "Aborted"
|
||||
msgstr "Interrompu"
|
||||
|
||||
#: src/irc/irc-dcc.c:191
|
||||
#: src/irc/irc-dcc.c:219
|
||||
#, c-format
|
||||
msgid "%s not enough memory for new DCC\n"
|
||||
msgstr "%s pas assez de mémoire pour un nouveau DCC\n"
|
||||
|
||||
#: src/irc/irc-dcc.c:259
|
||||
#: src/irc/irc-dcc.c:244
|
||||
msgid "Incoming DCC file from "
|
||||
msgstr "Réception fichier DCC de "
|
||||
|
||||
#: src/irc/irc-dcc.c:269
|
||||
msgid " bytes\n"
|
||||
msgstr "octets\n"
|
||||
|
||||
#: src/irc/irc-dcc.c:323
|
||||
#, c-format
|
||||
msgid "DCC: file \"%s\" received from \"%s\": ok!\n"
|
||||
msgstr "DCC: fichier \"%s\" reçu de \"%s\": ok !\n"
|
||||
|
||||
#: src/irc/irc-dcc.c:284
|
||||
#: src/irc/irc-dcc.c:350
|
||||
#, c-format
|
||||
msgid "aborting active DCC: \"%s\" from %s\n"
|
||||
msgstr "abandon du DCC actif: \"%s\" de %s\n"
|
||||
@@ -1673,16 +1681,16 @@ msgstr "Mo"
|
||||
msgid "Gb"
|
||||
msgstr "Go"
|
||||
|
||||
#: src/gui/curses/gui-display.c:987
|
||||
#: src/gui/curses/gui-display.c:992
|
||||
#, c-format
|
||||
msgid "%d:[not connected] "
|
||||
msgstr "%d:[non connecté] "
|
||||
|
||||
#: src/gui/curses/gui-display.c:995
|
||||
#: src/gui/curses/gui-display.c:1000
|
||||
msgid "[Act: "
|
||||
msgstr "[Act: "
|
||||
|
||||
#: src/gui/curses/gui-display.c:1030 src/gui/curses/gui-display.c:1033
|
||||
#: src/gui/curses/gui-display.c:1039 src/gui/curses/gui-display.c:1042
|
||||
msgid "-MORE-"
|
||||
msgstr "-PLUS-"
|
||||
|
||||
@@ -1690,17 +1698,17 @@ msgstr "-PLUS-"
|
||||
msgid "server"
|
||||
msgstr "serveur"
|
||||
|
||||
#: src/gui/gui-common.c:304
|
||||
#: src/gui/gui-common.c:306
|
||||
#, c-format
|
||||
msgid "%s not enough memory for infobar message\n"
|
||||
msgstr "%s pas assez de mémoire pour un message de la barre d'infos\n"
|
||||
|
||||
#: src/gui/gui-common.c:439
|
||||
#: src/gui/gui-common.c:441
|
||||
#, c-format
|
||||
msgid "%s not enough memory for new line!\n"
|
||||
msgstr "%s pas assez de mémoire pour une nouvelle ligne !\n"
|
||||
|
||||
#: src/gui/gui-common.c:482
|
||||
#: src/gui/gui-common.c:484
|
||||
msgid "not enough memory!\n"
|
||||
msgstr "pas assez de mémoire !\n"
|
||||
|
||||
|
||||
+24
-16
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2004-09-09 23:11+0200\n"
|
||||
"POT-Creation-Date: 2004-09-11 15:10+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -1456,41 +1456,49 @@ msgid ""
|
||||
"server!\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Waiting"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Connecting"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:44
|
||||
#: src/irc/irc-dcc.c:45
|
||||
msgid "Aborted"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:191
|
||||
#: src/irc/irc-dcc.c:219
|
||||
#, c-format
|
||||
msgid "%s not enough memory for new DCC\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:259
|
||||
#: src/irc/irc-dcc.c:244
|
||||
msgid "Incoming DCC file from "
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:269
|
||||
msgid " bytes\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:323
|
||||
#, c-format
|
||||
msgid "DCC: file \"%s\" received from \"%s\": ok!\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:284
|
||||
#: src/irc/irc-dcc.c:350
|
||||
#, c-format
|
||||
msgid "aborting active DCC: \"%s\" from %s\n"
|
||||
msgstr ""
|
||||
@@ -1566,16 +1574,16 @@ msgstr ""
|
||||
msgid "Gb"
|
||||
msgstr ""
|
||||
|
||||
#: src/gui/curses/gui-display.c:987
|
||||
#: src/gui/curses/gui-display.c:992
|
||||
#, c-format
|
||||
msgid "%d:[not connected] "
|
||||
msgstr ""
|
||||
|
||||
#: src/gui/curses/gui-display.c:995
|
||||
#: src/gui/curses/gui-display.c:1000
|
||||
msgid "[Act: "
|
||||
msgstr ""
|
||||
|
||||
#: src/gui/curses/gui-display.c:1030 src/gui/curses/gui-display.c:1033
|
||||
#: src/gui/curses/gui-display.c:1039 src/gui/curses/gui-display.c:1042
|
||||
msgid "-MORE-"
|
||||
msgstr ""
|
||||
|
||||
@@ -1583,17 +1591,17 @@ msgstr ""
|
||||
msgid "server"
|
||||
msgstr ""
|
||||
|
||||
#: src/gui/gui-common.c:304
|
||||
#: src/gui/gui-common.c:306
|
||||
#, c-format
|
||||
msgid "%s not enough memory for infobar message\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/gui/gui-common.c:439
|
||||
#: src/gui/gui-common.c:441
|
||||
#, c-format
|
||||
msgid "%s not enough memory for new line!\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/gui/gui-common.c:482
|
||||
#: src/gui/gui-common.c:484
|
||||
msgid "not enough memory!\n"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -83,6 +83,10 @@ hotlist_add (int priority, t_gui_buffer *buffer)
|
||||
if (!buffer)
|
||||
return;
|
||||
|
||||
/* do not highlight current buffer */
|
||||
if (buffer == gui_current_window->buffer)
|
||||
return;
|
||||
|
||||
if ((pos_hotlist = hotlist_search (buffer)))
|
||||
{
|
||||
/* return if priority is greater or equal than the one to add */
|
||||
|
||||
@@ -193,6 +193,7 @@ int cfg_col_nick_sep;
|
||||
int cfg_col_nick_self;
|
||||
int cfg_col_nick_private;
|
||||
int cfg_col_nick_bg;
|
||||
int cfg_col_dcc_selected;
|
||||
int cfg_col_dcc_waiting;
|
||||
int cfg_col_dcc_connecting;
|
||||
int cfg_col_dcc_active;
|
||||
@@ -354,6 +355,10 @@ t_config_option weechat_options_colors[] =
|
||||
"default", NULL, &cfg_col_nick_bg, NULL, &config_change_color },
|
||||
|
||||
/* DCC */
|
||||
{ "col_chat_dcc_selected", N_("color for selected DCC"),
|
||||
N_("color for selected DCC (chat window)"),
|
||||
OPTION_TYPE_COLOR, 0, 0, 0,
|
||||
"white", NULL, &cfg_col_dcc_selected, NULL, &config_change_color },
|
||||
{ "col_dcc_waiting", N_("color for \"waiting\" dcc status"),
|
||||
N_("color for \"waiting\" dcc status"),
|
||||
OPTION_TYPE_COLOR, 0, 0, 0,
|
||||
|
||||
@@ -127,6 +127,7 @@ extern int cfg_col_nick_sep;
|
||||
extern int cfg_col_nick_self;
|
||||
extern int cfg_col_nick_private;
|
||||
extern int cfg_col_nick_bg;
|
||||
extern int cfg_col_dcc_selected;
|
||||
extern int cfg_col_dcc_waiting;
|
||||
extern int cfg_col_dcc_connecting;
|
||||
extern int cfg_col_dcc_active;
|
||||
|
||||
@@ -562,7 +562,7 @@ gui_draw_buffer_chat (t_gui_buffer *buffer, int erase)
|
||||
{
|
||||
t_gui_window *ptr_win;
|
||||
t_gui_line *ptr_line;
|
||||
t_dcc *ptr_dcc;
|
||||
t_dcc *dcc_first, *dcc_selected, *ptr_dcc;
|
||||
char format_empty[32];
|
||||
int i, j, lines_used, num_bars;
|
||||
char *unit_name[] = { N_("bytes"), N_("Kb"), N_("Mb"), N_("Gb") };
|
||||
@@ -594,28 +594,38 @@ gui_draw_buffer_chat (t_gui_buffer *buffer, int erase)
|
||||
if (buffer->dcc)
|
||||
{
|
||||
i = 0;
|
||||
for (ptr_dcc = dcc_list; ptr_dcc; ptr_dcc = ptr_dcc->next_dcc)
|
||||
dcc_first = (ptr_win->dcc_first) ? (t_dcc *) ptr_win->dcc_first : dcc_list;
|
||||
dcc_selected = (ptr_win->dcc_selected) ? (t_dcc *) ptr_win->dcc_selected : dcc_list;
|
||||
for (ptr_dcc = dcc_first; ptr_dcc; ptr_dcc = ptr_dcc->next_dcc)
|
||||
{
|
||||
if (i >= ptr_win->win_chat_height - 1)
|
||||
break;
|
||||
if ((ptr_dcc->type == DCC_FILE_RECV)
|
||||
|| (ptr_dcc->type == DCC_FILE_SEND))
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_chat, COLOR_WIN_CHAT);
|
||||
mvwprintw (ptr_win->win_chat, i, 0, " %-16s %s",
|
||||
gui_window_set_color (ptr_win->win_chat,
|
||||
(ptr_dcc == dcc_selected) ?
|
||||
COLOR_DCC_SELECTED : COLOR_WIN_CHAT);
|
||||
mvwprintw (ptr_win->win_chat, i, 0, "%s %-16s %s",
|
||||
(ptr_dcc == dcc_selected) ? ">>" : " ",
|
||||
ptr_dcc->nick, ptr_dcc->filename);
|
||||
if (ptr_dcc->filename_suffix > 0)
|
||||
wprintw (ptr_win->win_chat, " (.%d)",
|
||||
ptr_dcc->filename_suffix);
|
||||
gui_window_set_color (ptr_win->win_chat, COLOR_WIN_CHAT);
|
||||
mvwprintw (ptr_win->win_chat, i + 1, 0, " %s ",
|
||||
gui_window_set_color (ptr_win->win_chat,
|
||||
(ptr_dcc == dcc_selected) ?
|
||||
COLOR_DCC_SELECTED : COLOR_WIN_CHAT);
|
||||
mvwprintw (ptr_win->win_chat, i + 1, 0, "%s %s ",
|
||||
(ptr_dcc == dcc_selected) ? ">>" : " ",
|
||||
(ptr_dcc->type == DCC_FILE_RECV) ?
|
||||
"--->" : "<---");
|
||||
gui_window_set_color (ptr_win->win_chat,
|
||||
COLOR_DCC_WAITING + ptr_dcc->status);
|
||||
wprintw (ptr_win->win_chat, "%-10s",
|
||||
dcc_status_string[ptr_dcc->status]);
|
||||
gui_window_set_color (ptr_win->win_chat, COLOR_WIN_CHAT);
|
||||
gui_window_set_color (ptr_win->win_chat,
|
||||
(ptr_dcc == dcc_selected) ?
|
||||
COLOR_DCC_SELECTED : COLOR_WIN_CHAT);
|
||||
wprintw (ptr_win->win_chat, " [",
|
||||
dcc_status_string[ptr_dcc->status]);
|
||||
if (ptr_dcc->size == 0)
|
||||
@@ -647,10 +657,10 @@ gui_draw_buffer_chat (t_gui_buffer *buffer, int erase)
|
||||
unit_name[num_unit],
|
||||
((long double) ptr_dcc->size) / ((long double)(unit_divide[num_unit])),
|
||||
unit_name[num_unit]);
|
||||
ptr_win->dcc_last_displayed = ptr_dcc;
|
||||
i += 2;
|
||||
}
|
||||
}
|
||||
move (ptr_win->win_y + 1, ptr_win->win_x);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1195,6 +1205,9 @@ gui_draw_buffer_input (t_gui_buffer *buffer, int erase)
|
||||
snprintf (format, 32, "%%-%ds", input_width);
|
||||
mvwprintw (ptr_win->win_input, 0, 0, format, "");
|
||||
wclrtoeol (ptr_win->win_input);
|
||||
if (ptr_win == gui_current_window)
|
||||
move (ptr_win->win_y + ptr_win->win_height - 1,
|
||||
ptr_win->win_x);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1519,6 +1532,8 @@ gui_curses_resize_handler ()
|
||||
/* TODO: manage when some windows are outside new term size */
|
||||
for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window)
|
||||
{
|
||||
ptr_win->dcc_first = NULL;
|
||||
ptr_win->dcc_selected = NULL;
|
||||
if (ptr_win->win_x + ptr_win->win_width == old_width)
|
||||
ptr_win->win_width = new_width - ptr_win->win_x;
|
||||
if (ptr_win->win_y + ptr_win->win_height == old_height)
|
||||
@@ -1720,6 +1735,8 @@ gui_init_colors ()
|
||||
(color & A_BOLD) ? A_BOLD : 0;
|
||||
}
|
||||
|
||||
init_pair (COLOR_DCC_SELECTED,
|
||||
cfg_col_dcc_selected & A_CHARTEXT, cfg_col_chat_bg);
|
||||
init_pair (COLOR_DCC_WAITING,
|
||||
cfg_col_dcc_waiting & A_CHARTEXT, cfg_col_chat_bg);
|
||||
init_pair (COLOR_DCC_CONNECTING,
|
||||
@@ -1763,6 +1780,7 @@ gui_init_colors ()
|
||||
color_attr[COLOR_WIN_NICK_SEP - 1] = 0;
|
||||
color_attr[COLOR_WIN_NICK_SELF - 1] = cfg_col_nick_self & A_BOLD;
|
||||
color_attr[COLOR_WIN_NICK_PRIVATE - 1] = cfg_col_nick_private & A_BOLD;
|
||||
color_attr[COLOR_DCC_SELECTED - 1] = cfg_col_dcc_selected & A_BOLD;
|
||||
color_attr[COLOR_DCC_WAITING - 1] = cfg_col_dcc_waiting & A_BOLD;
|
||||
color_attr[COLOR_DCC_CONNECTING - 1] = cfg_col_dcc_connecting & A_BOLD;
|
||||
color_attr[COLOR_DCC_ACTIVE - 1] = cfg_col_dcc_active & A_BOLD;
|
||||
|
||||
@@ -90,7 +90,24 @@ gui_read_keyb ()
|
||||
break;
|
||||
/* cursor up */
|
||||
case KEY_UP:
|
||||
if (!gui_current_window->buffer->dcc)
|
||||
if (gui_current_window->buffer->dcc)
|
||||
{
|
||||
if (dcc_list)
|
||||
{
|
||||
if (gui_current_window->dcc_selected
|
||||
&& ((t_dcc *)(gui_current_window->dcc_selected))->prev_dcc)
|
||||
{
|
||||
if (gui_current_window->dcc_selected ==
|
||||
gui_current_window->dcc_first)
|
||||
gui_current_window->dcc_first =
|
||||
((t_dcc *)(gui_current_window->dcc_first))->prev_dcc;
|
||||
gui_current_window->dcc_selected =
|
||||
((t_dcc *)(gui_current_window->dcc_selected))->prev_dcc;
|
||||
gui_draw_buffer_chat (gui_current_window->buffer, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gui_current_window->buffer->ptr_history)
|
||||
{
|
||||
@@ -118,7 +135,35 @@ gui_read_keyb ()
|
||||
break;
|
||||
/* cursor down */
|
||||
case KEY_DOWN:
|
||||
if (!gui_current_window->buffer->dcc)
|
||||
if (gui_current_window->buffer->dcc)
|
||||
{
|
||||
if (dcc_list)
|
||||
{
|
||||
if (!gui_current_window->dcc_selected
|
||||
|| ((t_dcc *)(gui_current_window->dcc_selected))->next_dcc)
|
||||
{
|
||||
if (gui_current_window->dcc_last_displayed
|
||||
&& (gui_current_window->dcc_selected ==
|
||||
gui_current_window->dcc_last_displayed))
|
||||
{
|
||||
if (gui_current_window->dcc_first)
|
||||
gui_current_window->dcc_first =
|
||||
((t_dcc *)(gui_current_window->dcc_first))->next_dcc;
|
||||
else
|
||||
gui_current_window->dcc_first =
|
||||
dcc_list->next_dcc;
|
||||
}
|
||||
if (gui_current_window->dcc_selected)
|
||||
gui_current_window->dcc_selected =
|
||||
((t_dcc *)(gui_current_window->dcc_selected))->next_dcc;
|
||||
else
|
||||
gui_current_window->dcc_selected =
|
||||
dcc_list->next_dcc;
|
||||
gui_draw_buffer_chat (gui_current_window->buffer, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gui_current_window->buffer->ptr_history)
|
||||
{
|
||||
|
||||
@@ -99,6 +99,10 @@ gui_window_new (int x, int y, int width, int height)
|
||||
new_window->textview_nicklist = NULL;
|
||||
new_window->textbuffer_nicklist = NULL;
|
||||
|
||||
new_window->dcc_first = NULL;
|
||||
new_window->dcc_selected = NULL;
|
||||
new_window->dcc_last_displayed = NULL;
|
||||
|
||||
new_window->buffer = NULL;
|
||||
|
||||
new_window->first_line_displayed = 0;
|
||||
|
||||
+15
-7
@@ -26,7 +26,7 @@
|
||||
|
||||
#define INPUT_BUFFER_BLOCK_SIZE 256
|
||||
|
||||
#define NUM_COLORS 45
|
||||
#define NUM_COLORS 46
|
||||
#define COLOR_WIN_TITLE 1
|
||||
#define COLOR_WIN_CHAT 2
|
||||
#define COLOR_WIN_CHAT_TIME 3
|
||||
@@ -59,12 +59,13 @@
|
||||
#define COLOR_WIN_NICK_FIRST 30
|
||||
#define COLOR_WIN_NICK_LAST 39
|
||||
#define COLOR_WIN_NICK_NUMBER (COLOR_WIN_NICK_LAST - COLOR_WIN_NICK_FIRST + 1)
|
||||
#define COLOR_DCC_WAITING 40
|
||||
#define COLOR_DCC_CONNECTING 41
|
||||
#define COLOR_DCC_ACTIVE 42
|
||||
#define COLOR_DCC_DONE 43
|
||||
#define COLOR_DCC_FAILED 44
|
||||
#define COLOR_DCC_ABORTED 45
|
||||
#define COLOR_DCC_SELECTED 40
|
||||
#define COLOR_DCC_WAITING 41
|
||||
#define COLOR_DCC_CONNECTING 42
|
||||
#define COLOR_DCC_ACTIVE 43
|
||||
#define COLOR_DCC_DONE 44
|
||||
#define COLOR_DCC_FAILED 45
|
||||
#define COLOR_DCC_ABORTED 46
|
||||
|
||||
#define SERVER(buffer) ((t_irc_server *)(buffer->server))
|
||||
#define CHANNEL(buffer) ((t_irc_channel *)(buffer->channel))
|
||||
@@ -142,6 +143,8 @@ struct t_gui_buffer
|
||||
/* server/channel */
|
||||
void *server; /* buffer's server */
|
||||
void *channel; /* buffer's channel */
|
||||
|
||||
/* dcc buffer */
|
||||
int dcc; /* buffer is dcc status */
|
||||
|
||||
/* chat content (lines, line is composed by many messages) */
|
||||
@@ -210,6 +213,11 @@ struct t_gui_window
|
||||
/* windows for Qt GUI */
|
||||
/* TODO: declare Qt window */
|
||||
|
||||
/* DCC */
|
||||
void *dcc_first; /* first dcc displayed */
|
||||
void *dcc_selected; /* selected dcc */
|
||||
void *dcc_last_displayed; /* last dcc displayed (for scroll) */
|
||||
|
||||
t_gui_buffer *buffer; /* buffer currently displayed in window */
|
||||
|
||||
int first_line_displayed; /* = 1 if first line is displayed */
|
||||
|
||||
+87
-23
@@ -45,26 +45,41 @@ char *dcc_status_string[] = /* strings for DCC status */
|
||||
N_("Aborted") };
|
||||
|
||||
|
||||
/*
|
||||
* dcc_redraw: redraw DCC buffer (and add to hotlist)
|
||||
*/
|
||||
|
||||
void
|
||||
dcc_redraw (int highlight)
|
||||
{
|
||||
gui_draw_buffer_chat (gui_get_dcc_buffer (), 0);
|
||||
if (highlight)
|
||||
{
|
||||
hotlist_add (1, gui_get_dcc_buffer ());
|
||||
gui_draw_buffer_status (gui_current_window->buffer, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* dcc_connect: connect to another host
|
||||
*/
|
||||
|
||||
void
|
||||
dcc_connect (t_dcc *dcc)
|
||||
dcc_connect (t_dcc *ptr_dcc)
|
||||
{
|
||||
struct sockaddr_in addr;
|
||||
|
||||
dcc->status = DCC_CONNECTING;
|
||||
ptr_dcc->status = DCC_CONNECTING;
|
||||
|
||||
dcc->sock = socket (AF_INET, SOCK_STREAM, 0);
|
||||
if (dcc->sock == -1)
|
||||
ptr_dcc->sock = socket (AF_INET, SOCK_STREAM, 0);
|
||||
if (ptr_dcc->sock == -1)
|
||||
return;
|
||||
memset (&addr, 0, sizeof (addr));
|
||||
addr.sin_port = htons (dcc->port);
|
||||
addr.sin_port = htons (ptr_dcc->port);
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_addr.s_addr = htonl (dcc->addr);
|
||||
fcntl (dcc->sock, F_SETFL, O_NONBLOCK);
|
||||
connect (dcc->sock, (struct sockaddr *) &addr, sizeof (addr));
|
||||
addr.sin_addr.s_addr = htonl (ptr_dcc->addr);
|
||||
fcntl (ptr_dcc->sock, F_SETFL, O_NONBLOCK);
|
||||
connect (ptr_dcc->sock, (struct sockaddr *) &addr, sizeof (addr));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -134,6 +149,7 @@ dcc_accept (t_dcc *ptr_dcc)
|
||||
if (!ptr_dcc->local_filename)
|
||||
{
|
||||
ptr_dcc->status = DCC_FAILED;
|
||||
dcc_redraw (1);
|
||||
return;
|
||||
}
|
||||
if (cfg_dcc_download_path[0] == '~')
|
||||
@@ -156,6 +172,7 @@ dcc_accept (t_dcc *ptr_dcc)
|
||||
if (!cfg_dcc_auto_rename)
|
||||
{
|
||||
ptr_dcc->status = DCC_FAILED;
|
||||
dcc_redraw (1);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -163,6 +180,7 @@ dcc_accept (t_dcc *ptr_dcc)
|
||||
if (!filename2)
|
||||
{
|
||||
ptr_dcc->status = DCC_FAILED;
|
||||
dcc_redraw (1);
|
||||
return;
|
||||
}
|
||||
ptr_dcc->filename_suffix = 0;
|
||||
@@ -183,6 +201,7 @@ dcc_accept (t_dcc *ptr_dcc)
|
||||
O_CREAT | O_TRUNC | O_WRONLY,
|
||||
0644);
|
||||
}
|
||||
dcc_redraw (1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -194,7 +213,6 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic
|
||||
unsigned int size)
|
||||
{
|
||||
t_dcc *new_dcc;
|
||||
t_gui_buffer *dcc_buffer;
|
||||
|
||||
if ((new_dcc = (t_dcc *) malloc (sizeof (t_dcc))) == NULL)
|
||||
{
|
||||
@@ -214,26 +232,52 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic
|
||||
new_dcc->filename_suffix = -1;
|
||||
new_dcc->size = size;
|
||||
new_dcc->pos = 0;
|
||||
new_dcc->prev_dcc = NULL;
|
||||
new_dcc->next_dcc = dcc_list;
|
||||
if (dcc_list)
|
||||
dcc_list->prev_dcc = new_dcc;
|
||||
dcc_list = new_dcc;
|
||||
|
||||
gui_printf (NULL, "Incoming DCC file: from %s, address:%d.%d.%d.%d, "
|
||||
"port=%d, name=%s, size=%lu bytes\n",
|
||||
nick,
|
||||
addr >> 24, (addr >> 16) & 0xff, (addr >> 8) & 0xff, addr & 0xff,
|
||||
port, filename, size);
|
||||
gui_current_window->dcc_first = NULL;
|
||||
gui_current_window->dcc_selected = NULL;
|
||||
|
||||
dcc_buffer = gui_get_dcc_buffer ();
|
||||
if (type == DCC_FILE_RECV)
|
||||
{
|
||||
irc_display_prefix (server->buffer, PREFIX_INFO);
|
||||
gui_printf (server->buffer, _("Incoming DCC file from "));
|
||||
gui_printf_color (server->buffer,
|
||||
COLOR_WIN_CHAT_NICK,
|
||||
"%s",
|
||||
nick);
|
||||
gui_printf_color (server->buffer,
|
||||
COLOR_WIN_CHAT_DARK,
|
||||
" (");
|
||||
gui_printf_color (server->buffer,
|
||||
COLOR_WIN_CHAT_HOST,
|
||||
"%d.%d.%d.%d",
|
||||
addr >> 24, (addr >> 16) & 0xff, (addr >> 8) & 0xff, addr & 0xff);
|
||||
gui_printf_color (server->buffer,
|
||||
COLOR_WIN_CHAT_DARK,
|
||||
")");
|
||||
gui_printf (server->buffer, ": ");
|
||||
gui_printf_color (server->buffer,
|
||||
COLOR_WIN_CHAT_CHANNEL,
|
||||
"%s",
|
||||
filename);
|
||||
gui_printf (server->buffer, ", ");
|
||||
gui_printf_color (server->buffer,
|
||||
COLOR_WIN_CHAT_CHANNEL,
|
||||
"%lu",
|
||||
size);
|
||||
gui_printf (server->buffer, _(" bytes\n"));
|
||||
}
|
||||
|
||||
if ( ( (type == DCC_CHAT_RECV) && (cfg_dcc_auto_accept_chats) )
|
||||
|| ( (type == DCC_FILE_RECV) && (cfg_dcc_auto_accept_files) ) )
|
||||
{
|
||||
dcc_accept (new_dcc);
|
||||
hotlist_add (1, dcc_buffer);
|
||||
}
|
||||
else
|
||||
hotlist_add (2, dcc_buffer);
|
||||
gui_draw_buffer_status (dcc_buffer, 0);
|
||||
hotlist_add (2, gui_get_dcc_buffer ());
|
||||
gui_draw_buffer_status (gui_current_window->buffer, 0);
|
||||
|
||||
return new_dcc;
|
||||
}
|
||||
@@ -260,12 +304,16 @@ dcc_handle ()
|
||||
if (num != -1)
|
||||
{
|
||||
if (num == 0)
|
||||
{
|
||||
dcc_close (ptr_dcc, DCC_FAILED);
|
||||
dcc_redraw (1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (write (ptr_dcc->file, buffer, num) == -1)
|
||||
{
|
||||
dcc_close (ptr_dcc, DCC_FAILED);
|
||||
dcc_redraw (1);
|
||||
return;
|
||||
}
|
||||
ptr_dcc->pos += (unsigned long) num;
|
||||
@@ -273,11 +321,27 @@ dcc_handle ()
|
||||
send (ptr_dcc->sock, (char *) &pos, 4, 0);
|
||||
if (ptr_dcc->pos >= ptr_dcc->size)
|
||||
{
|
||||
gui_printf (NULL,
|
||||
_("DCC: file \"%s\" received from \"%s\": ok!\n"),
|
||||
ptr_dcc->filename, ptr_dcc->nick);
|
||||
irc_display_prefix (ptr_dcc->server->buffer, PREFIX_INFO);
|
||||
gui_printf (ptr_dcc->server->buffer, _("DCC: file "));
|
||||
gui_printf_color (ptr_dcc->server->buffer,
|
||||
COLOR_WIN_CHAT_CHANNEL,
|
||||
"%s",
|
||||
ptr_dcc->filename);
|
||||
gui_printf (ptr_dcc->server->buffer, _(" (local filename: "));
|
||||
gui_printf_color (ptr_dcc->server->buffer,
|
||||
COLOR_WIN_CHAT_CHANNEL,
|
||||
"%s",
|
||||
ptr_dcc->local_filename);
|
||||
gui_printf (ptr_dcc->server->buffer, _(") from "));
|
||||
gui_printf_color (ptr_dcc->server->buffer,
|
||||
COLOR_WIN_CHAT_NICK,
|
||||
"%s",
|
||||
ptr_dcc->nick);
|
||||
gui_printf (ptr_dcc->server->buffer, _(": ok!\n"));
|
||||
dcc_close (ptr_dcc, DCC_DONE);
|
||||
dcc_redraw (1);
|
||||
}
|
||||
dcc_redraw (0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-2
@@ -186,11 +186,12 @@ struct t_dcc
|
||||
char *nick; /* remote nick */
|
||||
int sock; /* socket for connection */
|
||||
int file; /* local file (for reading or writing) */
|
||||
char *filename; /* filename */
|
||||
char *local_filename; /* local filename */
|
||||
char *filename; /* filename (given by sender) */
|
||||
char *local_filename; /* local filename (with path) */
|
||||
int filename_suffix; /* suffix (.1 for ex) if renaming file */
|
||||
unsigned long size; /* file size */
|
||||
unsigned long pos; /* number of bytes received/sent */
|
||||
t_dcc *prev_dcc; /* link to previous dcc file/chat */
|
||||
t_dcc *next_dcc; /* link to next dcc file/chat */
|
||||
};
|
||||
|
||||
|
||||
+24
-16
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: WeeChat 0.0.8-pre2\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2004-09-09 23:11+0200\n"
|
||||
"POT-Creation-Date: 2004-09-11 15:10+0200\n"
|
||||
"PO-Revision-Date: 2004-08-08 20:47+0200\n"
|
||||
"Last-Translator: FlashCode <flashcode@flashtux.org>\n"
|
||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||
@@ -1557,41 +1557,49 @@ msgstr ""
|
||||
"%s: tous les noms d'utilisateurs déclarés sont déjà en cours d'utilisation, "
|
||||
"fermeture de la connexion avec le serveur !\n"
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Waiting"
|
||||
msgstr "Attente"
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Connecting"
|
||||
msgstr "Connexion"
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Active"
|
||||
msgstr "Actif"
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Done"
|
||||
msgstr "Terminé"
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Failed"
|
||||
msgstr "Echoué"
|
||||
|
||||
#: src/irc/irc-dcc.c:44
|
||||
#: src/irc/irc-dcc.c:45
|
||||
msgid "Aborted"
|
||||
msgstr "Interrompu"
|
||||
|
||||
#: src/irc/irc-dcc.c:191
|
||||
#: src/irc/irc-dcc.c:219
|
||||
#, c-format
|
||||
msgid "%s not enough memory for new DCC\n"
|
||||
msgstr "%s pas assez de mémoire pour un nouveau DCC\n"
|
||||
|
||||
#: src/irc/irc-dcc.c:259
|
||||
#: src/irc/irc-dcc.c:244
|
||||
msgid "Incoming DCC file from "
|
||||
msgstr "Réception fichier DCC de "
|
||||
|
||||
#: src/irc/irc-dcc.c:269
|
||||
msgid " bytes\n"
|
||||
msgstr "octets\n"
|
||||
|
||||
#: src/irc/irc-dcc.c:323
|
||||
#, c-format
|
||||
msgid "DCC: file \"%s\" received from \"%s\": ok!\n"
|
||||
msgstr "DCC: fichier \"%s\" reçu de \"%s\": ok !\n"
|
||||
|
||||
#: src/irc/irc-dcc.c:284
|
||||
#: src/irc/irc-dcc.c:350
|
||||
#, c-format
|
||||
msgid "aborting active DCC: \"%s\" from %s\n"
|
||||
msgstr "abandon du DCC actif: \"%s\" de %s\n"
|
||||
@@ -1673,16 +1681,16 @@ msgstr "Mo"
|
||||
msgid "Gb"
|
||||
msgstr "Go"
|
||||
|
||||
#: src/gui/curses/gui-display.c:987
|
||||
#: src/gui/curses/gui-display.c:992
|
||||
#, c-format
|
||||
msgid "%d:[not connected] "
|
||||
msgstr "%d:[non connecté] "
|
||||
|
||||
#: src/gui/curses/gui-display.c:995
|
||||
#: src/gui/curses/gui-display.c:1000
|
||||
msgid "[Act: "
|
||||
msgstr "[Act: "
|
||||
|
||||
#: src/gui/curses/gui-display.c:1030 src/gui/curses/gui-display.c:1033
|
||||
#: src/gui/curses/gui-display.c:1039 src/gui/curses/gui-display.c:1042
|
||||
msgid "-MORE-"
|
||||
msgstr "-PLUS-"
|
||||
|
||||
@@ -1690,17 +1698,17 @@ msgstr "-PLUS-"
|
||||
msgid "server"
|
||||
msgstr "serveur"
|
||||
|
||||
#: src/gui/gui-common.c:304
|
||||
#: src/gui/gui-common.c:306
|
||||
#, c-format
|
||||
msgid "%s not enough memory for infobar message\n"
|
||||
msgstr "%s pas assez de mémoire pour un message de la barre d'infos\n"
|
||||
|
||||
#: src/gui/gui-common.c:439
|
||||
#: src/gui/gui-common.c:441
|
||||
#, c-format
|
||||
msgid "%s not enough memory for new line!\n"
|
||||
msgstr "%s pas assez de mémoire pour une nouvelle ligne !\n"
|
||||
|
||||
#: src/gui/gui-common.c:482
|
||||
#: src/gui/gui-common.c:484
|
||||
msgid "not enough memory!\n"
|
||||
msgstr "pas assez de mémoire !\n"
|
||||
|
||||
|
||||
+24
-16
@@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||
"POT-Creation-Date: 2004-09-09 23:11+0200\n"
|
||||
"POT-Creation-Date: 2004-09-11 15:10+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@@ -1456,41 +1456,49 @@ msgid ""
|
||||
"server!\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Waiting"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Connecting"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Done"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:43
|
||||
#: src/irc/irc-dcc.c:44
|
||||
msgid "Failed"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:44
|
||||
#: src/irc/irc-dcc.c:45
|
||||
msgid "Aborted"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:191
|
||||
#: src/irc/irc-dcc.c:219
|
||||
#, c-format
|
||||
msgid "%s not enough memory for new DCC\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:259
|
||||
#: src/irc/irc-dcc.c:244
|
||||
msgid "Incoming DCC file from "
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:269
|
||||
msgid " bytes\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:323
|
||||
#, c-format
|
||||
msgid "DCC: file \"%s\" received from \"%s\": ok!\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/irc/irc-dcc.c:284
|
||||
#: src/irc/irc-dcc.c:350
|
||||
#, c-format
|
||||
msgid "aborting active DCC: \"%s\" from %s\n"
|
||||
msgstr ""
|
||||
@@ -1566,16 +1574,16 @@ msgstr ""
|
||||
msgid "Gb"
|
||||
msgstr ""
|
||||
|
||||
#: src/gui/curses/gui-display.c:987
|
||||
#: src/gui/curses/gui-display.c:992
|
||||
#, c-format
|
||||
msgid "%d:[not connected] "
|
||||
msgstr ""
|
||||
|
||||
#: src/gui/curses/gui-display.c:995
|
||||
#: src/gui/curses/gui-display.c:1000
|
||||
msgid "[Act: "
|
||||
msgstr ""
|
||||
|
||||
#: src/gui/curses/gui-display.c:1030 src/gui/curses/gui-display.c:1033
|
||||
#: src/gui/curses/gui-display.c:1039 src/gui/curses/gui-display.c:1042
|
||||
msgid "-MORE-"
|
||||
msgstr ""
|
||||
|
||||
@@ -1583,17 +1591,17 @@ msgstr ""
|
||||
msgid "server"
|
||||
msgstr ""
|
||||
|
||||
#: src/gui/gui-common.c:304
|
||||
#: src/gui/gui-common.c:306
|
||||
#, c-format
|
||||
msgid "%s not enough memory for infobar message\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/gui/gui-common.c:439
|
||||
#: src/gui/gui-common.c:441
|
||||
#, c-format
|
||||
msgid "%s not enough memory for new line!\n"
|
||||
msgstr ""
|
||||
|
||||
#: src/gui/gui-common.c:482
|
||||
#: src/gui/gui-common.c:484
|
||||
msgid "not enough memory!\n"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -83,6 +83,10 @@ hotlist_add (int priority, t_gui_buffer *buffer)
|
||||
if (!buffer)
|
||||
return;
|
||||
|
||||
/* do not highlight current buffer */
|
||||
if (buffer == gui_current_window->buffer)
|
||||
return;
|
||||
|
||||
if ((pos_hotlist = hotlist_search (buffer)))
|
||||
{
|
||||
/* return if priority is greater or equal than the one to add */
|
||||
|
||||
@@ -193,6 +193,7 @@ int cfg_col_nick_sep;
|
||||
int cfg_col_nick_self;
|
||||
int cfg_col_nick_private;
|
||||
int cfg_col_nick_bg;
|
||||
int cfg_col_dcc_selected;
|
||||
int cfg_col_dcc_waiting;
|
||||
int cfg_col_dcc_connecting;
|
||||
int cfg_col_dcc_active;
|
||||
@@ -354,6 +355,10 @@ t_config_option weechat_options_colors[] =
|
||||
"default", NULL, &cfg_col_nick_bg, NULL, &config_change_color },
|
||||
|
||||
/* DCC */
|
||||
{ "col_chat_dcc_selected", N_("color for selected DCC"),
|
||||
N_("color for selected DCC (chat window)"),
|
||||
OPTION_TYPE_COLOR, 0, 0, 0,
|
||||
"white", NULL, &cfg_col_dcc_selected, NULL, &config_change_color },
|
||||
{ "col_dcc_waiting", N_("color for \"waiting\" dcc status"),
|
||||
N_("color for \"waiting\" dcc status"),
|
||||
OPTION_TYPE_COLOR, 0, 0, 0,
|
||||
|
||||
@@ -127,6 +127,7 @@ extern int cfg_col_nick_sep;
|
||||
extern int cfg_col_nick_self;
|
||||
extern int cfg_col_nick_private;
|
||||
extern int cfg_col_nick_bg;
|
||||
extern int cfg_col_dcc_selected;
|
||||
extern int cfg_col_dcc_waiting;
|
||||
extern int cfg_col_dcc_connecting;
|
||||
extern int cfg_col_dcc_active;
|
||||
|
||||
@@ -562,7 +562,7 @@ gui_draw_buffer_chat (t_gui_buffer *buffer, int erase)
|
||||
{
|
||||
t_gui_window *ptr_win;
|
||||
t_gui_line *ptr_line;
|
||||
t_dcc *ptr_dcc;
|
||||
t_dcc *dcc_first, *dcc_selected, *ptr_dcc;
|
||||
char format_empty[32];
|
||||
int i, j, lines_used, num_bars;
|
||||
char *unit_name[] = { N_("bytes"), N_("Kb"), N_("Mb"), N_("Gb") };
|
||||
@@ -594,28 +594,38 @@ gui_draw_buffer_chat (t_gui_buffer *buffer, int erase)
|
||||
if (buffer->dcc)
|
||||
{
|
||||
i = 0;
|
||||
for (ptr_dcc = dcc_list; ptr_dcc; ptr_dcc = ptr_dcc->next_dcc)
|
||||
dcc_first = (ptr_win->dcc_first) ? (t_dcc *) ptr_win->dcc_first : dcc_list;
|
||||
dcc_selected = (ptr_win->dcc_selected) ? (t_dcc *) ptr_win->dcc_selected : dcc_list;
|
||||
for (ptr_dcc = dcc_first; ptr_dcc; ptr_dcc = ptr_dcc->next_dcc)
|
||||
{
|
||||
if (i >= ptr_win->win_chat_height - 1)
|
||||
break;
|
||||
if ((ptr_dcc->type == DCC_FILE_RECV)
|
||||
|| (ptr_dcc->type == DCC_FILE_SEND))
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_chat, COLOR_WIN_CHAT);
|
||||
mvwprintw (ptr_win->win_chat, i, 0, " %-16s %s",
|
||||
gui_window_set_color (ptr_win->win_chat,
|
||||
(ptr_dcc == dcc_selected) ?
|
||||
COLOR_DCC_SELECTED : COLOR_WIN_CHAT);
|
||||
mvwprintw (ptr_win->win_chat, i, 0, "%s %-16s %s",
|
||||
(ptr_dcc == dcc_selected) ? ">>" : " ",
|
||||
ptr_dcc->nick, ptr_dcc->filename);
|
||||
if (ptr_dcc->filename_suffix > 0)
|
||||
wprintw (ptr_win->win_chat, " (.%d)",
|
||||
ptr_dcc->filename_suffix);
|
||||
gui_window_set_color (ptr_win->win_chat, COLOR_WIN_CHAT);
|
||||
mvwprintw (ptr_win->win_chat, i + 1, 0, " %s ",
|
||||
gui_window_set_color (ptr_win->win_chat,
|
||||
(ptr_dcc == dcc_selected) ?
|
||||
COLOR_DCC_SELECTED : COLOR_WIN_CHAT);
|
||||
mvwprintw (ptr_win->win_chat, i + 1, 0, "%s %s ",
|
||||
(ptr_dcc == dcc_selected) ? ">>" : " ",
|
||||
(ptr_dcc->type == DCC_FILE_RECV) ?
|
||||
"--->" : "<---");
|
||||
gui_window_set_color (ptr_win->win_chat,
|
||||
COLOR_DCC_WAITING + ptr_dcc->status);
|
||||
wprintw (ptr_win->win_chat, "%-10s",
|
||||
dcc_status_string[ptr_dcc->status]);
|
||||
gui_window_set_color (ptr_win->win_chat, COLOR_WIN_CHAT);
|
||||
gui_window_set_color (ptr_win->win_chat,
|
||||
(ptr_dcc == dcc_selected) ?
|
||||
COLOR_DCC_SELECTED : COLOR_WIN_CHAT);
|
||||
wprintw (ptr_win->win_chat, " [",
|
||||
dcc_status_string[ptr_dcc->status]);
|
||||
if (ptr_dcc->size == 0)
|
||||
@@ -647,10 +657,10 @@ gui_draw_buffer_chat (t_gui_buffer *buffer, int erase)
|
||||
unit_name[num_unit],
|
||||
((long double) ptr_dcc->size) / ((long double)(unit_divide[num_unit])),
|
||||
unit_name[num_unit]);
|
||||
ptr_win->dcc_last_displayed = ptr_dcc;
|
||||
i += 2;
|
||||
}
|
||||
}
|
||||
move (ptr_win->win_y + 1, ptr_win->win_x);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1195,6 +1205,9 @@ gui_draw_buffer_input (t_gui_buffer *buffer, int erase)
|
||||
snprintf (format, 32, "%%-%ds", input_width);
|
||||
mvwprintw (ptr_win->win_input, 0, 0, format, "");
|
||||
wclrtoeol (ptr_win->win_input);
|
||||
if (ptr_win == gui_current_window)
|
||||
move (ptr_win->win_y + ptr_win->win_height - 1,
|
||||
ptr_win->win_x);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1519,6 +1532,8 @@ gui_curses_resize_handler ()
|
||||
/* TODO: manage when some windows are outside new term size */
|
||||
for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window)
|
||||
{
|
||||
ptr_win->dcc_first = NULL;
|
||||
ptr_win->dcc_selected = NULL;
|
||||
if (ptr_win->win_x + ptr_win->win_width == old_width)
|
||||
ptr_win->win_width = new_width - ptr_win->win_x;
|
||||
if (ptr_win->win_y + ptr_win->win_height == old_height)
|
||||
@@ -1720,6 +1735,8 @@ gui_init_colors ()
|
||||
(color & A_BOLD) ? A_BOLD : 0;
|
||||
}
|
||||
|
||||
init_pair (COLOR_DCC_SELECTED,
|
||||
cfg_col_dcc_selected & A_CHARTEXT, cfg_col_chat_bg);
|
||||
init_pair (COLOR_DCC_WAITING,
|
||||
cfg_col_dcc_waiting & A_CHARTEXT, cfg_col_chat_bg);
|
||||
init_pair (COLOR_DCC_CONNECTING,
|
||||
@@ -1763,6 +1780,7 @@ gui_init_colors ()
|
||||
color_attr[COLOR_WIN_NICK_SEP - 1] = 0;
|
||||
color_attr[COLOR_WIN_NICK_SELF - 1] = cfg_col_nick_self & A_BOLD;
|
||||
color_attr[COLOR_WIN_NICK_PRIVATE - 1] = cfg_col_nick_private & A_BOLD;
|
||||
color_attr[COLOR_DCC_SELECTED - 1] = cfg_col_dcc_selected & A_BOLD;
|
||||
color_attr[COLOR_DCC_WAITING - 1] = cfg_col_dcc_waiting & A_BOLD;
|
||||
color_attr[COLOR_DCC_CONNECTING - 1] = cfg_col_dcc_connecting & A_BOLD;
|
||||
color_attr[COLOR_DCC_ACTIVE - 1] = cfg_col_dcc_active & A_BOLD;
|
||||
|
||||
@@ -90,7 +90,24 @@ gui_read_keyb ()
|
||||
break;
|
||||
/* cursor up */
|
||||
case KEY_UP:
|
||||
if (!gui_current_window->buffer->dcc)
|
||||
if (gui_current_window->buffer->dcc)
|
||||
{
|
||||
if (dcc_list)
|
||||
{
|
||||
if (gui_current_window->dcc_selected
|
||||
&& ((t_dcc *)(gui_current_window->dcc_selected))->prev_dcc)
|
||||
{
|
||||
if (gui_current_window->dcc_selected ==
|
||||
gui_current_window->dcc_first)
|
||||
gui_current_window->dcc_first =
|
||||
((t_dcc *)(gui_current_window->dcc_first))->prev_dcc;
|
||||
gui_current_window->dcc_selected =
|
||||
((t_dcc *)(gui_current_window->dcc_selected))->prev_dcc;
|
||||
gui_draw_buffer_chat (gui_current_window->buffer, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gui_current_window->buffer->ptr_history)
|
||||
{
|
||||
@@ -118,7 +135,35 @@ gui_read_keyb ()
|
||||
break;
|
||||
/* cursor down */
|
||||
case KEY_DOWN:
|
||||
if (!gui_current_window->buffer->dcc)
|
||||
if (gui_current_window->buffer->dcc)
|
||||
{
|
||||
if (dcc_list)
|
||||
{
|
||||
if (!gui_current_window->dcc_selected
|
||||
|| ((t_dcc *)(gui_current_window->dcc_selected))->next_dcc)
|
||||
{
|
||||
if (gui_current_window->dcc_last_displayed
|
||||
&& (gui_current_window->dcc_selected ==
|
||||
gui_current_window->dcc_last_displayed))
|
||||
{
|
||||
if (gui_current_window->dcc_first)
|
||||
gui_current_window->dcc_first =
|
||||
((t_dcc *)(gui_current_window->dcc_first))->next_dcc;
|
||||
else
|
||||
gui_current_window->dcc_first =
|
||||
dcc_list->next_dcc;
|
||||
}
|
||||
if (gui_current_window->dcc_selected)
|
||||
gui_current_window->dcc_selected =
|
||||
((t_dcc *)(gui_current_window->dcc_selected))->next_dcc;
|
||||
else
|
||||
gui_current_window->dcc_selected =
|
||||
dcc_list->next_dcc;
|
||||
gui_draw_buffer_chat (gui_current_window->buffer, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gui_current_window->buffer->ptr_history)
|
||||
{
|
||||
|
||||
@@ -99,6 +99,10 @@ gui_window_new (int x, int y, int width, int height)
|
||||
new_window->textview_nicklist = NULL;
|
||||
new_window->textbuffer_nicklist = NULL;
|
||||
|
||||
new_window->dcc_first = NULL;
|
||||
new_window->dcc_selected = NULL;
|
||||
new_window->dcc_last_displayed = NULL;
|
||||
|
||||
new_window->buffer = NULL;
|
||||
|
||||
new_window->first_line_displayed = 0;
|
||||
|
||||
+15
-7
@@ -26,7 +26,7 @@
|
||||
|
||||
#define INPUT_BUFFER_BLOCK_SIZE 256
|
||||
|
||||
#define NUM_COLORS 45
|
||||
#define NUM_COLORS 46
|
||||
#define COLOR_WIN_TITLE 1
|
||||
#define COLOR_WIN_CHAT 2
|
||||
#define COLOR_WIN_CHAT_TIME 3
|
||||
@@ -59,12 +59,13 @@
|
||||
#define COLOR_WIN_NICK_FIRST 30
|
||||
#define COLOR_WIN_NICK_LAST 39
|
||||
#define COLOR_WIN_NICK_NUMBER (COLOR_WIN_NICK_LAST - COLOR_WIN_NICK_FIRST + 1)
|
||||
#define COLOR_DCC_WAITING 40
|
||||
#define COLOR_DCC_CONNECTING 41
|
||||
#define COLOR_DCC_ACTIVE 42
|
||||
#define COLOR_DCC_DONE 43
|
||||
#define COLOR_DCC_FAILED 44
|
||||
#define COLOR_DCC_ABORTED 45
|
||||
#define COLOR_DCC_SELECTED 40
|
||||
#define COLOR_DCC_WAITING 41
|
||||
#define COLOR_DCC_CONNECTING 42
|
||||
#define COLOR_DCC_ACTIVE 43
|
||||
#define COLOR_DCC_DONE 44
|
||||
#define COLOR_DCC_FAILED 45
|
||||
#define COLOR_DCC_ABORTED 46
|
||||
|
||||
#define SERVER(buffer) ((t_irc_server *)(buffer->server))
|
||||
#define CHANNEL(buffer) ((t_irc_channel *)(buffer->channel))
|
||||
@@ -142,6 +143,8 @@ struct t_gui_buffer
|
||||
/* server/channel */
|
||||
void *server; /* buffer's server */
|
||||
void *channel; /* buffer's channel */
|
||||
|
||||
/* dcc buffer */
|
||||
int dcc; /* buffer is dcc status */
|
||||
|
||||
/* chat content (lines, line is composed by many messages) */
|
||||
@@ -210,6 +213,11 @@ struct t_gui_window
|
||||
/* windows for Qt GUI */
|
||||
/* TODO: declare Qt window */
|
||||
|
||||
/* DCC */
|
||||
void *dcc_first; /* first dcc displayed */
|
||||
void *dcc_selected; /* selected dcc */
|
||||
void *dcc_last_displayed; /* last dcc displayed (for scroll) */
|
||||
|
||||
t_gui_buffer *buffer; /* buffer currently displayed in window */
|
||||
|
||||
int first_line_displayed; /* = 1 if first line is displayed */
|
||||
|
||||
+87
-23
@@ -45,26 +45,41 @@ char *dcc_status_string[] = /* strings for DCC status */
|
||||
N_("Aborted") };
|
||||
|
||||
|
||||
/*
|
||||
* dcc_redraw: redraw DCC buffer (and add to hotlist)
|
||||
*/
|
||||
|
||||
void
|
||||
dcc_redraw (int highlight)
|
||||
{
|
||||
gui_draw_buffer_chat (gui_get_dcc_buffer (), 0);
|
||||
if (highlight)
|
||||
{
|
||||
hotlist_add (1, gui_get_dcc_buffer ());
|
||||
gui_draw_buffer_status (gui_current_window->buffer, 0);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* dcc_connect: connect to another host
|
||||
*/
|
||||
|
||||
void
|
||||
dcc_connect (t_dcc *dcc)
|
||||
dcc_connect (t_dcc *ptr_dcc)
|
||||
{
|
||||
struct sockaddr_in addr;
|
||||
|
||||
dcc->status = DCC_CONNECTING;
|
||||
ptr_dcc->status = DCC_CONNECTING;
|
||||
|
||||
dcc->sock = socket (AF_INET, SOCK_STREAM, 0);
|
||||
if (dcc->sock == -1)
|
||||
ptr_dcc->sock = socket (AF_INET, SOCK_STREAM, 0);
|
||||
if (ptr_dcc->sock == -1)
|
||||
return;
|
||||
memset (&addr, 0, sizeof (addr));
|
||||
addr.sin_port = htons (dcc->port);
|
||||
addr.sin_port = htons (ptr_dcc->port);
|
||||
addr.sin_family = AF_INET;
|
||||
addr.sin_addr.s_addr = htonl (dcc->addr);
|
||||
fcntl (dcc->sock, F_SETFL, O_NONBLOCK);
|
||||
connect (dcc->sock, (struct sockaddr *) &addr, sizeof (addr));
|
||||
addr.sin_addr.s_addr = htonl (ptr_dcc->addr);
|
||||
fcntl (ptr_dcc->sock, F_SETFL, O_NONBLOCK);
|
||||
connect (ptr_dcc->sock, (struct sockaddr *) &addr, sizeof (addr));
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -134,6 +149,7 @@ dcc_accept (t_dcc *ptr_dcc)
|
||||
if (!ptr_dcc->local_filename)
|
||||
{
|
||||
ptr_dcc->status = DCC_FAILED;
|
||||
dcc_redraw (1);
|
||||
return;
|
||||
}
|
||||
if (cfg_dcc_download_path[0] == '~')
|
||||
@@ -156,6 +172,7 @@ dcc_accept (t_dcc *ptr_dcc)
|
||||
if (!cfg_dcc_auto_rename)
|
||||
{
|
||||
ptr_dcc->status = DCC_FAILED;
|
||||
dcc_redraw (1);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -163,6 +180,7 @@ dcc_accept (t_dcc *ptr_dcc)
|
||||
if (!filename2)
|
||||
{
|
||||
ptr_dcc->status = DCC_FAILED;
|
||||
dcc_redraw (1);
|
||||
return;
|
||||
}
|
||||
ptr_dcc->filename_suffix = 0;
|
||||
@@ -183,6 +201,7 @@ dcc_accept (t_dcc *ptr_dcc)
|
||||
O_CREAT | O_TRUNC | O_WRONLY,
|
||||
0644);
|
||||
}
|
||||
dcc_redraw (1);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -194,7 +213,6 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic
|
||||
unsigned int size)
|
||||
{
|
||||
t_dcc *new_dcc;
|
||||
t_gui_buffer *dcc_buffer;
|
||||
|
||||
if ((new_dcc = (t_dcc *) malloc (sizeof (t_dcc))) == NULL)
|
||||
{
|
||||
@@ -214,26 +232,52 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic
|
||||
new_dcc->filename_suffix = -1;
|
||||
new_dcc->size = size;
|
||||
new_dcc->pos = 0;
|
||||
new_dcc->prev_dcc = NULL;
|
||||
new_dcc->next_dcc = dcc_list;
|
||||
if (dcc_list)
|
||||
dcc_list->prev_dcc = new_dcc;
|
||||
dcc_list = new_dcc;
|
||||
|
||||
gui_printf (NULL, "Incoming DCC file: from %s, address:%d.%d.%d.%d, "
|
||||
"port=%d, name=%s, size=%lu bytes\n",
|
||||
nick,
|
||||
addr >> 24, (addr >> 16) & 0xff, (addr >> 8) & 0xff, addr & 0xff,
|
||||
port, filename, size);
|
||||
gui_current_window->dcc_first = NULL;
|
||||
gui_current_window->dcc_selected = NULL;
|
||||
|
||||
dcc_buffer = gui_get_dcc_buffer ();
|
||||
if (type == DCC_FILE_RECV)
|
||||
{
|
||||
irc_display_prefix (server->buffer, PREFIX_INFO);
|
||||
gui_printf (server->buffer, _("Incoming DCC file from "));
|
||||
gui_printf_color (server->buffer,
|
||||
COLOR_WIN_CHAT_NICK,
|
||||
"%s",
|
||||
nick);
|
||||
gui_printf_color (server->buffer,
|
||||
COLOR_WIN_CHAT_DARK,
|
||||
" (");
|
||||
gui_printf_color (server->buffer,
|
||||
COLOR_WIN_CHAT_HOST,
|
||||
"%d.%d.%d.%d",
|
||||
addr >> 24, (addr >> 16) & 0xff, (addr >> 8) & 0xff, addr & 0xff);
|
||||
gui_printf_color (server->buffer,
|
||||
COLOR_WIN_CHAT_DARK,
|
||||
")");
|
||||
gui_printf (server->buffer, ": ");
|
||||
gui_printf_color (server->buffer,
|
||||
COLOR_WIN_CHAT_CHANNEL,
|
||||
"%s",
|
||||
filename);
|
||||
gui_printf (server->buffer, ", ");
|
||||
gui_printf_color (server->buffer,
|
||||
COLOR_WIN_CHAT_CHANNEL,
|
||||
"%lu",
|
||||
size);
|
||||
gui_printf (server->buffer, _(" bytes\n"));
|
||||
}
|
||||
|
||||
if ( ( (type == DCC_CHAT_RECV) && (cfg_dcc_auto_accept_chats) )
|
||||
|| ( (type == DCC_FILE_RECV) && (cfg_dcc_auto_accept_files) ) )
|
||||
{
|
||||
dcc_accept (new_dcc);
|
||||
hotlist_add (1, dcc_buffer);
|
||||
}
|
||||
else
|
||||
hotlist_add (2, dcc_buffer);
|
||||
gui_draw_buffer_status (dcc_buffer, 0);
|
||||
hotlist_add (2, gui_get_dcc_buffer ());
|
||||
gui_draw_buffer_status (gui_current_window->buffer, 0);
|
||||
|
||||
return new_dcc;
|
||||
}
|
||||
@@ -260,12 +304,16 @@ dcc_handle ()
|
||||
if (num != -1)
|
||||
{
|
||||
if (num == 0)
|
||||
{
|
||||
dcc_close (ptr_dcc, DCC_FAILED);
|
||||
dcc_redraw (1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (write (ptr_dcc->file, buffer, num) == -1)
|
||||
{
|
||||
dcc_close (ptr_dcc, DCC_FAILED);
|
||||
dcc_redraw (1);
|
||||
return;
|
||||
}
|
||||
ptr_dcc->pos += (unsigned long) num;
|
||||
@@ -273,11 +321,27 @@ dcc_handle ()
|
||||
send (ptr_dcc->sock, (char *) &pos, 4, 0);
|
||||
if (ptr_dcc->pos >= ptr_dcc->size)
|
||||
{
|
||||
gui_printf (NULL,
|
||||
_("DCC: file \"%s\" received from \"%s\": ok!\n"),
|
||||
ptr_dcc->filename, ptr_dcc->nick);
|
||||
irc_display_prefix (ptr_dcc->server->buffer, PREFIX_INFO);
|
||||
gui_printf (ptr_dcc->server->buffer, _("DCC: file "));
|
||||
gui_printf_color (ptr_dcc->server->buffer,
|
||||
COLOR_WIN_CHAT_CHANNEL,
|
||||
"%s",
|
||||
ptr_dcc->filename);
|
||||
gui_printf (ptr_dcc->server->buffer, _(" (local filename: "));
|
||||
gui_printf_color (ptr_dcc->server->buffer,
|
||||
COLOR_WIN_CHAT_CHANNEL,
|
||||
"%s",
|
||||
ptr_dcc->local_filename);
|
||||
gui_printf (ptr_dcc->server->buffer, _(") from "));
|
||||
gui_printf_color (ptr_dcc->server->buffer,
|
||||
COLOR_WIN_CHAT_NICK,
|
||||
"%s",
|
||||
ptr_dcc->nick);
|
||||
gui_printf (ptr_dcc->server->buffer, _(": ok!\n"));
|
||||
dcc_close (ptr_dcc, DCC_DONE);
|
||||
dcc_redraw (1);
|
||||
}
|
||||
dcc_redraw (0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,11 +186,12 @@ struct t_dcc
|
||||
char *nick; /* remote nick */
|
||||
int sock; /* socket for connection */
|
||||
int file; /* local file (for reading or writing) */
|
||||
char *filename; /* filename */
|
||||
char *local_filename; /* local filename */
|
||||
char *filename; /* filename (given by sender) */
|
||||
char *local_filename; /* local filename (with path) */
|
||||
int filename_suffix; /* suffix (.1 for ex) if renaming file */
|
||||
unsigned long size; /* file size */
|
||||
unsigned long pos; /* number of bytes received/sent */
|
||||
t_dcc *prev_dcc; /* link to previous dcc file/chat */
|
||||
t_dcc *next_dcc; /* link to next dcc file/chat */
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user