89 lines
2.8 KiB
Python
89 lines
2.8 KiB
Python
#!/usr/bin/env python3
|
|
"""Test UIFrame clipping functionality"""
|
|
|
|
import mcrfpy
|
|
from mcrfpy import Color, Frame, Caption
|
|
from mcrfpy import automation
|
|
import sys
|
|
|
|
def test_clipping(runtime):
|
|
"""Test that clip_children property works correctly"""
|
|
mcrfpy.delTimer("test_clipping")
|
|
|
|
print("Testing UIFrame clipping functionality...")
|
|
|
|
# Create test scene
|
|
scene = mcrfpy.sceneUI("test")
|
|
|
|
# Create parent frame with clipping disabled (default)
|
|
parent1 = Frame(x=50, y=50, w=200, h=150,
|
|
fill_color=Color(100, 100, 200),
|
|
outline_color=Color(255, 255, 255),
|
|
outline=2)
|
|
parent1.name = "parent1"
|
|
scene.append(parent1)
|
|
|
|
# Create parent frame with clipping enabled
|
|
parent2 = Frame(x=300, y=50, w=200, h=150,
|
|
fill_color=Color(200, 100, 100),
|
|
outline_color=Color(255, 255, 255),
|
|
outline=2)
|
|
parent2.name = "parent2"
|
|
parent2.clip_children = True
|
|
scene.append(parent2)
|
|
|
|
# Add captions to both frames
|
|
caption1 = Caption(text="This text should overflow", x=10, y=10)
|
|
caption1.font_size = 16
|
|
caption1.fill_color = Color(255, 255, 255)
|
|
parent1.children.append(caption1)
|
|
|
|
caption2 = Caption(text="This text should be clipped", x=10, y=10)
|
|
caption2.font_size = 16
|
|
caption2.fill_color = Color(255, 255, 255)
|
|
parent2.children.append(caption2)
|
|
|
|
# Add child frames that extend beyond parent bounds
|
|
child1 = Frame(x=150, y=100, w=100, h=100,
|
|
fill_color=Color(50, 255, 50),
|
|
outline_color=Color(0, 0, 0),
|
|
outline=1)
|
|
parent1.children.append(child1)
|
|
|
|
child2 = Frame(x=150, y=100, w=100, h=100,
|
|
fill_color=Color(50, 255, 50),
|
|
outline_color=Color(0, 0, 0),
|
|
outline=1)
|
|
parent2.children.append(child2)
|
|
|
|
# Take screenshot
|
|
automation.screenshot("frame_clipping_test.png")
|
|
|
|
print(f"Parent1 clip_children: {parent1.clip_children}")
|
|
print(f"Parent2 clip_children: {parent2.clip_children}")
|
|
|
|
# Test toggling clip_children
|
|
parent1.clip_children = True
|
|
print(f"After toggle - Parent1 clip_children: {parent1.clip_children}")
|
|
|
|
# Verify the property setter works
|
|
try:
|
|
parent1.clip_children = "not a bool" # Should raise TypeError
|
|
print("ERROR: clip_children accepted non-boolean value")
|
|
sys.exit(1)
|
|
except TypeError as e:
|
|
print(f"PASS: clip_children correctly rejected non-boolean: {e}")
|
|
|
|
print("\nTest completed successfully!")
|
|
sys.exit(0)
|
|
|
|
# Main execution
|
|
print("Creating test scene...")
|
|
mcrfpy.createScene("test")
|
|
mcrfpy.setScene("test")
|
|
|
|
# Schedule the test
|
|
mcrfpy.setTimer("test_clipping", test_clipping, 100)
|
|
|
|
print("Test scheduled, running...")
|