1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-28 22:06:38 +02:00

Version 0.0.7-pre2 - window management

This commit is contained in:
Sebastien Helleu
2004-06-22 22:21:22 +00:00
parent 095f296529
commit 66ff97166f
42 changed files with 3214 additions and 2998 deletions
+2 -1
View File
@@ -1,10 +1,11 @@
WeeChat - Wee Enhanced Environment for Chat
===========================================
ChangeLog - 2004-06-17
ChangeLog - 2004-06-23
Version 0.0.7 (under dev!):
* windows management (split terminal horizontally/vertically)
* fixed display bug when nicklist is displayed at bottom of screen
* added history limit (text buffer & commands)
+2 -1
View File
@@ -1,7 +1,7 @@
WeeChat - Wee Enhanced Environment for Chat
===========================================
TODO - 2004-06-13
TODO - 2004-06-23
Legend:
# done
@@ -21,6 +21,7 @@ v0.0.7:
+ "/dcc" command (for chat and sending/receiving files)
* Interface:
+ split terminal in multiple windows (horizontally/vertically)
+ internationalization (traduce WeeChat in many languages)
* Configuration:
+2 -2
View File
@@ -19,10 +19,10 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.56)
AC_INIT(WeeChat, 0.0.7-pre1, flashcode@flashtux.org)
AC_INIT(WeeChat, 0.0.7-pre2, flashcode@flashtux.org)
AC_CONFIG_SRCDIR([src/common/weechat.c])
AM_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE([weechat], [0.0.7-pre1])
AM_INIT_AUTOMAKE([weechat], [0.0.7-pre2])
# Checks for programs.
AC_PROG_CC
+1 -1
View File
@@ -5,7 +5,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.0.7-pre1\n"
"Project-Id-Version: WeeChat 0.0.7-pre2\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2004-06-05 10:52+0200\n"
"PO-Revision-Date: 2004-06-05 10:52+0200\n"
+60 -19
View File
@@ -88,6 +88,14 @@ t_weechat_command weechat_commands[] =
{ "unalias", N_("remove an alias"),
N_("alias_name"), N_("alias_name: name of alias to remove"),
1, 1, NULL, weechat_cmd_unalias },
{ "window", N_("manage windows"),
N_("[action]"),
N_("action: action to do:\n"
" close close current window\n"
" list list opened windows (no parameter implies this list)\n"
" splith split current window horizontally\n"
" splitv split current window vertically"),
0, MAX_ARGS, weechat_cmd_window, NULL },
{ NULL, NULL, NULL, NULL, 0, 0, NULL, NULL }
};
@@ -707,46 +715,46 @@ user_command (t_irc_server *server, char *command)
{
if ((command[0] == '/') && (command[1] == '/'))
command++;
if (server && (!WIN_IS_SERVER(gui_current_window)))
if (server && (!VIEW_IS_SERVER(gui_current_view)))
{
server_sendf (server, "PRIVMSG %s :%s\r\n",
CHANNEL(gui_current_window)->name,
CHANNEL(gui_current_view)->name,
command);
if (WIN_IS_PRIVATE(gui_current_window))
if (VIEW_IS_PRIVATE(gui_current_view))
{
gui_printf_color_type (CHANNEL(gui_current_window)->window,
gui_printf_color_type (CHANNEL(gui_current_view)->view,
MSG_TYPE_NICK,
COLOR_WIN_CHAT_DARK, "<");
gui_printf_color_type (CHANNEL(gui_current_window)->window,
gui_printf_color_type (CHANNEL(gui_current_view)->view,
MSG_TYPE_NICK,
COLOR_WIN_NICK_SELF,
"%s", server->nick);
gui_printf_color_type (CHANNEL(gui_current_window)->window,
gui_printf_color_type (CHANNEL(gui_current_view)->view,
MSG_TYPE_NICK,
COLOR_WIN_CHAT_DARK, "> ");
gui_printf_color_type (CHANNEL(gui_current_window)->window,
gui_printf_color_type (CHANNEL(gui_current_view)->view,
MSG_TYPE_MSG,
COLOR_WIN_CHAT, "%s\n", command);
}
else
{
ptr_nick = nick_search (CHANNEL(gui_current_window), server->nick);
ptr_nick = nick_search (CHANNEL(gui_current_view), server->nick);
if (ptr_nick)
{
irc_display_nick (CHANNEL(gui_current_window)->window, ptr_nick,
irc_display_nick (CHANNEL(gui_current_view)->view, ptr_nick,
MSG_TYPE_NICK, 1, 1, 0);
gui_printf_color (CHANNEL(gui_current_window)->window,
gui_printf_color (CHANNEL(gui_current_view)->view,
COLOR_WIN_CHAT, "%s\n", command);
}
else
gui_printf (server->window,
gui_printf (server->view,
_("%s cannot find nick for sending message\n"),
WEECHAT_ERROR);
}
}
else
gui_printf ((server) ? server->window : NULL,
gui_printf ((server) ? server->view : NULL,
_("This window is not a channel!\n"));
}
}
@@ -820,7 +828,7 @@ weechat_cmd_clear (int argc, char **argv)
if (argc == 1)
{
if (strcmp (argv[0], "-all") == 0)
gui_window_clear_all ();
gui_view_clear_all ();
else
{
gui_printf (NULL,
@@ -830,7 +838,7 @@ weechat_cmd_clear (int argc, char **argv)
}
}
else
gui_window_clear (gui_current_window);
gui_view_clear (gui_current_view);
return 0;
}
@@ -857,9 +865,9 @@ weechat_cmd_connect (int argc, char **argv)
WEECHAT_ERROR, argv[0]);
return -1;
}
if (!ptr_server->window)
if (!ptr_server->view)
{
if (!gui_window_new (ptr_server, NULL, 1))
if (!gui_view_new (gui_current_view->window, ptr_server, NULL, 1))
return -1;
}
if (server_connect (ptr_server))
@@ -906,7 +914,7 @@ weechat_cmd_disconnect (int argc, char **argv)
return -1;
}
server_disconnect (ptr_server);
gui_redraw_window_status (gui_current_window);
gui_redraw_view_status (gui_current_view);
}
else
{
@@ -1300,7 +1308,7 @@ weechat_cmd_server (int argc, char **argv)
gui_printf_color (NULL, COLOR_WIN_CHAT, _("has been deleted\n"));
server_free (server_found);
gui_redraw_window (gui_current_window);
gui_redraw_view (gui_current_view);
return 0;
}
@@ -1441,7 +1449,7 @@ weechat_cmd_server (int argc, char **argv)
if (new_server->autoconnect)
{
(void) gui_window_new (new_server, NULL, 1);
(void) gui_view_new (gui_current_view->window, new_server, NULL, 1);
if (server_connect (new_server))
irc_login (new_server);
}
@@ -1619,3 +1627,36 @@ weechat_cmd_unalias (char *arguments)
arguments);
return 0;
}
/*
* weechat_cmd_window: manage windows
*/
int
weechat_cmd_window (int argc, char **argv)
{
int i;
t_irc_server server, *ptr_server, *server_found, *new_server;
if ((argc == 0) || ((argc == 1) && (strcasecmp (argv[0], "list") == 0)))
{
/* list opened windows */
gui_printf (NULL, "window list -- NOT DEVELOPED!\n");
}
else
{
if (strcasecmp (argv[0], "splith") == 0)
{
/* split window horizontally */
gui_printf (NULL, "window splith -- NOT DEVELOPED!\n");
}
else if (strcasecmp (argv[0], "splitv") == 0)
{
/* split window vertically */
gui_printf (NULL, "window splitv -- NOT DEVELOPED!\n");
}
else
return -1;
}
return 0;
}
+1
View File
@@ -76,5 +76,6 @@ extern int weechat_cmd_save (int, char **);
extern int weechat_cmd_server (int, char **);
extern int weechat_cmd_set (char *);
extern int weechat_cmd_unalias (char *);
extern int weechat_cmd_window (int, char **);
#endif /* command.h */
+15 -15
View File
@@ -44,7 +44,7 @@ int num_history_general = 0;
*/
void
history_add (void *window, char *string)
history_add (void *view, char *string)
{
t_history *new_history, *ptr_history;
@@ -83,26 +83,26 @@ history_add (void *window, char *string)
{
new_history->text = strdup (string);
if (((t_gui_window *)(window))->history)
((t_gui_window *)(window))->history->prev_history = new_history;
if (((t_gui_view *)(view))->history)
((t_gui_view *)(view))->history->prev_history = new_history;
else
((t_gui_window *)(window))->last_history = new_history;
new_history->next_history = ((t_gui_window *)(window))->history;
((t_gui_view *)(view))->last_history = new_history;
new_history->next_history = ((t_gui_view *)(view))->history;
new_history->prev_history = NULL;
((t_gui_window *)window)->history = new_history;
((t_gui_window *)(window))->num_history++;
((t_gui_view *)view)->history = new_history;
((t_gui_view *)(view))->num_history++;
/* remove one command if necessary */
if ((cfg_history_max_commands > 0)
&& (((t_gui_window *)(window))->num_history > cfg_history_max_commands))
&& (((t_gui_view *)(view))->num_history > cfg_history_max_commands))
{
ptr_history = ((t_gui_window *)window)->last_history->prev_history;
((t_gui_window *)window)->last_history->prev_history->next_history = NULL;
if (((t_gui_window *)window)->last_history->text)
free (((t_gui_window *)window)->last_history->text);
free (((t_gui_window *)window)->last_history);
((t_gui_window *)window)->last_history = ptr_history;
((t_gui_window *)(window))->num_history++;
ptr_history = ((t_gui_view *)view)->last_history->prev_history;
((t_gui_view *)view)->last_history->prev_history->next_history = NULL;
if (((t_gui_view *)view)->last_history->text)
free (((t_gui_view *)view)->last_history->text);
free (((t_gui_view *)view)->last_history);
((t_gui_view *)view)->last_history = ptr_history;
((t_gui_view *)(view))->num_history++;
}
}
}
+16 -16
View File
@@ -109,33 +109,33 @@ t_config_option weechat_options_look[] =
{ "look_nicklist", N_("display nicklist window"),
N_("display nicklist window (for channel windows)"),
OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE,
NULL, NULL, &cfg_look_nicklist, NULL, config_change_windows },
NULL, NULL, &cfg_look_nicklist, NULL, config_change_views },
{ "look_nicklist_position", N_("nicklist position"),
N_("nicklist position (top, left, right (default), bottom)"),
OPTION_TYPE_INT_WITH_STRING, 0, 0, 0,
"right", cfg_look_nicklist_position_values, &cfg_look_nicklist_position, NULL, config_change_windows },
"right", cfg_look_nicklist_position_values, &cfg_look_nicklist_position, NULL, config_change_views },
{ "look_nicklist_min_size", N_("min size for nicklist"),
N_("min size for nicklist (width or height, depending on look_nicklist_position "
"(0 = no min size))"),
OPTION_TYPE_INT, 0, 100, 0,
NULL, NULL, &cfg_look_nicklist_min_size, NULL, config_change_windows },
NULL, NULL, &cfg_look_nicklist_min_size, NULL, config_change_views },
{ "look_nicklist_max_size", N_("max size for nicklist"),
N_("max size for nicklist (width or height, depending on look_nicklist_position "
"(0 = no max size; if min == max and > 0, then size is fixed))"),
OPTION_TYPE_INT, 0, 100, 0,
NULL, NULL, &cfg_look_nicklist_max_size, NULL, config_change_windows },
NULL, NULL, &cfg_look_nicklist_max_size, NULL, config_change_views },
{ "look_no_nickname", N_("text to display instead of nick when not connected"),
N_("text to display instead of nick when not connected"),
OPTION_TYPE_STRING, 0, 0, 0,
"-cmd-", NULL, NULL, &cfg_look_no_nickname, config_change_window_content },
"-cmd-", NULL, NULL, &cfg_look_no_nickname, config_change_view_content },
{ "look_nickmode", N_("display nick mode ((half)op/voice) before each nick"),
N_("display nick mode ((half)op/voice) before each nick"),
OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE,
NULL, NULL, &cfg_look_nickmode, NULL, config_change_windows },
NULL, NULL, &cfg_look_nickmode, NULL, config_change_views },
{ "look_nickmode_empty", N_("display space if nick mode is not (half)op/voice"),
N_("display space if nick mode is not (half)op/voice"),
OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_FALSE,
NULL, NULL, &cfg_look_nickmode_empty, NULL, config_change_windows },
NULL, NULL, &cfg_look_nickmode_empty, NULL, config_change_views },
{ "look_nick_completor", N_("the string inserted after nick completion"),
N_("the string inserted after nick completion"),
OPTION_TYPE_STRING, 0, 0, 0,
@@ -143,11 +143,11 @@ t_config_option weechat_options_look[] =
{ "look_infobar", N_("enable info bar"),
N_("enable info bar"),
OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE,
NULL, NULL, &cfg_look_infobar, NULL, config_change_windows },
NULL, NULL, &cfg_look_infobar, NULL, config_change_views },
{ "look_infobar_timestamp", N_("timestamp for time in infobar"),
N_("timestamp for time in infobar"),
OPTION_TYPE_STRING, 0, 0, 0,
"%B, %A %d %G - %H:%M", NULL, NULL, &cfg_look_infobar_timestamp, config_change_window_content },
"%B, %A %d %G - %H:%M", NULL, NULL, &cfg_look_infobar_timestamp, config_change_view_content },
{ "look_infobar_delay_highlight", N_("delay (in seconds) for highlight messages in infobar"),
N_("delay (in seconds) for highlight messages in infobar "
"(0 = disable highlight notifications in infobar)"),
@@ -615,24 +615,24 @@ config_change_title ()
}
/*
* config_change_windows: called when windows change (for example nicklist)
* config_change_views: called when views change (for example nicklist)
*/
void
config_change_windows ()
config_change_views ()
{
gui_switch_to_window (gui_current_window);
gui_redraw_window (gui_current_window);
gui_switch_to_view (gui_current_view);
gui_redraw_view (gui_current_view);
}
/*
* config_change_window_content: called when content of a window changes
* config_change_view_content: called when content of a view changes
*/
void
config_change_window_content ()
config_change_view_content ()
{
gui_redraw_window (gui_current_window);
gui_redraw_view (gui_current_view);
}
/*
+2 -2
View File
@@ -158,8 +158,8 @@ extern t_config_option * weechat_options [CONFIG_NUMBER_SECTIONS];
extern char *config_get_section ();
extern void config_change_noop ();
extern void config_change_title ();
extern void config_change_windows ();
extern void config_change_window_content ();
extern void config_change_views ();
extern void config_change_view_content ();
extern void config_change_color ();
extern int config_option_set_value (t_config_option *, char *);
extern t_config_option *config_option_search (char *);
File diff suppressed because it is too large Load Diff
+145 -145
View File
@@ -49,7 +49,7 @@ void
gui_read_keyb ()
{
int key, i;
t_gui_window *ptr_window;
t_gui_view *ptr_view;
char new_char[2];
key = getch ();
@@ -59,16 +59,16 @@ gui_read_keyb ()
{
/* resize event */
case KEY_RESIZE:
gui_calculate_pos_size (gui_current_window);
gui_redraw_window (gui_current_window);
gui_calculate_pos_size (gui_current_view);
gui_redraw_view (gui_current_view);
break;
/* previous window */
/* previous view */
case KEY_F(6):
gui_switch_to_previous_window ();
gui_switch_to_previous_view ();
break;
/* next window */
/* next view */
case KEY_F(7):
gui_switch_to_next_window ();
gui_switch_to_next_view ();
break;
/* remove last infobar message */
case KEY_F(10):
@@ -76,82 +76,82 @@ gui_read_keyb ()
break;
/* cursor up */
case KEY_UP:
if (gui_current_window->ptr_history)
if (gui_current_view->ptr_history)
{
gui_current_window->ptr_history =
gui_current_window->ptr_history->next_history;
if (!gui_current_window->ptr_history)
gui_current_window->ptr_history =
gui_current_window->history;
gui_current_view->ptr_history =
gui_current_view->ptr_history->next_history;
if (!gui_current_view->ptr_history)
gui_current_view->ptr_history =
gui_current_view->history;
}
else
gui_current_window->ptr_history =
gui_current_window->history;
if (gui_current_window->ptr_history)
gui_current_view->ptr_history =
gui_current_view->history;
if (gui_current_view->ptr_history)
{
gui_current_window->input_buffer_size =
strlen (gui_current_window->ptr_history->text);
gui_optimize_input_buffer_size (gui_current_window);
gui_current_window->input_buffer_pos =
gui_current_window->input_buffer_size;
strcpy (gui_current_window->input_buffer,
gui_current_window->ptr_history->text);
gui_draw_window_input (gui_current_window);
gui_current_view->input_buffer_size =
strlen (gui_current_view->ptr_history->text);
gui_optimize_input_buffer_size (gui_current_view);
gui_current_view->input_buffer_pos =
gui_current_view->input_buffer_size;
strcpy (gui_current_view->input_buffer,
gui_current_view->ptr_history->text);
gui_draw_view_input (gui_current_view);
}
break;
/* cursor down */
case KEY_DOWN:
if (gui_current_window->ptr_history)
if (gui_current_view->ptr_history)
{
gui_current_window->ptr_history =
gui_current_window->ptr_history->prev_history;
if (gui_current_window->ptr_history)
gui_current_window->input_buffer_size =
strlen (gui_current_window->ptr_history->text);
gui_current_view->ptr_history =
gui_current_view->ptr_history->prev_history;
if (gui_current_view->ptr_history)
gui_current_view->input_buffer_size =
strlen (gui_current_view->ptr_history->text);
else
gui_current_window->input_buffer_size = 0;
gui_optimize_input_buffer_size (gui_current_window);
gui_current_window->input_buffer_pos =
gui_current_window->input_buffer_size;
if (gui_current_window->ptr_history)
strcpy (gui_current_window->input_buffer,
gui_current_window->ptr_history->text);
gui_draw_window_input (gui_current_window);
gui_current_view->input_buffer_size = 0;
gui_optimize_input_buffer_size (gui_current_view);
gui_current_view->input_buffer_pos =
gui_current_view->input_buffer_size;
if (gui_current_view->ptr_history)
strcpy (gui_current_view->input_buffer,
gui_current_view->ptr_history->text);
gui_draw_view_input (gui_current_view);
}
break;
/* cursor left */
case KEY_LEFT:
if (gui_current_window->input_buffer_pos > 0)
if (gui_current_view->input_buffer_pos > 0)
{
gui_current_window->input_buffer_pos--;
gui_draw_window_input (gui_current_window);
gui_current_view->input_buffer_pos--;
gui_draw_view_input (gui_current_view);
}
break;
/* cursor right */
case KEY_RIGHT:
if (gui_current_window->input_buffer_pos <
gui_current_window->input_buffer_size)
if (gui_current_view->input_buffer_pos <
gui_current_view->input_buffer_size)
{
gui_current_window->input_buffer_pos++;
gui_draw_window_input (gui_current_window);
gui_current_view->input_buffer_pos++;
gui_draw_view_input (gui_current_view);
}
break;
/* home key */
case KEY_HOME:
if (gui_current_window->input_buffer_pos > 0)
if (gui_current_view->input_buffer_pos > 0)
{
gui_current_window->input_buffer_pos = 0;
gui_draw_window_input (gui_current_window);
gui_current_view->input_buffer_pos = 0;
gui_draw_view_input (gui_current_view);
}
break;
/* end key */
case KEY_END:
if (gui_current_window->input_buffer_pos <
gui_current_window->input_buffer_size)
if (gui_current_view->input_buffer_pos <
gui_current_view->input_buffer_size)
{
gui_current_window->input_buffer_pos =
gui_current_window->input_buffer_size;
gui_draw_window_input (gui_current_window);
gui_current_view->input_buffer_pos =
gui_current_view->input_buffer_size;
gui_draw_view_input (gui_current_view);
}
break;
/* page up */
@@ -165,21 +165,21 @@ gui_read_keyb ()
/* erase before cursor and move cursor to the left */
case 127:
case KEY_BACKSPACE:
if (gui_current_window->input_buffer_pos > 0)
if (gui_current_view->input_buffer_pos > 0)
{
i = gui_current_window->input_buffer_pos-1;
while (gui_current_window->input_buffer[i])
i = gui_current_view->input_buffer_pos-1;
while (gui_current_view->input_buffer[i])
{
gui_current_window->input_buffer[i] =
gui_current_window->input_buffer[i+1];
gui_current_view->input_buffer[i] =
gui_current_view->input_buffer[i+1];
i++;
}
gui_current_window->input_buffer_size--;
gui_current_window->input_buffer_pos--;
gui_current_window->input_buffer[gui_current_window->input_buffer_size] = '\0';
gui_draw_window_input (gui_current_window);
gui_optimize_input_buffer_size (gui_current_window);
gui_current_window->completion.position = -1;
gui_current_view->input_buffer_size--;
gui_current_view->input_buffer_pos--;
gui_current_view->input_buffer[gui_current_view->input_buffer_size] = '\0';
gui_draw_view_input (gui_current_view);
gui_optimize_input_buffer_size (gui_current_view);
gui_current_view->completion.position = -1;
}
break;
/* Control + Backspace */
@@ -188,93 +188,93 @@ gui_read_keyb ()
break;
/* erase char under cursor */
case KEY_DC:
if (gui_current_window->input_buffer_pos <
gui_current_window->input_buffer_size)
if (gui_current_view->input_buffer_pos <
gui_current_view->input_buffer_size)
{
i = gui_current_window->input_buffer_pos;
while (gui_current_window->input_buffer[i])
i = gui_current_view->input_buffer_pos;
while (gui_current_view->input_buffer[i])
{
gui_current_window->input_buffer[i] =
gui_current_window->input_buffer[i+1];
gui_current_view->input_buffer[i] =
gui_current_view->input_buffer[i+1];
i++;
}
gui_current_window->input_buffer_size--;
gui_current_window->input_buffer[gui_current_window->input_buffer_size] = '\0';
gui_draw_window_input (gui_current_window);
gui_optimize_input_buffer_size (gui_current_window);
gui_current_window->completion.position = -1;
gui_current_view->input_buffer_size--;
gui_current_view->input_buffer[gui_current_view->input_buffer_size] = '\0';
gui_draw_view_input (gui_current_view);
gui_optimize_input_buffer_size (gui_current_view);
gui_current_view->completion.position = -1;
}
break;
/* Tab : completion */
case '\t':
completion_search (&(gui_current_window->completion),
CHANNEL(gui_current_window),
gui_current_window->input_buffer,
gui_current_window->input_buffer_size,
gui_current_window->input_buffer_pos);
if (gui_current_window->completion.word_found)
completion_search (&(gui_current_view->completion),
CHANNEL(gui_current_view),
gui_current_view->input_buffer,
gui_current_view->input_buffer_size,
gui_current_view->input_buffer_pos);
if (gui_current_view->completion.word_found)
{
// replace word with new completed word into input buffer
gui_current_window->input_buffer_size +=
gui_current_window->completion.diff_size;
gui_optimize_input_buffer_size (gui_current_window);
gui_current_window->input_buffer[gui_current_window->input_buffer_size] = '\0';
gui_current_view->input_buffer_size +=
gui_current_view->completion.diff_size;
gui_optimize_input_buffer_size (gui_current_view);
gui_current_view->input_buffer[gui_current_view->input_buffer_size] = '\0';
if (gui_current_window->completion.diff_size > 0)
if (gui_current_view->completion.diff_size > 0)
{
for (i = gui_current_window->input_buffer_size - 1;
i >= gui_current_window->completion.position_replace +
(int)strlen (gui_current_window->completion.word_found); i--)
gui_current_window->input_buffer[i] =
gui_current_window->input_buffer[i -
gui_current_window->completion.diff_size];
for (i = gui_current_view->input_buffer_size - 1;
i >= gui_current_view->completion.position_replace +
(int)strlen (gui_current_view->completion.word_found); i--)
gui_current_view->input_buffer[i] =
gui_current_view->input_buffer[i -
gui_current_view->completion.diff_size];
}
else
{
for (i = gui_current_window->completion.position_replace +
strlen (gui_current_window->completion.word_found);
i < gui_current_window->input_buffer_size; i++)
gui_current_window->input_buffer[i] =
gui_current_window->input_buffer[i -
gui_current_window->completion.diff_size];
for (i = gui_current_view->completion.position_replace +
strlen (gui_current_view->completion.word_found);
i < gui_current_view->input_buffer_size; i++)
gui_current_view->input_buffer[i] =
gui_current_view->input_buffer[i -
gui_current_view->completion.diff_size];
}
strncpy (gui_current_window->input_buffer + gui_current_window->completion.position_replace,
gui_current_window->completion.word_found,
strlen (gui_current_window->completion.word_found));
gui_current_window->input_buffer_pos =
gui_current_window->completion.position_replace +
strlen (gui_current_window->completion.word_found);
gui_current_window->completion.position =
gui_current_window->input_buffer_pos;
strncpy (gui_current_view->input_buffer + gui_current_view->completion.position_replace,
gui_current_view->completion.word_found,
strlen (gui_current_view->completion.word_found));
gui_current_view->input_buffer_pos =
gui_current_view->completion.position_replace +
strlen (gui_current_view->completion.word_found);
gui_current_view->completion.position =
gui_current_view->input_buffer_pos;
/* add space or completor to the end of completion, if needed */
if (gui_current_window->completion.base_word[0] == '/')
if (gui_current_view->completion.base_word[0] == '/')
{
if (gui_current_window->input_buffer[gui_current_window->input_buffer_pos] != ' ')
if (gui_current_view->input_buffer[gui_current_view->input_buffer_pos] != ' ')
gui_buffer_insert_string (" ",
gui_current_window->input_buffer_pos);
gui_current_window->completion.position++;
gui_current_window->input_buffer_pos++;
gui_current_view->input_buffer_pos);
gui_current_view->completion.position++;
gui_current_view->input_buffer_pos++;
}
else
{
if (gui_current_window->completion.base_word_pos == 0)
if (gui_current_view->completion.base_word_pos == 0)
{
if (strncmp (gui_current_window->input_buffer + gui_current_window->input_buffer_pos,
if (strncmp (gui_current_view->input_buffer + gui_current_view->input_buffer_pos,
cfg_look_completor, strlen (cfg_look_completor)) != 0)
gui_buffer_insert_string (cfg_look_completor,
gui_current_window->input_buffer_pos);
gui_current_window->completion.position += strlen (cfg_look_completor);
gui_current_window->input_buffer_pos += strlen (cfg_look_completor);
if (gui_current_window->input_buffer[gui_current_window->input_buffer_pos] != ' ')
gui_current_view->input_buffer_pos);
gui_current_view->completion.position += strlen (cfg_look_completor);
gui_current_view->input_buffer_pos += strlen (cfg_look_completor);
if (gui_current_view->input_buffer[gui_current_view->input_buffer_pos] != ' ')
gui_buffer_insert_string (" ",
gui_current_window->input_buffer_pos);
gui_current_window->completion.position++;
gui_current_window->input_buffer_pos++;
gui_current_view->input_buffer_pos);
gui_current_view->completion.position++;
gui_current_view->input_buffer_pos++;
}
}
gui_draw_window_input (gui_current_window);
gui_draw_view_input (gui_current_view);
}
break;
/* escape code (for control-key) */
@@ -284,10 +284,10 @@ gui_read_keyb ()
switch (key)
{
case KEY_LEFT:
gui_switch_to_previous_window ();
gui_switch_to_previous_view ();
break;
case KEY_RIGHT:
gui_switch_to_next_window ();
gui_switch_to_next_view ();
break;
case 79:
/* TODO: replace 79 by constant name! */
@@ -314,35 +314,35 @@ gui_read_keyb ()
break;
/* send command/message */
case '\n':
if (gui_current_window->input_buffer_size > 0)
if (gui_current_view->input_buffer_size > 0)
{
gui_current_window->input_buffer[gui_current_window->input_buffer_size] = '\0';
history_add (gui_current_window, gui_current_window->input_buffer);
gui_current_window->input_buffer_size = 0;
gui_current_window->input_buffer_pos = 0;
gui_current_window->input_buffer_1st_display = 0;
gui_current_window->completion.position = -1;
gui_current_window->ptr_history = NULL;
ptr_window = gui_current_window;
user_command (SERVER(gui_current_window),
gui_current_window->input_buffer);
if (ptr_window == gui_current_window)
gui_draw_window_input (ptr_window);
if (ptr_window)
ptr_window->input_buffer[0] = '\0';
gui_current_view->input_buffer[gui_current_view->input_buffer_size] = '\0';
history_add (gui_current_view, gui_current_view->input_buffer);
gui_current_view->input_buffer_size = 0;
gui_current_view->input_buffer_pos = 0;
gui_current_view->input_buffer_1st_display = 0;
gui_current_view->completion.position = -1;
gui_current_view->ptr_history = NULL;
ptr_view = gui_current_view;
user_command (SERVER(gui_current_view),
gui_current_view->input_buffer);
if (ptr_view == gui_current_view)
gui_draw_view_input (ptr_view);
if (ptr_view)
ptr_view->input_buffer[0] = '\0';
}
break;
/* other key => add to input buffer */
default:
/*gui_printf (gui_current_window,
/*gui_printf (gui_current_view,
"[Debug] key pressed = %d, as octal: %o\n", key, key);*/
new_char[0] = key;
new_char[1] = '\0';
gui_buffer_insert_string (new_char,
gui_current_window->input_buffer_pos);
gui_current_window->input_buffer_pos++;
gui_draw_window_input (gui_current_window);
gui_current_window->completion.position = -1;
gui_current_view->input_buffer_pos);
gui_current_view->input_buffer_pos++;
gui_draw_view_input (gui_current_view);
gui_current_view->completion.position = -1;
break;
}
}
@@ -374,14 +374,14 @@ gui_main_loop ()
if (local_time->tm_min != old_min)
{
old_min = local_time->tm_min;
gui_redraw_window_infobar (gui_current_window);
gui_redraw_view_infobar (gui_current_view);
}
/* second has changed ? => count down time for infobar, if needed */
if (local_time->tm_sec != old_sec)
{
old_sec = local_time->tm_sec;
/* TODO: manage splitted windows! */
/* TODO: manage splited windows! */
if (gui_infobar && gui_infobar->remaining_time > 0)
{
gui_infobar->remaining_time--;
+257 -208
View File
@@ -41,151 +41,200 @@
int gui_ready; /* = 1 if GUI is initialized */
t_gui_window *gui_windows = NULL; /* pointer to first window */
t_gui_window *last_gui_window = NULL; /* pointer to last window */
t_gui_window *gui_current_window = NULL; /* pointer to current window */
t_gui_view *gui_views = NULL; /* pointer to first view */
t_gui_view *last_gui_view = NULL; /* pointer to last view */
t_gui_view *gui_current_view = NULL; /* pointer to current view */
t_gui_infobar *gui_infobar; /* pointer to infobar content */
/*
* gui_window_new: create a new window
* (TODO: add coordinates and size, for splited windows)
*/
t_gui_window *
gui_window_new (void *server, void *channel, int switch_to_window
/*int x, int y, int width, int height*/)
gui_window_new (int x, int y, int width, int height)
{
t_gui_window *new_window;
t_gui_window *window;
if (gui_windows)
if ((window = (t_gui_window *)(malloc (sizeof (t_gui_window)))))
{
/* use first window if no server was assigned to this window */
if (!SERVER(gui_windows))
{
if (server)
((t_irc_server *)(server))->window = gui_windows;
if (channel)
((t_irc_channel *)(channel))->window = gui_windows;
SERVER(gui_windows) = server;
CHANNEL(gui_windows) = channel;
return gui_windows;
}
}
if ((new_window = (t_gui_window *)(malloc (sizeof (t_gui_window)))))
{
new_window->is_displayed = 0;
window->win_x = x;
window->win_y = y;
window->win_width = width;
window->win_height = height;
/* assign server and channel to window */
SERVER(new_window) = server;
CHANNEL(new_window) = channel;
/* assign window to server and channel */
if (server && !channel)
SERVER(new_window)->window = new_window;
if (channel)
CHANNEL(new_window)->window = new_window;
window->win_chat_x = 0;
window->win_chat_y = 0;
window->win_chat_width = 0;
window->win_chat_height = 0;
window->win_chat_cursor_x = 0;
window->win_chat_cursor_y = 0;
gui_calculate_pos_size (new_window);
window->win_nick_x = 0;
window->win_nick_y = 0;
window->win_nick_width = 0;
window->win_nick_height = 0;
/* init windows */
gui_window_init_subwindows(new_window);
/* init lines */
new_window->lines = NULL;
new_window->last_line = NULL;
new_window->num_lines = 0;
new_window->first_line_displayed = 1;
new_window->sub_lines = 0;
new_window->line_complete = 1;
new_window->unread_data = 0;
/* init input buffer */
new_window->input_buffer_alloc = INPUT_BUFFER_BLOCK_SIZE;
new_window->input_buffer = (char *) malloc (INPUT_BUFFER_BLOCK_SIZE);
new_window->input_buffer[0] = '\0';
new_window->input_buffer_size = 0;
new_window->input_buffer_pos = 0;
new_window->input_buffer_1st_display = 0;
/* init completion */
completion_init (&(new_window->completion));
/* init history */
new_window->history = NULL;
new_window->last_history = NULL;
new_window->ptr_history = NULL;
new_window->num_history = 0;
/* switch to new window */
if (switch_to_window)
gui_switch_to_window (new_window);
/* add window to windows queue */
new_window->prev_window = last_gui_window;
if (gui_windows)
last_gui_window->next_window = new_window;
else
gui_windows = new_window;
last_gui_window = new_window;
new_window->next_window = NULL;
/* redraw whole screen */
gui_redraw_window (gui_current_window);
window->win_title = NULL;
window->win_chat = NULL;
window->win_nick = NULL;
window->win_status = NULL;
window->win_infobar = NULL;
window->win_input = NULL;
window->textview_chat = NULL;
window->textbuffer_chat = NULL;
window->texttag_chat = NULL;
window->textview_nicklist = NULL;
window->textbuffer_nicklist = NULL;
}
else
return NULL;
return new_window;
return window;
}
/*
* gui_window_clear: clear window content
* gui_view_new: create a new view in current window
*/
t_gui_view *
gui_view_new (t_gui_window *window, void *server, void *channel, int switch_to_view)
{
t_gui_view *new_view;
if (gui_views)
{
/* use first view if no server was assigned to this view */
if (!SERVER(gui_views))
{
if (server)
((t_irc_server *)(server))->view = gui_views;
if (channel)
((t_irc_channel *)(channel))->view = gui_views;
SERVER(gui_views) = server;
CHANNEL(gui_views) = channel;
return gui_views;
}
}
if ((new_view = (t_gui_view *)(malloc (sizeof (t_gui_view)))))
{
new_view->is_displayed = 0;
/* assign server and channel to view */
SERVER(new_view) = server;
CHANNEL(new_view) = channel;
/* assign view to server and channel */
if (server && !channel)
SERVER(new_view)->view = new_view;
if (channel)
CHANNEL(new_view)->view = new_view;
new_view->window = window;
gui_calculate_pos_size (new_view);
/* init views */
gui_view_init_subviews(new_view);
/* init lines */
new_view->lines = NULL;
new_view->last_line = NULL;
new_view->num_lines = 0;
new_view->first_line_displayed = 1;
new_view->sub_lines = 0;
new_view->line_complete = 1;
new_view->unread_data = 0;
/* init input buffer */
new_view->input_buffer_alloc = INPUT_BUFFER_BLOCK_SIZE;
new_view->input_buffer = (char *) malloc (INPUT_BUFFER_BLOCK_SIZE);
new_view->input_buffer[0] = '\0';
new_view->input_buffer_size = 0;
new_view->input_buffer_pos = 0;
new_view->input_buffer_1st_display = 0;
/* init completion */
completion_init (&(new_view->completion));
/* init history */
new_view->history = NULL;
new_view->last_history = NULL;
new_view->ptr_history = NULL;
new_view->num_history = 0;
/* switch to new view */
if (switch_to_view)
gui_switch_to_view (new_view);
/* add view to views queue */
new_view->prev_view = last_gui_view;
if (gui_views)
last_gui_view->next_view = new_view;
else
gui_views = new_view;
last_gui_view = new_view;
new_view->next_view = NULL;
/* redraw whole screen */
/* TODO: manage splited windows */
gui_redraw_view (gui_current_view);
}
else
return NULL;
return new_view;
}
/*
* gui_view_clear: clear view content
*/
void
gui_window_clear (t_gui_window *window)
gui_view_clear (t_gui_view *view)
{
t_gui_line *ptr_line;
t_gui_message *ptr_message;
while (window->lines)
while (view->lines)
{
ptr_line = window->lines->next_line;
while (window->lines->messages)
ptr_line = view->lines->next_line;
while (view->lines->messages)
{
ptr_message = window->lines->messages->next_message;
if (window->lines->messages->message)
free (window->lines->messages->message);
free (window->lines->messages);
window->lines->messages = ptr_message;
ptr_message = view->lines->messages->next_message;
if (view->lines->messages->message)
free (view->lines->messages->message);
free (view->lines->messages);
view->lines->messages = ptr_message;
}
free (window->lines);
window->lines = ptr_line;
free (view->lines);
view->lines = ptr_line;
}
window->lines = NULL;
window->last_line = NULL;
window->num_lines = 0;
window->first_line_displayed = 1;
window->sub_lines = 0;
window->line_complete = 1;
window->unread_data = 0;
view->lines = NULL;
view->last_line = NULL;
view->num_lines = 0;
view->first_line_displayed = 1;
view->sub_lines = 0;
view->line_complete = 1;
view->unread_data = 0;
if (window == gui_current_window)
gui_redraw_window_chat (window);
if (view == gui_current_view)
gui_redraw_view_chat (view);
}
/*
* gui_window_clear_all: clear all windows content
* gui_view_clear_all: clear all views content
*/
void
gui_window_clear_all ()
gui_view_clear_all ()
{
t_gui_window *ptr_win;
t_gui_view *ptr_view;
for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window)
gui_window_clear (ptr_win);
for (ptr_view = gui_views; ptr_view; ptr_view = ptr_view->next_view)
gui_view_clear (ptr_view);
}
/*
@@ -215,8 +264,8 @@ gui_infobar_printf (int time_displayed, int color, char *message, ...)
ptr_infobar->remaining_time = (time_displayed <= 0) ? -1 : time_displayed;
ptr_infobar->next_infobar = gui_infobar;
gui_infobar = ptr_infobar;
/* TODO: manage splitted windows! */
gui_redraw_window_infobar (gui_current_window);
/* TODO: manage splited windows! */
gui_redraw_view_infobar (gui_current_view);
}
else
wee_log_printf (_("%s not enough memory for infobar message\n"),
@@ -239,13 +288,13 @@ gui_infobar_remove ()
free (gui_infobar->text);
free (gui_infobar);
gui_infobar = new_infobar;
/* TODO: manage splitted windows! */
gui_redraw_window_infobar (gui_current_window);
/* TODO: manage splited windows! */
gui_redraw_view_infobar (gui_current_view);
}
}
/*
* gui_line_free: delete a line from a window
* gui_line_free: delete a line from a view
*/
void
@@ -265,57 +314,57 @@ gui_line_free (t_gui_line *line)
}
/*
* gui_window_free: delete a window
* gui_view_free: delete a view
*/
void
gui_window_free (t_gui_window *window)
gui_view_free (t_gui_view *view)
{
t_gui_line *ptr_line;
int create_new;
create_new = (window->server || window->channel);
create_new = (view->server || view->channel);
/* TODO: manage splitted windows! */
if ((window == gui_current_window) &&
((window->next_window) || (window->prev_window)))
gui_switch_to_previous_window ();
/* TODO: manage splited windows! */
if ((view == gui_current_view) &&
((view->next_view) || (view->prev_view)))
gui_switch_to_previous_view ();
/* free lines and messages */
while (window->lines)
while (view->lines)
{
ptr_line = window->lines->next_line;
gui_line_free (window->lines);
window->lines = ptr_line;
ptr_line = view->lines->next_line;
gui_line_free (view->lines);
view->lines = ptr_line;
}
if (window->input_buffer)
free (window->input_buffer);
if (view->input_buffer)
free (view->input_buffer);
completion_free (&(window->completion));
completion_free (&(view->completion));
/* remove window from windows list */
if (window->prev_window)
window->prev_window->next_window = window->next_window;
if (window->next_window)
window->next_window->prev_window = window->prev_window;
if (gui_windows == window)
gui_windows = window->next_window;
if (last_gui_window == window)
last_gui_window = window->prev_window;
/* remove view from views list */
if (view->prev_view)
view->prev_view->next_view = view->next_view;
if (view->next_view)
view->next_view->prev_view = view->prev_view;
if (gui_views == view)
gui_views = view->next_view;
if (last_gui_view == view)
last_gui_view = view->prev_view;
free (window);
free (view);
/* always at least one window */
if (!gui_windows && create_new)
(void) gui_window_new (NULL, NULL, 1);
/* always at least one view */
if (!gui_views && create_new)
(void) gui_view_new (gui_windows, NULL, NULL, 1);
}
/*
* gui_new_line: create new line for a window
* gui_new_line: create new line for a view
*/
t_gui_line *
gui_new_line (t_gui_window *window)
gui_new_line (t_gui_view *view)
{
t_gui_line *new_line, *ptr_line;
@@ -326,14 +375,14 @@ gui_new_line (t_gui_window *window)
new_line->line_with_message = 0;
new_line->messages = NULL;
new_line->last_message = NULL;
if (!window->lines)
window->lines = new_line;
if (!view->lines)
view->lines = new_line;
else
window->last_line->next_line = new_line;
new_line->prev_line = window->last_line;
view->last_line->next_line = new_line;
new_line->prev_line = view->last_line;
new_line->next_line = NULL;
window->last_line = new_line;
window->num_lines++;
view->last_line = new_line;
view->num_lines++;
}
else
{
@@ -343,40 +392,40 @@ gui_new_line (t_gui_window *window)
/* remove one line if necessary */
if ((cfg_history_max_lines > 0)
&& (window->num_lines > cfg_history_max_lines))
&& (view->num_lines > cfg_history_max_lines))
{
if (window->last_line == window->lines)
window->last_line = NULL;
ptr_line = window->lines->next_line;
gui_line_free (window->lines);
window->lines = ptr_line;
if (view->last_line == view->lines)
view->last_line = NULL;
ptr_line = view->lines->next_line;
gui_line_free (view->lines);
view->lines = ptr_line;
ptr_line->prev_line = NULL;
window->num_lines--;
if (window->first_line_displayed)
gui_redraw_window_chat (window);
view->num_lines--;
if (view->first_line_displayed)
gui_redraw_view_chat (view);
}
return new_line;
}
/*
* gui_new_message: create a new message for last line of window
* gui_new_message: create a new message for last line of a view
*/
t_gui_message *
gui_new_message (t_gui_window *window)
gui_new_message (t_gui_view *view)
{
t_gui_message *new_message;
if ((new_message = (t_gui_message *) malloc (sizeof (struct t_gui_message))))
{
if (!window->last_line->messages)
window->last_line->messages = new_message;
if (!view->last_line->messages)
view->last_line->messages = new_message;
else
window->last_line->last_message->next_message = new_message;
new_message->prev_message = window->last_line->last_message;
view->last_line->last_message->next_message = new_message;
new_message->prev_message = view->last_line->last_message;
new_message->next_message = NULL;
window->last_line->last_message = new_message;
view->last_line->last_message = new_message;
}
else
{
@@ -392,16 +441,16 @@ gui_new_message (t_gui_window *window)
*/
void
gui_optimize_input_buffer_size (t_gui_window *window)
gui_optimize_input_buffer_size (t_gui_view *view)
{
int optimal_size;
optimal_size = ((window->input_buffer_size / INPUT_BUFFER_BLOCK_SIZE) *
optimal_size = ((view->input_buffer_size / INPUT_BUFFER_BLOCK_SIZE) *
INPUT_BUFFER_BLOCK_SIZE) + INPUT_BUFFER_BLOCK_SIZE;
if (window->input_buffer_alloc != optimal_size)
if (view->input_buffer_alloc != optimal_size)
{
window->input_buffer_alloc = optimal_size;
window->input_buffer = realloc (window->input_buffer, optimal_size);
view->input_buffer_alloc = optimal_size;
view->input_buffer = realloc (view->input_buffer, optimal_size);
}
}
@@ -414,21 +463,21 @@ gui_delete_previous_word ()
{
int i, j, num_char_deleted, num_char_end;
if (gui_current_window->input_buffer_pos > 0)
if (gui_current_view->input_buffer_pos > 0)
{
i = gui_current_window->input_buffer_pos - 1;
i = gui_current_view->input_buffer_pos - 1;
while ((i >= 0) &&
(gui_current_window->input_buffer[i] == ' '))
(gui_current_view->input_buffer[i] == ' '))
i--;
if (i >= 0)
{
while ((i >= 0) &&
(gui_current_window->input_buffer[i] != ' '))
(gui_current_view->input_buffer[i] != ' '))
i--;
if (i >= 0)
{
while ((i >= 0) &&
(gui_current_window->input_buffer[i] == ' '))
(gui_current_view->input_buffer[i] == ' '))
i--;
}
}
@@ -436,20 +485,20 @@ gui_delete_previous_word ()
if (i >= 0)
i++;
i++;
num_char_deleted = gui_current_window->input_buffer_pos - i;
num_char_end = gui_current_window->input_buffer_size -
gui_current_window->input_buffer_pos;
num_char_deleted = gui_current_view->input_buffer_pos - i;
num_char_end = gui_current_view->input_buffer_size -
gui_current_view->input_buffer_pos;
for (j = 0; j < num_char_end; j++)
gui_current_window->input_buffer[i + j] =
gui_current_window->input_buffer[gui_current_window->input_buffer_pos + j];
gui_current_view->input_buffer[i + j] =
gui_current_view->input_buffer[gui_current_view->input_buffer_pos + j];
gui_current_window->input_buffer_size -= num_char_deleted;
gui_current_window->input_buffer[gui_current_window->input_buffer_size] = '\0';
gui_current_window->input_buffer_pos = i;
gui_draw_window_input (gui_current_window);
gui_optimize_input_buffer_size (gui_current_window);
gui_current_window->completion.position = -1;
gui_current_view->input_buffer_size -= num_char_deleted;
gui_current_view->input_buffer[gui_current_view->input_buffer_size] = '\0';
gui_current_view->input_buffer_pos = i;
gui_draw_view_input (gui_current_view);
gui_optimize_input_buffer_size (gui_current_view);
gui_current_view->completion.position = -1;
}
}
@@ -462,22 +511,22 @@ gui_move_previous_word ()
{
int i;
if (gui_current_window->input_buffer_pos > 0)
if (gui_current_view->input_buffer_pos > 0)
{
i = gui_current_window->input_buffer_pos - 1;
i = gui_current_view->input_buffer_pos - 1;
while ((i >= 0) &&
(gui_current_window->input_buffer[i] == ' '))
(gui_current_view->input_buffer[i] == ' '))
i--;
if (i < 0)
gui_current_window->input_buffer_pos = 0;
gui_current_view->input_buffer_pos = 0;
else
{
while ((i >= 0) &&
(gui_current_window->input_buffer[i] != ' '))
(gui_current_view->input_buffer[i] != ' '))
i--;
gui_current_window->input_buffer_pos = i + 1;
gui_current_view->input_buffer_pos = i + 1;
}
gui_draw_window_input (gui_current_window);
gui_draw_view_input (gui_current_view);
}
}
@@ -490,28 +539,28 @@ gui_move_next_word ()
{
int i;
if (gui_current_window->input_buffer_pos <
gui_current_window->input_buffer_size + 1)
if (gui_current_view->input_buffer_pos <
gui_current_view->input_buffer_size + 1)
{
i = gui_current_window->input_buffer_pos;
while ((i <= gui_current_window->input_buffer_size) &&
(gui_current_window->input_buffer[i] == ' '))
i = gui_current_view->input_buffer_pos;
while ((i <= gui_current_view->input_buffer_size) &&
(gui_current_view->input_buffer[i] == ' '))
i++;
if (i > gui_current_window->input_buffer_size)
gui_current_window->input_buffer_pos = i - 1;
if (i > gui_current_view->input_buffer_size)
gui_current_view->input_buffer_pos = i - 1;
else
{
while ((i <= gui_current_window->input_buffer_size) &&
(gui_current_window->input_buffer[i] != ' '))
while ((i <= gui_current_view->input_buffer_size) &&
(gui_current_view->input_buffer[i] != ' '))
i++;
if (i > gui_current_window->input_buffer_size)
gui_current_window->input_buffer_pos =
gui_current_window->input_buffer_size;
if (i > gui_current_view->input_buffer_size)
gui_current_view->input_buffer_pos =
gui_current_view->input_buffer_size;
else
gui_current_window->input_buffer_pos = i;
gui_current_view->input_buffer_pos = i;
}
gui_draw_window_input (gui_current_window);
gui_draw_view_input (gui_current_view);
}
}
@@ -527,17 +576,17 @@ gui_buffer_insert_string (char *string, int pos)
length = strlen (string);
/* increase buffer size */
gui_current_window->input_buffer_size += length;
gui_optimize_input_buffer_size (gui_current_window);
gui_current_window->input_buffer[gui_current_window->input_buffer_size] = '\0';
gui_current_view->input_buffer_size += length;
gui_optimize_input_buffer_size (gui_current_view);
gui_current_view->input_buffer[gui_current_view->input_buffer_size] = '\0';
/* move end of string to the right */
start = pos + length;
end = gui_current_window->input_buffer_size - 1;
end = gui_current_view->input_buffer_size - 1;
for (i = end; i >= start; i--)
gui_current_window->input_buffer[i] =
gui_current_window->input_buffer[i - length];
gui_current_view->input_buffer[i] =
gui_current_view->input_buffer[i - length];
/* insert new string */
strncpy (gui_current_window->input_buffer + pos, string, length);
strncpy (gui_current_view->input_buffer + pos, string, length);
}
+59 -47
View File
@@ -59,23 +59,23 @@
#define COLOR_WIN_NICK_LAST 38
#define COLOR_WIN_NICK_NUMBER (COLOR_WIN_NICK_LAST - COLOR_WIN_NICK_FIRST + 1)
#define SERVER(window) ((t_irc_server *)(window->server))
#define CHANNEL(window) ((t_irc_channel *)(window->channel))
#define SERVER(view) ((t_irc_server *)(view->server))
#define CHANNEL(view) ((t_irc_channel *)(view->channel))
#define WIN_IS_SERVER(window) (SERVER(window) && !CHANNEL(window))
#define WIN_IS_CHANNEL(window) (CHANNEL(window) && (CHANNEL(window)->type == CHAT_CHANNEL))
#define WIN_IS_PRIVATE(window) (CHANNEL(window) && (CHANNEL(window)->type == CHAT_PRIVATE))
#define VIEW_IS_SERVER(view) (SERVER(view) && !CHANNEL(view))
#define VIEW_IS_CHANNEL(view) (CHANNEL(view) && (CHANNEL(view)->type == CHAT_CHANNEL))
#define VIEW_IS_PRIVATE(view) (CHANNEL(view) && (CHANNEL(view)->type == CHAT_PRIVATE))
#define MSG_TYPE_TIME 0
#define MSG_TYPE_NICK 1
#define MSG_TYPE_INFO 2
#define MSG_TYPE_MSG 3
#define gui_printf_color(window, color, fmt, argz...) \
gui_printf_color_type(window, MSG_TYPE_INFO, color, fmt, ##argz)
#define gui_printf_color(view, color, fmt, argz...) \
gui_printf_color_type(view, MSG_TYPE_INFO, color, fmt, ##argz)
#define gui_printf(window, fmt, argz...) \
gui_printf_color_type(window, MSG_TYPE_INFO, -1, fmt, ##argz)
#define gui_printf(view, fmt, argz...) \
gui_printf_color_type(view, MSG_TYPE_INFO, -1, fmt, ##argz)
typedef struct t_gui_message t_gui_message;
@@ -125,12 +125,6 @@ typedef struct t_gui_window t_gui_window;
struct t_gui_window
{
int is_displayed; /* = 1 if window is displayed */
/* server/channel */
void *server; /* window's server */
void *channel; /* window's channel */
/* global position & size */
int win_x, win_y; /* position of window */
int win_width, win_height; /* window geometry */
@@ -149,7 +143,7 @@ struct t_gui_window
/* windows for Curses GUI */
void *win_title; /* title window */
void *win_chat; /* chat window (exemple: channel) */
void *win_chat; /* chat window (example: channel) */
void *win_nick; /* nick window */
void *win_status; /* status window */
void *win_infobar; /* info bar window */
@@ -165,6 +159,22 @@ struct t_gui_window
/* windows for Qt GUI */
/* TODO: declare Qt window */
t_gui_window *prev_window; /* link to previous window */
t_gui_window *next_window; /* link to next window */
};
typedef struct t_gui_view t_gui_view;
struct t_gui_view
{
int is_displayed; /* = 1 if view is displayed */
/* server/channel */
void *server; /* view's server */
void *channel; /* view's channel */
t_gui_window *window; /* Curses or Gtk window */
/* chat content (lines, line is composed by many messages) */
t_gui_line *lines; /* lines of chat window */
t_gui_line *last_line; /* last line of chat window */
@@ -191,29 +201,31 @@ struct t_gui_window
int num_history; /* number of commands in history */
/* link to next window */
t_gui_window *prev_window; /* link to previous window */
t_gui_window *next_window; /* link to next window */
t_gui_view *prev_view; /* link to previous view */
t_gui_view *next_view; /* link to next view */
};
/* variables */
extern int gui_ready;
extern t_gui_window *gui_windows;
extern t_gui_window *last_gui_window;
extern t_gui_window *gui_current_window;
extern t_gui_view *gui_views;
extern t_gui_view *last_gui_view;
extern t_gui_view *gui_current_view;
extern t_gui_infobar *gui_infobar;
/* prototypes */
/* GUI independent functions */
extern t_gui_window *gui_window_new (/*@null@*/ void *, /*@null@*/ void *, int /*int, int, int, int*/); /* TODO: add coordinates and size */
extern void gui_window_clear (t_gui_window *);
extern void gui_window_clear_all ();
extern t_gui_window *gui_window_new (int, int, int, int);
extern t_gui_view *gui_view_new (t_gui_window *, void *, void *, int);
extern void gui_view_clear (t_gui_view *);
extern void gui_view_clear_all ();
extern void gui_infobar_printf (int, int, char *, ...);
extern void gui_infobar_remove ();
extern t_gui_line *gui_new_line (t_gui_window *);
extern t_gui_message *gui_new_message (t_gui_window *);
extern void gui_optimize_input_buffer_size (t_gui_window *);
extern t_gui_line *gui_new_line (t_gui_view *);
extern t_gui_message *gui_new_message (t_gui_view *);
extern void gui_optimize_input_buffer_size (t_gui_view *);
extern void gui_delete_previous_word ();
extern void gui_move_previous_word ();
extern void gui_move_next_word ();
@@ -222,34 +234,34 @@ extern void gui_buffer_insert_string (char *, int);
extern int gui_assign_color (int *, char *);
extern int gui_get_color_by_name (char *);
extern char *gui_get_color_by_value (int);
extern int gui_window_has_nicklist (t_gui_window *);
extern void gui_calculate_pos_size (t_gui_window *);
extern void gui_draw_window_title (t_gui_window *);
extern void gui_redraw_window_title (t_gui_window *);
extern void gui_draw_window_chat (t_gui_window *);
extern void gui_redraw_window_chat (t_gui_window *);
extern void gui_draw_window_nick (t_gui_window *);
extern void gui_redraw_window_nick (t_gui_window *);
extern void gui_draw_window_status (t_gui_window *);
extern void gui_redraw_window_status (t_gui_window *);
extern void gui_draw_window_infobar (t_gui_window *);
extern void gui_redraw_window_infobar (t_gui_window *);
extern void gui_draw_window_input (t_gui_window *);
extern void gui_redraw_window_input (t_gui_window *);
extern void gui_redraw_window (t_gui_window *);
extern void gui_switch_to_window (t_gui_window *);
extern void gui_switch_to_previous_window ();
extern void gui_switch_to_next_window ();
extern int gui_view_has_nicklist (t_gui_view *);
extern void gui_calculate_pos_size (t_gui_view *);
extern void gui_draw_view_title (t_gui_view *);
extern void gui_redraw_view_title (t_gui_view *);
extern void gui_draw_view_chat (t_gui_view *);
extern void gui_redraw_view_chat (t_gui_view *);
extern void gui_draw_view_nick (t_gui_view *);
extern void gui_redraw_view_nick (t_gui_view *);
extern void gui_draw_view_status (t_gui_view *);
extern void gui_redraw_view_status (t_gui_view *);
extern void gui_draw_view_infobar (t_gui_view *);
extern void gui_redraw_view_infobar (t_gui_view *);
extern void gui_draw_view_input (t_gui_view *);
extern void gui_redraw_view_input (t_gui_view *);
extern void gui_redraw_view (t_gui_view *);
extern void gui_switch_to_view (t_gui_view *);
extern void gui_switch_to_previous_view ();
extern void gui_switch_to_next_view ();
extern void gui_move_page_up ();
extern void gui_move_page_down ();
extern void gui_window_init_subwindows (t_gui_window *);
extern void gui_view_init_subviews (t_gui_view *);
extern void gui_pre_init (int *, char **[]);
extern void gui_init_colors ();
extern void gui_set_window_title ();
extern void gui_init ();
extern void gui_window_free (t_gui_window *);
extern void gui_view_free (t_gui_view *);
extern void gui_end ();
extern void gui_printf_color_type (/*@null@*/ t_gui_window *, int, int, char *, ...);
extern void gui_printf_color_type (/*@null@*/ t_gui_view *, int, int, char *, ...);
extern void gui_main_loop ();
#endif /* gui.h */
+2 -2
View File
@@ -41,7 +41,7 @@ char *channel_modes = "iklmnst";
t_irc_channel *
channel_new (t_irc_server *server, int channel_type, char *channel_name,
int switch_to_window)
int switch_to_view)
{
t_irc_channel *new_channel;
@@ -72,7 +72,7 @@ channel_new (t_irc_server *server, int channel_type, char *channel_name,
server->channels = new_channel;
server->last_channel = new_channel;
gui_window_new (server, new_channel, switch_to_window);
gui_view_new (gui_current_view->window, server, new_channel, switch_to_view);
/* all is ok, return address of new channel */
return new_channel;
+25 -25
View File
@@ -41,16 +41,16 @@
*/
void
irc_display_prefix (t_gui_window *window, char *prefix)
irc_display_prefix (t_gui_view *view, char *prefix)
{
if (prefix[0] == prefix[2])
{
gui_printf_color (window, COLOR_WIN_CHAT_PREFIX1, "%c", prefix[0]);
gui_printf_color (window, COLOR_WIN_CHAT_PREFIX2, "%c", prefix[1]);
gui_printf_color (window, COLOR_WIN_CHAT_PREFIX1, "%c ", prefix[2]);
gui_printf_color (view, COLOR_WIN_CHAT_PREFIX1, "%c", prefix[0]);
gui_printf_color (view, COLOR_WIN_CHAT_PREFIX2, "%c", prefix[1]);
gui_printf_color (view, COLOR_WIN_CHAT_PREFIX1, "%c ", prefix[2]);
}
else
gui_printf_color (window, COLOR_WIN_CHAT_PREFIX1, "%s ", prefix);
gui_printf_color (view, COLOR_WIN_CHAT_PREFIX1, "%s ", prefix);
}
/*
@@ -59,45 +59,45 @@ irc_display_prefix (t_gui_window *window, char *prefix)
*/
void
irc_display_nick (t_gui_window *window, t_irc_nick *nick, int message_type,
irc_display_nick (t_gui_view *view, t_irc_nick *nick, int message_type,
int display_around, int color_nick, int no_nickmode)
{
if (display_around)
gui_printf_color_type (window,
gui_printf_color_type (view,
message_type, COLOR_WIN_CHAT_DARK, "<");
if (cfg_look_nickmode)
{
if (nick->is_op)
gui_printf_color_type (window,
gui_printf_color_type (view,
message_type,
COLOR_WIN_NICK_OP, "@");
else
{
if (nick->is_halfop)
gui_printf_color_type (window,
gui_printf_color_type (view,
message_type,
COLOR_WIN_NICK_HALFOP, "%%");
else
{
if (nick->has_voice)
gui_printf_color_type (window,
gui_printf_color_type (view,
message_type,
COLOR_WIN_NICK_VOICE, "+");
else
if (cfg_look_nickmode_empty && !no_nickmode)
gui_printf_color_type (window,
gui_printf_color_type (view,
message_type,
COLOR_WIN_CHAT, " ");
}
}
}
if (color_nick < 0)
gui_printf_color_type (window,
gui_printf_color_type (view,
message_type,
COLOR_WIN_CHAT_HIGHLIGHT,
"%s", nick->nick);
else
gui_printf_color_type (window,
gui_printf_color_type (view,
message_type,
(color_nick) ?
((cfg_look_color_nicks) ?
@@ -106,7 +106,7 @@ irc_display_nick (t_gui_window *window, t_irc_nick *nick, int message_type,
"%s", nick->nick);
if (display_around)
gui_printf_color_type (window,
gui_printf_color_type (view,
message_type, COLOR_WIN_CHAT_DARK, "> ");
}
@@ -115,21 +115,21 @@ irc_display_nick (t_gui_window *window, t_irc_nick *nick, int message_type,
*/
void
irc_display_mode (t_gui_window *window, char *channel_name, char set_flag,
irc_display_mode (t_gui_view *view, char *channel_name, char set_flag,
char *symbol, char *nick_host, char *message, char *param)
{
irc_display_prefix (window, PREFIX_INFO);
gui_printf_color (window, COLOR_WIN_CHAT_DARK, "[");
gui_printf_color (window, COLOR_WIN_CHAT_CHANNEL, "%s", channel_name);
gui_printf_color (window, COLOR_WIN_CHAT, "/");
gui_printf_color (window, COLOR_WIN_CHAT_CHANNEL, "%c%s", set_flag, symbol);
gui_printf_color (window, COLOR_WIN_CHAT_DARK, "] ");
gui_printf_color (window, COLOR_WIN_CHAT_NICK, "%s", nick_host);
irc_display_prefix (view, PREFIX_INFO);
gui_printf_color (view, COLOR_WIN_CHAT_DARK, "[");
gui_printf_color (view, COLOR_WIN_CHAT_CHANNEL, "%s", channel_name);
gui_printf_color (view, COLOR_WIN_CHAT, "/");
gui_printf_color (view, COLOR_WIN_CHAT_CHANNEL, "%c%s", set_flag, symbol);
gui_printf_color (view, COLOR_WIN_CHAT_DARK, "] ");
gui_printf_color (view, COLOR_WIN_CHAT_NICK, "%s", nick_host);
if (param)
{
gui_printf_color (window, COLOR_WIN_CHAT, " %s ", message);
gui_printf_color (window, COLOR_WIN_CHAT_NICK, "%s\n", param);
gui_printf_color (view, COLOR_WIN_CHAT, " %s ", message);
gui_printf_color (view, COLOR_WIN_CHAT_NICK, "%s\n", param);
}
else
gui_printf_color (window, COLOR_WIN_CHAT, " %s\n", message);
gui_printf_color (view, COLOR_WIN_CHAT, " %s\n", message);
}
+2 -2
View File
@@ -182,7 +182,7 @@ nick_new (t_irc_channel *channel, char *nick_name,
/* alloc memory for new nick */
if ((new_nick = (t_irc_nick *) malloc (sizeof (t_irc_nick))) == NULL)
{
gui_printf (channel->window,
gui_printf (channel->view,
_("%s cannot allocate new nick\n"), WEECHAT_ERROR);
return NULL;
}
@@ -192,7 +192,7 @@ nick_new (t_irc_channel *channel, char *nick_name,
new_nick->is_op = is_op;
new_nick->is_halfop = is_halfop;
new_nick->has_voice = has_voice;
if (strcasecmp (new_nick->nick, SERVER(channel->window)->nick) == 0)
if (strcasecmp (new_nick->nick, SERVER(channel->view)->nick) == 0)
new_nick->color = COLOR_WIN_NICK_SELF;
else
new_nick->color = nick_find_color (channel);
+307 -307
View File
File diff suppressed because it is too large Load Diff
+65 -65
View File
@@ -56,7 +56,7 @@ irc_login (t_irc_server *server)
hostname[sizeof (hostname) - 1] = '\0';
if (!hostname[0])
strcpy (hostname, _("unknown"));
gui_printf (server->window,
gui_printf (server->view,
_("%s: using local hostname \"%s\"\n"),
PACKAGE_NAME, hostname);
server_sendf (server,
@@ -198,15 +198,15 @@ irc_cmd_send_deop (t_irc_server *server, int argc, char **argv)
{
int i;
if (WIN_IS_CHANNEL(gui_current_window))
if (VIEW_IS_CHANNEL(gui_current_view))
{
for (i = 0; i < argc; i++)
server_sendf (server, "MODE %s -o %s\r\n",
CHANNEL(gui_current_window)->name,
CHANNEL(gui_current_view)->name,
argv[i]);
}
else
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can only be executed in a channel window\n"),
WEECHAT_ERROR, "deop");
return 0;
@@ -221,16 +221,16 @@ irc_cmd_send_devoice (t_irc_server *server, int argc, char **argv)
{
int i;
if (WIN_IS_CHANNEL(gui_current_window))
if (VIEW_IS_CHANNEL(gui_current_view))
{
for (i = 0; i < argc; i++)
server_sendf (server, "MODE %s -v %s\r\n",
CHANNEL(gui_current_window)->name,
CHANNEL(gui_current_view)->name,
argv[i]);
}
else
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can only be executed in a channel window\n"),
WEECHAT_ERROR, "devoice");
return -1;
@@ -310,15 +310,15 @@ irc_cmd_send_kick (t_irc_server *server, char *arguments)
server_sendf (server, "KICK %s\r\n", arguments);
else
{
if (WIN_IS_CHANNEL (gui_current_window))
if (VIEW_IS_CHANNEL (gui_current_view))
{
server_sendf (server,
"KICK %s %s\r\n",
CHANNEL(gui_current_window)->name, arguments);
CHANNEL(gui_current_view)->name, arguments);
}
else
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can only be executed in a channel window\n"),
WEECHAT_ERROR, "kick");
return -1;
@@ -388,19 +388,19 @@ irc_cmd_send_lusers (t_irc_server *server, char *arguments)
int
irc_cmd_send_me (t_irc_server *server, char *arguments)
{
if (WIN_IS_SERVER(gui_current_window))
if (VIEW_IS_SERVER(gui_current_view))
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can not be executed on a server window\n"),
WEECHAT_ERROR, "me");
return -1;
}
server_sendf (server, "PRIVMSG %s :\01ACTION %s\01\r\n",
CHANNEL(gui_current_window)->name, arguments);
irc_display_prefix (gui_current_window, PREFIX_ACTION_ME);
gui_printf_color (gui_current_window,
CHANNEL(gui_current_view)->name, arguments);
irc_display_prefix (gui_current_view, PREFIX_ACTION_ME);
gui_printf_color (gui_current_view,
COLOR_WIN_CHAT_NICK, "%s", server->nick);
gui_printf_color (gui_current_window,
gui_printf_color (gui_current_view,
COLOR_WIN_CHAT, " %s\n", arguments);
return 0;
}
@@ -459,25 +459,25 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
}
if (strcmp (arguments, "*") == 0)
{
if (WIN_IS_SERVER(gui_current_window))
if (VIEW_IS_SERVER(gui_current_view))
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can not be executed on a server window\n"),
WEECHAT_ERROR, "msg *");
return -1;
}
ptr_channel = CHANNEL(gui_current_window);
ptr_channel = CHANNEL(gui_current_view);
ptr_nick = nick_search (ptr_channel, server->nick);
if (ptr_nick)
{
irc_display_nick (ptr_channel->window, ptr_nick,
irc_display_nick (ptr_channel->view, ptr_nick,
MSG_TYPE_NICK, 1, 1, 0);
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_MSG,
COLOR_WIN_CHAT, "%s\n", pos);
}
else
gui_printf (server->window,
gui_printf (server->view,
_("%s nick not found for \"%s\" command\n"),
WEECHAT_ERROR, "msg");
server_sendf (server, "PRIVMSG %s :%s\r\n", ptr_channel->name, pos);
@@ -492,14 +492,14 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
ptr_nick = nick_search (ptr_channel, server->nick);
if (ptr_nick)
{
irc_display_nick (ptr_channel->window, ptr_nick,
irc_display_nick (ptr_channel->view, ptr_nick,
MSG_TYPE_NICK, 1, 1, 0);
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_MSG,
COLOR_WIN_CHAT, "%s\n", pos);
}
else
gui_printf (server->window,
gui_printf (server->view,
_("%s nick not found for \"%s\" command\n"),
WEECHAT_ERROR, "msg");
}
@@ -513,26 +513,26 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
ptr_channel = channel_new (server, CHAT_PRIVATE, arguments, 1);
if (!ptr_channel)
{
gui_printf (server->window,
gui_printf (server->view,
_("%s cannot create new private window \"%s\"\n"),
WEECHAT_ERROR,
arguments);
return -1;
}
gui_redraw_window_title (ptr_channel->window);
gui_redraw_view_title (ptr_channel->view);
}
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_NICK,
COLOR_WIN_CHAT_DARK, "<");
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_NICK,
COLOR_WIN_NICK_SELF,
"%s", server->nick);
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_NICK,
COLOR_WIN_CHAT_DARK, "> ");
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_MSG,
COLOR_WIN_CHAT, "%s\n", pos);
server_sendf (server, "PRIVMSG %s :%s\r\n", arguments, pos);
@@ -543,7 +543,7 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
}
else
{
gui_printf (server->window,
gui_printf (server->view,
_("%s wrong argument count for \"%s\" command\n"),
WEECHAT_ERROR, "msg");
return -1;
@@ -562,16 +562,16 @@ irc_cmd_send_names (t_irc_server *server, char *arguments)
server_sendf (server, "NAMES %s\r\n", arguments);
else
{
if (!WIN_IS_CHANNEL(gui_current_window))
if (!VIEW_IS_CHANNEL(gui_current_view))
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can only be executed in a channel window\n"),
WEECHAT_ERROR, "names");
return -1;
}
else
server_sendf (server, "NAMES %s\r\n",
CHANNEL(gui_current_window)->name);
CHANNEL(gui_current_view)->name);
}
return 0;
}
@@ -609,16 +609,16 @@ irc_cmd_send_op (t_irc_server *server, int argc, char **argv)
{
int i;
if (WIN_IS_CHANNEL(gui_current_window))
if (VIEW_IS_CHANNEL(gui_current_view))
{
for (i = 0; i < argc; i++)
server_sendf (server, "MODE %s +o %s\r\n",
CHANNEL(gui_current_window)->name,
CHANNEL(gui_current_view)->name,
argv[i]);
}
else
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can only be executed in a channel window\n"),
WEECHAT_ERROR, "op");
return -1;
@@ -663,36 +663,36 @@ irc_cmd_send_part (t_irc_server *server, char *arguments)
}
else
{
if (WIN_IS_SERVER(gui_current_window))
if (VIEW_IS_SERVER(gui_current_view))
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can not be executed on a server window\n"),
WEECHAT_ERROR, "part");
return -1;
}
channel_name = CHANNEL(gui_current_window)->name;
channel_name = CHANNEL(gui_current_view)->name;
pos_args = arguments;
}
}
else
{
if (WIN_IS_SERVER(gui_current_window))
if (VIEW_IS_SERVER(gui_current_view))
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can not be executed on a server window\n"),
WEECHAT_ERROR, "part");
return -1;
}
if (WIN_IS_PRIVATE(gui_current_window))
if (VIEW_IS_PRIVATE(gui_current_view))
{
ptr_channel = CHANNEL(gui_current_window);
gui_window_free (ptr_channel->window);
ptr_channel = CHANNEL(gui_current_view);
gui_view_free (ptr_channel->view);
channel_free (server, ptr_channel);
gui_redraw_window_status (gui_current_window);
gui_redraw_window_input (gui_current_window);
gui_redraw_view_status (gui_current_view);
gui_redraw_view_input (gui_current_view);
return 0;
}
channel_name = CHANNEL(gui_current_window)->name;
channel_name = CHANNEL(gui_current_view)->name;
pos_args = NULL;
}
@@ -753,29 +753,29 @@ irc_cmd_send_query (t_irc_server *server, char *arguments)
ptr_channel = channel_new (server, CHAT_PRIVATE, arguments, 1);
if (!ptr_channel)
{
gui_printf (server->window,
gui_printf (server->view,
_("%s cannot create new private window \"%s\"\n"),
WEECHAT_ERROR,
arguments);
return -1;
}
gui_redraw_window_title (ptr_channel->window);
gui_redraw_view_title (ptr_channel->view);
}
/* display text if given */
if (pos)
{
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_NICK,
COLOR_WIN_CHAT_DARK, "<");
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_NICK,
COLOR_WIN_NICK_SELF,
"%s", server->nick);
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_NICK,
COLOR_WIN_CHAT_DARK, "> ");
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_MSG,
COLOR_WIN_CHAT, "%s\n", pos);
server_sendf (server, "PRIVMSG %s :%s\r\n", arguments, pos);
@@ -970,14 +970,14 @@ irc_cmd_send_topic (t_irc_server *server, char *arguments)
/* look for current channel if not specified */
if (!channel_name)
{
if (WIN_IS_SERVER(gui_current_window))
if (VIEW_IS_SERVER(gui_current_view))
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can not be executed on a server window\n"),
WEECHAT_ERROR, "topic");
return -1;
}
channel_name = CHANNEL(gui_current_window)->name;
channel_name = CHANNEL(gui_current_view)->name;
}
if (new_topic)
@@ -1040,8 +1040,8 @@ irc_cmd_send_version (t_irc_server *server, char *arguments)
{
if (arguments)
{
if (WIN_IS_CHANNEL(gui_current_window) &&
nick_search (CHANNEL(gui_current_window), arguments))
if (VIEW_IS_CHANNEL(gui_current_view) &&
nick_search (CHANNEL(gui_current_view), arguments))
server_sendf (server, "PRIVMSG %s :\01VERSION\01\r\n",
arguments);
else
@@ -1050,8 +1050,8 @@ irc_cmd_send_version (t_irc_server *server, char *arguments)
}
else
{
irc_display_prefix (server->window, PREFIX_INFO);
gui_printf (server->window, _("%s, compiled on %s %s\n"),
irc_display_prefix (server->view, PREFIX_INFO);
gui_printf (server->view, _("%s, compiled on %s %s\n"),
PACKAGE_STRING,
__DATE__, __TIME__);
server_sendf (server, "VERSION\r\n");
@@ -1068,16 +1068,16 @@ irc_cmd_send_voice (t_irc_server *server, int argc, char **argv)
{
int i;
if (WIN_IS_CHANNEL(gui_current_window))
if (VIEW_IS_CHANNEL(gui_current_view))
{
for (i = 0; i < argc; i++)
server_sendf (server, "MODE %s +v %s\r\n",
CHANNEL(gui_current_window)->name,
CHANNEL(gui_current_view)->name,
argv[i]);
}
else
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can only be executed in a channel window\n"),
WEECHAT_ERROR, "voice");
return -1;
+26 -26
View File
@@ -78,7 +78,7 @@ server_init (t_irc_server *server)
server->is_away = 0;
server->server_read = -1;
server->server_write = -1;
server->window = NULL;
server->view = NULL;
server->channels = NULL;
server->last_channel = NULL;
}
@@ -270,8 +270,8 @@ server_free (t_irc_server *server)
(server->next_server)->prev_server = server->prev_server;
server_destroy (server);
if (server->window)
gui_window_free (server->window);
if (server->view)
gui_view_free (server->view);
free (server);
irc_servers = new_irc_servers;
}
@@ -377,11 +377,11 @@ server_sendf (t_irc_server * server, char *fmt, ...)
size_buf = strlen (buffer);
buffer[size_buf - 2] = '\0';
#ifdef DEBUG
gui_printf (server->window, "[DEBUG] Sending to server >>> %s\n", buffer);
gui_printf (server->view, "[DEBUG] Sending to server >>> %s\n", buffer);
#endif
buffer[size_buf - 2] = '\r';
if (server_send (server, buffer, size_buf) <= 0)
gui_printf (server->window, _("%s error sending data to IRC server\n"),
gui_printf (server->view, _("%s error sending data to IRC server\n"),
WEECHAT_ERROR);
}
@@ -397,7 +397,7 @@ server_msgq_add_msg (t_irc_server *server, char *msg)
message = (t_irc_message *) malloc (sizeof (t_irc_message));
if (!message)
{
gui_printf (server->window,
gui_printf (server->view,
_("%s not enough memory for received IRC message\n"),
WEECHAT_ERROR);
return;
@@ -408,7 +408,7 @@ server_msgq_add_msg (t_irc_server *server, char *msg)
message->data = (char *) malloc (strlen (unterminated_message) +
strlen (msg) + 1);
if (!message->data)
gui_printf (server->window,
gui_printf (server->view,
_("%s not enough memory for received IRC message\n"),
WEECHAT_ERROR);
else
@@ -462,14 +462,14 @@ server_msgq_add_buffer (t_irc_server * server, char *buffer)
(char *) realloc (unterminated_message,
strlen (buffer) + 1);
if (!unterminated_message)
gui_printf (server->window,
gui_printf (server->view,
_("%s not enough memory for received IRC message\n"),
WEECHAT_ERROR);
else
strcpy (unterminated_message, buffer);
return;
}
gui_printf (server->window,
gui_printf (server->view,
_("%s unable to explode received buffer\n"),
WEECHAT_ERROR);
}
@@ -493,7 +493,7 @@ server_msgq_flush ()
if (recv_msgq->data)
{
#ifdef DEBUG
gui_printf (gui_current_window, "[DEBUG] %s\n", recv_msgq->data);
gui_printf (gui_current_view, "[DEBUG] %s\n", recv_msgq->data);
#endif
ptr_data = recv_msgq->data;
@@ -542,15 +542,15 @@ server_msgq_flush ()
command, args))
{
case -1:
gui_printf (recv_msgq->server->window,
gui_printf (recv_msgq->server->view,
_("Command '%s' failed!\n"), command);
break;
case -2:
gui_printf (recv_msgq->server->window,
gui_printf (recv_msgq->server->view,
_("No command to execute!\n"));
break;
case -3:
gui_printf (recv_msgq->server->window,
gui_printf (recv_msgq->server->view,
_("Unknown command: cmd=%s, args=%s\n"),
command, args);
break;
@@ -602,7 +602,7 @@ server_connect (t_irc_server *server)
int error;
int server_pipe[2];
gui_printf (server->window,
gui_printf (server->view,
_("%s: connecting to %s:%d...\n"),
PACKAGE_NAME, server->address, server->port);
wee_log_printf (_("connecting to server %s:%d...\n"),
@@ -612,7 +612,7 @@ server_connect (t_irc_server *server)
/* create pipe */
if (pipe (server_pipe) < 0)
{
gui_printf (server->window,
gui_printf (server->view,
_("%s cannot create pipe\n"), WEECHAT_ERROR);
server_free (server);
return 0;
@@ -626,14 +626,14 @@ server_connect (t_irc_server *server)
if (setsockopt
(server->sock4, SOL_SOCKET, SO_REUSEADDR, (char *) &set,
sizeof (set)) == -1)
gui_printf (server->window,
gui_printf (server->view,
_("%s cannot set socket option \"SO_REUSEADDR\"\n"),
WEECHAT_ERROR);
set = 1;
if (setsockopt
(server->sock4, SOL_SOCKET, SO_KEEPALIVE, (char *) &set,
sizeof (set)) == -1)
gui_printf (server->window,
gui_printf (server->view,
_("%s cannot set socket option \"SO_KEEPALIVE\"\n"),
WEECHAT_ERROR);
@@ -641,7 +641,7 @@ server_connect (t_irc_server *server)
ip4_hostent = gethostbyname (server->address);
if (!ip4_hostent)
{
gui_printf (server->window,
gui_printf (server->view,
_("%s address \"%s\" not found\n"),
WEECHAT_ERROR, server->address);
close (server->server_read);
@@ -657,14 +657,14 @@ server_connect (t_irc_server *server)
/*error = bind(server->sock4, (struct sockaddr *)(&addr), sizeof(addr));
if (error != 0)
{
gui_printf (server->window,
gui_printf (server->view,
WEECHAT_ERORR "server_connect: can't bind to hostname\n");
return 0;
} */
ip_address = inet_ntoa (addr.sin_addr);
if (!ip_address)
{
gui_printf (server->window,
gui_printf (server->view,
_("%s IP address not found\n"), WEECHAT_ERROR);
close (server->server_read);
close (server->server_write);
@@ -674,13 +674,13 @@ server_connect (t_irc_server *server)
}
/* connection to server */
gui_printf (server->window,
gui_printf (server->view,
_("%s: server IP is: %s\n"), PACKAGE_NAME, ip_address);
error = connect (server->sock4, (struct sockaddr *) &addr, sizeof (addr));
if (error != 0)
{
gui_printf (server->window,
gui_printf (server->view,
_("%s cannot connect to irc server\n"), WEECHAT_ERROR);
close (server->server_read);
close (server->server_write);
@@ -708,7 +708,7 @@ server_auto_connect (int command_line)
if ( ((command_line) && (ptr_server->command_line))
|| ((!command_line) && (ptr_server->autoconnect)) )
{
(void) gui_window_new (ptr_server, NULL, 1);
(void) gui_view_new (gui_current_view->window, ptr_server, NULL, 1);
if (server_connect (ptr_server))
irc_login (ptr_server);
}
@@ -726,12 +726,12 @@ server_disconnect (t_irc_server *server)
if (server->is_connected)
{
/* write disconnection message on each channel/private window */
/* write disconnection message on each channel/private view */
for (ptr_channel = server->channels; ptr_channel;
ptr_channel = ptr_channel->next_channel)
{
irc_display_prefix (ptr_channel->window, PREFIX_INFO);
gui_printf (ptr_channel->window, _("Disconnected from server!\n"));
irc_display_prefix (ptr_channel->view, PREFIX_INFO);
gui_printf (ptr_channel->view, _("Disconnected from server!\n"));
}
/* close communication with server */
+5 -5
View File
@@ -83,7 +83,7 @@ struct t_irc_channel
char *key; /* channel key (NULL if no key is set) */
t_irc_nick *nicks; /* nicks on the channel */
t_irc_nick *last_nick; /* last nick on the channel */
t_gui_window *window; /* GUI window allocated for channel */
t_gui_view *view; /* GUI view allocated for channel */
t_irc_channel *prev_channel; /* link to previous channel */
t_irc_channel *next_channel; /* link to next channel */
};
@@ -116,7 +116,7 @@ struct t_irc_server
int is_away; /* 1 is user is marker as away */
int server_read; /* pipe for reading server data */
int server_write; /* pipe for sending data to server */
t_gui_window *window; /* GUI window allocated for server */
t_gui_view *view; /* GUI view allocated for server */
t_irc_channel *channels; /* opened channels on server */
t_irc_channel *last_channel; /* last opened channal on server */
t_irc_server *prev_server; /* link to previous server */
@@ -204,9 +204,9 @@ extern void dcc_send ();
/* IRC display (irc-diplay.c) */
extern void irc_display_prefix (/*@null@*/ t_gui_window *, char *);
extern void irc_display_nick (t_gui_window *, t_irc_nick *, int, int, int, int);
extern void irc_display_mode (t_gui_window *, char *, char, char *, char *,
extern void irc_display_prefix (/*@null@*/ t_gui_view *, char *);
extern void irc_display_nick (t_gui_view *, t_irc_nick *, int, int, int, int);
extern void irc_display_mode (t_gui_view *, char *, char, char *, char *,
char *, char *);
/* IRC protocol (irc-commands.c) */
+15 -15
View File
@@ -120,7 +120,7 @@ static XS (XS_IRC_register)
}
/*
* IRC::print: print message to current window
* IRC::print: print message to current view
*/
static XS (XS_IRC_print)
@@ -135,8 +135,8 @@ static XS (XS_IRC_print)
for (i = 0; i < items; i++)
{
message = SvPV (ST (i), integer);
irc_display_prefix (gui_current_window, PREFIX_PLUGIN);
gui_printf (gui_current_window, "%s", message);
irc_display_prefix (gui_current_view, PREFIX_PLUGIN);
gui_printf (gui_current_view, "%s", message);
}
XSRETURN_EMPTY;
@@ -151,7 +151,7 @@ static XS (XS_IRC_print_with_channel)
{
int integer;
char *message, *channel, *server = NULL;
t_gui_window *ptr_window;
t_gui_view *ptr_view;
t_irc_server *ptr_server;
t_irc_channel *ptr_channel;
dXSARGS;
@@ -167,9 +167,9 @@ static XS (XS_IRC_print_with_channel)
server = NULL;
}
/* look for window for printing message */
/* look for view for printing message */
channel = SvPV (ST (1), integer);
ptr_window = NULL;
ptr_view = NULL;
for (ptr_server = irc_servers; ptr_server;
ptr_server = ptr_server->next_server)
{
@@ -180,25 +180,25 @@ static XS (XS_IRC_print_with_channel)
{
if (strcasecmp (ptr_channel->name, channel) == 0)
{
ptr_window = ptr_channel->window;
ptr_view = ptr_channel->view;
break;
}
}
}
if (ptr_window)
if (ptr_view)
break;
}
/* window found => display message & return 1 */
if (ptr_window)
/* view found => display message & return 1 */
if (ptr_view)
{
message = SvPV (ST (0), integer);
irc_display_prefix (ptr_window, PREFIX_PLUGIN);
gui_printf (ptr_window, "%s", message);
irc_display_prefix (ptr_view, PREFIX_PLUGIN);
gui_printf (ptr_view, "%s", message);
XSRETURN_YES;
}
/* no window found => return 0 */
/* no view found => return 0 */
XSRETURN_NO;
}
@@ -307,8 +307,8 @@ static XS (XS_IRC_get_info)
}
else if ( (strcasecmp (arg, "2") == 0) || (strcasecmp (arg, "channel") == 0) )
{
if (WIN_IS_CHANNEL (gui_current_window))
info = CHANNEL (gui_current_window)->name;
if (VIEW_IS_CHANNEL (gui_current_view))
info = CHANNEL (gui_current_view)->name;
}
else if ( (strcasecmp (arg, "3") == 0) || (strcasecmp (arg, "server") == 0) )
{
+2 -1
View File
@@ -1,10 +1,11 @@
WeeChat - Wee Enhanced Environment for Chat
===========================================
ChangeLog - 2004-06-17
ChangeLog - 2004-06-23
Version 0.0.7 (under dev!):
* windows management (split terminal horizontally/vertically)
* fixed display bug when nicklist is displayed at bottom of screen
* added history limit (text buffer & commands)
+2 -1
View File
@@ -1,7 +1,7 @@
WeeChat - Wee Enhanced Environment for Chat
===========================================
TODO - 2004-06-13
TODO - 2004-06-23
Legend:
# done
@@ -21,6 +21,7 @@ v0.0.7:
+ "/dcc" command (for chat and sending/receiving files)
* Interface:
+ split terminal in multiple windows (horizontally/vertically)
+ internationalization (traduce WeeChat in many languages)
* Configuration:
+2 -2
View File
@@ -19,10 +19,10 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.56)
AC_INIT(WeeChat, 0.0.7-pre1, flashcode@flashtux.org)
AC_INIT(WeeChat, 0.0.7-pre2, flashcode@flashtux.org)
AC_CONFIG_SRCDIR([src/common/weechat.c])
AM_CONFIG_HEADER(config.h)
AM_INIT_AUTOMAKE([weechat], [0.0.7-pre1])
AM_INIT_AUTOMAKE([weechat], [0.0.7-pre2])
# Checks for programs.
AC_PROG_CC
+1 -1
View File
@@ -5,7 +5,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: WeeChat 0.0.7-pre1\n"
"Project-Id-Version: WeeChat 0.0.7-pre2\n"
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
"POT-Creation-Date: 2004-06-05 10:52+0200\n"
"PO-Revision-Date: 2004-06-05 10:52+0200\n"
+60 -19
View File
@@ -88,6 +88,14 @@ t_weechat_command weechat_commands[] =
{ "unalias", N_("remove an alias"),
N_("alias_name"), N_("alias_name: name of alias to remove"),
1, 1, NULL, weechat_cmd_unalias },
{ "window", N_("manage windows"),
N_("[action]"),
N_("action: action to do:\n"
" close close current window\n"
" list list opened windows (no parameter implies this list)\n"
" splith split current window horizontally\n"
" splitv split current window vertically"),
0, MAX_ARGS, weechat_cmd_window, NULL },
{ NULL, NULL, NULL, NULL, 0, 0, NULL, NULL }
};
@@ -707,46 +715,46 @@ user_command (t_irc_server *server, char *command)
{
if ((command[0] == '/') && (command[1] == '/'))
command++;
if (server && (!WIN_IS_SERVER(gui_current_window)))
if (server && (!VIEW_IS_SERVER(gui_current_view)))
{
server_sendf (server, "PRIVMSG %s :%s\r\n",
CHANNEL(gui_current_window)->name,
CHANNEL(gui_current_view)->name,
command);
if (WIN_IS_PRIVATE(gui_current_window))
if (VIEW_IS_PRIVATE(gui_current_view))
{
gui_printf_color_type (CHANNEL(gui_current_window)->window,
gui_printf_color_type (CHANNEL(gui_current_view)->view,
MSG_TYPE_NICK,
COLOR_WIN_CHAT_DARK, "<");
gui_printf_color_type (CHANNEL(gui_current_window)->window,
gui_printf_color_type (CHANNEL(gui_current_view)->view,
MSG_TYPE_NICK,
COLOR_WIN_NICK_SELF,
"%s", server->nick);
gui_printf_color_type (CHANNEL(gui_current_window)->window,
gui_printf_color_type (CHANNEL(gui_current_view)->view,
MSG_TYPE_NICK,
COLOR_WIN_CHAT_DARK, "> ");
gui_printf_color_type (CHANNEL(gui_current_window)->window,
gui_printf_color_type (CHANNEL(gui_current_view)->view,
MSG_TYPE_MSG,
COLOR_WIN_CHAT, "%s\n", command);
}
else
{
ptr_nick = nick_search (CHANNEL(gui_current_window), server->nick);
ptr_nick = nick_search (CHANNEL(gui_current_view), server->nick);
if (ptr_nick)
{
irc_display_nick (CHANNEL(gui_current_window)->window, ptr_nick,
irc_display_nick (CHANNEL(gui_current_view)->view, ptr_nick,
MSG_TYPE_NICK, 1, 1, 0);
gui_printf_color (CHANNEL(gui_current_window)->window,
gui_printf_color (CHANNEL(gui_current_view)->view,
COLOR_WIN_CHAT, "%s\n", command);
}
else
gui_printf (server->window,
gui_printf (server->view,
_("%s cannot find nick for sending message\n"),
WEECHAT_ERROR);
}
}
else
gui_printf ((server) ? server->window : NULL,
gui_printf ((server) ? server->view : NULL,
_("This window is not a channel!\n"));
}
}
@@ -820,7 +828,7 @@ weechat_cmd_clear (int argc, char **argv)
if (argc == 1)
{
if (strcmp (argv[0], "-all") == 0)
gui_window_clear_all ();
gui_view_clear_all ();
else
{
gui_printf (NULL,
@@ -830,7 +838,7 @@ weechat_cmd_clear (int argc, char **argv)
}
}
else
gui_window_clear (gui_current_window);
gui_view_clear (gui_current_view);
return 0;
}
@@ -857,9 +865,9 @@ weechat_cmd_connect (int argc, char **argv)
WEECHAT_ERROR, argv[0]);
return -1;
}
if (!ptr_server->window)
if (!ptr_server->view)
{
if (!gui_window_new (ptr_server, NULL, 1))
if (!gui_view_new (gui_current_view->window, ptr_server, NULL, 1))
return -1;
}
if (server_connect (ptr_server))
@@ -906,7 +914,7 @@ weechat_cmd_disconnect (int argc, char **argv)
return -1;
}
server_disconnect (ptr_server);
gui_redraw_window_status (gui_current_window);
gui_redraw_view_status (gui_current_view);
}
else
{
@@ -1300,7 +1308,7 @@ weechat_cmd_server (int argc, char **argv)
gui_printf_color (NULL, COLOR_WIN_CHAT, _("has been deleted\n"));
server_free (server_found);
gui_redraw_window (gui_current_window);
gui_redraw_view (gui_current_view);
return 0;
}
@@ -1441,7 +1449,7 @@ weechat_cmd_server (int argc, char **argv)
if (new_server->autoconnect)
{
(void) gui_window_new (new_server, NULL, 1);
(void) gui_view_new (gui_current_view->window, new_server, NULL, 1);
if (server_connect (new_server))
irc_login (new_server);
}
@@ -1619,3 +1627,36 @@ weechat_cmd_unalias (char *arguments)
arguments);
return 0;
}
/*
* weechat_cmd_window: manage windows
*/
int
weechat_cmd_window (int argc, char **argv)
{
int i;
t_irc_server server, *ptr_server, *server_found, *new_server;
if ((argc == 0) || ((argc == 1) && (strcasecmp (argv[0], "list") == 0)))
{
/* list opened windows */
gui_printf (NULL, "window list -- NOT DEVELOPED!\n");
}
else
{
if (strcasecmp (argv[0], "splith") == 0)
{
/* split window horizontally */
gui_printf (NULL, "window splith -- NOT DEVELOPED!\n");
}
else if (strcasecmp (argv[0], "splitv") == 0)
{
/* split window vertically */
gui_printf (NULL, "window splitv -- NOT DEVELOPED!\n");
}
else
return -1;
}
return 0;
}
+1
View File
@@ -76,5 +76,6 @@ extern int weechat_cmd_save (int, char **);
extern int weechat_cmd_server (int, char **);
extern int weechat_cmd_set (char *);
extern int weechat_cmd_unalias (char *);
extern int weechat_cmd_window (int, char **);
#endif /* command.h */
+15 -15
View File
@@ -44,7 +44,7 @@ int num_history_general = 0;
*/
void
history_add (void *window, char *string)
history_add (void *view, char *string)
{
t_history *new_history, *ptr_history;
@@ -83,26 +83,26 @@ history_add (void *window, char *string)
{
new_history->text = strdup (string);
if (((t_gui_window *)(window))->history)
((t_gui_window *)(window))->history->prev_history = new_history;
if (((t_gui_view *)(view))->history)
((t_gui_view *)(view))->history->prev_history = new_history;
else
((t_gui_window *)(window))->last_history = new_history;
new_history->next_history = ((t_gui_window *)(window))->history;
((t_gui_view *)(view))->last_history = new_history;
new_history->next_history = ((t_gui_view *)(view))->history;
new_history->prev_history = NULL;
((t_gui_window *)window)->history = new_history;
((t_gui_window *)(window))->num_history++;
((t_gui_view *)view)->history = new_history;
((t_gui_view *)(view))->num_history++;
/* remove one command if necessary */
if ((cfg_history_max_commands > 0)
&& (((t_gui_window *)(window))->num_history > cfg_history_max_commands))
&& (((t_gui_view *)(view))->num_history > cfg_history_max_commands))
{
ptr_history = ((t_gui_window *)window)->last_history->prev_history;
((t_gui_window *)window)->last_history->prev_history->next_history = NULL;
if (((t_gui_window *)window)->last_history->text)
free (((t_gui_window *)window)->last_history->text);
free (((t_gui_window *)window)->last_history);
((t_gui_window *)window)->last_history = ptr_history;
((t_gui_window *)(window))->num_history++;
ptr_history = ((t_gui_view *)view)->last_history->prev_history;
((t_gui_view *)view)->last_history->prev_history->next_history = NULL;
if (((t_gui_view *)view)->last_history->text)
free (((t_gui_view *)view)->last_history->text);
free (((t_gui_view *)view)->last_history);
((t_gui_view *)view)->last_history = ptr_history;
((t_gui_view *)(view))->num_history++;
}
}
}
+16 -16
View File
@@ -109,33 +109,33 @@ t_config_option weechat_options_look[] =
{ "look_nicklist", N_("display nicklist window"),
N_("display nicklist window (for channel windows)"),
OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE,
NULL, NULL, &cfg_look_nicklist, NULL, config_change_windows },
NULL, NULL, &cfg_look_nicklist, NULL, config_change_views },
{ "look_nicklist_position", N_("nicklist position"),
N_("nicklist position (top, left, right (default), bottom)"),
OPTION_TYPE_INT_WITH_STRING, 0, 0, 0,
"right", cfg_look_nicklist_position_values, &cfg_look_nicklist_position, NULL, config_change_windows },
"right", cfg_look_nicklist_position_values, &cfg_look_nicklist_position, NULL, config_change_views },
{ "look_nicklist_min_size", N_("min size for nicklist"),
N_("min size for nicklist (width or height, depending on look_nicklist_position "
"(0 = no min size))"),
OPTION_TYPE_INT, 0, 100, 0,
NULL, NULL, &cfg_look_nicklist_min_size, NULL, config_change_windows },
NULL, NULL, &cfg_look_nicklist_min_size, NULL, config_change_views },
{ "look_nicklist_max_size", N_("max size for nicklist"),
N_("max size for nicklist (width or height, depending on look_nicklist_position "
"(0 = no max size; if min == max and > 0, then size is fixed))"),
OPTION_TYPE_INT, 0, 100, 0,
NULL, NULL, &cfg_look_nicklist_max_size, NULL, config_change_windows },
NULL, NULL, &cfg_look_nicklist_max_size, NULL, config_change_views },
{ "look_no_nickname", N_("text to display instead of nick when not connected"),
N_("text to display instead of nick when not connected"),
OPTION_TYPE_STRING, 0, 0, 0,
"-cmd-", NULL, NULL, &cfg_look_no_nickname, config_change_window_content },
"-cmd-", NULL, NULL, &cfg_look_no_nickname, config_change_view_content },
{ "look_nickmode", N_("display nick mode ((half)op/voice) before each nick"),
N_("display nick mode ((half)op/voice) before each nick"),
OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE,
NULL, NULL, &cfg_look_nickmode, NULL, config_change_windows },
NULL, NULL, &cfg_look_nickmode, NULL, config_change_views },
{ "look_nickmode_empty", N_("display space if nick mode is not (half)op/voice"),
N_("display space if nick mode is not (half)op/voice"),
OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_FALSE,
NULL, NULL, &cfg_look_nickmode_empty, NULL, config_change_windows },
NULL, NULL, &cfg_look_nickmode_empty, NULL, config_change_views },
{ "look_nick_completor", N_("the string inserted after nick completion"),
N_("the string inserted after nick completion"),
OPTION_TYPE_STRING, 0, 0, 0,
@@ -143,11 +143,11 @@ t_config_option weechat_options_look[] =
{ "look_infobar", N_("enable info bar"),
N_("enable info bar"),
OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE,
NULL, NULL, &cfg_look_infobar, NULL, config_change_windows },
NULL, NULL, &cfg_look_infobar, NULL, config_change_views },
{ "look_infobar_timestamp", N_("timestamp for time in infobar"),
N_("timestamp for time in infobar"),
OPTION_TYPE_STRING, 0, 0, 0,
"%B, %A %d %G - %H:%M", NULL, NULL, &cfg_look_infobar_timestamp, config_change_window_content },
"%B, %A %d %G - %H:%M", NULL, NULL, &cfg_look_infobar_timestamp, config_change_view_content },
{ "look_infobar_delay_highlight", N_("delay (in seconds) for highlight messages in infobar"),
N_("delay (in seconds) for highlight messages in infobar "
"(0 = disable highlight notifications in infobar)"),
@@ -615,24 +615,24 @@ config_change_title ()
}
/*
* config_change_windows: called when windows change (for example nicklist)
* config_change_views: called when views change (for example nicklist)
*/
void
config_change_windows ()
config_change_views ()
{
gui_switch_to_window (gui_current_window);
gui_redraw_window (gui_current_window);
gui_switch_to_view (gui_current_view);
gui_redraw_view (gui_current_view);
}
/*
* config_change_window_content: called when content of a window changes
* config_change_view_content: called when content of a view changes
*/
void
config_change_window_content ()
config_change_view_content ()
{
gui_redraw_window (gui_current_window);
gui_redraw_view (gui_current_view);
}
/*
+2 -2
View File
@@ -158,8 +158,8 @@ extern t_config_option * weechat_options [CONFIG_NUMBER_SECTIONS];
extern char *config_get_section ();
extern void config_change_noop ();
extern void config_change_title ();
extern void config_change_windows ();
extern void config_change_window_content ();
extern void config_change_views ();
extern void config_change_view_content ();
extern void config_change_color ();
extern int config_option_set_value (t_config_option *, char *);
extern t_config_option *config_option_search (char *);
File diff suppressed because it is too large Load Diff
+145 -145
View File
@@ -49,7 +49,7 @@ void
gui_read_keyb ()
{
int key, i;
t_gui_window *ptr_window;
t_gui_view *ptr_view;
char new_char[2];
key = getch ();
@@ -59,16 +59,16 @@ gui_read_keyb ()
{
/* resize event */
case KEY_RESIZE:
gui_calculate_pos_size (gui_current_window);
gui_redraw_window (gui_current_window);
gui_calculate_pos_size (gui_current_view);
gui_redraw_view (gui_current_view);
break;
/* previous window */
/* previous view */
case KEY_F(6):
gui_switch_to_previous_window ();
gui_switch_to_previous_view ();
break;
/* next window */
/* next view */
case KEY_F(7):
gui_switch_to_next_window ();
gui_switch_to_next_view ();
break;
/* remove last infobar message */
case KEY_F(10):
@@ -76,82 +76,82 @@ gui_read_keyb ()
break;
/* cursor up */
case KEY_UP:
if (gui_current_window->ptr_history)
if (gui_current_view->ptr_history)
{
gui_current_window->ptr_history =
gui_current_window->ptr_history->next_history;
if (!gui_current_window->ptr_history)
gui_current_window->ptr_history =
gui_current_window->history;
gui_current_view->ptr_history =
gui_current_view->ptr_history->next_history;
if (!gui_current_view->ptr_history)
gui_current_view->ptr_history =
gui_current_view->history;
}
else
gui_current_window->ptr_history =
gui_current_window->history;
if (gui_current_window->ptr_history)
gui_current_view->ptr_history =
gui_current_view->history;
if (gui_current_view->ptr_history)
{
gui_current_window->input_buffer_size =
strlen (gui_current_window->ptr_history->text);
gui_optimize_input_buffer_size (gui_current_window);
gui_current_window->input_buffer_pos =
gui_current_window->input_buffer_size;
strcpy (gui_current_window->input_buffer,
gui_current_window->ptr_history->text);
gui_draw_window_input (gui_current_window);
gui_current_view->input_buffer_size =
strlen (gui_current_view->ptr_history->text);
gui_optimize_input_buffer_size (gui_current_view);
gui_current_view->input_buffer_pos =
gui_current_view->input_buffer_size;
strcpy (gui_current_view->input_buffer,
gui_current_view->ptr_history->text);
gui_draw_view_input (gui_current_view);
}
break;
/* cursor down */
case KEY_DOWN:
if (gui_current_window->ptr_history)
if (gui_current_view->ptr_history)
{
gui_current_window->ptr_history =
gui_current_window->ptr_history->prev_history;
if (gui_current_window->ptr_history)
gui_current_window->input_buffer_size =
strlen (gui_current_window->ptr_history->text);
gui_current_view->ptr_history =
gui_current_view->ptr_history->prev_history;
if (gui_current_view->ptr_history)
gui_current_view->input_buffer_size =
strlen (gui_current_view->ptr_history->text);
else
gui_current_window->input_buffer_size = 0;
gui_optimize_input_buffer_size (gui_current_window);
gui_current_window->input_buffer_pos =
gui_current_window->input_buffer_size;
if (gui_current_window->ptr_history)
strcpy (gui_current_window->input_buffer,
gui_current_window->ptr_history->text);
gui_draw_window_input (gui_current_window);
gui_current_view->input_buffer_size = 0;
gui_optimize_input_buffer_size (gui_current_view);
gui_current_view->input_buffer_pos =
gui_current_view->input_buffer_size;
if (gui_current_view->ptr_history)
strcpy (gui_current_view->input_buffer,
gui_current_view->ptr_history->text);
gui_draw_view_input (gui_current_view);
}
break;
/* cursor left */
case KEY_LEFT:
if (gui_current_window->input_buffer_pos > 0)
if (gui_current_view->input_buffer_pos > 0)
{
gui_current_window->input_buffer_pos--;
gui_draw_window_input (gui_current_window);
gui_current_view->input_buffer_pos--;
gui_draw_view_input (gui_current_view);
}
break;
/* cursor right */
case KEY_RIGHT:
if (gui_current_window->input_buffer_pos <
gui_current_window->input_buffer_size)
if (gui_current_view->input_buffer_pos <
gui_current_view->input_buffer_size)
{
gui_current_window->input_buffer_pos++;
gui_draw_window_input (gui_current_window);
gui_current_view->input_buffer_pos++;
gui_draw_view_input (gui_current_view);
}
break;
/* home key */
case KEY_HOME:
if (gui_current_window->input_buffer_pos > 0)
if (gui_current_view->input_buffer_pos > 0)
{
gui_current_window->input_buffer_pos = 0;
gui_draw_window_input (gui_current_window);
gui_current_view->input_buffer_pos = 0;
gui_draw_view_input (gui_current_view);
}
break;
/* end key */
case KEY_END:
if (gui_current_window->input_buffer_pos <
gui_current_window->input_buffer_size)
if (gui_current_view->input_buffer_pos <
gui_current_view->input_buffer_size)
{
gui_current_window->input_buffer_pos =
gui_current_window->input_buffer_size;
gui_draw_window_input (gui_current_window);
gui_current_view->input_buffer_pos =
gui_current_view->input_buffer_size;
gui_draw_view_input (gui_current_view);
}
break;
/* page up */
@@ -165,21 +165,21 @@ gui_read_keyb ()
/* erase before cursor and move cursor to the left */
case 127:
case KEY_BACKSPACE:
if (gui_current_window->input_buffer_pos > 0)
if (gui_current_view->input_buffer_pos > 0)
{
i = gui_current_window->input_buffer_pos-1;
while (gui_current_window->input_buffer[i])
i = gui_current_view->input_buffer_pos-1;
while (gui_current_view->input_buffer[i])
{
gui_current_window->input_buffer[i] =
gui_current_window->input_buffer[i+1];
gui_current_view->input_buffer[i] =
gui_current_view->input_buffer[i+1];
i++;
}
gui_current_window->input_buffer_size--;
gui_current_window->input_buffer_pos--;
gui_current_window->input_buffer[gui_current_window->input_buffer_size] = '\0';
gui_draw_window_input (gui_current_window);
gui_optimize_input_buffer_size (gui_current_window);
gui_current_window->completion.position = -1;
gui_current_view->input_buffer_size--;
gui_current_view->input_buffer_pos--;
gui_current_view->input_buffer[gui_current_view->input_buffer_size] = '\0';
gui_draw_view_input (gui_current_view);
gui_optimize_input_buffer_size (gui_current_view);
gui_current_view->completion.position = -1;
}
break;
/* Control + Backspace */
@@ -188,93 +188,93 @@ gui_read_keyb ()
break;
/* erase char under cursor */
case KEY_DC:
if (gui_current_window->input_buffer_pos <
gui_current_window->input_buffer_size)
if (gui_current_view->input_buffer_pos <
gui_current_view->input_buffer_size)
{
i = gui_current_window->input_buffer_pos;
while (gui_current_window->input_buffer[i])
i = gui_current_view->input_buffer_pos;
while (gui_current_view->input_buffer[i])
{
gui_current_window->input_buffer[i] =
gui_current_window->input_buffer[i+1];
gui_current_view->input_buffer[i] =
gui_current_view->input_buffer[i+1];
i++;
}
gui_current_window->input_buffer_size--;
gui_current_window->input_buffer[gui_current_window->input_buffer_size] = '\0';
gui_draw_window_input (gui_current_window);
gui_optimize_input_buffer_size (gui_current_window);
gui_current_window->completion.position = -1;
gui_current_view->input_buffer_size--;
gui_current_view->input_buffer[gui_current_view->input_buffer_size] = '\0';
gui_draw_view_input (gui_current_view);
gui_optimize_input_buffer_size (gui_current_view);
gui_current_view->completion.position = -1;
}
break;
/* Tab : completion */
case '\t':
completion_search (&(gui_current_window->completion),
CHANNEL(gui_current_window),
gui_current_window->input_buffer,
gui_current_window->input_buffer_size,
gui_current_window->input_buffer_pos);
if (gui_current_window->completion.word_found)
completion_search (&(gui_current_view->completion),
CHANNEL(gui_current_view),
gui_current_view->input_buffer,
gui_current_view->input_buffer_size,
gui_current_view->input_buffer_pos);
if (gui_current_view->completion.word_found)
{
// replace word with new completed word into input buffer
gui_current_window->input_buffer_size +=
gui_current_window->completion.diff_size;
gui_optimize_input_buffer_size (gui_current_window);
gui_current_window->input_buffer[gui_current_window->input_buffer_size] = '\0';
gui_current_view->input_buffer_size +=
gui_current_view->completion.diff_size;
gui_optimize_input_buffer_size (gui_current_view);
gui_current_view->input_buffer[gui_current_view->input_buffer_size] = '\0';
if (gui_current_window->completion.diff_size > 0)
if (gui_current_view->completion.diff_size > 0)
{
for (i = gui_current_window->input_buffer_size - 1;
i >= gui_current_window->completion.position_replace +
(int)strlen (gui_current_window->completion.word_found); i--)
gui_current_window->input_buffer[i] =
gui_current_window->input_buffer[i -
gui_current_window->completion.diff_size];
for (i = gui_current_view->input_buffer_size - 1;
i >= gui_current_view->completion.position_replace +
(int)strlen (gui_current_view->completion.word_found); i--)
gui_current_view->input_buffer[i] =
gui_current_view->input_buffer[i -
gui_current_view->completion.diff_size];
}
else
{
for (i = gui_current_window->completion.position_replace +
strlen (gui_current_window->completion.word_found);
i < gui_current_window->input_buffer_size; i++)
gui_current_window->input_buffer[i] =
gui_current_window->input_buffer[i -
gui_current_window->completion.diff_size];
for (i = gui_current_view->completion.position_replace +
strlen (gui_current_view->completion.word_found);
i < gui_current_view->input_buffer_size; i++)
gui_current_view->input_buffer[i] =
gui_current_view->input_buffer[i -
gui_current_view->completion.diff_size];
}
strncpy (gui_current_window->input_buffer + gui_current_window->completion.position_replace,
gui_current_window->completion.word_found,
strlen (gui_current_window->completion.word_found));
gui_current_window->input_buffer_pos =
gui_current_window->completion.position_replace +
strlen (gui_current_window->completion.word_found);
gui_current_window->completion.position =
gui_current_window->input_buffer_pos;
strncpy (gui_current_view->input_buffer + gui_current_view->completion.position_replace,
gui_current_view->completion.word_found,
strlen (gui_current_view->completion.word_found));
gui_current_view->input_buffer_pos =
gui_current_view->completion.position_replace +
strlen (gui_current_view->completion.word_found);
gui_current_view->completion.position =
gui_current_view->input_buffer_pos;
/* add space or completor to the end of completion, if needed */
if (gui_current_window->completion.base_word[0] == '/')
if (gui_current_view->completion.base_word[0] == '/')
{
if (gui_current_window->input_buffer[gui_current_window->input_buffer_pos] != ' ')
if (gui_current_view->input_buffer[gui_current_view->input_buffer_pos] != ' ')
gui_buffer_insert_string (" ",
gui_current_window->input_buffer_pos);
gui_current_window->completion.position++;
gui_current_window->input_buffer_pos++;
gui_current_view->input_buffer_pos);
gui_current_view->completion.position++;
gui_current_view->input_buffer_pos++;
}
else
{
if (gui_current_window->completion.base_word_pos == 0)
if (gui_current_view->completion.base_word_pos == 0)
{
if (strncmp (gui_current_window->input_buffer + gui_current_window->input_buffer_pos,
if (strncmp (gui_current_view->input_buffer + gui_current_view->input_buffer_pos,
cfg_look_completor, strlen (cfg_look_completor)) != 0)
gui_buffer_insert_string (cfg_look_completor,
gui_current_window->input_buffer_pos);
gui_current_window->completion.position += strlen (cfg_look_completor);
gui_current_window->input_buffer_pos += strlen (cfg_look_completor);
if (gui_current_window->input_buffer[gui_current_window->input_buffer_pos] != ' ')
gui_current_view->input_buffer_pos);
gui_current_view->completion.position += strlen (cfg_look_completor);
gui_current_view->input_buffer_pos += strlen (cfg_look_completor);
if (gui_current_view->input_buffer[gui_current_view->input_buffer_pos] != ' ')
gui_buffer_insert_string (" ",
gui_current_window->input_buffer_pos);
gui_current_window->completion.position++;
gui_current_window->input_buffer_pos++;
gui_current_view->input_buffer_pos);
gui_current_view->completion.position++;
gui_current_view->input_buffer_pos++;
}
}
gui_draw_window_input (gui_current_window);
gui_draw_view_input (gui_current_view);
}
break;
/* escape code (for control-key) */
@@ -284,10 +284,10 @@ gui_read_keyb ()
switch (key)
{
case KEY_LEFT:
gui_switch_to_previous_window ();
gui_switch_to_previous_view ();
break;
case KEY_RIGHT:
gui_switch_to_next_window ();
gui_switch_to_next_view ();
break;
case 79:
/* TODO: replace 79 by constant name! */
@@ -314,35 +314,35 @@ gui_read_keyb ()
break;
/* send command/message */
case '\n':
if (gui_current_window->input_buffer_size > 0)
if (gui_current_view->input_buffer_size > 0)
{
gui_current_window->input_buffer[gui_current_window->input_buffer_size] = '\0';
history_add (gui_current_window, gui_current_window->input_buffer);
gui_current_window->input_buffer_size = 0;
gui_current_window->input_buffer_pos = 0;
gui_current_window->input_buffer_1st_display = 0;
gui_current_window->completion.position = -1;
gui_current_window->ptr_history = NULL;
ptr_window = gui_current_window;
user_command (SERVER(gui_current_window),
gui_current_window->input_buffer);
if (ptr_window == gui_current_window)
gui_draw_window_input (ptr_window);
if (ptr_window)
ptr_window->input_buffer[0] = '\0';
gui_current_view->input_buffer[gui_current_view->input_buffer_size] = '\0';
history_add (gui_current_view, gui_current_view->input_buffer);
gui_current_view->input_buffer_size = 0;
gui_current_view->input_buffer_pos = 0;
gui_current_view->input_buffer_1st_display = 0;
gui_current_view->completion.position = -1;
gui_current_view->ptr_history = NULL;
ptr_view = gui_current_view;
user_command (SERVER(gui_current_view),
gui_current_view->input_buffer);
if (ptr_view == gui_current_view)
gui_draw_view_input (ptr_view);
if (ptr_view)
ptr_view->input_buffer[0] = '\0';
}
break;
/* other key => add to input buffer */
default:
/*gui_printf (gui_current_window,
/*gui_printf (gui_current_view,
"[Debug] key pressed = %d, as octal: %o\n", key, key);*/
new_char[0] = key;
new_char[1] = '\0';
gui_buffer_insert_string (new_char,
gui_current_window->input_buffer_pos);
gui_current_window->input_buffer_pos++;
gui_draw_window_input (gui_current_window);
gui_current_window->completion.position = -1;
gui_current_view->input_buffer_pos);
gui_current_view->input_buffer_pos++;
gui_draw_view_input (gui_current_view);
gui_current_view->completion.position = -1;
break;
}
}
@@ -374,14 +374,14 @@ gui_main_loop ()
if (local_time->tm_min != old_min)
{
old_min = local_time->tm_min;
gui_redraw_window_infobar (gui_current_window);
gui_redraw_view_infobar (gui_current_view);
}
/* second has changed ? => count down time for infobar, if needed */
if (local_time->tm_sec != old_sec)
{
old_sec = local_time->tm_sec;
/* TODO: manage splitted windows! */
/* TODO: manage splited windows! */
if (gui_infobar && gui_infobar->remaining_time > 0)
{
gui_infobar->remaining_time--;
+257 -208
View File
@@ -41,151 +41,200 @@
int gui_ready; /* = 1 if GUI is initialized */
t_gui_window *gui_windows = NULL; /* pointer to first window */
t_gui_window *last_gui_window = NULL; /* pointer to last window */
t_gui_window *gui_current_window = NULL; /* pointer to current window */
t_gui_view *gui_views = NULL; /* pointer to first view */
t_gui_view *last_gui_view = NULL; /* pointer to last view */
t_gui_view *gui_current_view = NULL; /* pointer to current view */
t_gui_infobar *gui_infobar; /* pointer to infobar content */
/*
* gui_window_new: create a new window
* (TODO: add coordinates and size, for splited windows)
*/
t_gui_window *
gui_window_new (void *server, void *channel, int switch_to_window
/*int x, int y, int width, int height*/)
gui_window_new (int x, int y, int width, int height)
{
t_gui_window *new_window;
t_gui_window *window;
if (gui_windows)
if ((window = (t_gui_window *)(malloc (sizeof (t_gui_window)))))
{
/* use first window if no server was assigned to this window */
if (!SERVER(gui_windows))
{
if (server)
((t_irc_server *)(server))->window = gui_windows;
if (channel)
((t_irc_channel *)(channel))->window = gui_windows;
SERVER(gui_windows) = server;
CHANNEL(gui_windows) = channel;
return gui_windows;
}
}
if ((new_window = (t_gui_window *)(malloc (sizeof (t_gui_window)))))
{
new_window->is_displayed = 0;
window->win_x = x;
window->win_y = y;
window->win_width = width;
window->win_height = height;
/* assign server and channel to window */
SERVER(new_window) = server;
CHANNEL(new_window) = channel;
/* assign window to server and channel */
if (server && !channel)
SERVER(new_window)->window = new_window;
if (channel)
CHANNEL(new_window)->window = new_window;
window->win_chat_x = 0;
window->win_chat_y = 0;
window->win_chat_width = 0;
window->win_chat_height = 0;
window->win_chat_cursor_x = 0;
window->win_chat_cursor_y = 0;
gui_calculate_pos_size (new_window);
window->win_nick_x = 0;
window->win_nick_y = 0;
window->win_nick_width = 0;
window->win_nick_height = 0;
/* init windows */
gui_window_init_subwindows(new_window);
/* init lines */
new_window->lines = NULL;
new_window->last_line = NULL;
new_window->num_lines = 0;
new_window->first_line_displayed = 1;
new_window->sub_lines = 0;
new_window->line_complete = 1;
new_window->unread_data = 0;
/* init input buffer */
new_window->input_buffer_alloc = INPUT_BUFFER_BLOCK_SIZE;
new_window->input_buffer = (char *) malloc (INPUT_BUFFER_BLOCK_SIZE);
new_window->input_buffer[0] = '\0';
new_window->input_buffer_size = 0;
new_window->input_buffer_pos = 0;
new_window->input_buffer_1st_display = 0;
/* init completion */
completion_init (&(new_window->completion));
/* init history */
new_window->history = NULL;
new_window->last_history = NULL;
new_window->ptr_history = NULL;
new_window->num_history = 0;
/* switch to new window */
if (switch_to_window)
gui_switch_to_window (new_window);
/* add window to windows queue */
new_window->prev_window = last_gui_window;
if (gui_windows)
last_gui_window->next_window = new_window;
else
gui_windows = new_window;
last_gui_window = new_window;
new_window->next_window = NULL;
/* redraw whole screen */
gui_redraw_window (gui_current_window);
window->win_title = NULL;
window->win_chat = NULL;
window->win_nick = NULL;
window->win_status = NULL;
window->win_infobar = NULL;
window->win_input = NULL;
window->textview_chat = NULL;
window->textbuffer_chat = NULL;
window->texttag_chat = NULL;
window->textview_nicklist = NULL;
window->textbuffer_nicklist = NULL;
}
else
return NULL;
return new_window;
return window;
}
/*
* gui_window_clear: clear window content
* gui_view_new: create a new view in current window
*/
t_gui_view *
gui_view_new (t_gui_window *window, void *server, void *channel, int switch_to_view)
{
t_gui_view *new_view;
if (gui_views)
{
/* use first view if no server was assigned to this view */
if (!SERVER(gui_views))
{
if (server)
((t_irc_server *)(server))->view = gui_views;
if (channel)
((t_irc_channel *)(channel))->view = gui_views;
SERVER(gui_views) = server;
CHANNEL(gui_views) = channel;
return gui_views;
}
}
if ((new_view = (t_gui_view *)(malloc (sizeof (t_gui_view)))))
{
new_view->is_displayed = 0;
/* assign server and channel to view */
SERVER(new_view) = server;
CHANNEL(new_view) = channel;
/* assign view to server and channel */
if (server && !channel)
SERVER(new_view)->view = new_view;
if (channel)
CHANNEL(new_view)->view = new_view;
new_view->window = window;
gui_calculate_pos_size (new_view);
/* init views */
gui_view_init_subviews(new_view);
/* init lines */
new_view->lines = NULL;
new_view->last_line = NULL;
new_view->num_lines = 0;
new_view->first_line_displayed = 1;
new_view->sub_lines = 0;
new_view->line_complete = 1;
new_view->unread_data = 0;
/* init input buffer */
new_view->input_buffer_alloc = INPUT_BUFFER_BLOCK_SIZE;
new_view->input_buffer = (char *) malloc (INPUT_BUFFER_BLOCK_SIZE);
new_view->input_buffer[0] = '\0';
new_view->input_buffer_size = 0;
new_view->input_buffer_pos = 0;
new_view->input_buffer_1st_display = 0;
/* init completion */
completion_init (&(new_view->completion));
/* init history */
new_view->history = NULL;
new_view->last_history = NULL;
new_view->ptr_history = NULL;
new_view->num_history = 0;
/* switch to new view */
if (switch_to_view)
gui_switch_to_view (new_view);
/* add view to views queue */
new_view->prev_view = last_gui_view;
if (gui_views)
last_gui_view->next_view = new_view;
else
gui_views = new_view;
last_gui_view = new_view;
new_view->next_view = NULL;
/* redraw whole screen */
/* TODO: manage splited windows */
gui_redraw_view (gui_current_view);
}
else
return NULL;
return new_view;
}
/*
* gui_view_clear: clear view content
*/
void
gui_window_clear (t_gui_window *window)
gui_view_clear (t_gui_view *view)
{
t_gui_line *ptr_line;
t_gui_message *ptr_message;
while (window->lines)
while (view->lines)
{
ptr_line = window->lines->next_line;
while (window->lines->messages)
ptr_line = view->lines->next_line;
while (view->lines->messages)
{
ptr_message = window->lines->messages->next_message;
if (window->lines->messages->message)
free (window->lines->messages->message);
free (window->lines->messages);
window->lines->messages = ptr_message;
ptr_message = view->lines->messages->next_message;
if (view->lines->messages->message)
free (view->lines->messages->message);
free (view->lines->messages);
view->lines->messages = ptr_message;
}
free (window->lines);
window->lines = ptr_line;
free (view->lines);
view->lines = ptr_line;
}
window->lines = NULL;
window->last_line = NULL;
window->num_lines = 0;
window->first_line_displayed = 1;
window->sub_lines = 0;
window->line_complete = 1;
window->unread_data = 0;
view->lines = NULL;
view->last_line = NULL;
view->num_lines = 0;
view->first_line_displayed = 1;
view->sub_lines = 0;
view->line_complete = 1;
view->unread_data = 0;
if (window == gui_current_window)
gui_redraw_window_chat (window);
if (view == gui_current_view)
gui_redraw_view_chat (view);
}
/*
* gui_window_clear_all: clear all windows content
* gui_view_clear_all: clear all views content
*/
void
gui_window_clear_all ()
gui_view_clear_all ()
{
t_gui_window *ptr_win;
t_gui_view *ptr_view;
for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window)
gui_window_clear (ptr_win);
for (ptr_view = gui_views; ptr_view; ptr_view = ptr_view->next_view)
gui_view_clear (ptr_view);
}
/*
@@ -215,8 +264,8 @@ gui_infobar_printf (int time_displayed, int color, char *message, ...)
ptr_infobar->remaining_time = (time_displayed <= 0) ? -1 : time_displayed;
ptr_infobar->next_infobar = gui_infobar;
gui_infobar = ptr_infobar;
/* TODO: manage splitted windows! */
gui_redraw_window_infobar (gui_current_window);
/* TODO: manage splited windows! */
gui_redraw_view_infobar (gui_current_view);
}
else
wee_log_printf (_("%s not enough memory for infobar message\n"),
@@ -239,13 +288,13 @@ gui_infobar_remove ()
free (gui_infobar->text);
free (gui_infobar);
gui_infobar = new_infobar;
/* TODO: manage splitted windows! */
gui_redraw_window_infobar (gui_current_window);
/* TODO: manage splited windows! */
gui_redraw_view_infobar (gui_current_view);
}
}
/*
* gui_line_free: delete a line from a window
* gui_line_free: delete a line from a view
*/
void
@@ -265,57 +314,57 @@ gui_line_free (t_gui_line *line)
}
/*
* gui_window_free: delete a window
* gui_view_free: delete a view
*/
void
gui_window_free (t_gui_window *window)
gui_view_free (t_gui_view *view)
{
t_gui_line *ptr_line;
int create_new;
create_new = (window->server || window->channel);
create_new = (view->server || view->channel);
/* TODO: manage splitted windows! */
if ((window == gui_current_window) &&
((window->next_window) || (window->prev_window)))
gui_switch_to_previous_window ();
/* TODO: manage splited windows! */
if ((view == gui_current_view) &&
((view->next_view) || (view->prev_view)))
gui_switch_to_previous_view ();
/* free lines and messages */
while (window->lines)
while (view->lines)
{
ptr_line = window->lines->next_line;
gui_line_free (window->lines);
window->lines = ptr_line;
ptr_line = view->lines->next_line;
gui_line_free (view->lines);
view->lines = ptr_line;
}
if (window->input_buffer)
free (window->input_buffer);
if (view->input_buffer)
free (view->input_buffer);
completion_free (&(window->completion));
completion_free (&(view->completion));
/* remove window from windows list */
if (window->prev_window)
window->prev_window->next_window = window->next_window;
if (window->next_window)
window->next_window->prev_window = window->prev_window;
if (gui_windows == window)
gui_windows = window->next_window;
if (last_gui_window == window)
last_gui_window = window->prev_window;
/* remove view from views list */
if (view->prev_view)
view->prev_view->next_view = view->next_view;
if (view->next_view)
view->next_view->prev_view = view->prev_view;
if (gui_views == view)
gui_views = view->next_view;
if (last_gui_view == view)
last_gui_view = view->prev_view;
free (window);
free (view);
/* always at least one window */
if (!gui_windows && create_new)
(void) gui_window_new (NULL, NULL, 1);
/* always at least one view */
if (!gui_views && create_new)
(void) gui_view_new (gui_windows, NULL, NULL, 1);
}
/*
* gui_new_line: create new line for a window
* gui_new_line: create new line for a view
*/
t_gui_line *
gui_new_line (t_gui_window *window)
gui_new_line (t_gui_view *view)
{
t_gui_line *new_line, *ptr_line;
@@ -326,14 +375,14 @@ gui_new_line (t_gui_window *window)
new_line->line_with_message = 0;
new_line->messages = NULL;
new_line->last_message = NULL;
if (!window->lines)
window->lines = new_line;
if (!view->lines)
view->lines = new_line;
else
window->last_line->next_line = new_line;
new_line->prev_line = window->last_line;
view->last_line->next_line = new_line;
new_line->prev_line = view->last_line;
new_line->next_line = NULL;
window->last_line = new_line;
window->num_lines++;
view->last_line = new_line;
view->num_lines++;
}
else
{
@@ -343,40 +392,40 @@ gui_new_line (t_gui_window *window)
/* remove one line if necessary */
if ((cfg_history_max_lines > 0)
&& (window->num_lines > cfg_history_max_lines))
&& (view->num_lines > cfg_history_max_lines))
{
if (window->last_line == window->lines)
window->last_line = NULL;
ptr_line = window->lines->next_line;
gui_line_free (window->lines);
window->lines = ptr_line;
if (view->last_line == view->lines)
view->last_line = NULL;
ptr_line = view->lines->next_line;
gui_line_free (view->lines);
view->lines = ptr_line;
ptr_line->prev_line = NULL;
window->num_lines--;
if (window->first_line_displayed)
gui_redraw_window_chat (window);
view->num_lines--;
if (view->first_line_displayed)
gui_redraw_view_chat (view);
}
return new_line;
}
/*
* gui_new_message: create a new message for last line of window
* gui_new_message: create a new message for last line of a view
*/
t_gui_message *
gui_new_message (t_gui_window *window)
gui_new_message (t_gui_view *view)
{
t_gui_message *new_message;
if ((new_message = (t_gui_message *) malloc (sizeof (struct t_gui_message))))
{
if (!window->last_line->messages)
window->last_line->messages = new_message;
if (!view->last_line->messages)
view->last_line->messages = new_message;
else
window->last_line->last_message->next_message = new_message;
new_message->prev_message = window->last_line->last_message;
view->last_line->last_message->next_message = new_message;
new_message->prev_message = view->last_line->last_message;
new_message->next_message = NULL;
window->last_line->last_message = new_message;
view->last_line->last_message = new_message;
}
else
{
@@ -392,16 +441,16 @@ gui_new_message (t_gui_window *window)
*/
void
gui_optimize_input_buffer_size (t_gui_window *window)
gui_optimize_input_buffer_size (t_gui_view *view)
{
int optimal_size;
optimal_size = ((window->input_buffer_size / INPUT_BUFFER_BLOCK_SIZE) *
optimal_size = ((view->input_buffer_size / INPUT_BUFFER_BLOCK_SIZE) *
INPUT_BUFFER_BLOCK_SIZE) + INPUT_BUFFER_BLOCK_SIZE;
if (window->input_buffer_alloc != optimal_size)
if (view->input_buffer_alloc != optimal_size)
{
window->input_buffer_alloc = optimal_size;
window->input_buffer = realloc (window->input_buffer, optimal_size);
view->input_buffer_alloc = optimal_size;
view->input_buffer = realloc (view->input_buffer, optimal_size);
}
}
@@ -414,21 +463,21 @@ gui_delete_previous_word ()
{
int i, j, num_char_deleted, num_char_end;
if (gui_current_window->input_buffer_pos > 0)
if (gui_current_view->input_buffer_pos > 0)
{
i = gui_current_window->input_buffer_pos - 1;
i = gui_current_view->input_buffer_pos - 1;
while ((i >= 0) &&
(gui_current_window->input_buffer[i] == ' '))
(gui_current_view->input_buffer[i] == ' '))
i--;
if (i >= 0)
{
while ((i >= 0) &&
(gui_current_window->input_buffer[i] != ' '))
(gui_current_view->input_buffer[i] != ' '))
i--;
if (i >= 0)
{
while ((i >= 0) &&
(gui_current_window->input_buffer[i] == ' '))
(gui_current_view->input_buffer[i] == ' '))
i--;
}
}
@@ -436,20 +485,20 @@ gui_delete_previous_word ()
if (i >= 0)
i++;
i++;
num_char_deleted = gui_current_window->input_buffer_pos - i;
num_char_end = gui_current_window->input_buffer_size -
gui_current_window->input_buffer_pos;
num_char_deleted = gui_current_view->input_buffer_pos - i;
num_char_end = gui_current_view->input_buffer_size -
gui_current_view->input_buffer_pos;
for (j = 0; j < num_char_end; j++)
gui_current_window->input_buffer[i + j] =
gui_current_window->input_buffer[gui_current_window->input_buffer_pos + j];
gui_current_view->input_buffer[i + j] =
gui_current_view->input_buffer[gui_current_view->input_buffer_pos + j];
gui_current_window->input_buffer_size -= num_char_deleted;
gui_current_window->input_buffer[gui_current_window->input_buffer_size] = '\0';
gui_current_window->input_buffer_pos = i;
gui_draw_window_input (gui_current_window);
gui_optimize_input_buffer_size (gui_current_window);
gui_current_window->completion.position = -1;
gui_current_view->input_buffer_size -= num_char_deleted;
gui_current_view->input_buffer[gui_current_view->input_buffer_size] = '\0';
gui_current_view->input_buffer_pos = i;
gui_draw_view_input (gui_current_view);
gui_optimize_input_buffer_size (gui_current_view);
gui_current_view->completion.position = -1;
}
}
@@ -462,22 +511,22 @@ gui_move_previous_word ()
{
int i;
if (gui_current_window->input_buffer_pos > 0)
if (gui_current_view->input_buffer_pos > 0)
{
i = gui_current_window->input_buffer_pos - 1;
i = gui_current_view->input_buffer_pos - 1;
while ((i >= 0) &&
(gui_current_window->input_buffer[i] == ' '))
(gui_current_view->input_buffer[i] == ' '))
i--;
if (i < 0)
gui_current_window->input_buffer_pos = 0;
gui_current_view->input_buffer_pos = 0;
else
{
while ((i >= 0) &&
(gui_current_window->input_buffer[i] != ' '))
(gui_current_view->input_buffer[i] != ' '))
i--;
gui_current_window->input_buffer_pos = i + 1;
gui_current_view->input_buffer_pos = i + 1;
}
gui_draw_window_input (gui_current_window);
gui_draw_view_input (gui_current_view);
}
}
@@ -490,28 +539,28 @@ gui_move_next_word ()
{
int i;
if (gui_current_window->input_buffer_pos <
gui_current_window->input_buffer_size + 1)
if (gui_current_view->input_buffer_pos <
gui_current_view->input_buffer_size + 1)
{
i = gui_current_window->input_buffer_pos;
while ((i <= gui_current_window->input_buffer_size) &&
(gui_current_window->input_buffer[i] == ' '))
i = gui_current_view->input_buffer_pos;
while ((i <= gui_current_view->input_buffer_size) &&
(gui_current_view->input_buffer[i] == ' '))
i++;
if (i > gui_current_window->input_buffer_size)
gui_current_window->input_buffer_pos = i - 1;
if (i > gui_current_view->input_buffer_size)
gui_current_view->input_buffer_pos = i - 1;
else
{
while ((i <= gui_current_window->input_buffer_size) &&
(gui_current_window->input_buffer[i] != ' '))
while ((i <= gui_current_view->input_buffer_size) &&
(gui_current_view->input_buffer[i] != ' '))
i++;
if (i > gui_current_window->input_buffer_size)
gui_current_window->input_buffer_pos =
gui_current_window->input_buffer_size;
if (i > gui_current_view->input_buffer_size)
gui_current_view->input_buffer_pos =
gui_current_view->input_buffer_size;
else
gui_current_window->input_buffer_pos = i;
gui_current_view->input_buffer_pos = i;
}
gui_draw_window_input (gui_current_window);
gui_draw_view_input (gui_current_view);
}
}
@@ -527,17 +576,17 @@ gui_buffer_insert_string (char *string, int pos)
length = strlen (string);
/* increase buffer size */
gui_current_window->input_buffer_size += length;
gui_optimize_input_buffer_size (gui_current_window);
gui_current_window->input_buffer[gui_current_window->input_buffer_size] = '\0';
gui_current_view->input_buffer_size += length;
gui_optimize_input_buffer_size (gui_current_view);
gui_current_view->input_buffer[gui_current_view->input_buffer_size] = '\0';
/* move end of string to the right */
start = pos + length;
end = gui_current_window->input_buffer_size - 1;
end = gui_current_view->input_buffer_size - 1;
for (i = end; i >= start; i--)
gui_current_window->input_buffer[i] =
gui_current_window->input_buffer[i - length];
gui_current_view->input_buffer[i] =
gui_current_view->input_buffer[i - length];
/* insert new string */
strncpy (gui_current_window->input_buffer + pos, string, length);
strncpy (gui_current_view->input_buffer + pos, string, length);
}
+59 -47
View File
@@ -59,23 +59,23 @@
#define COLOR_WIN_NICK_LAST 38
#define COLOR_WIN_NICK_NUMBER (COLOR_WIN_NICK_LAST - COLOR_WIN_NICK_FIRST + 1)
#define SERVER(window) ((t_irc_server *)(window->server))
#define CHANNEL(window) ((t_irc_channel *)(window->channel))
#define SERVER(view) ((t_irc_server *)(view->server))
#define CHANNEL(view) ((t_irc_channel *)(view->channel))
#define WIN_IS_SERVER(window) (SERVER(window) && !CHANNEL(window))
#define WIN_IS_CHANNEL(window) (CHANNEL(window) && (CHANNEL(window)->type == CHAT_CHANNEL))
#define WIN_IS_PRIVATE(window) (CHANNEL(window) && (CHANNEL(window)->type == CHAT_PRIVATE))
#define VIEW_IS_SERVER(view) (SERVER(view) && !CHANNEL(view))
#define VIEW_IS_CHANNEL(view) (CHANNEL(view) && (CHANNEL(view)->type == CHAT_CHANNEL))
#define VIEW_IS_PRIVATE(view) (CHANNEL(view) && (CHANNEL(view)->type == CHAT_PRIVATE))
#define MSG_TYPE_TIME 0
#define MSG_TYPE_NICK 1
#define MSG_TYPE_INFO 2
#define MSG_TYPE_MSG 3
#define gui_printf_color(window, color, fmt, argz...) \
gui_printf_color_type(window, MSG_TYPE_INFO, color, fmt, ##argz)
#define gui_printf_color(view, color, fmt, argz...) \
gui_printf_color_type(view, MSG_TYPE_INFO, color, fmt, ##argz)
#define gui_printf(window, fmt, argz...) \
gui_printf_color_type(window, MSG_TYPE_INFO, -1, fmt, ##argz)
#define gui_printf(view, fmt, argz...) \
gui_printf_color_type(view, MSG_TYPE_INFO, -1, fmt, ##argz)
typedef struct t_gui_message t_gui_message;
@@ -125,12 +125,6 @@ typedef struct t_gui_window t_gui_window;
struct t_gui_window
{
int is_displayed; /* = 1 if window is displayed */
/* server/channel */
void *server; /* window's server */
void *channel; /* window's channel */
/* global position & size */
int win_x, win_y; /* position of window */
int win_width, win_height; /* window geometry */
@@ -149,7 +143,7 @@ struct t_gui_window
/* windows for Curses GUI */
void *win_title; /* title window */
void *win_chat; /* chat window (exemple: channel) */
void *win_chat; /* chat window (example: channel) */
void *win_nick; /* nick window */
void *win_status; /* status window */
void *win_infobar; /* info bar window */
@@ -165,6 +159,22 @@ struct t_gui_window
/* windows for Qt GUI */
/* TODO: declare Qt window */
t_gui_window *prev_window; /* link to previous window */
t_gui_window *next_window; /* link to next window */
};
typedef struct t_gui_view t_gui_view;
struct t_gui_view
{
int is_displayed; /* = 1 if view is displayed */
/* server/channel */
void *server; /* view's server */
void *channel; /* view's channel */
t_gui_window *window; /* Curses or Gtk window */
/* chat content (lines, line is composed by many messages) */
t_gui_line *lines; /* lines of chat window */
t_gui_line *last_line; /* last line of chat window */
@@ -191,29 +201,31 @@ struct t_gui_window
int num_history; /* number of commands in history */
/* link to next window */
t_gui_window *prev_window; /* link to previous window */
t_gui_window *next_window; /* link to next window */
t_gui_view *prev_view; /* link to previous view */
t_gui_view *next_view; /* link to next view */
};
/* variables */
extern int gui_ready;
extern t_gui_window *gui_windows;
extern t_gui_window *last_gui_window;
extern t_gui_window *gui_current_window;
extern t_gui_view *gui_views;
extern t_gui_view *last_gui_view;
extern t_gui_view *gui_current_view;
extern t_gui_infobar *gui_infobar;
/* prototypes */
/* GUI independent functions */
extern t_gui_window *gui_window_new (/*@null@*/ void *, /*@null@*/ void *, int /*int, int, int, int*/); /* TODO: add coordinates and size */
extern void gui_window_clear (t_gui_window *);
extern void gui_window_clear_all ();
extern t_gui_window *gui_window_new (int, int, int, int);
extern t_gui_view *gui_view_new (t_gui_window *, void *, void *, int);
extern void gui_view_clear (t_gui_view *);
extern void gui_view_clear_all ();
extern void gui_infobar_printf (int, int, char *, ...);
extern void gui_infobar_remove ();
extern t_gui_line *gui_new_line (t_gui_window *);
extern t_gui_message *gui_new_message (t_gui_window *);
extern void gui_optimize_input_buffer_size (t_gui_window *);
extern t_gui_line *gui_new_line (t_gui_view *);
extern t_gui_message *gui_new_message (t_gui_view *);
extern void gui_optimize_input_buffer_size (t_gui_view *);
extern void gui_delete_previous_word ();
extern void gui_move_previous_word ();
extern void gui_move_next_word ();
@@ -222,34 +234,34 @@ extern void gui_buffer_insert_string (char *, int);
extern int gui_assign_color (int *, char *);
extern int gui_get_color_by_name (char *);
extern char *gui_get_color_by_value (int);
extern int gui_window_has_nicklist (t_gui_window *);
extern void gui_calculate_pos_size (t_gui_window *);
extern void gui_draw_window_title (t_gui_window *);
extern void gui_redraw_window_title (t_gui_window *);
extern void gui_draw_window_chat (t_gui_window *);
extern void gui_redraw_window_chat (t_gui_window *);
extern void gui_draw_window_nick (t_gui_window *);
extern void gui_redraw_window_nick (t_gui_window *);
extern void gui_draw_window_status (t_gui_window *);
extern void gui_redraw_window_status (t_gui_window *);
extern void gui_draw_window_infobar (t_gui_window *);
extern void gui_redraw_window_infobar (t_gui_window *);
extern void gui_draw_window_input (t_gui_window *);
extern void gui_redraw_window_input (t_gui_window *);
extern void gui_redraw_window (t_gui_window *);
extern void gui_switch_to_window (t_gui_window *);
extern void gui_switch_to_previous_window ();
extern void gui_switch_to_next_window ();
extern int gui_view_has_nicklist (t_gui_view *);
extern void gui_calculate_pos_size (t_gui_view *);
extern void gui_draw_view_title (t_gui_view *);
extern void gui_redraw_view_title (t_gui_view *);
extern void gui_draw_view_chat (t_gui_view *);
extern void gui_redraw_view_chat (t_gui_view *);
extern void gui_draw_view_nick (t_gui_view *);
extern void gui_redraw_view_nick (t_gui_view *);
extern void gui_draw_view_status (t_gui_view *);
extern void gui_redraw_view_status (t_gui_view *);
extern void gui_draw_view_infobar (t_gui_view *);
extern void gui_redraw_view_infobar (t_gui_view *);
extern void gui_draw_view_input (t_gui_view *);
extern void gui_redraw_view_input (t_gui_view *);
extern void gui_redraw_view (t_gui_view *);
extern void gui_switch_to_view (t_gui_view *);
extern void gui_switch_to_previous_view ();
extern void gui_switch_to_next_view ();
extern void gui_move_page_up ();
extern void gui_move_page_down ();
extern void gui_window_init_subwindows (t_gui_window *);
extern void gui_view_init_subviews (t_gui_view *);
extern void gui_pre_init (int *, char **[]);
extern void gui_init_colors ();
extern void gui_set_window_title ();
extern void gui_init ();
extern void gui_window_free (t_gui_window *);
extern void gui_view_free (t_gui_view *);
extern void gui_end ();
extern void gui_printf_color_type (/*@null@*/ t_gui_window *, int, int, char *, ...);
extern void gui_printf_color_type (/*@null@*/ t_gui_view *, int, int, char *, ...);
extern void gui_main_loop ();
#endif /* gui.h */
+2 -2
View File
@@ -41,7 +41,7 @@ char *channel_modes = "iklmnst";
t_irc_channel *
channel_new (t_irc_server *server, int channel_type, char *channel_name,
int switch_to_window)
int switch_to_view)
{
t_irc_channel *new_channel;
@@ -72,7 +72,7 @@ channel_new (t_irc_server *server, int channel_type, char *channel_name,
server->channels = new_channel;
server->last_channel = new_channel;
gui_window_new (server, new_channel, switch_to_window);
gui_view_new (gui_current_view->window, server, new_channel, switch_to_view);
/* all is ok, return address of new channel */
return new_channel;
+25 -25
View File
@@ -41,16 +41,16 @@
*/
void
irc_display_prefix (t_gui_window *window, char *prefix)
irc_display_prefix (t_gui_view *view, char *prefix)
{
if (prefix[0] == prefix[2])
{
gui_printf_color (window, COLOR_WIN_CHAT_PREFIX1, "%c", prefix[0]);
gui_printf_color (window, COLOR_WIN_CHAT_PREFIX2, "%c", prefix[1]);
gui_printf_color (window, COLOR_WIN_CHAT_PREFIX1, "%c ", prefix[2]);
gui_printf_color (view, COLOR_WIN_CHAT_PREFIX1, "%c", prefix[0]);
gui_printf_color (view, COLOR_WIN_CHAT_PREFIX2, "%c", prefix[1]);
gui_printf_color (view, COLOR_WIN_CHAT_PREFIX1, "%c ", prefix[2]);
}
else
gui_printf_color (window, COLOR_WIN_CHAT_PREFIX1, "%s ", prefix);
gui_printf_color (view, COLOR_WIN_CHAT_PREFIX1, "%s ", prefix);
}
/*
@@ -59,45 +59,45 @@ irc_display_prefix (t_gui_window *window, char *prefix)
*/
void
irc_display_nick (t_gui_window *window, t_irc_nick *nick, int message_type,
irc_display_nick (t_gui_view *view, t_irc_nick *nick, int message_type,
int display_around, int color_nick, int no_nickmode)
{
if (display_around)
gui_printf_color_type (window,
gui_printf_color_type (view,
message_type, COLOR_WIN_CHAT_DARK, "<");
if (cfg_look_nickmode)
{
if (nick->is_op)
gui_printf_color_type (window,
gui_printf_color_type (view,
message_type,
COLOR_WIN_NICK_OP, "@");
else
{
if (nick->is_halfop)
gui_printf_color_type (window,
gui_printf_color_type (view,
message_type,
COLOR_WIN_NICK_HALFOP, "%%");
else
{
if (nick->has_voice)
gui_printf_color_type (window,
gui_printf_color_type (view,
message_type,
COLOR_WIN_NICK_VOICE, "+");
else
if (cfg_look_nickmode_empty && !no_nickmode)
gui_printf_color_type (window,
gui_printf_color_type (view,
message_type,
COLOR_WIN_CHAT, " ");
}
}
}
if (color_nick < 0)
gui_printf_color_type (window,
gui_printf_color_type (view,
message_type,
COLOR_WIN_CHAT_HIGHLIGHT,
"%s", nick->nick);
else
gui_printf_color_type (window,
gui_printf_color_type (view,
message_type,
(color_nick) ?
((cfg_look_color_nicks) ?
@@ -106,7 +106,7 @@ irc_display_nick (t_gui_window *window, t_irc_nick *nick, int message_type,
"%s", nick->nick);
if (display_around)
gui_printf_color_type (window,
gui_printf_color_type (view,
message_type, COLOR_WIN_CHAT_DARK, "> ");
}
@@ -115,21 +115,21 @@ irc_display_nick (t_gui_window *window, t_irc_nick *nick, int message_type,
*/
void
irc_display_mode (t_gui_window *window, char *channel_name, char set_flag,
irc_display_mode (t_gui_view *view, char *channel_name, char set_flag,
char *symbol, char *nick_host, char *message, char *param)
{
irc_display_prefix (window, PREFIX_INFO);
gui_printf_color (window, COLOR_WIN_CHAT_DARK, "[");
gui_printf_color (window, COLOR_WIN_CHAT_CHANNEL, "%s", channel_name);
gui_printf_color (window, COLOR_WIN_CHAT, "/");
gui_printf_color (window, COLOR_WIN_CHAT_CHANNEL, "%c%s", set_flag, symbol);
gui_printf_color (window, COLOR_WIN_CHAT_DARK, "] ");
gui_printf_color (window, COLOR_WIN_CHAT_NICK, "%s", nick_host);
irc_display_prefix (view, PREFIX_INFO);
gui_printf_color (view, COLOR_WIN_CHAT_DARK, "[");
gui_printf_color (view, COLOR_WIN_CHAT_CHANNEL, "%s", channel_name);
gui_printf_color (view, COLOR_WIN_CHAT, "/");
gui_printf_color (view, COLOR_WIN_CHAT_CHANNEL, "%c%s", set_flag, symbol);
gui_printf_color (view, COLOR_WIN_CHAT_DARK, "] ");
gui_printf_color (view, COLOR_WIN_CHAT_NICK, "%s", nick_host);
if (param)
{
gui_printf_color (window, COLOR_WIN_CHAT, " %s ", message);
gui_printf_color (window, COLOR_WIN_CHAT_NICK, "%s\n", param);
gui_printf_color (view, COLOR_WIN_CHAT, " %s ", message);
gui_printf_color (view, COLOR_WIN_CHAT_NICK, "%s\n", param);
}
else
gui_printf_color (window, COLOR_WIN_CHAT, " %s\n", message);
gui_printf_color (view, COLOR_WIN_CHAT, " %s\n", message);
}
+2 -2
View File
@@ -182,7 +182,7 @@ nick_new (t_irc_channel *channel, char *nick_name,
/* alloc memory for new nick */
if ((new_nick = (t_irc_nick *) malloc (sizeof (t_irc_nick))) == NULL)
{
gui_printf (channel->window,
gui_printf (channel->view,
_("%s cannot allocate new nick\n"), WEECHAT_ERROR);
return NULL;
}
@@ -192,7 +192,7 @@ nick_new (t_irc_channel *channel, char *nick_name,
new_nick->is_op = is_op;
new_nick->is_halfop = is_halfop;
new_nick->has_voice = has_voice;
if (strcasecmp (new_nick->nick, SERVER(channel->window)->nick) == 0)
if (strcasecmp (new_nick->nick, SERVER(channel->view)->nick) == 0)
new_nick->color = COLOR_WIN_NICK_SELF;
else
new_nick->color = nick_find_color (channel);
+307 -307
View File
File diff suppressed because it is too large Load Diff
+65 -65
View File
@@ -56,7 +56,7 @@ irc_login (t_irc_server *server)
hostname[sizeof (hostname) - 1] = '\0';
if (!hostname[0])
strcpy (hostname, _("unknown"));
gui_printf (server->window,
gui_printf (server->view,
_("%s: using local hostname \"%s\"\n"),
PACKAGE_NAME, hostname);
server_sendf (server,
@@ -198,15 +198,15 @@ irc_cmd_send_deop (t_irc_server *server, int argc, char **argv)
{
int i;
if (WIN_IS_CHANNEL(gui_current_window))
if (VIEW_IS_CHANNEL(gui_current_view))
{
for (i = 0; i < argc; i++)
server_sendf (server, "MODE %s -o %s\r\n",
CHANNEL(gui_current_window)->name,
CHANNEL(gui_current_view)->name,
argv[i]);
}
else
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can only be executed in a channel window\n"),
WEECHAT_ERROR, "deop");
return 0;
@@ -221,16 +221,16 @@ irc_cmd_send_devoice (t_irc_server *server, int argc, char **argv)
{
int i;
if (WIN_IS_CHANNEL(gui_current_window))
if (VIEW_IS_CHANNEL(gui_current_view))
{
for (i = 0; i < argc; i++)
server_sendf (server, "MODE %s -v %s\r\n",
CHANNEL(gui_current_window)->name,
CHANNEL(gui_current_view)->name,
argv[i]);
}
else
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can only be executed in a channel window\n"),
WEECHAT_ERROR, "devoice");
return -1;
@@ -310,15 +310,15 @@ irc_cmd_send_kick (t_irc_server *server, char *arguments)
server_sendf (server, "KICK %s\r\n", arguments);
else
{
if (WIN_IS_CHANNEL (gui_current_window))
if (VIEW_IS_CHANNEL (gui_current_view))
{
server_sendf (server,
"KICK %s %s\r\n",
CHANNEL(gui_current_window)->name, arguments);
CHANNEL(gui_current_view)->name, arguments);
}
else
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can only be executed in a channel window\n"),
WEECHAT_ERROR, "kick");
return -1;
@@ -388,19 +388,19 @@ irc_cmd_send_lusers (t_irc_server *server, char *arguments)
int
irc_cmd_send_me (t_irc_server *server, char *arguments)
{
if (WIN_IS_SERVER(gui_current_window))
if (VIEW_IS_SERVER(gui_current_view))
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can not be executed on a server window\n"),
WEECHAT_ERROR, "me");
return -1;
}
server_sendf (server, "PRIVMSG %s :\01ACTION %s\01\r\n",
CHANNEL(gui_current_window)->name, arguments);
irc_display_prefix (gui_current_window, PREFIX_ACTION_ME);
gui_printf_color (gui_current_window,
CHANNEL(gui_current_view)->name, arguments);
irc_display_prefix (gui_current_view, PREFIX_ACTION_ME);
gui_printf_color (gui_current_view,
COLOR_WIN_CHAT_NICK, "%s", server->nick);
gui_printf_color (gui_current_window,
gui_printf_color (gui_current_view,
COLOR_WIN_CHAT, " %s\n", arguments);
return 0;
}
@@ -459,25 +459,25 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
}
if (strcmp (arguments, "*") == 0)
{
if (WIN_IS_SERVER(gui_current_window))
if (VIEW_IS_SERVER(gui_current_view))
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can not be executed on a server window\n"),
WEECHAT_ERROR, "msg *");
return -1;
}
ptr_channel = CHANNEL(gui_current_window);
ptr_channel = CHANNEL(gui_current_view);
ptr_nick = nick_search (ptr_channel, server->nick);
if (ptr_nick)
{
irc_display_nick (ptr_channel->window, ptr_nick,
irc_display_nick (ptr_channel->view, ptr_nick,
MSG_TYPE_NICK, 1, 1, 0);
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_MSG,
COLOR_WIN_CHAT, "%s\n", pos);
}
else
gui_printf (server->window,
gui_printf (server->view,
_("%s nick not found for \"%s\" command\n"),
WEECHAT_ERROR, "msg");
server_sendf (server, "PRIVMSG %s :%s\r\n", ptr_channel->name, pos);
@@ -492,14 +492,14 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
ptr_nick = nick_search (ptr_channel, server->nick);
if (ptr_nick)
{
irc_display_nick (ptr_channel->window, ptr_nick,
irc_display_nick (ptr_channel->view, ptr_nick,
MSG_TYPE_NICK, 1, 1, 0);
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_MSG,
COLOR_WIN_CHAT, "%s\n", pos);
}
else
gui_printf (server->window,
gui_printf (server->view,
_("%s nick not found for \"%s\" command\n"),
WEECHAT_ERROR, "msg");
}
@@ -513,26 +513,26 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
ptr_channel = channel_new (server, CHAT_PRIVATE, arguments, 1);
if (!ptr_channel)
{
gui_printf (server->window,
gui_printf (server->view,
_("%s cannot create new private window \"%s\"\n"),
WEECHAT_ERROR,
arguments);
return -1;
}
gui_redraw_window_title (ptr_channel->window);
gui_redraw_view_title (ptr_channel->view);
}
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_NICK,
COLOR_WIN_CHAT_DARK, "<");
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_NICK,
COLOR_WIN_NICK_SELF,
"%s", server->nick);
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_NICK,
COLOR_WIN_CHAT_DARK, "> ");
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_MSG,
COLOR_WIN_CHAT, "%s\n", pos);
server_sendf (server, "PRIVMSG %s :%s\r\n", arguments, pos);
@@ -543,7 +543,7 @@ irc_cmd_send_msg (t_irc_server *server, char *arguments)
}
else
{
gui_printf (server->window,
gui_printf (server->view,
_("%s wrong argument count for \"%s\" command\n"),
WEECHAT_ERROR, "msg");
return -1;
@@ -562,16 +562,16 @@ irc_cmd_send_names (t_irc_server *server, char *arguments)
server_sendf (server, "NAMES %s\r\n", arguments);
else
{
if (!WIN_IS_CHANNEL(gui_current_window))
if (!VIEW_IS_CHANNEL(gui_current_view))
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can only be executed in a channel window\n"),
WEECHAT_ERROR, "names");
return -1;
}
else
server_sendf (server, "NAMES %s\r\n",
CHANNEL(gui_current_window)->name);
CHANNEL(gui_current_view)->name);
}
return 0;
}
@@ -609,16 +609,16 @@ irc_cmd_send_op (t_irc_server *server, int argc, char **argv)
{
int i;
if (WIN_IS_CHANNEL(gui_current_window))
if (VIEW_IS_CHANNEL(gui_current_view))
{
for (i = 0; i < argc; i++)
server_sendf (server, "MODE %s +o %s\r\n",
CHANNEL(gui_current_window)->name,
CHANNEL(gui_current_view)->name,
argv[i]);
}
else
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can only be executed in a channel window\n"),
WEECHAT_ERROR, "op");
return -1;
@@ -663,36 +663,36 @@ irc_cmd_send_part (t_irc_server *server, char *arguments)
}
else
{
if (WIN_IS_SERVER(gui_current_window))
if (VIEW_IS_SERVER(gui_current_view))
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can not be executed on a server window\n"),
WEECHAT_ERROR, "part");
return -1;
}
channel_name = CHANNEL(gui_current_window)->name;
channel_name = CHANNEL(gui_current_view)->name;
pos_args = arguments;
}
}
else
{
if (WIN_IS_SERVER(gui_current_window))
if (VIEW_IS_SERVER(gui_current_view))
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can not be executed on a server window\n"),
WEECHAT_ERROR, "part");
return -1;
}
if (WIN_IS_PRIVATE(gui_current_window))
if (VIEW_IS_PRIVATE(gui_current_view))
{
ptr_channel = CHANNEL(gui_current_window);
gui_window_free (ptr_channel->window);
ptr_channel = CHANNEL(gui_current_view);
gui_view_free (ptr_channel->view);
channel_free (server, ptr_channel);
gui_redraw_window_status (gui_current_window);
gui_redraw_window_input (gui_current_window);
gui_redraw_view_status (gui_current_view);
gui_redraw_view_input (gui_current_view);
return 0;
}
channel_name = CHANNEL(gui_current_window)->name;
channel_name = CHANNEL(gui_current_view)->name;
pos_args = NULL;
}
@@ -753,29 +753,29 @@ irc_cmd_send_query (t_irc_server *server, char *arguments)
ptr_channel = channel_new (server, CHAT_PRIVATE, arguments, 1);
if (!ptr_channel)
{
gui_printf (server->window,
gui_printf (server->view,
_("%s cannot create new private window \"%s\"\n"),
WEECHAT_ERROR,
arguments);
return -1;
}
gui_redraw_window_title (ptr_channel->window);
gui_redraw_view_title (ptr_channel->view);
}
/* display text if given */
if (pos)
{
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_NICK,
COLOR_WIN_CHAT_DARK, "<");
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_NICK,
COLOR_WIN_NICK_SELF,
"%s", server->nick);
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_NICK,
COLOR_WIN_CHAT_DARK, "> ");
gui_printf_color_type (ptr_channel->window,
gui_printf_color_type (ptr_channel->view,
MSG_TYPE_MSG,
COLOR_WIN_CHAT, "%s\n", pos);
server_sendf (server, "PRIVMSG %s :%s\r\n", arguments, pos);
@@ -970,14 +970,14 @@ irc_cmd_send_topic (t_irc_server *server, char *arguments)
/* look for current channel if not specified */
if (!channel_name)
{
if (WIN_IS_SERVER(gui_current_window))
if (VIEW_IS_SERVER(gui_current_view))
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can not be executed on a server window\n"),
WEECHAT_ERROR, "topic");
return -1;
}
channel_name = CHANNEL(gui_current_window)->name;
channel_name = CHANNEL(gui_current_view)->name;
}
if (new_topic)
@@ -1040,8 +1040,8 @@ irc_cmd_send_version (t_irc_server *server, char *arguments)
{
if (arguments)
{
if (WIN_IS_CHANNEL(gui_current_window) &&
nick_search (CHANNEL(gui_current_window), arguments))
if (VIEW_IS_CHANNEL(gui_current_view) &&
nick_search (CHANNEL(gui_current_view), arguments))
server_sendf (server, "PRIVMSG %s :\01VERSION\01\r\n",
arguments);
else
@@ -1050,8 +1050,8 @@ irc_cmd_send_version (t_irc_server *server, char *arguments)
}
else
{
irc_display_prefix (server->window, PREFIX_INFO);
gui_printf (server->window, _("%s, compiled on %s %s\n"),
irc_display_prefix (server->view, PREFIX_INFO);
gui_printf (server->view, _("%s, compiled on %s %s\n"),
PACKAGE_STRING,
__DATE__, __TIME__);
server_sendf (server, "VERSION\r\n");
@@ -1068,16 +1068,16 @@ irc_cmd_send_voice (t_irc_server *server, int argc, char **argv)
{
int i;
if (WIN_IS_CHANNEL(gui_current_window))
if (VIEW_IS_CHANNEL(gui_current_view))
{
for (i = 0; i < argc; i++)
server_sendf (server, "MODE %s +v %s\r\n",
CHANNEL(gui_current_window)->name,
CHANNEL(gui_current_view)->name,
argv[i]);
}
else
{
gui_printf (server->window,
gui_printf (server->view,
_("%s \"%s\" command can only be executed in a channel window\n"),
WEECHAT_ERROR, "voice");
return -1;
+26 -26
View File
@@ -78,7 +78,7 @@ server_init (t_irc_server *server)
server->is_away = 0;
server->server_read = -1;
server->server_write = -1;
server->window = NULL;
server->view = NULL;
server->channels = NULL;
server->last_channel = NULL;
}
@@ -270,8 +270,8 @@ server_free (t_irc_server *server)
(server->next_server)->prev_server = server->prev_server;
server_destroy (server);
if (server->window)
gui_window_free (server->window);
if (server->view)
gui_view_free (server->view);
free (server);
irc_servers = new_irc_servers;
}
@@ -377,11 +377,11 @@ server_sendf (t_irc_server * server, char *fmt, ...)
size_buf = strlen (buffer);
buffer[size_buf - 2] = '\0';
#ifdef DEBUG
gui_printf (server->window, "[DEBUG] Sending to server >>> %s\n", buffer);
gui_printf (server->view, "[DEBUG] Sending to server >>> %s\n", buffer);
#endif
buffer[size_buf - 2] = '\r';
if (server_send (server, buffer, size_buf) <= 0)
gui_printf (server->window, _("%s error sending data to IRC server\n"),
gui_printf (server->view, _("%s error sending data to IRC server\n"),
WEECHAT_ERROR);
}
@@ -397,7 +397,7 @@ server_msgq_add_msg (t_irc_server *server, char *msg)
message = (t_irc_message *) malloc (sizeof (t_irc_message));
if (!message)
{
gui_printf (server->window,
gui_printf (server->view,
_("%s not enough memory for received IRC message\n"),
WEECHAT_ERROR);
return;
@@ -408,7 +408,7 @@ server_msgq_add_msg (t_irc_server *server, char *msg)
message->data = (char *) malloc (strlen (unterminated_message) +
strlen (msg) + 1);
if (!message->data)
gui_printf (server->window,
gui_printf (server->view,
_("%s not enough memory for received IRC message\n"),
WEECHAT_ERROR);
else
@@ -462,14 +462,14 @@ server_msgq_add_buffer (t_irc_server * server, char *buffer)
(char *) realloc (unterminated_message,
strlen (buffer) + 1);
if (!unterminated_message)
gui_printf (server->window,
gui_printf (server->view,
_("%s not enough memory for received IRC message\n"),
WEECHAT_ERROR);
else
strcpy (unterminated_message, buffer);
return;
}
gui_printf (server->window,
gui_printf (server->view,
_("%s unable to explode received buffer\n"),
WEECHAT_ERROR);
}
@@ -493,7 +493,7 @@ server_msgq_flush ()
if (recv_msgq->data)
{
#ifdef DEBUG
gui_printf (gui_current_window, "[DEBUG] %s\n", recv_msgq->data);
gui_printf (gui_current_view, "[DEBUG] %s\n", recv_msgq->data);
#endif
ptr_data = recv_msgq->data;
@@ -542,15 +542,15 @@ server_msgq_flush ()
command, args))
{
case -1:
gui_printf (recv_msgq->server->window,
gui_printf (recv_msgq->server->view,
_("Command '%s' failed!\n"), command);
break;
case -2:
gui_printf (recv_msgq->server->window,
gui_printf (recv_msgq->server->view,
_("No command to execute!\n"));
break;
case -3:
gui_printf (recv_msgq->server->window,
gui_printf (recv_msgq->server->view,
_("Unknown command: cmd=%s, args=%s\n"),
command, args);
break;
@@ -602,7 +602,7 @@ server_connect (t_irc_server *server)
int error;
int server_pipe[2];
gui_printf (server->window,
gui_printf (server->view,
_("%s: connecting to %s:%d...\n"),
PACKAGE_NAME, server->address, server->port);
wee_log_printf (_("connecting to server %s:%d...\n"),
@@ -612,7 +612,7 @@ server_connect (t_irc_server *server)
/* create pipe */
if (pipe (server_pipe) < 0)
{
gui_printf (server->window,
gui_printf (server->view,
_("%s cannot create pipe\n"), WEECHAT_ERROR);
server_free (server);
return 0;
@@ -626,14 +626,14 @@ server_connect (t_irc_server *server)
if (setsockopt
(server->sock4, SOL_SOCKET, SO_REUSEADDR, (char *) &set,
sizeof (set)) == -1)
gui_printf (server->window,
gui_printf (server->view,
_("%s cannot set socket option \"SO_REUSEADDR\"\n"),
WEECHAT_ERROR);
set = 1;
if (setsockopt
(server->sock4, SOL_SOCKET, SO_KEEPALIVE, (char *) &set,
sizeof (set)) == -1)
gui_printf (server->window,
gui_printf (server->view,
_("%s cannot set socket option \"SO_KEEPALIVE\"\n"),
WEECHAT_ERROR);
@@ -641,7 +641,7 @@ server_connect (t_irc_server *server)
ip4_hostent = gethostbyname (server->address);
if (!ip4_hostent)
{
gui_printf (server->window,
gui_printf (server->view,
_("%s address \"%s\" not found\n"),
WEECHAT_ERROR, server->address);
close (server->server_read);
@@ -657,14 +657,14 @@ server_connect (t_irc_server *server)
/*error = bind(server->sock4, (struct sockaddr *)(&addr), sizeof(addr));
if (error != 0)
{
gui_printf (server->window,
gui_printf (server->view,
WEECHAT_ERORR "server_connect: can't bind to hostname\n");
return 0;
} */
ip_address = inet_ntoa (addr.sin_addr);
if (!ip_address)
{
gui_printf (server->window,
gui_printf (server->view,
_("%s IP address not found\n"), WEECHAT_ERROR);
close (server->server_read);
close (server->server_write);
@@ -674,13 +674,13 @@ server_connect (t_irc_server *server)
}
/* connection to server */
gui_printf (server->window,
gui_printf (server->view,
_("%s: server IP is: %s\n"), PACKAGE_NAME, ip_address);
error = connect (server->sock4, (struct sockaddr *) &addr, sizeof (addr));
if (error != 0)
{
gui_printf (server->window,
gui_printf (server->view,
_("%s cannot connect to irc server\n"), WEECHAT_ERROR);
close (server->server_read);
close (server->server_write);
@@ -708,7 +708,7 @@ server_auto_connect (int command_line)
if ( ((command_line) && (ptr_server->command_line))
|| ((!command_line) && (ptr_server->autoconnect)) )
{
(void) gui_window_new (ptr_server, NULL, 1);
(void) gui_view_new (gui_current_view->window, ptr_server, NULL, 1);
if (server_connect (ptr_server))
irc_login (ptr_server);
}
@@ -726,12 +726,12 @@ server_disconnect (t_irc_server *server)
if (server->is_connected)
{
/* write disconnection message on each channel/private window */
/* write disconnection message on each channel/private view */
for (ptr_channel = server->channels; ptr_channel;
ptr_channel = ptr_channel->next_channel)
{
irc_display_prefix (ptr_channel->window, PREFIX_INFO);
gui_printf (ptr_channel->window, _("Disconnected from server!\n"));
irc_display_prefix (ptr_channel->view, PREFIX_INFO);
gui_printf (ptr_channel->view, _("Disconnected from server!\n"));
}
/* close communication with server */
+5 -5
View File
@@ -83,7 +83,7 @@ struct t_irc_channel
char *key; /* channel key (NULL if no key is set) */
t_irc_nick *nicks; /* nicks on the channel */
t_irc_nick *last_nick; /* last nick on the channel */
t_gui_window *window; /* GUI window allocated for channel */
t_gui_view *view; /* GUI view allocated for channel */
t_irc_channel *prev_channel; /* link to previous channel */
t_irc_channel *next_channel; /* link to next channel */
};
@@ -116,7 +116,7 @@ struct t_irc_server
int is_away; /* 1 is user is marker as away */
int server_read; /* pipe for reading server data */
int server_write; /* pipe for sending data to server */
t_gui_window *window; /* GUI window allocated for server */
t_gui_view *view; /* GUI view allocated for server */
t_irc_channel *channels; /* opened channels on server */
t_irc_channel *last_channel; /* last opened channal on server */
t_irc_server *prev_server; /* link to previous server */
@@ -204,9 +204,9 @@ extern void dcc_send ();
/* IRC display (irc-diplay.c) */
extern void irc_display_prefix (/*@null@*/ t_gui_window *, char *);
extern void irc_display_nick (t_gui_window *, t_irc_nick *, int, int, int, int);
extern void irc_display_mode (t_gui_window *, char *, char, char *, char *,
extern void irc_display_prefix (/*@null@*/ t_gui_view *, char *);
extern void irc_display_nick (t_gui_view *, t_irc_nick *, int, int, int, int);
extern void irc_display_mode (t_gui_view *, char *, char, char *, char *,
char *, char *);
/* IRC protocol (irc-commands.c) */
+15 -15
View File
@@ -120,7 +120,7 @@ static XS (XS_IRC_register)
}
/*
* IRC::print: print message to current window
* IRC::print: print message to current view
*/
static XS (XS_IRC_print)
@@ -135,8 +135,8 @@ static XS (XS_IRC_print)
for (i = 0; i < items; i++)
{
message = SvPV (ST (i), integer);
irc_display_prefix (gui_current_window, PREFIX_PLUGIN);
gui_printf (gui_current_window, "%s", message);
irc_display_prefix (gui_current_view, PREFIX_PLUGIN);
gui_printf (gui_current_view, "%s", message);
}
XSRETURN_EMPTY;
@@ -151,7 +151,7 @@ static XS (XS_IRC_print_with_channel)
{
int integer;
char *message, *channel, *server = NULL;
t_gui_window *ptr_window;
t_gui_view *ptr_view;
t_irc_server *ptr_server;
t_irc_channel *ptr_channel;
dXSARGS;
@@ -167,9 +167,9 @@ static XS (XS_IRC_print_with_channel)
server = NULL;
}
/* look for window for printing message */
/* look for view for printing message */
channel = SvPV (ST (1), integer);
ptr_window = NULL;
ptr_view = NULL;
for (ptr_server = irc_servers; ptr_server;
ptr_server = ptr_server->next_server)
{
@@ -180,25 +180,25 @@ static XS (XS_IRC_print_with_channel)
{
if (strcasecmp (ptr_channel->name, channel) == 0)
{
ptr_window = ptr_channel->window;
ptr_view = ptr_channel->view;
break;
}
}
}
if (ptr_window)
if (ptr_view)
break;
}
/* window found => display message & return 1 */
if (ptr_window)
/* view found => display message & return 1 */
if (ptr_view)
{
message = SvPV (ST (0), integer);
irc_display_prefix (ptr_window, PREFIX_PLUGIN);
gui_printf (ptr_window, "%s", message);
irc_display_prefix (ptr_view, PREFIX_PLUGIN);
gui_printf (ptr_view, "%s", message);
XSRETURN_YES;
}
/* no window found => return 0 */
/* no view found => return 0 */
XSRETURN_NO;
}
@@ -307,8 +307,8 @@ static XS (XS_IRC_get_info)
}
else if ( (strcasecmp (arg, "2") == 0) || (strcasecmp (arg, "channel") == 0) )
{
if (WIN_IS_CHANNEL (gui_current_window))
info = CHANNEL (gui_current_window)->name;
if (VIEW_IS_CHANNEL (gui_current_view))
info = CHANNEL (gui_current_view)->name;
}
else if ( (strcasecmp (arg, "3") == 0) || (strcasecmp (arg, "server") == 0) )
{