summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim MacArthur <jim.macarthur@codethink.co.uk>2018-02-19 16:15:48 +0000
committerJim MacArthur <jim.macarthur@codethink.co.uk>2018-03-01 14:36:08 +0000
commitc88a88109d4b60b86fa89b07eda839e255a290ce (patch)
tree4fcc24be670ce83248aae23d430ce8f302c3211a
parent543a0012560d5bcb709d8fc0d95bc4269109f920 (diff)
downloadbuildstream-c88a88109d4b60b86fa89b07eda839e255a290ce.tar.gz
widget.py: Make the displayed text for LogLine messages a widget too
Adds MessageOrLogFile widget, which contains the same functionality previously used to display messages.
-rw-r--r--buildstream/_frontend/widget.py32
1 files changed, 22 insertions, 10 deletions
diff --git a/buildstream/_frontend/widget.py b/buildstream/_frontend/widget.py
index c7d3d03ab..541216642 100644
--- a/buildstream/_frontend/widget.py
+++ b/buildstream/_frontend/widget.py
@@ -268,6 +268,26 @@ class LogFile(Widget):
return text
+class MessageOrLogFile(Widget):
+ """ START and SUCCESS messages are expected to have no useful
+ information in the message text, so we display the logfile name for
+ these messages, and the message text for other types.
+ """
+ def __init__(self, content_profile, format_profile, err_profile):
+ super(MessageOrLogFile, self).__init__(content_profile, format_profile)
+ self.message_widget = MessageText(content_profile, format_profile)
+ self.logfile_widget = LogFile(content_profile, format_profile, err_profile)
+
+ def render(self, message):
+ # Show the log file only in the main start/success messages
+ if message.logfile and message.scheduler and \
+ message.message_type in [MessageType.START, MessageType.SUCCESS]:
+ text = self.logfile_widget.render(message)
+ else:
+ text = self.message_widget.render(message)
+ return text
+
+
# A widget for formatting a log line
class LogLine(Widget):
@@ -287,7 +307,6 @@ class LogLine(Widget):
self.message_lines = message_lines
self.space_widget = Space(content_profile, format_profile)
- self.message_widget = MessageText(content_profile, format_profile)
self.logfile_widget = LogFile(content_profile, format_profile, err_profile)
if debug:
@@ -301,7 +320,8 @@ class LogLine(Widget):
ElementName(content_profile, format_profile),
self.space_widget,
TypeName(content_profile, format_profile),
- self.space_widget
+ self.space_widget,
+ MessageOrLogFile(content_profile, format_profile, err_profile)
])
def size_request(self, pipeline):
@@ -309,7 +329,6 @@ class LogLine(Widget):
widget.size_request(pipeline)
self.space_widget.size_request(pipeline)
- self.message_widget.size_request(pipeline)
self.logfile_widget.size_request(pipeline)
def render(self, message):
@@ -319,13 +338,6 @@ class LogLine(Widget):
for widget in self.columns:
text += widget.render(message)
- # Show the log file only in the main start/success messages
- if message.logfile and message.scheduler and \
- message.message_type in [MessageType.START, MessageType.SUCCESS]:
- text += self.logfile_widget.render(message)
- else:
- text += self.message_widget.render(message)
-
text += '\n'
extra_nl = False