Topic bar improvements

- Don't show on server tab
- Don't show unavailable modes
- Remove less used modes and add more common ones
- Use proper case for buttons
This commit is contained in:
TingPing 2013-10-03 05:01:15 -04:00
parent a831ecfd01
commit 7ba2f1f17f
3 changed files with 41 additions and 27 deletions

View File

@ -665,11 +665,11 @@ process_numeric (session * sess, int n,
else else
EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANMODES, sess, word[4], word_eol[5], EMIT_SIGNAL_TIMESTAMP (XP_TE_CHANMODES, sess, word[4], word_eol[5],
NULL, NULL, 0, tags_data->timestamp); NULL, NULL, 0, tags_data->timestamp);
fe_update_mode_buttons (sess, 'c', '-');
fe_update_mode_buttons (sess, 'r', '-');
fe_update_mode_buttons (sess, 't', '-'); fe_update_mode_buttons (sess, 't', '-');
fe_update_mode_buttons (sess, 'n', '-'); fe_update_mode_buttons (sess, 'n', '-');
fe_update_mode_buttons (sess, 's', '-');
fe_update_mode_buttons (sess, 'i', '-'); fe_update_mode_buttons (sess, 'i', '-');
fe_update_mode_buttons (sess, 'p', '-');
fe_update_mode_buttons (sess, 'm', '-'); fe_update_mode_buttons (sess, 'm', '-');
fe_update_mode_buttons (sess, 'l', '-'); fe_update_mode_buttons (sess, 'l', '-');
fe_update_mode_buttons (sess, 'k', '-'); fe_update_mode_buttons (sess, 'k', '-');

View File

@ -54,11 +54,11 @@
#undef gtk_signal_connect #undef gtk_signal_connect
#define gtk_signal_connect g_signal_connect #define gtk_signal_connect g_signal_connect
#define flag_t flag_wid[0] #define flag_c flag_wid[0]
#define flag_n flag_wid[1] #define flag_n flag_wid[1]
#define flag_s flag_wid[2] #define flag_r flag_wid[2]
#define flag_i flag_wid[3] #define flag_t flag_wid[3]
#define flag_p flag_wid[4] #define flag_i flag_wid[4]
#define flag_m flag_wid[5] #define flag_m flag_wid[5]
#define flag_l flag_wid[6] #define flag_l flag_wid[6]
#define flag_k flag_wid[7] #define flag_k flag_wid[7]

View File

