3 import wx
.richtext 
as rt
 
   6 #---------------------------------------------------------------------- 
   8 class RichTextFrame(wx
.Frame
): 
   9     def __init__(self
, *args
, **kw
): 
  10         wx
.Frame
.__init
__(self
, *args
, **kw
) 
  14         self
.CreateStatusBar() 
  15         self
.SetStatusText("Welcome to wx.richtext.RichTextCtrl!") 
  17         self
.rtc 
= rt
.RichTextCtrl(self
, style
=wx
.VSCROLL|wx
.HSCROLL|wx
.NO_BORDER
); 
  18         wx
.CallAfter(self
.rtc
.SetFocus
) 
  21         self
.rtc
.BeginSuppressUndo() 
  23         self
.rtc
.BeginParagraphSpacing(0, 20) 
  25         self
.rtc
.BeginAlignment(rt
.TEXT_ALIGNMENT_CENTRE
) 
  28         self
.rtc
.BeginFontSize(14) 
  29         self
.rtc
.WriteText("Welcome to wxRichTextCtrl, a wxWidgets control for editing and presenting styled text and images") 
  30         self
.rtc
.EndFontSize() 
  33         self
.rtc
.BeginItalic() 
  34         self
.rtc
.WriteText("by Julian Smart") 
  40         self
.rtc
.WriteImage(images
.get_rt_zebraImage()) 
  42         self
.rtc
.EndAlignment() 
  47         self
.rtc
.WriteText("What can you do with this thing? ") 
  48         self
.rtc
.WriteImage(images
.get_rt_smileyImage()) 
  49         self
.rtc
.WriteText(" Well, you can change text ") 
  51         self
.rtc
.BeginTextColour((255, 0, 0)) 
  52         self
.rtc
.WriteText("colour, like this red bit.") 
  53         self
.rtc
.EndTextColour() 
  55         self
.rtc
.BeginTextColour((0, 0, 255)) 
  56         self
.rtc
.WriteText(" And this blue bit.") 
  57         self
.rtc
.EndTextColour() 
  59         self
.rtc
.WriteText(" Naturally you can make things ") 
  61         self
.rtc
.WriteText("bold ") 
  63         self
.rtc
.BeginItalic() 
  64         self
.rtc
.WriteText("or italic ") 
  66         self
.rtc
.BeginUnderline() 
  67         self
.rtc
.WriteText("or underlined.") 
  68         self
.rtc
.EndUnderline() 
  70         self
.rtc
.BeginFontSize(14) 
  71         self
.rtc
.WriteText(" Different font sizes on the same line is allowed, too.") 
  72         self
.rtc
.EndFontSize() 
  74         self
.rtc
.WriteText(" Next we'll show an indented paragraph.") 
  76         self
.rtc
.BeginLeftIndent(60) 
  79         self
.rtc
.WriteText("It was in January, the most down-trodden month of an Edinburgh winter. An attractive woman came into the cafe, which is nothing remarkable.") 
  80         self
.rtc
.EndLeftIndent() 
  84         self
.rtc
.WriteText("Next, we'll show a first-line indent, achieved using BeginLeftIndent(100, -40).") 
  86         self
.rtc
.BeginLeftIndent(100, -40) 
  89         self
.rtc
.WriteText("It was in January, the most down-trodden month of an Edinburgh winter. An attractive woman came into the cafe, which is nothing remarkable.") 
  90         self
.rtc
.EndLeftIndent() 
  94         self
.rtc
.WriteText("Numbered bullets are possible, again using sub-indents:") 
  96         self
.rtc
.BeginNumberedBullet(1, 100, 60) 
  99         self
.rtc
.WriteText("This is my first item. Note that wxRichTextCtrl doesn't automatically do numbering, but this will be added later.") 
 100         self
.rtc
.EndNumberedBullet() 
 102         self
.rtc
.BeginNumberedBullet(2, 100, 60) 
 105         self
.rtc
.WriteText("This is my second item.") 
 106         self
.rtc
.EndNumberedBullet() 
 110         self
.rtc
.WriteText("The following paragraph is right-indented:") 
 112         self
