X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d14a1e28567de23c586bc80017073d0c39f8d18f..32485259c1342115488d219776dfebeb3d4d81b1:/wxPython/wx/lib/fancytext.py?ds=inline
diff --git a/wxPython/wx/lib/fancytext.py b/wxPython/wx/lib/fancytext.py
index d6f751bd86..16e4a5e8b3 100644
--- a/wxPython/wx/lib/fancytext.py
+++ b/wxPython/wx/lib/fancytext.py
@@ -1,44 +1,50 @@
-"""FancyText -- methods for rendering XML specified text
-
+# 12/02/2003 - Jeff Grimmett (grimmtooth@softhome.net)
+#
+# o Updated for 2.5 compatability.
+#
+
+"""
+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 help responsible, etc.
+# Use as you see fit. No warantees, I cannot be held responsible, etc.
+
import copy
import math
import sys
+
import wx
import xml.parsers.expat
@@ -195,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()
@@ -269,15 +276,15 @@ class DCRenderer(Renderer):
def renderCharacterData(self, data, x, y):
self.dc.SetTextForeground(self.getCurrentColor())
- self.dc.DrawText(data, (x, y))
+ self.dc.DrawText(data, x, y)
def start_angle(self, attrs):
self.dc.SetFont(self.getCurrentFont())
self.dc.SetPen(self.getCurrentPen())
width, height, descent, leading = self.dc.GetFullTextExtent("M")
y = self.y + self.offsets[-1]
- self.dc.DrawLine((iround(self.x), iround(y)), (iround( self.x+width), iround(y)))
- self.dc.DrawLine((iround(self.x), iround(y)), (iround(self.x+width), iround(y-width)))
+ self.dc.DrawLine(iround(self.x), iround(y), iround( self.x+width), iround(y))
+ self.dc.DrawLine(iround(self.x), iround(y), iround(self.x+width), iround(y-width))
self.updateDims(width, height, descent, leading)
@@ -293,8 +300,8 @@ class DCRenderer(Renderer):
r = iround( 0.95 * width / 4)
xc = (2*self.x + width) / 2
yc = iround(y-1.5*r)
- self.dc.DrawCircle((xc - r, yc), r)
- self.dc.DrawCircle((xc + r, yc), r)
+ self.dc.DrawCircle(xc - r, yc, r)
+ self.dc.DrawCircle(xc + r, yc, r)
self.updateDims(width, height, 0, 0)
def start_times(self, attrs):
@@ -305,8 +312,8 @@ class DCRenderer(Renderer):
width *= 0.8
width = iround(width+.5)
self.dc.SetPen(wx.Pen(self.getCurrentColor(), 1))
- self.dc.DrawLine((iround(self.x), iround(y-width)), (iround(self.x+width-1), iround(y-1)))
- self.dc.DrawLine((iround(self.x), iround(y-2)), (iround(self.x+width-1), iround(y-width-1)))
+ self.dc.DrawLine(iround(self.x), iround(y-width), iround(self.x+width-1), iround(y-1))
+ self.dc.DrawLine(iround(self.x), iround(y-2), iround(self.x+width-1), iround(y-width-1))
self.updateDims(width, height, 0, 0)
@@ -395,11 +402,49 @@ renderToDC = RenderToDC
# Test Driver
def test():
- app = wx.PyApp()
+ 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(wx.NULL, -1, "FancyText demo", wx.DefaultPosition)
+ 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)