diff options
author | Jim MacArthur <jim.macarthur@codethink.co.uk> | 2018-02-19 16:15:48 +0000 |
---|---|---|
committer | Jim MacArthur <jim.macarthur@codethink.co.uk> | 2018-03-01 14:36:08 +0000 |
commit | c88a88109d4b60b86fa89b07eda839e255a290ce (patch) | |
tree | 4fcc24be670ce83248aae23d430ce8f302c3211a | |
parent | 543a0012560d5bcb709d8fc0d95bc4269109f920 (diff) | |
download | buildstream-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.py | 32 |
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 |