.rtc
.BeginRightIndent(200) 
 115         self
.rtc
.WriteText("It was in January, the most down-trodden month of an Edinburgh winter. An attractive woman came into the cafe, which is nothing remarkable.") 
 116         self
.rtc
.EndRightIndent() 
 120         self
.rtc
.WriteText("The following paragraph is right-aligned with 1.5 line spacing:") 
 122         self
.rtc
.BeginAlignment(rt
.TEXT_ALIGNMENT_RIGHT
) 
 123         self
.rtc
.BeginLineSpacing(rt
.TEXT_ATTR_LINE_SPACING_HALF
) 
 126         self
.rtc
.WriteText("It was in January, the most down-trodden month of an Edinburgh winter. An attractive woman came into the cafe, which is nothing remarkable.") 
 127         self
.rtc
.EndLineSpacing() 
 128         self
.rtc
.EndAlignment() 
 131         self
.rtc
.WriteText("Other notable features of wxRichTextCtrl include:") 
 133         self
.rtc
.BeginSymbolBullet('*', 100, 60) 
 135         self
.rtc
.WriteText("Compatibility with wxTextCtrl API") 
 136         self
.rtc
.EndSymbolBullet() 
 138         self
.rtc
.BeginSymbolBullet('*', 100, 60) 
 140         self
.rtc
.WriteText("Easy stack-based BeginXXX()...EndXXX() style setting in addition to SetStyle()") 
 141         self
.rtc
.EndSymbolBullet() 
 143         self
.rtc
.BeginSymbolBullet('*', 100, 60) 
 145         self
.rtc
.WriteText("XML loading and saving") 
 146         self
.rtc
.EndSymbolBullet() 
 148         self
.rtc
.BeginSymbolBullet('*', 100, 60) 
 150         self
.rtc
.WriteText("Undo/Redo, with batching option and Undo suppressing") 
 151         self
.rtc
.EndSymbolBullet() 
 153         self
.rtc
.BeginSymbolBullet('*', 100, 60) 
 155         self
.rtc
.WriteText("Clipboard copy and paste") 
 156         self
.rtc
.EndSymbolBullet() 
 158         self
.rtc
.BeginSymbolBullet('*', 100, 60) 
 160         self
.rtc
.WriteText("wxRichTextStyleSheet with named character and paragraph styles, and control for applying named styles") 
 161         self
.rtc
.EndSymbolBullet() 
 163         self
.rtc
.BeginSymbolBullet('*', 100, 60) 
 165         self
.rtc
.WriteText("A design that can easily be extended to other content types, ultimately with text boxes, tables, controls, and so on") 
 166         self
.rtc
.EndSymbolBullet() 
 170         self
.rtc
.WriteText("Note: this sample content was generated programmatically from within the MyFrame constructor in the demo. The images were loaded from inline XPMs. Enjoy wxRichTextCtrl!") 
 172         self
.rtc
.EndParagraphSpacing() 
 174         self
.rtc
.EndSuppressUndo() 
 178     def OnFileOpen(self
, evt
): 
 179         # TODO: Use RichTextBuffer.GetExtWildcard to get the wildcard string 
 180         dlg 
