X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d7403ad2d154a8e2974fdc5fc215258f3a75cdde..855dd2ecee69f59a31f2ed995eecf6728a847a31:/wxPython/wx/lib/fancytext.py diff --git a/wxPython/wx/lib/fancytext.py b/wxPython/wx/lib/fancytext.py index ddc45b0667..df7772e94b 100644 --- a/wxPython/wx/lib/fancytext.py +++ b/wxPython/wx/lib/fancytext.py @@ -3,42 +3,40 @@ # o Updated for 2.5 compatability. # -"""FancyText -- methods for rendering XML specified text - +""" +FancyText -- methods for rendering XML specified text + This module exports four main methods:: - + def GetExtent(str, dc=None, enclose=True) def GetFullExtent(str, dc=None, enclose=True) def RenderToBitmap(str, background=None, enclose=True) def RenderToDC(str, dc, x, y, enclose=True) - -In all cases, 'str' is an XML string. Note that start and end tags -are only required if *enclose* is set to False. In this case the -text should be wrapped in FancyText tags. + +In all cases, 'str' is an XML string. Note that start and end tags are +only required if *enclose* is set to False. In this case the text +should be wrapped in FancyText tags. In addition, the module exports one class:: - + class StaticFancyText(self, window, id, text, background, ...) - -This class works similar to StaticText except it interprets its text + +This class works similar to StaticText except it interprets its text as FancyText. -The text can supportsuperscripts and subscripts, text -in different sizes, colors, styles, weights and -families. It also supports a limited set of symbols, -currently , , as well as greek letters in both -upper case (...) and lower case (...). +The text can support superscripts and subscripts, text in different +sizes, colors, styles, weights and families. It also supports a +limited set of symbols, currently *times*, *infinity*, *angle* as well +as greek letters in both upper case (*Alpha* *Beta*... *Omega*) and +lower case (*alpha* *beta*... *omega*). -We can use doctest/guitest to display this string in all its marked up glory. - >>> frame = wx.Frame(wx.NULL, -1, "FancyText demo", wx.DefaultPosition) ->>> sft = StaticFancyText(frame, -1, __doc__, wx.Brush("light grey", wx.SOLID)) +>>> sft = StaticFancyText(frame, -1, testText, wx.Brush("light grey", wx.SOLID)) >>> frame.SetClientSize(sft.GetSize()) >>> didit = frame.Show() >>> from guitest import PauseTests; PauseTests() - -The End""" +""" # Copyright 2001-2003 Timothy Hochberg # Use as you see fit. No warantees, I cannot be held responsible, etc. @@ -203,18 +201,19 @@ class Renderer: def getCurrentFont(self): font = self.fonts[-1] - return wx.TheFontList.FindOrCreateFont(font.get("size", self.defaultSize), - font.get("family", self.defaultFamily), - font.get("style", self.defaultStyle), - font.get("weight", self.defaultWeight), - encoding = font.get("encoding", self.defaultEncoding)) + return wx.Font(font.get("size", self.defaultSize), + font.get("family", self.defaultFamily), + font.get("style", self.defaultStyle), + font.get("weight",self.defaultWeight), + False, "", + font.get("encoding", self.defaultEncoding)) def getCurrentColor(self): font = self.fonts[-1] return wx.TheColourDatabase.FindColour(font.get("color", self.defaultColor)) def getCurrentPen(self): - return wx.ThePenList.FindOrCreatePen(self.getCurrentColor(), 1, wx.SOLID) + return wx.Pen(self.getCurrentColor(), 1, wx.SOLID) def renderCharacterData(self, data, x, y): raise NotImplementedError() @@ -351,6 +350,9 @@ def GetFullExtent(str, dc=None, enclose=True): def RenderToBitmap(str, background=None, enclose=1): "Return str rendered on a minumum size bitmap" dc = wx.MemoryDC() + # Chicken and egg problem, we need a bitmap in the DC in order to + # measure how big the bitmap should be... + dc.SelectObject(wx.EmptyBitmap(1,1)) width, height, dy = GetFullExtent(str, dc, enclose) bmp = wx.EmptyBitmap(width, height) dc.SelectObject(bmp) @@ -403,11 +405,49 @@ renderToDC = RenderToDC # Test Driver def test(): + testText = \ +"""FancyText -- methods for rendering XML specified text + +This module exports four main methods:: + + def GetExtent(str, dc=None, enclose=True) + def GetFullExtent(str, dc=None, enclose=True) + def RenderToBitmap(str, background=None, enclose=True) + def RenderToDC(str, dc, x, y, enclose=True) + +In all cases, 'str' is an XML string. Note that start and end tags +are only required if *enclose* is set to False. In this case the +text should be wrapped in FancyText tags. + +In addition, the module exports one class:: + + class StaticFancyText(self, window, id, text, background, ...) + +This class works similar to StaticText except it interprets its text +as FancyText. + +The text can supportsuperscripts and subscripts, text +in different sizes, colors, styles, weights and +families. It also supports a limited set of symbols, +currently , , as well as greek letters in both +upper case (...) and lower case (...). + +We can use doctest/guitest to display this string in all its marked up glory. + +>>> frame = wx.Frame(wx.NULL, -1, "FancyText demo", wx.DefaultPosition) +>>> sft = StaticFancyText(frame, -1, __doc__, wx.Brush("light grey", wx.SOLID)) +>>> frame.SetClientSize(sft.GetSize()) +>>> didit = frame.Show() +>>> from guitest import PauseTests; PauseTests() + + +The End""" + app = wx.PySimpleApp() box = wx.BoxSizer(wx.VERTICAL) frame = wx.Frame(None, -1, "FancyText demo", wx.DefaultPosition) frame.SetBackgroundColour("light grey") - sft = StaticFancyText(frame, -1, __doc__) + sft = StaticFancyText(frame, -1, testText) box.Add(sft, 1, wx.EXPAND) frame.SetSizer(box) frame.SetAutoLayout(True)