Revision: 4586
Author: KariHusa
Date: Wed Feb  2 06:09:52 2011
Log: monitor: Conditionally import windows stuff and fix HighlightedStatusText msg creation
http://code.google.com/p/robotframework/source/detail?r=4586

Modified:
 /trunk/src/robot/output/monitor.py

=======================================
--- /trunk/src/robot/output/monitor.py  Wed Feb  2 05:55:56 2011
+++ /trunk/src/robot/output/monitor.py  Wed Feb  2 06:09:52 2011
@@ -146,76 +146,78 @@
                          'WARN': ANSI_YELLOW,
                          'PASS': ANSI_GREEN}

-    def __str__(self):
+    def __init__(self, msg):
+        PlainStatusText.__init__(self, msg)
         color = self._get_highlight_color(self._msg)
         reset = color != '' and self.ANSI_RESET or ''
-        return color + self._msg + reset
+        self._msg = color + self._msg + reset


-from ctypes import windll, Structure, c_short, c_ushort, byref
-
-SHORT = c_short
-WORD = c_ushort
-
-class COORD(Structure):
-  _fields_ = [
-    ("X", SHORT),
-    ("Y", SHORT)]
-
-class SMALL_RECT(Structure):
-  _fields_ = [
-    ("Left", SHORT),
-    ("Top", SHORT),
-    ("Right", SHORT),
-    ("Bottom", SHORT)]
-
-class CONSOLE_SCREEN_BUFFER_INFO(Structure):
-  _fields_ = [
-    ("dwSize", COORD),
-    ("dwCursorPosition", COORD),
-    ("wAttributes", WORD),
-    ("srWindow", SMALL_RECT),
-    ("dwMaximumWindowSize", COORD)]
-
-
-class DosHiglightedStatusText(PlainStatusText):
-    FOREGROUND_RED = 0x0004
-    FOREGROUND_YELLOW = 0x0006
-    FOREGROUND_GREEN = 0x0002
-    FOREGROUND_INTENSITY = 0x0008
-    FOREGROUND_GREY = 0x0007
-
-    STD_OUTPUT_HANDLE = -11
-
-    _highlight_colors = {'FAIL': FOREGROUND_RED,
-                         'ERROR': FOREGROUND_RED,
-                         'WARN': FOREGROUND_YELLOW,
-                         'PASS': FOREGROUND_GREEN}
-
-    def write_status(self, newline=True, stream=sys.__stdout__):
-        self._write(None, ' |', '|', newline, stream)
-
-    def write_message(self, message, newline=True, stream=sys.__stderr__):
-        self._write(message, '[', ']', newline, stream)
-
- def _write(self, message, start_sep, end_sep, newline=True, stream=sys.__stdout__):
-        default_colors = self._get_text_attr()
-        default_fg = default_colors & 0x0007
-        default_bg = default_colors & 0x0070
-        self._write_encoded_with_tab_replacing(stream, start_sep)
- self._set_text_attr(self._get_highlight_color(self._msg) | self.FOREGROUND_INTENSITY)
-        self._write_encoded_with_tab_replacing(stream, ' %s ' % self._msg)
- self._set_text_attr(default_fg | default_bg | self.FOREGROUND_INTENSITY)
-        self._write_encoded_with_tab_replacing(stream, end_sep)
-        if message:
-            stream.write(' %s' % message)
-        if newline:
-            self._write_encoded_with_tab_replacing(stream, '\n')
-
-    def _set_text_attr(self, color):
- windll.kernel32.SetConsoleTextAttribute(windll.kernel32.GetStdHandle(self.STD_OUTPUT_HANDLE), color)
-
-    def _get_text_attr(self):
-        csbi = CONSOLE_SCREEN_BUFFER_INFO()
- windll.kernel32.GetConsoleScreenBufferInfo(self.STD_OUTPUT_HANDLE, byref(csbi))
-        return csbi.wAttributes
+if os.pathsep == '\\':
+    from ctypes import windll, Structure, c_short, c_ushort, byref
+
+    SHORT = c_short
+    WORD = c_ushort
+
+    class COORD(Structure):
+      _fields_ = [
+        ("X", SHORT),
+        ("Y", SHORT)]
+
+    class SMALL_RECT(Structure):
+      _fields_ = [
+        ("Left", SHORT),
+        ("Top", SHORT),
+        ("Right", SHORT),
+        ("Bottom", SHORT)]
+
+    class CONSOLE_SCREEN_BUFFER_INFO(Structure):
+      _fields_ = [
+        ("dwSize", COORD),
+        ("dwCursorPosition", COORD),
+        ("wAttributes", WORD),
+        ("srWindow", SMALL_RECT),
+        ("dwMaximumWindowSize", COORD)]
+
+
+    class DosHiglightedStatusText(PlainStatusText):
+        FOREGROUND_RED = 0x0004
+        FOREGROUND_YELLOW = 0x0006
+        FOREGROUND_GREEN = 0x0002
+        FOREGROUND_INTENSITY = 0x0008
+        FOREGROUND_GREY = 0x0007
+
+        STD_OUTPUT_HANDLE = -11
+
+        _highlight_colors = {'FAIL': FOREGROUND_RED,
+                             'ERROR': FOREGROUND_RED,
+                             'WARN': FOREGROUND_YELLOW,
+                             'PASS': FOREGROUND_GREEN}
+
+        def write_status(self, newline=True, stream=sys.__stdout__):
+            self._write(None, ' |', '|', newline, stream)
+
+ def write_message(self, message, newline=True, stream=sys.__stderr__):
+            self._write(message, '[', ']', newline, stream)
+
+ def _write(self, message, start_sep, end_sep, newline=True, stream=sys.__stdout__):
+            default_colors = self._get_text_attr()
+            default_fg = default_colors & 0x0007
+            default_bg = default_colors & 0x0070
+            self._write_encoded_with_tab_replacing(stream, start_sep)
+ self._set_text_attr(self._get_highlight_color(self._msg) | self.FOREGROUND_INTENSITY) + self._write_encoded_with_tab_replacing(stream, ' %s ' % self._msg) + self._set_text_attr(default_fg | default_bg | self.FOREGROUND_INTENSITY)
+            self._write_encoded_with_tab_replacing(stream, end_sep)
+            if message:
+                stream.write(' %s' % message)
+            if newline:
+                self._write_encoded_with_tab_replacing(stream, '\n')
+
+        def _set_text_attr(self, color):
+ windll.kernel32.SetConsoleTextAttribute(windll.kernel32.GetStdHandle(self.STD_OUTPUT_HANDLE), color)
+
+        def _get_text_attr(self):
+            csbi = CONSOLE_SCREEN_BUFFER_INFO()
+ windll.kernel32.GetConsoleScreenBufferInfo(self.STD_OUTPUT_HANDLE, byref(csbi))
+            return csbi.wAttributes

Reply via email to