mirror of
https://github.com/weechat/weechat.git
synced 2026-06-28 13:56:37 +02:00
Added support for UnrealIrcd ("~" for chan owner, "&" for chan admin)
This commit is contained in:
@@ -5,6 +5,7 @@ ChangeLog - 2005-02-15
|
||||
|
||||
|
||||
Version 0.1.1 (under dev!):
|
||||
* added support for UnrealIrcd ("~" for chan owner, "&" for chan admin)
|
||||
* on server buffer, only server messages are logged
|
||||
* plugins messages are logged with new config option (log_plugin_msg)
|
||||
* fixed /buffer close command (now ok when disconnected from server)
|
||||
|
||||
+329
-313
File diff suppressed because it is too large
Load Diff
@@ -204,6 +204,8 @@ int cfg_col_input_nick;
|
||||
int cfg_col_input_bg;
|
||||
int cfg_col_nick;
|
||||
int cfg_col_nick_away;
|
||||
int cfg_col_nick_chanowner;
|
||||
int cfg_col_nick_chanadmin;
|
||||
int cfg_col_nick_op;
|
||||
int cfg_col_nick_halfop;
|
||||
int cfg_col_nick_voice;
|
||||
@@ -347,6 +349,14 @@ t_config_option weechat_options_colors[] =
|
||||
N_("color for away nicknames"),
|
||||
OPTION_TYPE_COLOR, 0, 0, 0,
|
||||
"cyan", NULL, &cfg_col_nick_away, NULL, &config_change_color },
|
||||
{ "col_nick_chanowner", N_("color for chan owner symbol"),
|
||||
N_("color for chan owner symbol (specific to unrealircd)"),
|
||||
OPTION_TYPE_COLOR, 0, 0, 0,
|
||||
"lightgreen", NULL, &cfg_col_nick_chanowner, NULL, &config_change_color },
|
||||
{ "col_nick_chanadmin", N_("color for chan admin symbol"),
|
||||
N_("color for chan admin symbol (specific to unrealircd)"),
|
||||
OPTION_TYPE_COLOR, 0, 0, 0,
|
||||
"lightgreen", NULL, &cfg_col_nick_chanadmin, NULL, &config_change_color },
|
||||
{ "col_nick_op", N_("color for operator symbol"),
|
||||
N_("color for operator symbol"),
|
||||
OPTION_TYPE_COLOR, 0, 0, 0,
|
||||
|
||||
@@ -127,6 +127,8 @@ extern int cfg_col_input_nick;
|
||||
extern int cfg_col_input_bg;
|
||||
extern int cfg_col_nick;
|
||||
extern int cfg_col_nick_away;
|
||||
extern int cfg_col_nick_chanowner;
|
||||
extern int cfg_col_nick_chanadmin;
|
||||
extern int cfg_col_nick_op;
|
||||
extern int cfg_col_nick_halfop;
|
||||
extern int cfg_col_nick_voice;
|
||||
|
||||
@@ -851,35 +851,41 @@ gui_draw_buffer_nick (t_gui_buffer *buffer, int erase)
|
||||
x = column;
|
||||
break;
|
||||
}
|
||||
if (ptr_nick->is_op)
|
||||
if (ptr_nick->is_chanowner)
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_CHANOWNER);
|
||||
mvwprintw (ptr_win->win_nick, y, x, "~");
|
||||
x++;
|
||||
}
|
||||
else if (ptr_nick->is_chanadmin)
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_CHANADMIN);
|
||||
mvwprintw (ptr_win->win_nick, y, x, "&");
|
||||
x++;
|
||||
}
|
||||
else if (ptr_nick->is_op)
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_OP);
|
||||
mvwprintw (ptr_win->win_nick, y, x, "@");
|
||||
x++;
|
||||
}
|
||||
else if (ptr_nick->is_halfop)
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_HALFOP);
|
||||
mvwprintw (ptr_win->win_nick, y, x, "%%");
|
||||
x++;
|
||||
}
|
||||
else if (ptr_nick->has_voice)
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_VOICE);
|
||||
mvwprintw (ptr_win->win_nick, y, x, "+");
|
||||
x++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ptr_nick->is_halfop)
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_HALFOP);
|
||||
mvwprintw (ptr_win->win_nick, y, x, "%%");
|
||||
x++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ptr_nick->has_voice)
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_VOICE);
|
||||
mvwprintw (ptr_win->win_nick, y, x, "+");
|
||||
x++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK);
|
||||
mvwprintw (ptr_win->win_nick, y, x, " ");
|
||||
x++;
|
||||
}
|
||||
}
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK);
|
||||
mvwprintw (ptr_win->win_nick, y, x, " ");
|
||||
x++;
|
||||
}
|
||||
gui_window_set_color (ptr_win->win_nick,
|
||||
(ptr_nick->is_away) ?
|
||||
@@ -2011,6 +2017,10 @@ gui_init_colors ()
|
||||
cfg_col_nick & A_CHARTEXT, cfg_col_nick_bg);
|
||||
init_pair (COLOR_WIN_NICK_AWAY,
|
||||
cfg_col_nick_away & A_CHARTEXT, cfg_col_nick_bg);
|
||||
init_pair (COLOR_WIN_NICK_CHANOWNER,
|
||||
cfg_col_nick_chanowner & A_CHARTEXT, cfg_col_nick_bg);
|
||||
init_pair (COLOR_WIN_NICK_CHANADMIN,
|
||||
cfg_col_nick_chanadmin & A_CHARTEXT, cfg_col_nick_bg);
|
||||
init_pair (COLOR_WIN_NICK_OP,
|
||||
cfg_col_nick_op & A_CHARTEXT, cfg_col_nick_bg);
|
||||
init_pair (COLOR_WIN_NICK_HALFOP,
|
||||
@@ -2071,6 +2081,8 @@ gui_init_colors ()
|
||||
color_attr[COLOR_WIN_INPUT_NICK - 1] = (cfg_col_input_nick >= 0) ? cfg_col_input_nick & A_BOLD : 0;
|
||||
color_attr[COLOR_WIN_NICK - 1] = (cfg_col_nick >= 0) ? cfg_col_nick & A_BOLD : 0;
|
||||
color_attr[COLOR_WIN_NICK_AWAY - 1] = (cfg_col_nick_away >= 0) ? cfg_col_nick_away & A_BOLD : 0;
|
||||
color_attr[COLOR_WIN_NICK_CHANOWNER - 1] = (cfg_col_nick_chanowner >= 0) ? cfg_col_nick_chanowner & A_BOLD : 0;
|
||||
color_attr[COLOR_WIN_NICK_CHANADMIN - 1] = (cfg_col_nick_chanadmin >= 0) ? cfg_col_nick_chanadmin & A_BOLD : 0;
|
||||
color_attr[COLOR_WIN_NICK_OP - 1] = (cfg_col_nick_op >= 0) ? cfg_col_nick_op & A_BOLD : 0;
|
||||
color_attr[COLOR_WIN_NICK_HALFOP - 1] = (cfg_col_nick_halfop >= 0) ? cfg_col_nick_halfop & A_BOLD : 0;
|
||||
color_attr[COLOR_WIN_NICK_VOICE - 1] = (cfg_col_nick_voice >= 0) ? cfg_col_nick_voice & A_BOLD : 0;
|
||||
|
||||
+18
-16
@@ -26,7 +26,7 @@
|
||||
|
||||
#define INPUT_BUFFER_BLOCK_SIZE 256
|
||||
|
||||
#define NUM_COLORS 47
|
||||
#define NUM_COLORS 49
|
||||
#define COLOR_WIN_TITLE 1
|
||||
#define COLOR_WIN_CHAT 2
|
||||
#define COLOR_WIN_CHAT_TIME 3
|
||||
@@ -51,22 +51,24 @@
|
||||
#define COLOR_WIN_INPUT_NICK 22
|
||||
#define COLOR_WIN_NICK 23
|
||||
#define COLOR_WIN_NICK_AWAY 24
|
||||
#define COLOR_WIN_NICK_OP 25
|
||||
#define COLOR_WIN_NICK_HALFOP 26
|
||||
#define COLOR_WIN_NICK_VOICE 27
|
||||
#define COLOR_WIN_NICK_SEP 28
|
||||
#define COLOR_WIN_NICK_SELF 29
|
||||
#define COLOR_WIN_NICK_PRIVATE 30
|
||||
#define COLOR_WIN_NICK_FIRST 31
|
||||
#define COLOR_WIN_NICK_LAST 40
|
||||
#define COLOR_WIN_NICK_CHANOWNER 25
|
||||
#define COLOR_WIN_NICK_CHANADMIN 26
|
||||
#define COLOR_WIN_NICK_OP 27
|
||||
#define COLOR_WIN_NICK_HALFOP 28
|
||||
#define COLOR_WIN_NICK_VOICE 29
|
||||
#define COLOR_WIN_NICK_SEP 30
|
||||
#define COLOR_WIN_NICK_SELF 31
|
||||
#define COLOR_WIN_NICK_PRIVATE 32
|
||||
#define COLOR_WIN_NICK_FIRST 33
|
||||
#define COLOR_WIN_NICK_LAST 42
|
||||
#define COLOR_WIN_NICK_NUMBER (COLOR_WIN_NICK_LAST - COLOR_WIN_NICK_FIRST + 1)
|
||||
#define COLOR_DCC_SELECTED 41
|
||||
#define COLOR_DCC_WAITING 42
|
||||
#define COLOR_DCC_CONNECTING 43
|
||||
#define COLOR_DCC_ACTIVE 44
|
||||
#define COLOR_DCC_DONE 45
|
||||
#define COLOR_DCC_FAILED 46
|
||||
#define COLOR_DCC_ABORTED 47
|
||||
#define COLOR_DCC_SELECTED 43
|
||||
#define COLOR_DCC_WAITING 44
|
||||
#define COLOR_DCC_CONNECTING 45
|
||||
#define COLOR_DCC_ACTIVE 46
|
||||
#define COLOR_DCC_DONE 47
|
||||
#define COLOR_DCC_FAILED 48
|
||||
#define COLOR_DCC_ABORTED 49
|
||||
|
||||
#define SERVER(buffer) ((t_irc_server *)(buffer->server))
|
||||
#define CHANNEL(buffer) ((t_irc_channel *)(buffer->channel))
|
||||
|
||||
+19
-17
@@ -73,29 +73,31 @@ irc_display_nick (t_gui_buffer *buffer, t_irc_nick *nick, int message_type,
|
||||
message_type, COLOR_WIN_CHAT_DARK, "<");
|
||||
if (cfg_look_nickmode)
|
||||
{
|
||||
if (nick->is_op)
|
||||
if (nick->is_chanowner)
|
||||
gui_printf_color_type (buffer,
|
||||
message_type,
|
||||
COLOR_WIN_NICK_OP, "~");
|
||||
else if (nick->is_chanadmin)
|
||||
gui_printf_color_type (buffer,
|
||||
message_type,
|
||||
COLOR_WIN_NICK_OP, "&");
|
||||
else if (nick->is_op)
|
||||
gui_printf_color_type (buffer,
|
||||
message_type,
|
||||
COLOR_WIN_NICK_OP, "@");
|
||||
else if (nick->is_halfop)
|
||||
gui_printf_color_type (buffer,
|
||||
message_type,
|
||||
COLOR_WIN_NICK_HALFOP, "%%");
|
||||
else if (nick->has_voice)
|
||||
gui_printf_color_type (buffer,
|
||||
message_type,
|
||||
COLOR_WIN_NICK_VOICE, "+");
|
||||
else
|
||||
{
|
||||
if (nick->is_halfop)
|
||||
if (cfg_look_nickmode_empty && !no_nickmode)
|
||||
gui_printf_color_type (buffer,
|
||||
message_type,
|
||||
COLOR_WIN_NICK_HALFOP, "%%");
|
||||
else
|
||||
{
|
||||
if (nick->has_voice)
|
||||
gui_printf_color_type (buffer,
|
||||
message_type,
|
||||
COLOR_WIN_NICK_VOICE, "+");
|
||||
else
|
||||
if (cfg_look_nickmode_empty && !no_nickmode)
|
||||
gui_printf_color_type (buffer,
|
||||
message_type,
|
||||
COLOR_WIN_CHAT, " ");
|
||||
}
|
||||
}
|
||||
COLOR_WIN_CHAT, " ");
|
||||
}
|
||||
if (color_nick < 0)
|
||||
gui_printf_color_type (buffer,
|
||||
|
||||
+11
-4
@@ -64,8 +64,10 @@ nick_compare (t_irc_nick *nick1, t_irc_nick *nick2)
|
||||
{
|
||||
int score1, score2, comp;
|
||||
|
||||
score1 = - ( (nick1->is_op * 8) + (nick1->is_halfop * 4) + (nick1->has_voice * 2));
|
||||
score2 = - ( (nick2->is_op * 8) + (nick2->is_halfop * 4) + (nick2->has_voice * 2));
|
||||
score1 = - ( (nick1->is_chanowner * 32) + (nick1->is_chanadmin * 16) +
|
||||
(nick1->is_op * 8) + (nick1->is_halfop * 4) + (nick1->has_voice * 2) );
|
||||
score2 = - ( (nick2->is_chanowner * 32) + (nick2->is_chanadmin * 16) +
|
||||
(nick2->is_op * 8) + (nick2->is_halfop * 4) + (nick2->has_voice * 2) );
|
||||
|
||||
comp = strcasecmp(nick1->nick, nick2->nick);
|
||||
if (comp > 0)
|
||||
@@ -149,7 +151,8 @@ nick_insert_sorted (t_irc_channel *channel, t_irc_nick *nick)
|
||||
|
||||
t_irc_nick *
|
||||
nick_new (t_irc_channel *channel, char *nick_name,
|
||||
int is_op, int is_halfop, int has_voice)
|
||||
int is_chanowner, int is_chanadmin, int is_op, int is_halfop,
|
||||
int has_voice)
|
||||
{
|
||||
t_irc_nick *new_nick;
|
||||
|
||||
@@ -157,6 +160,8 @@ nick_new (t_irc_channel *channel, char *nick_name,
|
||||
if ((new_nick = nick_search (channel, nick_name)))
|
||||
{
|
||||
/* update nick */
|
||||
new_nick->is_chanowner = is_chanowner;
|
||||
new_nick->is_chanadmin = is_chanadmin;
|
||||
new_nick->is_op = is_op;
|
||||
new_nick->is_halfop = is_halfop;
|
||||
new_nick->has_voice = has_voice;
|
||||
@@ -173,6 +178,8 @@ nick_new (t_irc_channel *channel, char *nick_name,
|
||||
|
||||
/* initialize new nick */
|
||||
new_nick->nick = strdup (nick_name);
|
||||
new_nick->is_chanowner = is_chanowner;
|
||||
new_nick->is_chanadmin = is_chanadmin;
|
||||
new_nick->is_op = is_op;
|
||||
new_nick->is_halfop = is_halfop;
|
||||
new_nick->has_voice = has_voice;
|
||||
@@ -312,7 +319,7 @@ nick_count (t_irc_channel *channel, int *total, int *count_op,
|
||||
ptr_nick = ptr_nick->next_nick)
|
||||
{
|
||||
(*total)++;
|
||||
if (ptr_nick->is_op)
|
||||
if ((ptr_nick->is_chanowner) || (ptr_nick->is_chanadmin) || (ptr_nick->is_op))
|
||||
(*count_op)++;
|
||||
else
|
||||
{
|
||||
|
||||
+16
-3
@@ -184,7 +184,7 @@ irc_cmd_recv_join (t_irc_server *server, char *host, char *arguments)
|
||||
_(" has joined "));
|
||||
gui_printf_color (ptr_channel->buffer, COLOR_WIN_CHAT_CHANNEL,
|
||||
"%s\n", arguments);
|
||||
(void) nick_new (ptr_channel, host, 0, 0, 0);
|
||||
(void) nick_new (ptr_channel, host, 0, 0, 0, 0, 0);
|
||||
gui_draw_buffer_nick (ptr_channel->buffer, 1);
|
||||
return 0;
|
||||
}
|
||||
@@ -2826,7 +2826,7 @@ int
|
||||
irc_cmd_recv_353 (t_irc_server *server, char *host, char *arguments)
|
||||
{
|
||||
char *pos, *pos_nick;
|
||||
int is_op, is_halfop, has_voice;
|
||||
int is_chanowner, is_chanadmin, is_op, is_halfop, has_voice;
|
||||
t_irc_channel *ptr_channel;
|
||||
|
||||
/* make gcc happy */
|
||||
@@ -2872,6 +2872,8 @@ irc_cmd_recv_353 (t_irc_server *server, char *host, char *arguments)
|
||||
{
|
||||
while (pos && pos[0])
|
||||
{
|
||||
is_chanowner = 0;
|
||||
is_chanadmin = 0;
|
||||
is_op = 0;
|
||||
is_halfop = 0;
|
||||
has_voice = 0;
|
||||
@@ -2885,6 +2887,16 @@ irc_cmd_recv_353 (t_irc_server *server, char *host, char *arguments)
|
||||
has_voice = 1;
|
||||
pos++;
|
||||
}
|
||||
if (pos[0] == '~')
|
||||
{
|
||||
is_chanowner = 1;
|
||||
pos++;
|
||||
}
|
||||
if (pos[0] == '&')
|
||||
{
|
||||
is_chanadmin = 1;
|
||||
pos++;
|
||||
}
|
||||
pos_nick = pos;
|
||||
pos = strchr (pos, ' ');
|
||||
if (pos)
|
||||
@@ -2892,7 +2904,8 @@ irc_cmd_recv_353 (t_irc_server *server, char *host, char *arguments)
|
||||
pos[0] = '\0';
|
||||
pos++;
|
||||
}
|
||||
if (!nick_new (ptr_channel, pos_nick, is_op, is_halfop, has_voice))
|
||||
if (!nick_new (ptr_channel, pos_nick, is_chanowner, is_chanadmin,
|
||||
is_op, is_halfop, has_voice))
|
||||
{
|
||||
irc_display_prefix (server->buffer, PREFIX_ERROR);
|
||||
gui_printf (server->buffer,
|
||||
|
||||
+3
-1
@@ -77,6 +77,8 @@ typedef struct t_irc_nick t_irc_nick;
|
||||
struct t_irc_nick
|
||||
{
|
||||
char *nick; /* nickname */
|
||||
int is_chanowner; /* chan owner? (specific to unrealircd) */
|
||||
int is_chanadmin; /* chan admin? (specific to unrealircd) */
|
||||
int is_op; /* operator privileges? */
|
||||
int is_halfop; /* half operaor privileges? */
|
||||
int has_voice; /* nick has voice? */
|
||||
@@ -257,7 +259,7 @@ extern void channel_set_away (t_irc_channel *, char *, int);
|
||||
|
||||
/* nick functions (irc-nick.c) */
|
||||
|
||||
extern t_irc_nick *nick_new (t_irc_channel *, char *, int, int, int);
|
||||
extern t_irc_nick *nick_new (t_irc_channel *, char *, int, int, int, int, int);
|
||||
extern void nick_resort (t_irc_channel *, t_irc_nick *);
|
||||
extern void nick_change (t_irc_channel *, t_irc_nick *, char *);
|
||||
extern void nick_free (t_irc_channel *, t_irc_nick *);
|
||||
|
||||
@@ -5,6 +5,7 @@ ChangeLog - 2005-02-15
|
||||
|
||||
|
||||
Version 0.1.1 (under dev!):
|
||||
* added support for UnrealIrcd ("~" for chan owner, "&" for chan admin)
|
||||
* on server buffer, only server messages are logged
|
||||
* plugins messages are logged with new config option (log_plugin_msg)
|
||||
* fixed /buffer close command (now ok when disconnected from server)
|
||||
|
||||
+325
-307
File diff suppressed because it is too large
Load Diff
+329
-313
File diff suppressed because it is too large
Load Diff
@@ -204,6 +204,8 @@ int cfg_col_input_nick;
|
||||
int cfg_col_input_bg;
|
||||
int cfg_col_nick;
|
||||
int cfg_col_nick_away;
|
||||
int cfg_col_nick_chanowner;
|
||||
int cfg_col_nick_chanadmin;
|
||||
int cfg_col_nick_op;
|
||||
int cfg_col_nick_halfop;
|
||||
int cfg_col_nick_voice;
|
||||
@@ -347,6 +349,14 @@ t_config_option weechat_options_colors[] =
|
||||
N_("color for away nicknames"),
|
||||
OPTION_TYPE_COLOR, 0, 0, 0,
|
||||
"cyan", NULL, &cfg_col_nick_away, NULL, &config_change_color },
|
||||
{ "col_nick_chanowner", N_("color for chan owner symbol"),
|
||||
N_("color for chan owner symbol (specific to unrealircd)"),
|
||||
OPTION_TYPE_COLOR, 0, 0, 0,
|
||||
"lightgreen", NULL, &cfg_col_nick_chanowner, NULL, &config_change_color },
|
||||
{ "col_nick_chanadmin", N_("color for chan admin symbol"),
|
||||
N_("color for chan admin symbol (specific to unrealircd)"),
|
||||
OPTION_TYPE_COLOR, 0, 0, 0,
|
||||
"lightgreen", NULL, &cfg_col_nick_chanadmin, NULL, &config_change_color },
|
||||
{ "col_nick_op", N_("color for operator symbol"),
|
||||
N_("color for operator symbol"),
|
||||
OPTION_TYPE_COLOR, 0, 0, 0,
|
||||
|
||||
@@ -127,6 +127,8 @@ extern int cfg_col_input_nick;
|
||||
extern int cfg_col_input_bg;
|
||||
extern int cfg_col_nick;
|
||||
extern int cfg_col_nick_away;
|
||||
extern int cfg_col_nick_chanowner;
|
||||
extern int cfg_col_nick_chanadmin;
|
||||
extern int cfg_col_nick_op;
|
||||
extern int cfg_col_nick_halfop;
|
||||
extern int cfg_col_nick_voice;
|
||||
|
||||
@@ -851,35 +851,41 @@ gui_draw_buffer_nick (t_gui_buffer *buffer, int erase)
|
||||
x = column;
|
||||
break;
|
||||
}
|
||||
if (ptr_nick->is_op)
|
||||
if (ptr_nick->is_chanowner)
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_CHANOWNER);
|
||||
mvwprintw (ptr_win->win_nick, y, x, "~");
|
||||
x++;
|
||||
}
|
||||
else if (ptr_nick->is_chanadmin)
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_CHANADMIN);
|
||||
mvwprintw (ptr_win->win_nick, y, x, "&");
|
||||
x++;
|
||||
}
|
||||
else if (ptr_nick->is_op)
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_OP);
|
||||
mvwprintw (ptr_win->win_nick, y, x, "@");
|
||||
x++;
|
||||
}
|
||||
else if (ptr_nick->is_halfop)
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_HALFOP);
|
||||
mvwprintw (ptr_win->win_nick, y, x, "%%");
|
||||
x++;
|
||||
}
|
||||
else if (ptr_nick->has_voice)
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_VOICE);
|
||||
mvwprintw (ptr_win->win_nick, y, x, "+");
|
||||
x++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ptr_nick->is_halfop)
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_HALFOP);
|
||||
mvwprintw (ptr_win->win_nick, y, x, "%%");
|
||||
x++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ptr_nick->has_voice)
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK_VOICE);
|
||||
mvwprintw (ptr_win->win_nick, y, x, "+");
|
||||
x++;
|
||||
}
|
||||
else
|
||||
{
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK);
|
||||
mvwprintw (ptr_win->win_nick, y, x, " ");
|
||||
x++;
|
||||
}
|
||||
}
|
||||
gui_window_set_color (ptr_win->win_nick, COLOR_WIN_NICK);
|
||||
mvwprintw (ptr_win->win_nick, y, x, " ");
|
||||
x++;
|
||||
}
|
||||
gui_window_set_color (ptr_win->win_nick,
|
||||
(ptr_nick->is_away) ?
|
||||
@@ -2011,6 +2017,10 @@ gui_init_colors ()
|
||||
cfg_col_nick & A_CHARTEXT, cfg_col_nick_bg);
|
||||
init_pair (COLOR_WIN_NICK_AWAY,
|
||||
cfg_col_nick_away & A_CHARTEXT, cfg_col_nick_bg);
|
||||
init_pair (COLOR_WIN_NICK_CHANOWNER,
|
||||
cfg_col_nick_chanowner & A_CHARTEXT, cfg_col_nick_bg);
|
||||
init_pair (COLOR_WIN_NICK_CHANADMIN,
|
||||
cfg_col_nick_chanadmin & A_CHARTEXT, cfg_col_nick_bg);
|
||||
init_pair (COLOR_WIN_NICK_OP,
|
||||
cfg_col_nick_op & A_CHARTEXT, cfg_col_nick_bg);
|
||||
init_pair (COLOR_WIN_NICK_HALFOP,
|
||||
@@ -2071,6 +2081,8 @@ gui_init_colors ()
|
||||
color_attr[COLOR_WIN_INPUT_NICK - 1] = (cfg_col_input_nick >= 0) ? cfg_col_input_nick & A_BOLD : 0;
|
||||
color_attr[COLOR_WIN_NICK - 1] = (cfg_col_nick >= 0) ? cfg_col_nick & A_BOLD : 0;
|
||||
color_attr[COLOR_WIN_NICK_AWAY - 1] = (cfg_col_nick_away >= 0) ? cfg_col_nick_away & A_BOLD : 0;
|
||||
color_attr[COLOR_WIN_NICK_CHANOWNER - 1] = (cfg_col_nick_chanowner >= 0) ? cfg_col_nick_chanowner & A_BOLD : 0;
|
||||
color_attr[COLOR_WIN_NICK_CHANADMIN - 1] = (cfg_col_nick_chanadmin >= 0) ? cfg_col_nick_chanadmin & A_BOLD : 0;
|
||||
color_attr[COLOR_WIN_NICK_OP - 1] = (cfg_col_nick_op >= 0) ? cfg_col_nick_op & A_BOLD : 0;
|
||||
color_attr[COLOR_WIN_NICK_HALFOP - 1] = (cfg_col_nick_halfop >= 0) ? cfg_col_nick_halfop & A_BOLD : 0;
|
||||
color_attr[COLOR_WIN_NICK_VOICE - 1] = (cfg_col_nick_voice >= 0) ? cfg_col_nick_voice & A_BOLD : 0;
|
||||
|
||||
+18
-16
@@ -26,7 +26,7 @@
|
||||
|
||||
#define INPUT_BUFFER_BLOCK_SIZE 256
|
||||
|
||||
#define NUM_COLORS 47
|
||||
#define NUM_COLORS 49
|
||||
#define COLOR_WIN_TITLE 1
|
||||
#define COLOR_WIN_CHAT 2
|
||||
#define COLOR_WIN_CHAT_TIME 3
|
||||
@@ -51,22 +51,24 @@
|
||||
#define COLOR_WIN_INPUT_NICK 22
|
||||
#define COLOR_WIN_NICK 23
|
||||
#define COLOR_WIN_NICK_AWAY 24
|
||||
#define COLOR_WIN_NICK_OP 25
|
||||
#define COLOR_WIN_NICK_HALFOP 26
|
||||
#define COLOR_WIN_NICK_VOICE 27
|
||||
#define COLOR_WIN_NICK_SEP 28
|
||||
#define COLOR_WIN_NICK_SELF 29
|
||||
#define COLOR_WIN_NICK_PRIVATE 30
|
||||
#define COLOR_WIN_NICK_FIRST 31
|
||||
#define COLOR_WIN_NICK_LAST 40
|
||||
#define COLOR_WIN_NICK_CHANOWNER 25
|
||||
#define COLOR_WIN_NICK_CHANADMIN 26
|
||||
#define COLOR_WIN_NICK_OP 27
|
||||
#define COLOR_WIN_NICK_HALFOP 28
|
||||
#define COLOR_WIN_NICK_VOICE 29
|
||||
#define COLOR_WIN_NICK_SEP 30
|
||||
#define COLOR_WIN_NICK_SELF 31
|
||||
#define COLOR_WIN_NICK_PRIVATE 32
|
||||
#define COLOR_WIN_NICK_FIRST 33
|
||||
#define COLOR_WIN_NICK_LAST 42
|
||||
#define COLOR_WIN_NICK_NUMBER (COLOR_WIN_NICK_LAST - COLOR_WIN_NICK_FIRST + 1)
|
||||
#define COLOR_DCC_SELECTED 41
|
||||
#define COLOR_DCC_WAITING 42
|
||||
#define COLOR_DCC_CONNECTING 43
|
||||
#define COLOR_DCC_ACTIVE 44
|
||||
#define COLOR_DCC_DONE 45
|
||||
#define COLOR_DCC_FAILED 46
|
||||
#define COLOR_DCC_ABORTED 47
|
||||
#define COLOR_DCC_SELECTED 43
|
||||
#define COLOR_DCC_WAITING 44
|
||||
#define COLOR_DCC_CONNECTING 45
|
||||
#define COLOR_DCC_ACTIVE 46
|
||||
#define COLOR_DCC_DONE 47
|
||||
#define COLOR_DCC_FAILED 48
|
||||
#define COLOR_DCC_ABORTED 49
|
||||
|
||||
#define SERVER(buffer) ((t_irc_server *)(buffer->server))
|
||||
#define CHANNEL(buffer) ((t_irc_channel *)(buffer->channel))
|
||||
|
||||
@@ -73,29 +73,31 @@ irc_display_nick (t_gui_buffer *buffer, t_irc_nick *nick, int message_type,
|
||||
message_type, COLOR_WIN_CHAT_DARK, "<");
|
||||
if (cfg_look_nickmode)
|
||||
{
|
||||
if (nick->is_op)
|
||||
if (nick->is_chanowner)
|
||||
gui_printf_color_type (buffer,
|
||||
message_type,
|
||||
COLOR_WIN_NICK_OP, "~");
|
||||
else if (nick->is_chanadmin)
|
||||
gui_printf_color_type (buffer,
|
||||
message_type,
|
||||
COLOR_WIN_NICK_OP, "&");
|
||||
else if (nick->is_op)
|
||||
gui_printf_color_type (buffer,
|
||||
message_type,
|
||||
COLOR_WIN_NICK_OP, "@");
|
||||
else if (nick->is_halfop)
|
||||
gui_printf_color_type (buffer,
|
||||
message_type,
|
||||
COLOR_WIN_NICK_HALFOP, "%%");
|
||||
else if (nick->has_voice)
|
||||
gui_printf_color_type (buffer,
|
||||
message_type,
|
||||
COLOR_WIN_NICK_VOICE, "+");
|
||||
else
|
||||
{
|
||||
if (nick->is_halfop)
|
||||
if (cfg_look_nickmode_empty && !no_nickmode)
|
||||
gui_printf_color_type (buffer,
|
||||
message_type,
|
||||
COLOR_WIN_NICK_HALFOP, "%%");
|
||||
else
|
||||
{
|
||||
if (nick->has_voice)
|
||||
gui_printf_color_type (buffer,
|
||||
message_type,
|
||||
COLOR_WIN_NICK_VOICE, "+");
|
||||
else
|
||||
if (cfg_look_nickmode_empty && !no_nickmode)
|
||||
gui_printf_color_type (buffer,
|
||||
message_type,
|
||||
COLOR_WIN_CHAT, " ");
|
||||
}
|
||||
}
|
||||
COLOR_WIN_CHAT, " ");
|
||||
}
|
||||
if (color_nick < 0)
|
||||
gui_printf_color_type (buffer,
|
||||
|
||||
@@ -64,8 +64,10 @@ nick_compare (t_irc_nick *nick1, t_irc_nick *nick2)
|
||||
{
|
||||
int score1, score2, comp;
|
||||
|
||||
score1 = - ( (nick1->is_op * 8) + (nick1->is_halfop * 4) + (nick1->has_voice * 2));
|
||||
score2 = - ( (nick2->is_op * 8) + (nick2->is_halfop * 4) + (nick2->has_voice * 2));
|
||||
score1 = - ( (nick1->is_chanowner * 32) + (nick1->is_chanadmin * 16) +
|
||||
(nick1->is_op * 8) + (nick1->is_halfop * 4) + (nick1->has_voice * 2) );
|
||||
score2 = - ( (nick2->is_chanowner * 32) + (nick2->is_chanadmin * 16) +
|
||||
(nick2->is_op * 8) + (nick2->is_halfop * 4) + (nick2->has_voice * 2) );
|
||||
|
||||
comp = strcasecmp(nick1->nick, nick2->nick);
|
||||
if (comp > 0)
|
||||
@@ -149,7 +151,8 @@ nick_insert_sorted (t_irc_channel *channel, t_irc_nick *nick)
|
||||
|
||||
t_irc_nick *
|
||||
nick_new (t_irc_channel *channel, char *nick_name,
|
||||
int is_op, int is_halfop, int has_voice)
|
||||
int is_chanowner, int is_chanadmin, int is_op, int is_halfop,
|
||||
int has_voice)
|
||||
{
|
||||
t_irc_nick *new_nick;
|
||||
|
||||
@@ -157,6 +160,8 @@ nick_new (t_irc_channel *channel, char *nick_name,
|
||||
if ((new_nick = nick_search (channel, nick_name)))
|
||||
{
|
||||
/* update nick */
|
||||
new_nick->is_chanowner = is_chanowner;
|
||||
new_nick->is_chanadmin = is_chanadmin;
|
||||
new_nick->is_op = is_op;
|
||||
new_nick->is_halfop = is_halfop;
|
||||
new_nick->has_voice = has_voice;
|
||||
@@ -173,6 +178,8 @@ nick_new (t_irc_channel *channel, char *nick_name,
|
||||
|
||||
/* initialize new nick */
|
||||
new_nick->nick = strdup (nick_name);
|
||||
new_nick->is_chanowner = is_chanowner;
|
||||
new_nick->is_chanadmin = is_chanadmin;
|
||||
new_nick->is_op = is_op;
|
||||
new_nick->is_halfop = is_halfop;
|
||||
new_nick->has_voice = has_voice;
|
||||
@@ -312,7 +319,7 @@ nick_count (t_irc_channel *channel, int *total, int *count_op,
|
||||
ptr_nick = ptr_nick->next_nick)
|
||||
{
|
||||
(*total)++;
|
||||
if (ptr_nick->is_op)
|
||||
if ((ptr_nick->is_chanowner) || (ptr_nick->is_chanadmin) || (ptr_nick->is_op))
|
||||
(*count_op)++;
|
||||
else
|
||||
{
|
||||
|
||||
@@ -184,7 +184,7 @@ irc_cmd_recv_join (t_irc_server *server, char *host, char *arguments)
|
||||
_(" has joined "));
|
||||
gui_printf_color (ptr_channel->buffer, COLOR_WIN_CHAT_CHANNEL,
|
||||
"%s\n", arguments);
|
||||
(void) nick_new (ptr_channel, host, 0, 0, 0);
|
||||
(void) nick_new (ptr_channel, host, 0, 0, 0, 0, 0);
|
||||
gui_draw_buffer_nick (ptr_channel->buffer, 1);
|
||||
return 0;
|
||||
}
|
||||
@@ -2826,7 +2826,7 @@ int
|
||||
irc_cmd_recv_353 (t_irc_server *server, char *host, char *arguments)
|
||||
{
|
||||
char *pos, *pos_nick;
|
||||
int is_op, is_halfop, has_voice;
|
||||
int is_chanowner, is_chanadmin, is_op, is_halfop, has_voice;
|
||||
t_irc_channel *ptr_channel;
|
||||
|
||||
/* make gcc happy */
|
||||
@@ -2872,6 +2872,8 @@ irc_cmd_recv_353 (t_irc_server *server, char *host, char *arguments)
|
||||
{
|
||||
while (pos && pos[0])
|
||||
{
|
||||
is_chanowner = 0;
|
||||
is_chanadmin = 0;
|
||||
is_op = 0;
|
||||
is_halfop = 0;
|
||||
has_voice = 0;
|
||||
@@ -2885,6 +2887,16 @@ irc_cmd_recv_353 (t_irc_server *server, char *host, char *arguments)
|
||||
has_voice = 1;
|
||||
pos++;
|
||||
}
|
||||
if (pos[0] == '~')
|
||||
{
|
||||
is_chanowner = 1;
|
||||
pos++;
|
||||
}
|
||||
if (pos[0] == '&')
|
||||
{
|
||||
is_chanadmin = 1;
|
||||
pos++;
|
||||
}
|
||||
pos_nick = pos;
|
||||
pos = strchr (pos, ' ');
|
||||
if (pos)
|
||||
@@ -2892,7 +2904,8 @@ irc_cmd_recv_353 (t_irc_server *server, char *host, char *arguments)
|
||||
pos[0] = '\0';
|
||||
pos++;
|
||||
}
|
||||
if (!nick_new (ptr_channel, pos_nick, is_op, is_halfop, has_voice))
|
||||
if (!nick_new (ptr_channel, pos_nick, is_chanowner, is_chanadmin,
|
||||
is_op, is_halfop, has_voice))
|
||||
{
|
||||
irc_display_prefix (server->buffer, PREFIX_ERROR);
|
||||
gui_printf (server->buffer,
|
||||
|
||||
@@ -77,6 +77,8 @@ typedef struct t_irc_nick t_irc_nick;
|
||||
struct t_irc_nick
|
||||
{
|
||||
char *nick; /* nickname */
|
||||
int is_chanowner; /* chan owner? (specific to unrealircd) */
|
||||
int is_chanadmin; /* chan admin? (specific to unrealircd) */
|
||||
int is_op; /* operator privileges? */
|
||||
int is_halfop; /* half operaor privileges? */
|
||||
int has_voice; /* nick has voice? */
|
||||
@@ -257,7 +259,7 @@ extern void channel_set_away (t_irc_channel *, char *, int);
|
||||
|
||||
/* nick functions (irc-nick.c) */
|
||||
|
||||
extern t_irc_nick *nick_new (t_irc_channel *, char *, int, int, int);
|
||||
extern t_irc_nick *nick_new (t_irc_channel *, char *, int, int, int, int, int);
|
||||
extern void nick_resort (t_irc_channel *, t_irc_nick *);
|
||||
extern void nick_change (t_irc_channel *, t_irc_nick *, char *);
|
||||
extern void nick_free (t_irc_channel *, t_irc_nick *);
|
||||
|
||||
Reference in New Issue
Block a user