summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorian <none@none>2005-01-03 21:35:02 +0000
committerian <none@none>2005-01-03 21:35:02 +0000
commit164d7f418daa252485592ade9d871551d4606ea8 (patch)
tree053f0af38e587e74dde9eba26006b84a31aec88e
parentf0fce9a723d0953dbcd5b6db5d3bbdd14d28183e (diff)
downloadurwid-164d7f418daa252485592ade9d871551d4606ea8.tar.gz
release 0.8.6release-0.8.6
--HG-- extra : convert_revision : 1214e13b60401fd0dcdac5b946fd9eac467cbe8e
-rwxr-xr-xbrowse.py7
-rwxr-xr-xcalc.py12
-rwxr-xr-xedit.py9
-rwxr-xr-xfib.py7
-rw-r--r--reference.html6
-rw-r--r--setup.py2
-rwxr-xr-xtest_urwid.py23
-rw-r--r--tutorial.html180
-rwxr-xr-xurwid/curses_display.py31
-rwxr-xr-xurwid/html_fragment.py8
-rw-r--r--urwid/util.py32
11 files changed, 187 insertions, 130 deletions
diff --git a/browse.py b/browse.py
index 71ca1d2..dcd06d7 100755
--- a/browse.py
+++ b/browse.py
@@ -357,7 +357,7 @@ class DirectoryBrowser:
('error', 'dark red', 'light gray'),
]
- footer_text = ('foot',[
+ footer_text = [
('title', "Directory Browser"), " ",
('key', "UP"), ",", ('key', "DOWN"), ",",
('key', "PAGE UP"), ",", ('key', "PAGE DOWN"),
@@ -369,7 +369,7 @@ class DirectoryBrowser:
('key', "HOME"), " ",
('key', "END"), " ",
('key', "Q"),
- ])
+ ]
def __init__(self):
@@ -378,7 +378,8 @@ class DirectoryBrowser:
self.listbox = urwid.ListBox( DirectoryWalker( cwd ) )
self.listbox.offset_rows = 1
self.header = urwid.Text( "" )
- self.footer = urwid.Text( self.footer_text )
+ self.footer = urwid.AttrWrap( urwid.Text( self.footer_text ),
+ 'foot')
self.view = urwid.Frame(
urwid.AttrWrap( self.listbox, 'body' ),
header=urwid.AttrWrap(self.header, 'head' ),
diff --git a/calc.py b/calc.py
index e4ef26a..ca50749 100755
--- a/calc.py
+++ b/calc.py
@@ -550,12 +550,12 @@ class CalcDisplay:
palette = [
('body','white', 'dark blue'),
('edit','yellow', 'dark blue'),
- ('editfocus','yellow','black', 'bold'),
- ('key','light cyan', 'dark cyan', ('standout','underline')),
- ('title', 'white', 'dark cyan', ('bold','standout')),
- ('help', 'light gray', 'dark cyan', 'standout'),
- ('helpnote', 'black', 'dark cyan'),
- ('colhead', 'light gray', 'dark cyan', 'standout'),
+ ('editfocus','yellow','dark cyan', 'bold'),
+ ('key','dark cyan', 'light gray', ('standout','underline')),
+ ('title', 'white', 'light gray', ('bold','standout')),
+ ('help', 'black', 'light gray', 'standout'),
+ ('helpnote', 'dark green', 'light gray'),
+ ('colhead', 'black', 'light gray', 'standout'),
('event', 'light red', 'black', 'standout'),
('confirm', 'yellow', 'black', 'bold'),
]
diff --git a/edit.py b/edit.py
index 1806954..c8700cd 100755
--- a/edit.py
+++ b/edit.py
@@ -142,9 +142,9 @@ class LineWalker:
class EditDisplay:
palette = [
- ('body','light gray', 'black'),
- ('foot','white', 'black', 'bold'),
- ('key','light cyan', 'black', 'underline'),
+ ('body','default', 'default'),
+ ('foot','dark cyan', 'dark blue', 'bold'),
+ ('key','light cyan', 'dark blue', 'underline'),
]
footer_text = ('foot', [
@@ -157,7 +157,8 @@ class EditDisplay:
self.save_name = name
self.walker = LineWalker( name )
self.listbox = urwid.ListBox( self.walker )
- self.footer = urwid.Text( self.footer_text )
+ self.footer = urwid.AttrWrap( urwid.Text( self.footer_text ),
+ "foot")
self.view = urwid.Frame( urwid.AttrWrap( self.listbox, 'body'),
footer=self.footer )
diff --git a/fib.py b/fib.py
index cd21c0d..ed253ab 100755
--- a/fib.py
+++ b/fib.py
@@ -72,17 +72,18 @@ class FibonacciDisplay:
('title', 'white', 'black',),
]
- footer_text = ('foot', [
+ footer_text = [
('title', "Fibonacci Set Viewer"), " ",
('key', "UP"), ", ", ('key', "DOWN"), ", ",
('key', "PAGE UP"), " and ", ('key', "PAGE DOWN"),
" move view ",
('key', "Q"), " exits",
- ])
+ ]
def __init__(self):
self.listbox = urwid.ListBox( FibonacciWalker() )
- self.footer = urwid.Text( self.footer_text )
+ self.footer = urwid.AttrWrap( urwid.Text( self.footer_text ),
+ 'foot')
self.view = urwid.Frame( urwid.AttrWrap( self.listbox, 'body'),
footer=self.footer )
diff --git a/reference.html b/reference.html
index 551fb85..33d766b 100644
--- a/reference.html
+++ b/reference.html
@@ -67,10 +67,12 @@ foreground&nbsp;--&nbsp;foreground&nbsp;colour,&nbsp;one&nbsp;of:&nbsp;'black',&
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'dark&nbsp;green',&nbsp;'brown',&nbsp;'dark&nbsp;blue',&nbsp;'dark&nbsp;magenta',<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'dark&nbsp;cyan',&nbsp;'light&nbsp;gray',&nbsp;'dark&nbsp;gray',&nbsp;'light&nbsp;red',<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'light&nbsp;green',&nbsp;'yellow',&nbsp;'light&nbsp;blue',&nbsp;'light&nbsp;magenta',<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'light&nbsp;cyan',&nbsp;'white'<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'light&nbsp;cyan',&nbsp;'white',&nbsp;'default'&nbsp;(black&nbsp;if&nbsp;unable&nbsp;to<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use&nbsp;terminal's&nbsp;default)<br>
background&nbsp;--&nbsp;background&nbsp;colour,&nbsp;one&nbsp;of:&nbsp;'black',&nbsp;'dark&nbsp;red',<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'dark&nbsp;green',&nbsp;'brown',&nbsp;'dark&nbsp;blue',&nbsp;'dark&nbsp;magenta',<br>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'dark&nbsp;cyan',&nbsp;'light&nbsp;gray'<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'dark&nbsp;cyan',&nbsp;'light&nbsp;gray',&nbsp;'default'&nbsp;(light&nbsp;gray&nbsp;if<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unable&nbsp;to&nbsp;use&nbsp;terminal's&nbsp;default)<br>
mono&nbsp;--&nbsp;monochrome&nbsp;terminal&nbsp;attribute,&nbsp;one&nbsp;of:&nbsp;None&nbsp;(default),<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'bold',&nbsp;'underline',&nbsp;'standout',&nbsp;or&nbsp;a&nbsp;tuple&nbsp;containing<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;combination&nbsp;eg.&nbsp;('bold','underline')</tt></dd></dl>
diff --git a/setup.py b/setup.py
index d8d733a..deb005a 100644
--- a/setup.py
+++ b/setup.py
@@ -23,7 +23,7 @@ from distutils.core import setup
import os
-release = "0.8.5" #os.popen("make -s release").read().strip()
+release = "0.8.6" #os.popen("make -s release").read().strip()
setup_d = {
'name':"urwid",
diff --git a/test_urwid.py b/test_urwid.py
index 2ac6ce1..5e57b7c 100755
--- a/test_urwid.py
+++ b/test_urwid.py
@@ -40,20 +40,31 @@ class WithinDoubleByteTest(unittest.TestCase):
self.wtest("mnopqr",0,2,0,'simple no high bytes')
self.wtest("mn\xA1\xA1qr",0,2,1,'simple 1st half')
self.wtest("mn\xA1\xA1qr",0,3,2,'simple 2nd half')
- self.wtest("m\xA1\xA1\xA1\xA1r",0,3,1,'subsequent 2st half')
- self.wtest("m\xA1\xA1\xA1\xA1r",0,4,2,'subsequent 1st half')
+ self.wtest("m\xA1\xA1\xA1\xA1r",0,3,1,'subsequent 1st half')
+ self.wtest("m\xA1\xA1\xA1\xA1r",0,4,2,'subsequent 2nd half')
+ self.wtest("mn\xA1@qr",0,3,2,'simple 2nd half lo')
+ self.wtest("mn\xA1\xA1@r",0,4,0,'subsequent not 2nd half lo')
+ self.wtest("m\xA1\xA1\xA1@r",0,4,2,'subsequent 2nd half lo')
def test2(self):
self.wtest("\xA1\xA1qr",0,0,1,'begin 1st half')
self.wtest("\xA1\xA1qr",0,1,2,'begin 2nd half')
- self.wtest("\xA1\xA1\xA1\xA1r",0,2,1,'begin subs. 2st half')
- self.wtest("\xA1\xA1\xA1\xA1r",0,3,2,'begin subs. 1st half')
+ self.wtest("\xA1@qr",0,1,2,'begin 2nd half lo')
+ self.wtest("\xA1\xA1\xA1\xA1r",0,2,1,'begin subs. 1st half')
+ self.wtest("\xA1\xA1\xA1\xA1r",0,3,2,'begin subs. 2nd half')
+ self.wtest("\xA1\xA1\xA1@r",0,3,2,'begin subs. 2nd half lo')
+ self.wtest("\xA1@\xA1@r",0,3,2,'begin subs. 2nd half lo lo')
+ self.wtest("@\xA1\xA1@r",0,3,0,'begin subs. not 2nd half lo')
def test3(self):
self.wtest("abc \xA1\xA1qr",4,4,1,'newline 1st half')
self.wtest("abc \xA1\xA1qr",4,5,2,'newline 2nd half')
- self.wtest("abc \xA1\xA1\xA1\xA1r",4,6,1,'newl subs. 2st half')
- self.wtest("abc \xA1\xA1\xA1\xA1r",4,7,2,'newl subs. 1st half')
+ self.wtest("abc \xA1@qr",4,5,2,'newline 2nd half lo')
+ self.wtest("abc \xA1\xA1\xA1\xA1r",4,6,1,'newl subs. 1st half')
+ self.wtest("abc \xA1\xA1\xA1\xA1r",4,7,2,'newl subs. 2nd half')
+ self.wtest("abc \xA1\xA1\xA1@r",4,7,2,'newl subs. 2nd half lo')
+ self.wtest("abc \xA1@\xA1@r",4,7,2,'newl subs. 2nd half lo lo')
+ self.wtest("abc @\xA1\xA1@r",4,7,0,'newl subs. not 2nd half lo')
class CalcBreaksTest(unittest.TestCase):
diff --git a/tutorial.html b/tutorial.html
index 7191728..9be75e0 100644
--- a/tutorial.html
+++ b/tutorial.html
@@ -81,7 +81,7 @@ Creating canvases directly is generally only done when
writing custom widget classes. Note that the draw_screen
function must be passed a canvas and a screen size that matches it.
-<div align="center"><pre><span style="color:silver;background:black">Hello World </span>
+<div align="center"><pre><span style="color:black;background:silver">Hello World </span>
</pre></div>
<br>
<br>
@@ -142,13 +142,13 @@ This difference makes sure that when the wrong type of widget is used,
such as a box widget inside a filler widget, a ValueError exception will
be thrown.
-<div align="center"><pre><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span><span style="color:silver;background:black">Hello World </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
+<div align="center"><pre><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span><span style="color:black;background:silver">Hello World </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
</pre></div>
<br>
<br>
@@ -373,29 +373,29 @@ The Edit widget has many capabilities. It lets you make corrections and move
the cursor around with the HOME, END and arrow keys. It is based on the Text
widget so it supports the same wrapping and alignment modes.
-<div class="shot"><pre><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black">What is your name? </span>
-<span style="color:silver;background:black"><u> </u> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
+<div class="shot"><pre><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver">What is your name? </span>
+<span style="color:black;background:silver"><u> </u> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
</pre></div>
-<div class="shot"><pre><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black">What is your name? </span>
-<span style="color:silver;background:black">Arthur, King of the </span>
-<span style="color:silver;background:black">Britons<u> </u> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
+<div class="shot"><pre><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver">What is your name? </span>
+<span style="color:black;background:silver">Arthur, King of the </span>
+<span style="color:black;background:silver">Britons<u> </u> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
</pre></div>
-<div class="shot"><pre><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black">Nice to meet you, </span>
-<span style="color:silver;background:black">Arthur, King of the </span>
-<span style="color:silver;background:black">Britons. </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
+<div class="shot"><pre><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver">Nice to meet you, </span>
+<span style="color:black;background:silver">Arthur, King of the </span>
+<span style="color:black;background:silver">Britons. </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
</pre></div>
<br clear="left">
<br>
@@ -421,7 +421,7 @@ class Conversation:
self.ui = urwid.curses_display.Screen()
self.ui.register_palette([
('header', 'black', 'dark cyan', 'standout'),
- ('I say', 'white', 'black', 'bold'),
+ ('I say', 'dark blue', 'default', 'bold'),
])
self.ui.run_wrapper( self.run )
@@ -477,36 +477,36 @@ editing operations on the list, eg. "list = list + [something]" will not work,
use "list += [something]" instead.
<div class="shot"><pre><span style="color:black;background:teal">Press F1 to exit. </span>
-<span style="color:white;background:black">What is your name?</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"><u> </u> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
+<span style="color:#0000c0;background:silver">What is your name?</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"><u> </u> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
</pre></div>
<div class="shot"><pre><span style="color:black;background:teal">Press F1 to exit. </span>
-<span style="color:white;background:black">What is your name?</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black">Tim t<u> </u> </span>
-<span style="color:white;background:black">Nice to meet you, Tim</span>
-<span style="color:white;background:black">t</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
+<span style="color:#0000c0;background:silver">What is your name?</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver">Tim t<u> </u> </span>
+<span style="color:#0000c0;background:silver">Nice to meet you, Tim</span>
+<span style="color:#0000c0;background:silver">t</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
</pre></div>
<div class="shot"><pre><span style="color:black;background:teal">Press F1 to exit. </span>
-<span style="color:white;background:black">What is your name?</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black">Tim the Ench<u> </u> </span>
-<span style="color:white;background:black">Nice to meet you, Tim</span>
-<span style="color:white;background:black">the Ench</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
+<span style="color:#0000c0;background:silver">What is your name?</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver">Tim the Ench<u> </u> </span>
+<span style="color:#0000c0;background:silver">Nice to meet you, Tim</span>
+<span style="color:#0000c0;background:silver">the Ench</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
</pre></div>
<div class="shot"><pre><span style="color:black;background:teal">Press F1 to exit. </span>
-<span style="color:white;background:black">What is your name?</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black">Tim the Enchanter<u> </u> </span>
-<span style="color:white;background:black">Nice to meet you, Tim</span>
-<span style="color:white;background:black">the Enchanter</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
+<span style="color:#0000c0;background:silver">What is your name?</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver">Tim the Enchanter<u> </u> </span>
+<span style="color:#0000c0;background:silver">Nice to meet you, Tim</span>
+<span style="color:#0000c0;background:silver">the Enchanter</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
</pre></div>
<br clear="left">
<br>
@@ -595,46 +595,46 @@ widgets are selectable it will only scroll when the cursor reaches the
top or bottom edge.
<div class="shot"><pre><span style="color:black;background:teal">Press F1 to exit. </span>
-<span style="color:white;background:black">What is your name?</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black">Abe </span>
-<span style="color:white;background:black">Nice to meet you, Abe</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:white;background:black">What is your name?</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black">Bob<u> </u> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
+<span style="color:#0000c0;background:silver">What is your name?</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver">Abe </span>
+<span style="color:#0000c0;background:silver">Nice to meet you, Abe</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:#0000c0;background:silver">What is your name?</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver">Bob<u> </u> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
</pre></div>
<div class="shot"><pre><span style="color:black;background:teal">Press F1 to exit. </span>
-<span style="color:white;background:black">Nice to meet you, Abe</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:white;background:black">What is your name?</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black">Bob </span>
-<span style="color:white;background:black">Nice to meet you, Bob</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:white;background:black">What is your name?</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black">Carl </span>
-<span style="color:white;background:black">Nice to meet you, Carl</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:white;background:black">What is your name?</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"><u> </u> </span>
+<span style="color:#0000c0;background:silver">Nice to meet you, Abe</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:#0000c0;background:silver">What is your name?</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver">Bob </span>
+<span style="color:#0000c0;background:silver">Nice to meet you, Bob</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:#0000c0;background:silver">What is your name?</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver">Carl </span>
+<span style="color:#0000c0;background:silver">Nice to meet you, Carl</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:#0000c0;background:silver">What is your name?</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"><u> </u> </span>
</pre></div>
<div class="shot"><pre><span style="color:black;background:teal">Press F1 to exit. </span>
-<span style="color:white;background:black">Nice to meet you, Bob</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:white;background:black">What is your name?</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black">Carl </span>
-<span style="color:white;background:black">Nice to meet you, Carl</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:white;background:black">What is your name?</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black">Dave </span>
-<span style="color:white;background:black">Nice to meet you, Dave</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"> </span>
-<span style="color:white;background:black">What is your name?</span><span style="color:silver;background:black"> </span>
-<span style="color:silver;background:black"><u> </u> </span>
+<span style="color:#0000c0;background:silver">Nice to meet you, Bob</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:#0000c0;background:silver">What is your name?</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver">Carl </span>
+<span style="color:#0000c0;background:silver">Nice to meet you, Carl</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:#0000c0;background:silver">What is your name?</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver">Dave </span>
+<span style="color:#0000c0;background:silver">Nice to meet you, Dave</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"> </span>
+<span style="color:#0000c0;background:silver">What is your name?</span><span style="color:black;background:silver"> </span>
+<span style="color:black;background:silver"><u> </u> </span>
</pre></div>
<br clear="left">
<br>
diff --git a/urwid/curses_display.py b/urwid/curses_display.py
index 7c04eec..8301b09 100755
--- a/urwid/curses_display.py
+++ b/urwid/curses_display.py
@@ -24,6 +24,7 @@ Curses-based UI implementation
"""
import curses
+import sys
import util
@@ -32,6 +33,7 @@ except: False, True = 0, 1
_curses_colours = {
+ 'default': (-1, 0),
'black': (curses.COLOR_BLACK, 0),
'dark red': (curses.COLOR_RED, 0),
'dark green': (curses.COLOR_GREEN, 0),
@@ -85,11 +87,12 @@ WINDOW_RESIZE = 410
class Screen:
def __init__(self):
self.curses_pairs = [
- (curses.COLOR_WHITE, curses.COLOR_BLACK), # default
+ (None,None), # Can't be sure what pair 0 will default to
]
self.palette = {}
self.has_color = False
self.s = None
+ self.cursor_state = None
self._keyqueue = []
def register_palette( self, l ):
@@ -121,10 +124,12 @@ class Screen:
'dark green', 'brown', 'dark blue', 'dark magenta',
'dark cyan', 'light gray', 'dark gray', 'light red',
'light green', 'yellow', 'light blue', 'light magenta',
- 'light cyan', 'white'
+ 'light cyan', 'white', 'default' (black if unable to
+ use terminal's default)
background -- background colour, one of: 'black', 'dark red',
'dark green', 'brown', 'dark blue', 'dark magenta',
- 'dark cyan', 'light gray'
+ 'dark cyan', 'light gray', 'default' (light gray if
+ unable to use terminal's default)
mono -- monochrome terminal attribute, one of: None (default),
'bold', 'underline', 'standout', or a tuple containing
a combination eg. ('bold','underline')
@@ -163,6 +168,12 @@ class Screen:
if curses.COLORS < 8:
# not colourful enough
self.has_color = False
+ if self.has_color:
+ try:
+ curses.use_default_colors()
+ self.has_default_colors=True
+ except:
+ self.has_default_colors=False
self._setup_colour_pairs()
curses.noecho()
curses.meta(1)
@@ -172,6 +183,7 @@ class Screen:
return fn()
finally:
curses.echo()
+ self._curs_set(1)
try:
curses.endwin()
except:
@@ -183,8 +195,12 @@ class Screen:
if self.has_color:
if len(self.curses_pairs) > curses.COLOR_PAIRS:
raise Exception("Too many colour pairs! Use fewer combinations.")
-
+
for fg,bg in self.curses_pairs[1:]:
+ if not self.has_default_colors and fg == -1:
+ fg = _curses_colours["black"][0]
+ if not self.has_default_colors and bg == -1:
+ bg = _curses_colours["light gray"][0]
curses.init_pair(k,fg,bg)
k+=1
else:
@@ -218,10 +234,9 @@ class Screen:
def _curs_set(self,x):
- try:
- self.console.curs_set(x)
- except:
- pass
+ if x == self.cursor_state: return
+ curses.curs_set(x)
+ self.cursor_state = x
def _clear(self):
self.s.clear()
diff --git a/urwid/html_fragment.py b/urwid/html_fragment.py
index e934139..e319e8e 100755
--- a/urwid/html_fragment.py
+++ b/urwid/html_fragment.py
@@ -94,6 +94,10 @@ class HtmlGenerator:
See curses_display.register_palette_entry for more info.
"""
+ if foreground == "default":
+ foreground = "black"
+ if background == "default":
+ background = "light gray"
self.palette[name] = (foreground, background, mono)
def run_wrapper(self,fn):
@@ -127,7 +131,7 @@ class HtmlGenerator:
for a, run in attr:
if a is None:
- fg,bg,mono = "light gray", "black", None
+ fg,bg,mono = "black", "light gray", None
else:
fg,bg,mono = self.palette[a]
if y == cy:
@@ -139,7 +143,7 @@ class HtmlGenerator:
col += run
if cols > col:
- fg,bg,mono = "light gray", "black", None
+ fg,bg,mono = "black", "light gray", None
end = line[col:]+" "*(cols-len(line))
if y == cy:
l.append( html_span( end,
diff --git a/urwid/util.py b/urwid/util.py
index 9b23287..ee3c3c1 100644
--- a/urwid/util.py
+++ b/urwid/util.py
@@ -19,11 +19,22 @@
#
# Urwid web site: http://excess.org/urwid/
-# Try to determine if using a double-byte encoding
-# (this almost certainly needs to be fixed and/or improved)
+# Try to determine if using a supported double-byte encoding
import locale
_encoding = locale.getdefaultlocale()[1] or ""
-double_byte_encoding = _encoding[:3] == "euc" or _encoding in ('gb2312','big5')
+double_byte_encoding = _encoding.lower() in ( 'euc-jp' # JISX 0208 only
+ , 'euc-kr', 'euc-cn', 'euc-tw' # CNS 11643 plain 1 only
+ , 'gb2312', 'gbk', 'big5', 'cn-gb', 'uhc'
+ # these shouldn't happen, should they?
+ , 'eucjp', 'euckr', 'euccn', 'euctw', 'cncb' )
+
+# if encoding is valid for conversion from unicode, remember it
+target_encoding = None
+try:
+ if _encoding:
+ u"".encode(_encoding)
+ target_encoding = _encoding
+except LookupError: pass
def set_double_byte_encoding( dbe ):
"""Enable/disable special processing for double-byte characters.
@@ -274,11 +285,22 @@ def within_double_byte(str, line_start, pos):
"""
if not double_byte_encoding: return 0
- if ord(str[pos]) < 0xA1: return 0
+ v = ord(str[pos])
+
+ if v >= 0x40 and v < 0x7f:
+ # might be second half of big5, uhc or gbk encoding
+ if pos == line_start: return 0
+
+ if ord(str[pos-1]) >= 0x81:
+ if within_double_byte(str, line_start, pos-1) == 1:
+ return 2
+ return 0
+
+ if v < 0x80: return 0
i = pos -1
while i >= line_start:
- if ord(str[i]) < 0xA1:
+ if ord(str[i]) < 0x80:
break
i -= 1