Files
Phoenix/samples/floatcanvas/TextBox.py
Edouard Choinière 95cafd1a3f style: Normalise numpy imports with import numpy as np
The convention when importing numpy is to use `import numpy as np`

Fixes: unconventional-import-alias (ICN001)
Ruff rule: https://docs.astral.sh/ruff/rules/unconventional-import-alias/
2025-02-08 16:48:57 +00:00

303 lines
13 KiB
Python

#!/usr/bin/env python
"""
A test and demo of the features of the ScaledTextBox
"""
import wx
## import the installed version
from wx.lib.floatcanvas import NavCanvas, FloatCanvas
## import the local version
#import sys
#sys.path.append("..")
#from floatcanvas import NavCanvas, FloatCanvas
import numpy as np
class DrawFrame(wx.Frame):
"""
A frame used for the FloatCanvas Demo
"""
def __init__(self,parent, id,title,position,size):
wx.Frame.__init__(self,parent, id,title,position, size)
# Add the Canvas
self.CreateStatusBar()
Canvas = NavCanvas.NavCanvas(self,-1,(500,500),
ProjectionFun = None,
Debug = 0,
BackgroundColor = "DARK SLATE BLUE",
).Canvas
self.Canvas = Canvas
self.Canvas.Bind(FloatCanvas.EVT_MOTION, self.OnMove )
Point = (45,40)
Box = Canvas.AddScaledTextBox("A Two Line\nString",
Point,
2,
Color = "Black",
BackgroundColor = None,
LineColor = "Red",
LineStyle = "Solid",
LineWidth = 1,
Width = None,
PadSize = 5,
Family = wx.ROMAN,
Style = wx.NORMAL,
Weight = wx.NORMAL,
Underlined = False,
Position = 'br',
Alignment = "left",
InForeground = False)
# All defaults
Box = Canvas.AddScaledTextBox("A Two Line\nString",
Point,
2)
Box = Canvas.AddScaledTextBox("A Two Line\nString",
Point,
2,
BackgroundColor = "Yellow",
LineColor = "Red",
LineStyle = "Solid",
PadSize = 5,
Family = wx.TELETYPE,
Position = 'bl')
Box = Canvas.AddScaledTextBox("A Two Line\nString",
Point,
2,
BackgroundColor = "Yellow",
LineColor = "Red",
LineStyle = "Solid",
PadSize = 5,
Family = wx.TELETYPE,
Position = 'tr')
Box.Bind(FloatCanvas.EVT_FC_LEFT_DOWN, self.binding2)
Canvas.AddPoint(Point, Diameter = 4)
Point = (45,15)
Box = Canvas.AddScaledTextBox("A Two Line\nString",
Point,
2,
Color = "Black",
BackgroundColor = 'Red',
LineColor = "Blue",
LineStyle = "LongDash",
LineWidth = 2,
Width = None,
PadSize = 5,
Family = wx.TELETYPE,
Style = wx.NORMAL,
Weight = wx.NORMAL,
Underlined = False,
Position = 'cr',
Alignment = "left",
InForeground = False)
Box = Canvas.AddScaledTextBox("A Two Line\nString",
Point,
1.5,
Color = "Black",
BackgroundColor = 'Red',
LineColor = "Blue",
LineStyle = "LongDash",
LineWidth = 2,
Width = None,
PadSize = 5,
Family = wx.TELETYPE,
Style = wx.NORMAL,
Weight = wx.NORMAL,
Underlined = False,
Position = 'cl',
Alignment = "left",
InForeground = False)
Canvas.AddPoint(Point, Diameter = 4)
Point = (45,-10)
Box = Canvas.AddScaledTextBox("A Two Line\nString",
Point,
2,
Color = "Black",
BackgroundColor = 'Red',
LineColor = "Blue",
LineStyle = "LongDash",
LineWidth = 2,
Width = None,
PadSize = 3,
Family = wx.TELETYPE,
Style = wx.NORMAL,
Weight = wx.NORMAL,
Underlined = False,
Position = 'tc',
Alignment = "left",
InForeground = False)
Box = Canvas.AddScaledTextBox("A three\nLine\nString",
Point,
1.5,
Color = "Black",
BackgroundColor = 'Red',
LineColor = "Blue",
LineStyle = "LongDash",
LineWidth = 2,
Width = None,
PadSize = 0.5,
Family = wx.TELETYPE,
Style = wx.NORMAL,
Weight = wx.NORMAL,
Underlined = False,
Position = 'bc',
Alignment = "left",
InForeground = False)
Canvas.AddPoint(Point, Diameter = 4)
Box = Canvas.AddScaledTextBox("Some Auto Wrapped Text. There is enough to do.",
(80,40),
2,
BackgroundColor = 'White',
LineWidth = 2,
Width = 20,
PadSize = 0.5,
Family = wx.TELETYPE,
)
Box = Canvas.AddScaledTextBox("Some more auto wrapped text. Wrapped to a different width and right aligned.\n\nThis is another paragraph.",
(80,20),
2,
BackgroundColor = 'White',
LineWidth = 2,
Width = 40,
PadSize = 0.5,
Family = wx.ROMAN,
Alignment = "right"
)
Point = np.array((100, -20), np.float64)
Box = Canvas.AddScaledTextBox("Here is even more auto wrapped text. This time the line spacing is set to 0.8. \n\nThe Padding is set to 0.",
Point,
Size = 3,
BackgroundColor = 'White',
LineWidth = 1,
Width = 40,
PadSize = 0.0,
Family = wx.ROMAN,
Position = "cc",
LineSpacing = 0.8
)
Canvas.AddPoint(Point, "Red", 2)
Point = np.array((0, -40), np.float64)
# Point = N.array((0, 0), N.float_)
for Position in ["tl", "bl", "tr", "br"]:
# for Position in ["br"]:
Box = Canvas.AddScaledTextBox("Here is a\nfour liner\nanother line\nPosition=%s"%Position,
Point,
Size = 4,
Color = "Red",
BackgroundColor = None,#'Light Blue',
LineWidth = 1,
LineColor = "White",
Width = None,
PadSize = 2,
Family = wx.ROMAN,
Position = Position,
LineSpacing = 0.8
)
Canvas.AddPoint(Point, "Red", 4)
Point = np.array((-20, 60), np.float64)
Box = Canvas.AddScaledTextBox("Here is some\ncentered\ntext",
Point,
Size = 4,
Color = "Red",
BackgroundColor = 'Light Blue',
LineWidth = 1,
LineColor = "White",
Width = None,
PadSize = 2,
Family = wx.ROMAN,
Position = "tl",
Alignment = "center",
LineSpacing = 0.8
)
Point = np.array((-20, 20), np.float64)
Box = Canvas.AddScaledTextBox("Here is some\nright aligned\ntext",
Point,
Size = 4,
Color = "Red",
BackgroundColor = 'Light Blue',
LineColor = None,
Width = None,
PadSize = 2,
Family = wx.ROMAN,
Position = "tl",
Alignment = "right",
LineSpacing = 0.8
)
Point = np.array((100, -60), np.float64)
Box = Canvas.AddScaledTextBox("Here is some auto wrapped text. This time it is centered, rather than right aligned.\n\nThe Padding is set to 2.",
Point,
Size = 3,
BackgroundColor = 'White',
LineWidth = 1,
Width = 40,
PadSize = 2.0,
Family = wx.ROMAN,
Position = "cc",
LineSpacing = 0.8,
Alignment = 'center',
)
self.Show(True)
self.Canvas.ZoomToBB()
return None
def OnMove(self, event):
"""
Updates the status bar with the world coordinates
"""
self.SetStatusText("%.2f, %.2f"%tuple(event.Coords))
def binding(self, event):
print("I'm the Rectangle")
def binding2(self, event):
print("I'm the TextBox")
app = wx.App()
DrawFrame(None, -1, "FloatCanvas Demo App", wx.DefaultPosition, (700,700) )
app.MainLoop()