On Screen Presentation Mouse:
I was doing a demo video for a tutorial I made about modifying a slider's click behavior, and to make the mouse clicks visible, I created a simple demo mouse with the paintable canvas. It's useful, so I'm posting the tutorial on how to create it here in case anybody else would like to use it.
First: add two custom boolean properties to the paintable canvas called leftClick
and rightClick
:
Second: Add this script to the paintable canvas's repaint event handler:
# Get the graphics object from the event
graphics = event.graphics
# Create the main body of the mouse
graphics.setColor(system.gui.color('grey'))
graphics.fillOval(40, 20, 120, 200)
# Set the button colors according to whether or not they have been clicked
# and create the buttons
# Left Button
if event.source.leftClick:
graphics.setColor(system.gui.color('lightgreen'))
graphics.fillArc(50, 50, 100, 60, 90, 180)
else:
graphics.setColor(system.gui.color('lightgrey'))
graphics.fillArc(50, 50, 100, 60, 90, 180)
# Right Button
if event.source.rightClick:
graphics.setColor(system.gui.color('lightgreen'))
graphics.fillArc(50, 50, 100, 60, 270, 180)
else:
graphics.setColor(system.gui.color('lightgrey'))
graphics.fillArc(50, 50, 100, 60, 270, 180)
graphics.setColor(system.gui.color('black'))
#Draw a centerline between the buttons
graphics.drawLine(100, 50, 100, 110)
# Create a center mouse wheel
graphics.setColor(system.gui.color('grey'))
graphics.fillOval(95, 65, 10, 30)
# Create a shadow around the buttons when they are clicked,
# ...to create a depressed effect
if event.source.leftClick:
graphics.setColor(system.gui.color('black'))
graphics.drawArc(50, 50, 100, 60, 90, 180)
if event.source.rightClick:
graphics.setColor(system.gui.color('black'))
graphics.drawArc(50, 50, 100, 60, 270, 180)
Finally: On the component that is being clicked on for the demonstration, add this script to the mousePressed event handler:
if event.button == 1: # left click
event.source.parent.getComponent('Paintable Canvas').leftClick = True
elif event.button == 3: # right click
event.source.parent.getComponent('Paintable Canvas').rightClick = True
...and add this script to the same component's mouseReleased event handler:
if event.button == 1:
event.source.parent.getComponent('Paintable Canvas').leftClick = False
elif event.button == 3:
event.source.parent.getComponent('Paintable Canvas').rightClick = False