summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/display_corrections.py5
-rw-r--r--poezio/tabs/basetabs.py4
-rwxr-xr-xpoezio/theming.py9
-rw-r--r--poezio/ui/consts.py8
-rw-r--r--poezio/ui/render.py7
-rw-r--r--poezio/ui/types.py15
-rw-r--r--test/test_ui/test_render.py1
7 files changed, 23 insertions, 26 deletions
diff --git a/plugins/display_corrections.py b/plugins/display_corrections.py
index 69df154f..cf8107ce 100644
--- a/plugins/display_corrections.py
+++ b/plugins/display_corrections.py
@@ -26,7 +26,7 @@ from poezio.plugin import BasePlugin
from poezio.common import shell_split
from poezio import tabs
from poezio.ui.types import Message
-from poezio.ui.consts import SHORT_FORMAT
+from poezio.theming import get_theme
class Plugin(BasePlugin):
@@ -56,6 +56,7 @@ class Plugin(BasePlugin):
return None
def command_display_corrections(self, args):
+ theme = get_theme()
args = shell_split(args)
if len(args) == 1:
try:
@@ -68,7 +69,7 @@ class Plugin(BasePlugin):
if message:
display = []
while message:
- str_time = message.time.strftime(SHORT_FORMAT)
+ str_time = message.time.strftime(theme.SHORT_TIME_FORMAT)
display.append('%s %s%s%s %s' %
(str_time, '* '
if message.me else '', message.nickname, ''
diff --git a/poezio/tabs/basetabs.py b/poezio/tabs/basetabs.py
index d822ea94..04fc1d8c 100644
--- a/poezio/tabs/basetabs.py
+++ b/poezio/tabs/basetabs.py
@@ -46,7 +46,6 @@ from poezio.logger import logger
from poezio.text_buffer import TextBuffer
from poezio.theming import get_theme, dump_tuple
from poezio.ui.funcs import truncate_nick
-from poezio.ui.consts import LONG_FORMAT_LENGTH
from poezio.ui.types import BaseMessage, InfoMessage, Message
from slixmpp import JID, InvalidJID, Message as SMessage
@@ -802,6 +801,7 @@ class ChatTab(Tab):
message_count = 0
timestamp = config.get('show_timestamps')
nick_size = config.get('max_nick_length')
+ theme = get_theme()
for message in text_buffer.messages:
# Build lines of a message
txt = message.txt
@@ -821,7 +821,7 @@ class ChatTab(Tab):
offset += 1
if timestamp:
if message.history:
- offset += 1 + LONG_FORMAT_LENGTH
+ offset += 1 + theme.LONG_TIME_FORMAT_LENGTH
lines = poopt.cut_text(txt, self.text_win.width - offset - 1)
for line in lines:
built_lines.append(line)
diff --git a/poezio/theming.py b/poezio/theming.py
index 6f1d8226..7752fe15 100755
--- a/poezio/theming.py
+++ b/poezio/theming.py
@@ -78,6 +78,7 @@ from typing import Dict, List, Union, Tuple, Optional
from pathlib import Path
from os import path
from poezio import colors, xdg
+from datetime import datetime
from importlib import machinery
finder = machinery.PathFinder()
@@ -143,6 +144,14 @@ class Theme:
return sub_mapping[sub] if sub == keep else ''
return sub_mapping.get(sub, '')
+ # Short date format (only show time)
+ SHORT_TIME_FORMAT = '%H:%M:%S'
+ SHORT_TIME_FORMAT_LENGTH = len(datetime.now().strftime(SHORT_TIME_FORMAT))
+
+ # Long date format (show date and time)
+ LONG_TIME_FORMAT = '%Y-%m-%d %H:%M:%S'
+ LONG_TIME_FORMAT_LENGTH = len(datetime.now().strftime(LONG_TIME_FORMAT))
+
# Message text color
COLOR_NORMAL_TEXT = (-1, -1)
COLOR_INFORMATION_TEXT = (5, -1) # TODO
diff --git a/poezio/ui/consts.py b/poezio/ui/consts.py
index 0838d953..51febf22 100644
--- a/poezio/ui/consts.py
+++ b/poezio/ui/consts.py
@@ -4,11 +4,3 @@ FORMAT_CHAR = '\x19'
# These are non-printable chars, so they should never appear in the input,
# I guess. But maybe we can find better chars that are even less risky.
FORMAT_CHARS = '\x0E\x0F\x10\x11\x12\x13\x14\x15\x16\x17\x18\x1A'
-
-# Short date format (only show time)
-SHORT_FORMAT = '%H:%M:%S'
-SHORT_FORMAT_LENGTH = len(datetime.now().strftime(SHORT_FORMAT))
-
-# Long date format (show date and time)
-LONG_FORMAT = '%Y-%m-%d %H:%M:%S'
-LONG_FORMAT_LENGTH = len(datetime.now().strftime(LONG_FORMAT))
diff --git a/poezio/ui/render.py b/poezio/ui/render.py
index 633ac2a0..f37ea39e 100644
--- a/poezio/ui/render.py
+++ b/poezio/ui/render.py
@@ -18,8 +18,6 @@ from poezio.theming import (
)
from poezio.ui.consts import (
FORMAT_CHAR,
- LONG_FORMAT,
- SHORT_FORMAT,
)
from poezio.ui.funcs import (
truncate_nick,
@@ -237,11 +235,12 @@ class PreMessageHelpers:
"""
Write the date on the yth line of the window
"""
+ theme = get_theme()
if time:
if history and time.date() != date.today():
- format = LONG_FORMAT
+ format = theme.LONG_TIME_FORMAT
else:
- format = SHORT_FORMAT
+ format = theme.SHORT_TIME_FORMAT
time_str = time.strftime(format)
color = get_theme().COLOR_TIME_STRING
with buffer.colored_text(color=color):
diff --git a/poezio/ui/types.py b/poezio/ui/types.py
index 15117275..e75f8eba 100644
--- a/poezio/ui/types.py
+++ b/poezio/ui/types.py
@@ -6,11 +6,6 @@ from poezio.ui.funcs import truncate_nick
from poezio import poopt
from poezio.user import User
from poezio.theming import dump_tuple, get_theme
-from poezio.ui.consts import (
- SHORT_FORMAT_LENGTH,
- LONG_FORMAT_LENGTH,
-)
-
class BaseMessage:
@@ -25,7 +20,8 @@ class BaseMessage:
self.time = datetime.now()
def compute_offset(self, with_timestamps: bool, nick_size: int) -> int:
- return SHORT_FORMAT_LENGTH + 1
+ theme = get_theme()
+ return theme.SHORT_TIME_FORMAT_LENGTH + 1
class EndOfArchive(BaseMessage):
@@ -68,7 +64,7 @@ class XMLLog(BaseMessage):
offset = 0
theme = get_theme()
if with_timestamps:
- offset += 1 + SHORT_FORMAT_LENGTH
+ offset += 1 + theme.SHORT_TIME_FORMAT_LENGTH
if self.incoming:
nick = theme.CHAR_XML_IN
else:
@@ -178,11 +174,12 @@ class Message(BaseMessage):
def compute_offset(self, with_timestamps: bool, nick_size: int) -> int:
offset = 0
+ theme = get_theme()
if with_timestamps:
if self.history:
- offset += 1 + LONG_FORMAT_LENGTH
+ offset += 1 + theme.LONG_TIME_FORMAT_LENGTH
else:
- offset += 1 + SHORT_FORMAT_LENGTH
+ offset += 1 + theme.SHORT_TIME_FORMAT_LENGTH
if not self.nickname: # not a message, nothing to do afterwards
return offset
diff --git a/test/test_ui/test_render.py b/test/test_ui/test_render.py
index e0db5a8f..bdfc1be6 100644
--- a/test/test_ui/test_render.py
+++ b/test/test_ui/test_render.py
@@ -3,7 +3,6 @@ from contextlib import contextmanager
from datetime import datetime
from poezio.theming import get_theme
from poezio.ui.render import build_lines, Line, write_pre
-from poezio.ui.consts import SHORT_FORMAT
from poezio.ui.types import BaseMessage, Message, StatusMessage, XMLLog
def test_simple_build_basemsg():