mirror of
https://github.com/wxWidgets/Phoenix.git
synced 2026-01-08 04:50:07 +01:00
Add the FloatCanvas demo modules
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxPython/Phoenix/trunk@73860 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
185
samples/floatcanvas/TestSpline.py
Executable file
185
samples/floatcanvas/TestSpline.py
Executable file
@@ -0,0 +1,185 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
|
||||
"""
|
||||
This is a very small app using the FloatCanvas
|
||||
|
||||
It tests the Spline object, including how you can put points together to
|
||||
create an object with curves and square corners.
|
||||
|
||||
|
||||
"""
|
||||
import wx
|
||||
|
||||
#### import local version:
|
||||
#import sys
|
||||
#sys.path.append("../")
|
||||
#from floatcanvas import NavCanvas
|
||||
#from floatcanvas import FloatCanvas as FC
|
||||
|
||||
from wx.lib.floatcanvas import FloatCanvas as FC
|
||||
from wx.lib.floatcanvas import NavCanvas
|
||||
|
||||
class Spline(FC.Line):
|
||||
def __init__(self, *args, **kwargs):
|
||||
FC.Line.__init__(self, *args, **kwargs)
|
||||
|
||||
def _Draw(self, dc , WorldToPixel, ScaleWorldToPixel, HTdc=None):
|
||||
Points = WorldToPixel(self.Points)
|
||||
dc.SetPen(self.Pen)
|
||||
dc.DrawSpline(Points)
|
||||
if HTdc and self.HitAble:
|
||||
HTdc.SetPen(self.HitPen)
|
||||
HTdc.DrawSpline(Points)
|
||||
|
||||
class DrawFrame(wx.Frame):
|
||||
|
||||
"""
|
||||
A frame used for the FloatCanvas
|
||||
|
||||
"""
|
||||
def __init__(self, *args, **kwargs):
|
||||
wx.Frame.__init__(self, *args, **kwargs)
|
||||
|
||||
## Set up the MenuBar
|
||||
MenuBar = wx.MenuBar()
|
||||
|
||||
file_menu = wx.Menu()
|
||||
item = file_menu.Append(-1, "&Close","Close this frame")
|
||||
self.Bind(wx.EVT_MENU, self.OnQuit, item)
|
||||
MenuBar.Append(file_menu, "&File")
|
||||
|
||||
help_menu = wx.Menu()
|
||||
item = help_menu.Append(-1, "&About",
|
||||
"More information About this program")
|
||||
self.Bind(wx.EVT_MENU, self.OnAbout, item)
|
||||
MenuBar.Append(help_menu, "&Help")
|
||||
|
||||
self.SetMenuBar(MenuBar)
|
||||
self.CreateStatusBar()
|
||||
|
||||
# Add the Canvas
|
||||
self.Canvas = NavCanvas.NavCanvas(self,
|
||||
BackgroundColor = "White",
|
||||
).Canvas
|
||||
|
||||
self.Canvas.Bind(FC.EVT_MOTION, self.OnMove)
|
||||
|
||||
wx.EVT_CLOSE(self, self.OnCloseWindow)
|
||||
|
||||
self.DrawTest()
|
||||
self.Show()
|
||||
self.Canvas.ZoomToBB()
|
||||
|
||||
def OnAbout(self, event):
|
||||
print "OnAbout called"
|
||||
|
||||
dlg = wx.MessageDialog(self, "This is a small program to demonstrate\n"
|
||||
"the use of the FloatCanvas\n",
|
||||
"About Me", wx.OK | wx.ICON_INFORMATION)
|
||||
dlg.ShowModal()
|
||||
dlg.Destroy()
|
||||
|
||||
def OnMove(self, event):
|
||||
"""
|
||||
Updates the status bar with the world coordinates
|
||||
"""
|
||||
self.SetStatusText("%.2f, %.2f"%tuple(event.Coords))
|
||||
|
||||
def OnQuit(self,event):
|
||||
self.Close(True)
|
||||
|
||||
def OnCloseWindow(self, event):
|
||||
self.Destroy()
|
||||
|
||||
def DrawTest(self,event=None):
|
||||
wx.GetApp().Yield()
|
||||
|
||||
Canvas = self.Canvas
|
||||
|
||||
Points = [(0, 0),
|
||||
(200,0),
|
||||
(200,0),
|
||||
(200,0),
|
||||
(200,15),
|
||||
(185,15),
|
||||
(119,15),
|
||||
(104,15),
|
||||
(104,30),
|
||||
(104,265),
|
||||
(104,280),
|
||||
(119,280),
|
||||
(185,280),
|
||||
(200,280),
|
||||
(200,295),
|
||||
(200,295),
|
||||
(200,295),
|
||||
(0, 295),
|
||||
(0, 295),
|
||||
(0, 295),
|
||||
(0, 280),
|
||||
(15, 280),
|
||||
(81, 280),
|
||||
(96, 280),
|
||||
(96, 265),
|
||||
(96, 30),
|
||||
(96, 15),
|
||||
(81, 15),
|
||||
(15, 15),
|
||||
(0, 15),
|
||||
(0, 0),
|
||||
]
|
||||
|
||||
Canvas.ClearAll()
|
||||
|
||||
MyLine = FC.Spline(Points,
|
||||
LineWidth = 3,
|
||||
LineColor = "Blue")
|
||||
|
||||
Canvas.AddObject(MyLine)
|
||||
Canvas.AddPointSet(Points,
|
||||
Color = "Red",
|
||||
Diameter = 4,
|
||||
)
|
||||
|
||||
## A regular old spline:
|
||||
Points = [(-30, 260),
|
||||
(-10, 130),
|
||||
(70, 185),
|
||||
(160,60),
|
||||
]
|
||||
|
||||
Canvas.AddSpline(Points,
|
||||
LineWidth = 5,
|
||||
LineColor = "Purple")
|
||||
|
||||
class DemoApp(wx.App):
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
wx.App.__init__(self, *args, **kwargs)
|
||||
|
||||
def OnInit(self):
|
||||
frame = DrawFrame(None, title="FloatCanvas Spline Demo", size = (700,700))
|
||||
|
||||
self.SetTopWindow(frame)
|
||||
return True
|
||||
|
||||
app = DemoApp(False)# put in True if you want output to go to it's own window.
|
||||
app.MainLoop()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user