summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Schäfer <j.wielicki@sotecware.net>2020-05-10 15:08:10 +0200
committerLink Mauve <linkmauve@linkmauve.fr>2022-04-06 20:30:33 +0200
commit8b13d3c572ef230f3fcd8d12f1b7f4317193e637 (patch)
tree6d6307f977bc0efa8d5cf2e1d046ab1cf3f508a7
parent7b99fcfb2f367c51faf3f2fd2b6a583be87a9e45 (diff)
downloadpoezio-8b13d3c572ef230f3fcd8d12f1b7f4317193e637.tar.gz
poezio-8b13d3c572ef230f3fcd8d12f1b7f4317193e637.tar.bz2
poezio-8b13d3c572ef230f3fcd8d12f1b7f4317193e637.tar.xz
poezio-8b13d3c572ef230f3fcd8d12f1b7f4317193e637.zip
Colourize tab name in its infobar
This is for faster learning the colour <-> tab association and to see quickly in which tab you’re currently in.
-rwxr-xr-xpoezio/theming.py4
-rw-r--r--poezio/windows/info_wins.py40
2 files changed, 39 insertions, 5 deletions
diff --git a/poezio/theming.py b/poezio/theming.py
index cc4ea34a..712a44ab 100755
--- a/poezio/theming.py
+++ b/poezio/theming.py
@@ -238,6 +238,10 @@ class Theme:
MODE_TAB_NORMAL = ''
MODE_TAB_IMPORTANT = 'r' # reverse video mode
+ # This is the mode used for the tab name in the info bar of MUC and 1:1
+ # chat tabs.
+ MODE_TAB_NAME = 'r'
+
COLOR_VERTICAL_TAB_NORMAL = (4, -1)
COLOR_VERTICAL_TAB_NONEMPTY = (4, -1)
COLOR_VERTICAL_TAB_JOINED = (82, -1)
diff --git a/poezio/windows/info_wins.py b/poezio/windows/info_wins.py
index 23d28cc1..227dc115 100644
--- a/poezio/windows/info_wins.py
+++ b/poezio/windows/info_wins.py
@@ -16,6 +16,7 @@ from poezio.config import config
from poezio.windows.base_wins import Win
from poezio.ui.funcs import truncate_nick
from poezio.theming import get_theme, to_curses_attr
+from poezio.colors import ccg_text_to_color
if TYPE_CHECKING:
from poezio.user import User
@@ -103,6 +104,9 @@ class PrivateInfoWin(InfoWin):
to_curses_attr(get_theme().COLOR_INFORMATION_BAR))
def write_room_name(self, name):
+ # TODO: autocolour this too, but we need more info about the occupant
+ # (whether we know its real jid) and the room (whether it is
+ # anonymous) to provide correct colouring.
try:
jid = JID(name)
except InvalidJID:
@@ -223,13 +227,23 @@ class ConversationInfoWin(InfoWin):
"""
Write the information about the contact
"""
- color = to_curses_attr(get_theme().COLOR_INFORMATION_BAR)
+ theme = get_theme()
+ color = to_curses_attr(theme.COLOR_INFORMATION_BAR)
+ if config.get('autocolor_tab_names') and contact is not None:
+ name_color = (
+ ccg_text_to_color(theme.ccg_palette, str(contact.bare_jid)),
+ -1,
+ theme.MODE_TAB_NAME,
+ )
+ else:
+ name_color = color
+
if not contact:
self.addstr("(contact not in roster)", color)
return
display_name = contact.name
if display_name:
- self.addstr('%s ' % (display_name), color)
+ self.addstr('%s ' % (display_name), name_color)
def write_contact_jid(self, jid):
"""
@@ -237,9 +251,17 @@ class ConversationInfoWin(InfoWin):
"""
theme = get_theme()
color = to_curses_attr(theme.COLOR_INFORMATION_BAR)
+ if config.get('autocolor_tab_names'):
+ name_color = (
+ ccg_text_to_color(theme.ccg_palette, str(contact.jid)),
+ -1,
+ theme.MODE_TAB_NAME,
+ )
+ else:
+ name_color = theme.COLOR_CONVERSATION_NAME
+
self.addstr('[', color)
- self.addstr(jid.full,
- to_curses_attr(theme.COLOR_CONVERSATION_NAME))
+ self.addstr(jid.full, to_curses_attr(name_color))
self.addstr('] ', color)
def write_chatstate(self, state):
@@ -313,9 +335,17 @@ class MucInfoWin(InfoWin):
def write_room_name(self, room):
theme = get_theme()
color = to_curses_attr(theme.COLOR_INFORMATION_BAR)
+ label_color = theme.COLOR_GROUPCHAT_NAME
+
+ if config.get('autocolor_tab_names'):
+ label_color = ccg_text_to_color(
+ theme.ccg_palette,
+ room.jid.bare,
+ ), -1, theme.MODE_TAB_NAME
+
self.addstr('[', color)
self.addstr(room.name,
- to_curses_attr(theme.COLOR_GROUPCHAT_NAME))
+ to_curses_attr(label_color))
self.addstr(']', color)
def write_participants_number(self, room):