| 1 | |
| 2 | import wx |
| 3 | import wx.lib.fancytext as fancytext |
| 4 | |
| 5 | #---------------------------------------------------------------------- |
| 6 | |
| 7 | test_str = ('<font style="italic" family="swiss" color="red" weight="bold" >' |
| 8 | 'some |<sup>23</sup> <angle/>text<sub>with <angle/> subscript</sub>' |
| 9 | '</font> some other text') |
| 10 | |
| 11 | test_str2 = '<font family="swiss" color="dark green" size="40">big green text</font>' |
| 12 | |
| 13 | |
| 14 | class TestPanel(wx.Panel): |
| 15 | def __init__(self, parent): |
| 16 | wx.Panel.__init__(self, parent, -1) |
| 17 | self.Bind(wx.EVT_PAINT, self.OnPaint) |
| 18 | |
| 19 | def OnPaint(self, evt): |
| 20 | dc = wx.PaintDC(self) |
| 21 | |
| 22 | w, h = fancytext.GetExtent(test_str, dc) |
| 23 | fancytext.RenderToDC(test_str, dc, 20, 20) |
| 24 | |
| 25 | fancytext.RenderToDC(test_str2, dc, 20, 20 + h + 10) |
| 26 | |
| 27 | |
| 28 | #---------------------------------------------------------------------- |
| 29 | |
| 30 | def runTest(frame, nb, log): |
| 31 | win = TestPanel(nb) |
| 32 | return win |
| 33 | |
| 34 | #---------------------------------------------------------------------- |
| 35 | |
| 36 | |
| 37 | |
| 38 | overview = \ |
| 39 | """ |
| 40 | <html> |
| 41 | <body> |
| 42 | <h1>FancyText -- <i>methods for rendering XML specified text</i></h1> |
| 43 | |
| 44 | <p>This module exports four main methods:: |
| 45 | <pre> |
| 46 | def GetExtent(str, dc=None, enclose=True) |
| 47 | def GetFullExtent(str, dc=None, enclose=True) |
| 48 | def RenderToBitmap(str, background=None, enclose=True) |
| 49 | def RenderToDC(str, dc, x, y, enclose=True) |
| 50 | </pre> |
| 51 | |
| 52 | In all cases, 'str' is an XML string. Note that start and end tags |
| 53 | are only required if *enclose* is set to False. In this case the |
| 54 | text should be wrapped in FancyText tags. |
| 55 | |
| 56 | <p>In addition, the module exports one class:: |
| 57 | <pre> |
| 58 | class StaticFancyText(self, window, id, text, background, ...) |
| 59 | </pre> |
| 60 | This class works similar to StaticText except it interprets its text |
| 61 | as FancyText. |
| 62 | |
| 63 | <p>The text can support<sup>superscripts</sup> and <sub>subscripts</sub>, text |
| 64 | in different <font size="+3">sizes</font>, <font color="blue">colors</font>, |
| 65 | <i>styles</i>, <b>weights</b> and |
| 66 | <font family="script">families</font>. It also supports a limited set of symbols, |
| 67 | currently <times/>, <infinity/>, <angle/> as well as greek letters in both |
| 68 | upper case (<Alpha/><Beta/>...<Omega/>) and lower case (<alpha/><beta/>...<omega/>). |
| 69 | |
| 70 | </font></font> |
| 71 | The End |
| 72 | </body> |
| 73 | </html> |
| 74 | """ |
| 75 | |
| 76 | |
| 77 | |
| 78 | if __name__ == '__main__': |
| 79 | import sys,os |
| 80 | import run |
| 81 | run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:]) |
| 82 | |