= wx
.FileDialog(self
, "Choose a filename", 
 181                             wildcard
="All files (*.*)|*.*", 
 183         if dlg
.ShowModal() == wx
.ID_OK
: 
 186                 # TODO: use the filter index to determine what file type to use 
 187                 self
.rtc
.LoadFile(path
, rt
.RICHTEXT_TYPE_TEXT
) 
 191     def OnFileSave(self
, evt
): 
 192         if not self
.rtc
.GetFilename(): 
 193             self
.OnFileSaveAs(evt
) 
 197     def OnFileSaveAs(self
, evt
): 
 198         # TODO: Use RichTextBuffer.GetExtWildcard to get the wildcard string 
 199         dlg 
= wx
.FileDialog(self
, "Choose a filename", 
 200                             wildcard
="All files (*.*)|*.*", 
 202         if dlg
.ShowModal() == wx
.ID_OK
: 
 205                 self
.rtc
.SaveFile(path
) 
 209     def OnFileViewHTML(self
, evt
): pass 
 212     def OnFileExit(self
, evt
): 
 216     def OnBold(self
, evt
): 
 217         self
.rtc
.ApplyBoldToSelection() 
 219     def OnItalic(self
, evt
):  
 220         self
.rtc
.ApplyItalicToSelection() 
 222     def OnUnderline(self
, evt
): 
 223         self
.rtc
.ApplyUnderlineToSelection() 
 225     def OnAlignLeft(self
, evt
): 
 226         self
.rtc
.ApplyAlignmentToSelection(rt
.TEXT_ALIGNMENT_LEFT
) 
 228     def OnAlignRight(self
, evt
): 
 229         self
.rtc
.ApplyAlignmentToSelection(rt
.TEXT_ALIGNMENT_RIGHT
) 
 231     def OnAlignCenter(self
, evt
): 
 232         self
.rtc
.ApplyAlignmentToSelection(rt
.TEXT_ALIGNMENT_CENTRE
) 
 234     def OnIndentMore(self
, evt
): 
 235         attr 
= rt
.RichTextAttr() 
 236         attr
.SetFlags(rt
.TEXT_ATTR_LEFT_INDENT
) 
 237         ip 
= self
.rtc
.GetInsertionPoint() 
 238         if self
.rtc
.GetStyle(ip
, attr
): 
 239             r 
= rt
.RichTextRange(ip
, ip
) 
 240             if self
.rtc
.HasSelection(): 
 241                 r 
= self
.rtc
.GetSelectionRange() 
 243             attr
.SetLeftIndent(attr
.GetLeftIndent() + 100) 
 244             attr
.SetFlags(rt
.TEXT_ATTR_LEFT_INDENT
) 
 245             self
.rtc
.SetStyle(r
, attr
) 
 248     def OnIndentLess(self
, evt
): 
 249         attr 
= rt
.RichTextAttr() 
 250         attr
.SetFlags(rt
.TEXT_ATTR_LEFT_INDENT
) 
 251         ip 
= self
.rtc
.GetInsertionPoint() 
 252         if self
.rtc
.GetStyle(ip
, attr
): 
 253             r 
= rt
.RichTextRange(ip
, ip
) 
 254             if self
.rtc
.HasSelection(): 
 255                 r 
= self
.rtc
.GetSelectionRange() 
 257         if attr
.GetLeftIndent() >= 100: 
 258             attr
.SetLeftIndent(attr
.GetLeftIndent() - 100) 
 259             attr
.SetFlags(rt
.TEXT_ATTR_LEFT_INDENT
) 
 260             self
.rtc
.SetStyle(r
, attr
) 
 263     def OnParagraphSpacingMore(self
, evt
): 
 264         attr 
= rt
.RichTextAttr() 
 265         attr
.SetFlags(rt
.TEXT_ATTR_PARA_SPACING_AFTER
) 
 266         ip 
= self
.rtc
.GetInsertionPoint() 
 267         if self
.rtc
.GetStyle(ip
, attr
): 
 268             r 
= rt
.RichTextRange(ip
, ip
) 
 269             if self
.rtc
.HasSelection(): 
 270                 r 
= self
.rtc
.GetSelectionRange() 
 272             attr
.SetParagraphSpacingAfter(attr
.GetParagraphSpacingAfter() + 20); 
 273             attr
.SetFlags(rt
.TEXT_ATTR_PARA_SPACING_AFTER
) 
 274             self
.rtc
.SetStyle(r
, attr
) 
 277     def OnParagraphSpacingLess(self
, evt
): 
 278         attr 
= rt
.RichTextAttr() 
 279         attr
.SetFlags(rt
.TEXT_ATTR_PARA_SPACING_AFTER
) 
 280         ip 
= self
.rtc
.GetInsertionPoint() 
 281         if self
.rtc
.GetStyle(ip
, attr
): 
 282             r 
= rt
.RichTextRange(ip
, ip
) 
 283             if self
.rtc
.HasSelection(): 
 284                 r 
= self
.rtc
.GetSelectionRange() 
 286             if attr
.GetParagraphSpacingAfter() >= 20: 
 287                 attr
.SetParagraphSpacingAfter(attr
.GetParagraphSpacingAfter() - 20); 
 288                 attr
.SetFlags(rt
.TEXT_ATTR_PARA_SPACING_AFTER
) 
 289                 self
.rtc
.SetStyle(r
, attr
) 
 292     def OnLineSpacingSingle(self
, evt
):  
 293         attr 
= rt
.RichTextAttr() 
 294         attr
.SetFlags(rt
.TEXT_ATTR_LINE_SPACING
) 
 295         ip 
= self
.rtc
.GetInsertionPoint() 
 296         if self
.rtc
.GetStyle(ip
, attr
): 
 297             r 
= rt
.RichTextRange(ip
, ip
) 
 298             if self
.rtc
.HasSelection(): 
 299                 r 
= self
.rtc
.GetSelectionRange() 
 301             attr
.SetFlags(rt
.TEXT_ATTR_LINE_SPACING
) 
 302             attr
.SetLineSpacing(10) 
 303             self
.rtc
.SetStyle(r
, attr
) 
 306     def OnLineSpacingHalf(self
, evt
): 
 307         attr 
= rt
.RichTextAttr() 
 308         attr
.SetFlags(rt
.TEXT_ATTR_LINE_SPACING
) 
 309         ip 
= self
.rtc
.GetInsertionPoint() 
 310         if self
.rtc
.GetStyle(ip
, attr
): 
 311             r 
= rt
.RichTextRange(ip
, ip
) 
 312             if self
.rtc
.HasSelection(): 
 313                 r 
= self
.rtc
.GetSelectionRange() 
 315             attr
.SetFlags(rt
.TEXT_ATTR_LINE_SPACING
) 
 316             attr
.SetLineSpacing(15) 
 317             self
.rtc
.SetStyle(r
, attr
) 
 320     def OnLineSpacingDouble(self
, evt
): 
 321         attr 
= rt
.RichTextAttr() 
 322         attr
.SetFlags(rt
.TEXT_ATTR_LINE_SPACING
) 
 323         ip 
= self
.rtc
.GetInsertionPoint() 
 324         if self
.rtc
.GetStyle(ip
, attr
): 
 325             r 
= rt
.RichTextRange(ip
, ip
) 
 326             if self
.rtc
.HasSelection(): 
 327                 r 
= self
.rtc
.GetSelectionRange() 
 329             attr
.SetFlags(rt
.TEXT_ATTR_LINE_SPACING
) 
 330             attr
.SetLineSpacing(20) 
 331             self
.rtc
.SetStyle(r
, attr
) 
 334     def OnFont(self
, evt
): 
 335         if not self
.rtc
.HasSelection(): 
 338         r 
= self
.rtc
.GetSelectionRange() 
 339         fontData 
= wx
.FontData() 
 340         fontData
.EnableEffects(False) 
 341         attr 
= rt
.RichTextAttr() 
 342         attr
.SetFlags(rt
.TEXT_ATTR_FONT
) 
 343         if self
.rtc
.GetStyle(self
.rtc
.GetInsertionPoint(), attr
): 
 344             fontData
.SetInitialFont(attr
.CreateFont()) 
 346         dlg 
= wx
.FontDialog(self
, fontData
) 
 347         if dlg
.ShowModal() == wx
.ID_OK
: 
 348             fontData 
= dlg
.GetFontData() 
 349             font 
= fontData
.GetChosenFont() 
 351                 attr
.SetFlags(rt
.TEXT_ATTR_FONT
) 
 353                 self
.rtc
.SetStyle(r
, attr
) 
 357     def OnColour(self
, evt
): 
 358         colourData 
= wx
.ColourData() 
 359         attr 
= rt
.RichTextAttr() 
 360         attr
.SetFlags(rt
.TEXT_ATTR_TEXT_COLOUR
) 
 361         if self
.rtc
.GetStyle(self
.rtc
.GetInsertionPoint(), attr
): 
 362             colourData
.SetColour(attr
.GetTextColour()) 
 364         dlg 
= wx
.ColourDialog(self
, colourData
) 
 365         if dlg
.ShowModal() == wx
.ID_OK
: 
 366             colourData 
= dlg
.GetColourData() 
 367             colour 
= colourData
.GetColour() 
 369                 if not self
.rtc
.HasSelection(): 
 370                     self
.rtc
.BeginTextColour(colour
) 
 372                     r 
= self
.rtc
.GetSelectionRange() 
 373                     attr
.SetFlags(rt
.TEXT_ATTR_TEXT_COLOUR
) 
 374                     attr
.SetTextColour(colour
) 
 375                     self
.rtc
.SetStyle(r
, attr
) 
 380     def OnUpdateBold(self
, evt
): 
 381         evt
.Check(self
.rtc
.IsSelectionBold()) 
 383     def OnUpdateItalic(self
, evt
):  
 384         evt
.Check(self
.rtc
.IsSelectionItalics()) 
 386     def OnUpdateUnderline(self
, evt
):  
 387         evt
.Check(self
.rtc
.IsSelectionUnderlined()) 
 389     def OnUpdateAlignLeft(self
, evt
): 
 390         evt
.Check(self
.rtc
.IsSelectionAligned(rt
.TEXT_ALIGNMENT_LEFT
)) 
 392     def OnUpdateAlignCenter(self
, evt
): 
 393         evt
.Check(self
.rtc
.IsSelectionAligned(rt
.TEXT_ALIGNMENT_CENTRE
)) 
 395     def OnUpdateAlignRight(self
, evt
): 
 396         evt
.Check(self
.rtc
.IsSelectionAligned(rt
.TEXT_ALIGNMENT_RIGHT
)) 
 399     def ForwardEvent(self
, evt
): 
 400         # The RichTextCtrl can handle menu and update events for undo, 
 401         # redo, cut, copy, paste, delete, and select all, so just 
 402         # forward the event to it. 
 403         self
.rtc
.ProcessEvent(evt
) 
 406     def MakeMenuBar(self
): 
 407         def doBind(item
, handler
, updateUI
=None): 
 408             self
.Bind(wx
.EVT_MENU
, handler
, item
) 
 409             if updateUI 
is not None: 
 410                 self
.Bind(wx
.EVT_UPDATE_UI
, updateUI
, item
) 
 413         doBind( fileMenu
.Append(-1, "&Open\tCtrl+O", "Open a file"), 
 415         doBind( fileMenu
.Append(-1, "&Save\tCtrl+S", "Save a file"), 
 417         doBind( fileMenu
.Append(-1, "&Save As...\tF12", "Save to a new file"), 
 419         fileMenu
.AppendSeparator() 
 420         doBind( fileMenu
.Append(-1, "&View as HTML", "View HTML"), 
 422         fileMenu
.AppendSeparator() 
 423         doBind( fileMenu
.Append(-1, "E&xit\tCtrl+Q", "Quit this program"), 
 427         doBind( editMenu
.Append(wx
.ID_UNDO
, "&Undo\tCtrl+Z"), 
 428                 self
.ForwardEvent
, self
.ForwardEvent
) 
 429         doBind( editMenu
.Append(wx
.ID_REDO
, "&Redo\tCtrl+Y"), 
 430                 self
.ForwardEvent
, self
.ForwardEvent 
) 
 431         editMenu
.AppendSeparator() 
 432         doBind( editMenu
.Append(wx
.ID_CUT
, "Cu&t\tCtrl+X"), 
 433                 self
.ForwardEvent
, self
.ForwardEvent 
) 
 434         doBind( editMenu
.Append(wx
.ID_COPY
, "&Copy\tCtrl+C"), 
 435                 self
.ForwardEvent
, self
.ForwardEvent
) 
 436         doBind( editMenu
.Append(wx
.ID_PASTE
, "&Paste\tCtrl+V"), 
 437                 self
.ForwardEvent
, self
.ForwardEvent
) 
 438         doBind( editMenu
.Append(wx
.ID_CLEAR
, "&Delete\tDel"), 
 439                 self
.ForwardEvent
, self
.ForwardEvent
) 
 440         editMenu
.AppendSeparator() 
 441         doBind( editMenu
.Append(wx
.ID_SELECTALL
, "Select A&ll\tCtrl+A"), 
 442                 self
.ForwardEvent
, self
.ForwardEvent 
) 
 444         #doBind( editMenu.AppendSeparator(),  ) 
 445         #doBind( editMenu.Append(-1, "&Find...\tCtrl+F"),  ) 
 446         #doBind( editMenu.Append(-1, "&Replace...\tCtrl+R"),  ) 
 448         formatMenu 
= wx
.Menu() 
 449         doBind( formatMenu
.AppendCheckItem(-1, "&Bold\tCtrl+B"), 
 450                 self
.OnBold
, self
.OnUpdateBold
) 
 451         doBind( formatMenu
.AppendCheckItem(-1, "&Italic\tCtrl+I"), 
 452                 self
.OnItalic
, self
.OnUpdateItalic
) 
 453         doBind( formatMenu
.AppendCheckItem(-1, "&Underline\tCtrl+U"), 
 454                 self
.OnUnderline
, self
.OnUpdateUnderline
) 
 455         formatMenu
.AppendSeparator() 
 456         doBind( formatMenu
.AppendCheckItem(-1, "L&eft Align"), 
 457                 self
.OnAlignLeft
, self
.OnUpdateAlignLeft
) 
 458         doBind( formatMenu
.AppendCheckItem(-1, "&Centre"), 
 459                 self
.OnAlignCenter
, self
.OnUpdateAlignCenter
) 
 460         doBind( formatMenu
.AppendCheckItem(-1, "&Right Align"), 
 461                 self
.OnAlignRight
, self
.OnUpdateAlignRight
) 
 462         formatMenu
.AppendSeparator() 
 463         doBind( formatMenu
.Append(-1, "Indent &More"), self
.OnIndentMore
) 
 464         doBind( formatMenu
.Append(-1, "Indent &Less"), self
.OnIndentLess
) 
 465         formatMenu
.AppendSeparator() 
 466         doBind( formatMenu
.Append(-1, "Increase Paragraph &Spacing"), self
.OnParagraphSpacingMore
) 
 467         doBind( formatMenu
.Append(-1, "Decrease &Paragraph Spacing"), self
.OnParagraphSpacingLess
) 
 468         formatMenu
.AppendSeparator() 
 469         doBind( formatMenu
.Append(-1, "Normal Line Spacing"), self
.OnLineSpacingSingle
) 
 470         doBind( formatMenu
.Append(-1, "1.5 Line Spacing"), self
.OnLineSpacingHalf
) 
 471         doBind( formatMenu
.Append(-1, "Double Line Spacing"), self
.OnLineSpacingDouble
) 
 472         formatMenu
.AppendSeparator() 
 473         doBind( formatMenu
.Append(-1, "&Font..."), self
.OnFont
) 
 476         mb
.Append(fileMenu
, "&File") 
 477         mb
.Append(editMenu
, "&Edit") 
 478         mb
.Append(formatMenu
, "F&ormat") 
 482     def MakeToolBar(self
): 
 483         def doBind(item
, handler
, updateUI
=None): 
 484             self
.Bind(wx
.EVT_TOOL
, handler
, item
) 
 485             if updateUI 
is not None: 
 486                 self
.Bind(wx
.EVT_UPDATE_UI
, updateUI
, item
) 
 488         tbar 
= self
.CreateToolBar() 
 489         doBind( tbar
.AddTool(-1, images
.get_rt_openBitmap(), 
 490                             shortHelpString
="Open"), self
.OnFileOpen
) 
 491         doBind( tbar
.AddTool(-1, images
.get_rt_saveBitmap(), 
 492                             shortHelpString
="Save"), self
.OnFileSave
) 
 494         doBind( tbar
.AddTool(wx
.ID_CUT
, images
.get_rt_cutBitmap(), 
 495                             shortHelpString
="Cut"), self
.ForwardEvent
, self
.ForwardEvent
) 
 496         doBind( tbar
.AddTool(wx
.ID_COPY
, images
.get_rt_copyBitmap(), 
 497                             shortHelpString
="Copy"), self
.ForwardEvent
, self
.ForwardEvent
) 
 498         doBind( tbar
.AddTool(wx
.ID_PASTE
, images
.get_rt_pasteBitmap(), 
 499                             shortHelpString
="Paste"), self
.ForwardEvent
, self
.ForwardEvent
) 
 501         doBind( tbar
.AddTool(wx
.ID_UNDO
, images
.get_rt_undoBitmap(), 
 502                             shortHelpString
="Undo"), self
.ForwardEvent
, self
.ForwardEvent
) 
 503         doBind( tbar
.AddTool(wx
.ID_REDO
, images
.get_rt_redoBitmap(), 
 504                             shortHelpString
="Redo"), self
.ForwardEvent
, self
.ForwardEvent
) 
 506         doBind( tbar
.AddTool(-1, images
.get_rt_boldBitmap(), isToggle
=True, 
 507                             shortHelpString
="Bold"), self
.OnBold
, self
.OnUpdateBold
) 
 508         doBind( tbar
.AddTool(-1, images
.get_rt_italicBitmap(), isToggle
=True, 
 509                             shortHelpString
="Italic"), self
.OnItalic
, self
.OnUpdateItalic
) 
 510         doBind( tbar
.AddTool(-1, images
.get_rt_underlineBitmap(), isToggle
=True, 
 511                             shortHelpString
="Underline"), self
.OnUnderline
, self
.OnUpdateUnderline
) 
 513         doBind( tbar
.AddTool(-1, images
.get_rt_alignleftBitmap(), isToggle
=True, 
 514                             shortHelpString
="Align Left"), self
.OnAlignLeft
, self
.OnUpdateAlignLeft
) 
 515         doBind( tbar
.AddTool(-1, images
.get_rt_centreBitmap(), isToggle
=True, 
 516                             shortHelpString
="Center"), self
.OnAlignCenter
, self
.OnUpdateAlignCenter
) 
 517         doBind( tbar
.AddTool(-1, images
.get_rt_alignrightBitmap(), isToggle
=True, 
 518                             shortHelpString
="Align Right"), self
.OnAlignRight
, self
.OnUpdateAlignRight
) 
 520         doBind( tbar
.AddTool(-1, images
.get_rt_indentlessBitmap(), 
 521                             shortHelpString
="Indent Less"), self
.OnIndentLess
) 
 522         doBind( tbar
.AddTool(-1, images
.get_rt_indentmoreBitmap(), 
 523                             shortHelpString
="Indent More"), self
.OnIndentMore
) 
 525         doBind( tbar
.AddTool(-1, images
.get_rt_fontBitmap(), 
 526                             shortHelpString
="Font"), self
.OnFont
) 
 527         doBind( tbar
.AddTool(-1, images
.get_rt_colourBitmap(), 
 528                             shortHelpString
="Font Colour"), self
.OnColour
) 
 534 #---------------------------------------------------------------------- 
 536 class TestPanel(wx
.Panel
): 
 537     def __init__(self
, parent
, log
): 
 539         wx
.Panel
.__init
__(self
, parent
, -1) 
 541         b 
= wx
.Button(self
, -1, "Show the RichTextCtrl sample", (50,50)) 
 542         self
.Bind(wx
.EVT_BUTTON
, self
.OnButton
, b
) 
 545     def OnButton(self
, evt
): 
 546         win 
= RichTextFrame(self
, -1, "wx.richtext.RichTextCtrl", 
 548                             style 
= wx
.DEFAULT_FRAME_STYLE
) 
 551         # give easy access to PyShell if it's running 
 555 #---------------------------------------------------------------------- 
 557 def runTest(frame
, nb
, log
): 
 558     win 
= TestPanel(nb
, log
) 
 561 #---------------------------------------------------------------------- 
 565 overview 
= """<html><body> 
 566 <h2><center>wx.richtext.RichTextCtrl</center></h2> 
 573 if __name__ 
== '__main__': 
 576     run
.main(['', os
.path
.basename(sys
.argv
[0])] + sys
.argv
[1:])