@ -86,7 +86,7 @@ static void mg_link_irctab (session *sess, int focus);
static session_gui static_mg_gui; static session_gui static_mg_gui;
static session_gui *mg_gui = NULL; /* the shared irc tab */ static session_gui *mg_gui = NULL; /* the shared irc tab */
static int ignore_chanmode = FALSE; static int ignore_chanmode = FALSE;
static const char chan_flags[] = { 't', 'n', 's', 'i', 'p', 'm', 'l', 'k' }; static const char chan_flags[] = { 'c', 'n', 'r', 't', 'i', 'm', 'l', 'k' };
static chan *active_tab = NULL; /* active tab */ static chan *active_tab = NULL; /* active tab */
GtkWidget *parent_window = NULL; /* the master window */ GtkWidget *parent_window = NULL; /* the master window */
@ -898,6 +898,9 @@ mg_populate (session *sess)
mg_decide_userlist (sess, FALSE); mg_decide_userlist (sess, FALSE);
/* shouldn't edit the topic */ /* shouldn't edit the topic */
gtk_editable_set_editable (GTK_EDITABLE (gui->topic_entry), FALSE); gtk_editable_set_editable (GTK_EDITABLE (gui->topic_entry), FALSE);
/* might be hidden from server tab */
if (prefs.hex_gui_topicbar)
gtk_widget_show (gui->topic_bar);
break; break;
case SESS_SERVER: case SESS_SERVER:
if (prefs.hex_gui_mode_buttons) if (prefs.hex_gui_mode_buttons)
@ -906,8 +909,8 @@ mg_populate (session *sess)
gtk_widget_hide (gui->dialogbutton_box); gtk_widget_hide (gui->dialogbutton_box);
/* hide the userlist */ /* hide the userlist */
mg_decide_userlist (sess, FALSE); mg_decide_userlist (sess, FALSE);
/* shouldn't edit the topic */ /* servers don't have topics */
gtk_editable_set_editable (GTK_EDITABLE (gui->topic_entry), FALSE); gtk_widget_hide (gui->topic_bar);
break; break;
default: default:
/* hide the dialog buttons */ /* hide the dialog buttons */
@ -918,6 +921,8 @@ mg_populate (session *sess)
mg_decide_userlist (sess, FALSE); mg_decide_userlist (sess, FALSE);
/* let the topic be editted */ /* let the topic be editted */
gtk_editable_set_editable (GTK_EDITABLE (gui->topic_entry), TRUE); gtk_editable_set_editable (GTK_EDITABLE (gui->topic_entry), TRUE);
if (prefs.hex_gui_topicbar)
gtk_widget_show (gui->topic_bar);
} }
/* move to THE irc tab */ /* move to THE irc tab */
@ -2091,15 +2096,15 @@ mg_apply_entry_style (GtkWidget *entry)
static void static void
mg_create_chanmodebuttons (session_gui *gui, GtkWidget *box) mg_create_chanmodebuttons (session_gui *gui, GtkWidget *box)
{ {
gui->flag_t = mg_create_flagbutton (_("Topic Protection"), box, "T"); gui->flag_c = mg_create_flagbutton (_("Filter Colors"), box, "c");
gui->flag_n = mg_create_flagbutton (_("No outside messages"), box, "N"); gui->flag_n = mg_create_flagbutton (_("No outside messages"), box, "n");
gui->flag_s = mg_create_flagbutton (_("Secret"), box, "S"); gui->flag_r = mg_create_flagbutton (_("Registered Only"), box, "r");
gui->flag_i = mg_create_flagbutton (_("Invite Only"), box, "I"); gui->flag_t = mg_create_flagbutton (_("Topic Protection"), box, "t");
gui->flag_p = mg_create_flagbutton (_("Private"), box, "P"); gui->flag_i = mg_create_flagbutton (_("Invite Only"), box, "i");
gui->flag_m = mg_create_flagbutton (_("Moderated"), box, "M"); gui->flag_m = mg_create_flagbutton (_("Moderated"), box, "m");
gui->flag_b = mg_create_flagbutton (_("Ban List"), box, "B"); gui->flag_b = mg_create_flagbutton (_("Ban List"), box, "b");
gui->flag_k = mg_create_flagbutton (_("Keyword"), box, "K"); gui->flag_k = mg_create_flagbutton (_("Keyword"), box, "k");
gui->key_entry = gtk_entry_new (); gui->key_entry = gtk_entry_new ();
gtk_widget_set_name (gui->key_entry, "hexchat-inputbox"); gtk_widget_set_name (gui->key_entry, "hexchat-inputbox");
gtk_entry_set_max_length (GTK_ENTRY (gui->key_entry), 23); gtk_entry_set_max_length (GTK_ENTRY (gui->key_entry), 23);
@ -2111,7 +2116,7 @@ mg_create_chanmodebuttons (session_gui *gui, GtkWidget *box)
if (prefs.hex_gui_input_style) if (prefs.hex_gui_input_style)
mg_apply_entry_style (gui->key_entry); mg_apply_entry_style (gui->key_entry);
gui->flag_l = mg_create_flagbutton (_("User Limit"), box, "L"); gui->flag_l = mg_create_flagbutton (_("User Limit"), box, "l");
gui->limit_entry = gtk_entry_new (); gui->limit_entry = gtk_entry_new ();
gtk_widget_set_name (gui->limit_entry, "hexchat-inputbox"); gtk_widget_set_name (gui->limit_entry, "hexchat-inputbox");
gtk_entry_set_max_length (GTK_ENTRY (gui->limit_entry), 10); gtk_entry_set_max_length (GTK_ENTRY (gui->limit_entry), 10);
@ -3223,8 +3228,8 @@ mg_create_topwindow (session *sess)
if (prefs.hex_gui_hide_menu) if (prefs.hex_gui_hide_menu)
gtk_widget_hide (sess->gui->menu); gtk_widget_hide (sess->gui->menu);
if (!prefs.hex_gui_topicbar) /* Will be shown when needed */
gtk_widget_hide (sess->gui->topic_bar); gtk_widget_hide (sess->gui->topic_bar);
if (!prefs.hex_gui_ulist_buttons) if (!prefs.hex_gui_ulist_buttons)
gtk_widget_hide (sess->gui->button_box); gtk_widget_hide (sess->gui->button_box);
@ -3328,8 +3333,8 @@ mg_create_tabwindow (session *sess)
mg_decide_userlist (sess, FALSE); mg_decide_userlist (sess, FALSE);
if (!prefs.hex_gui_topicbar) /* Will be shown when needed */
gtk_widget_hide (sess->gui->topic_bar); gtk_widget_hide (sess->gui->topic_bar);
if (!prefs.hex_gui_mode_buttons) if (!prefs.hex_gui_mode_buttons)
gtk_widget_hide (sess->gui->topicbutton_box); gtk_widget_hide (sess->gui->topicbutton_box);
@ -3489,11 +3494,20 @@ fe_update_mode_buttons (session *sess, char mode, char sign)
{ {
if (!sess->gui->is_tab || sess == current_tab) if (!sess->gui->is_tab || sess == current_tab)
{ {
ignore_chanmode = TRUE; /* Mode not supported */
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (sess->gui->flag_wid[i])) != state) if (sess->server && strchr (sess->server->chanmodes, mode) == NULL)
gtk_toggle_button_set_active ( {
GTK_TOGGLE_BUTTON (sess->gui->flag_wid[i]), state); gtk_widget_hide (sess->gui->flag_wid[i]);
ignore_chanmode = FALSE; }
else
{
gtk_widget_show (sess->gui->flag_wid[i]);
ignore_chanmode = TRUE;
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (sess->gui->flag_wid[i])) != state)
gtk_toggle_button_set_active (
GTK_TOGGLE_BUTTON (sess->gui->flag_wid[i]), state);
ignore_chanmode = FALSE;
}
} else } else
{ {
sess->res->flag_wid_state[i] = state; sess->res->flag_wid_state[i] = state;