145 lines
5.5 KiB
Python
145 lines
5.5 KiB
Python
|
__author__ = "E. A. Tacao <e.a.tacao |at| estadao.com.br>"
|
||
|
__date__ = "15 Fev 2006, 22:00 GMT-03:00"
|
||
|
__version__ = "0.02"
|
||
|
__doc__ = """
|
||
|
AnalogClock - an analog clock.
|
||
|
|
||
|
This control creates an analog clock window. Its features include shadowing,
|
||
|
the ability to render numbers as well as any arbitrary polygon as tick marks,
|
||
|
resize marks and hands proportionally as the widget itself is resized, rotate
|
||
|
marks in a way the get aligned to the watch. It also has a dialog, accessed
|
||
|
via a context menu item, allowing one to change on the fly all of its settings.
|
||
|
|
||
|
|
||
|
Usage:
|
||
|
|
||
|
AnalogClock(parent, id=-1, pos=wx.DefaultPosition,
|
||
|
size=wx.DefaultSize, style=wx.NO_BORDER, name="AnalogClock",
|
||
|
clockStyle=DEFAULT_CLOCK_STYLE,
|
||
|
minutesStyle=TICKS_CIRCLE, hoursStyle=TICKS_POLY)
|
||
|
|
||
|
- parent, id, pos, size, style and name are used as in a wx.Window. Please
|
||
|
refer to the wx.Window docs for more details.
|
||
|
|
||
|
- clockStyle defines the clock style, according to the options below:
|
||
|
|
||
|
==================== ================================
|
||
|
SHOW_QUARTERS_TICKS Show marks for hours 3, 6, 9, 12
|
||
|
SHOW_HOURS_TICKS Show marks for all hours
|
||
|
SHOW_MINUTES_TICKS Show marks for minutes
|
||
|
|
||
|
SHOW_HOURS_HAND Show hours hand
|
||
|
SHOW_MINUTES_HAND Show minutes hand
|
||
|
SHOW_SECONDS_HAND Show seconds hand
|
||
|
|
||
|
SHOW_SHADOWS Show hands and marks shadows
|
||
|
|
||
|
ROTATE_TICKS Align tick marks to watch
|
||
|
OVERLAP_TICKS Draw tick marks for minutes even
|
||
|
when they match the hours marks.
|
||
|
|
||
|
DEFAULT_CLOCK_STYLE The same as SHOW_HOURS_TICKS|
|
||
|
SHOW_MINUTES_TICKS|
|
||
|
SHOW_HOURS_HAND|
|
||
|
SHOW_MINUTES_HAND|
|
||
|
SHOW_SECONDS_HAND|
|
||
|
SHOW_SHADOWS|ROTATE_TICKS
|
||
|
==================== ================================
|
||
|
|
||
|
- minutesStyle and hoursStyle define the the tick styles, according to the
|
||
|
options below:
|
||
|
|
||
|
================= ======================================
|
||
|
TICKS_NONE Don't show tick marks.
|
||
|
TICKS_SQUARE Use squares as tick marks.
|
||
|
TICKS_CIRCLE Use circles as tick marks.
|
||
|
TICKS_POLY Use a polygon as tick marks. A
|
||
|
polygon can be passed using
|
||
|
SetTickPolygon, otherwise the default
|
||
|
polygon will be used.
|
||
|
TICKS_DECIMAL Use decimal numbers as tick marks.
|
||
|
TICKS_ROMAN Use Roman numbers as tick marks.
|
||
|
TICKS_BINARY Use binary numbers as tick marks.
|
||
|
TICKS_HEX Use hexadecimal numbers as tick marks.
|
||
|
================= ======================================
|
||
|
|
||
|
|
||
|
Notes:
|
||
|
|
||
|
The 'target' keyword that's present in various of the AnalogClock methods may
|
||
|
accept one (or more, combined using '|') of the following values:
|
||
|
|
||
|
========= ===========================================
|
||
|
HOUR The values passed/retrieved are related to
|
||
|
the hours hand/ticks
|
||
|
|
||
|
MINUTE The values passed/retrieved are related to
|
||
|
the minutes hand/ticks
|
||
|
|
||
|
SECOND The values passed/retrieved are related to
|
||
|
the seconds hand/ticks
|
||
|
|
||
|
ALL The same as HOUR|MINUTE|SECOND, i. e., the
|
||
|
values passed/retrieved are related to all
|
||
|
of the hours hands/ticks. This is the
|
||
|
default value in all methods.
|
||
|
========= ===========================================
|
||
|
|
||
|
It is legal to pass target=ALL to methods that don't handle seconds (tick
|
||
|
mark related methods). In such cases, ALL will be equivalent to HOUR|MINUTE.
|
||
|
|
||
|
All of the 'Get' AnalogClock methods that allow the 'target' keyword
|
||
|
will always return a tuple, e. g.:
|
||
|
|
||
|
================================= ========================================
|
||
|
GetHandSize(target=HOUR) Returns a 1 element tuple, containing
|
||
|
the size of the hours hand.
|
||
|
|
||
|
GetHandSize(target=HOUR|MINUTE) Returns a 2 element tuple, containing
|
||
|
the sizes of the hours and the minutes
|
||
|
hands, respectively.
|
||
|
|
||
|
GetHandSize(target=ALL) Returns a 3 element tuple, containing
|
||
|
or the sizes of the hours, minutes and
|
||
|
GetHandSize() seconds hands, respectively.
|
||
|
================================= ========================================
|
||
|
|
||
|
|
||
|
About:
|
||
|
|
||
|
Most of the ideas and part of the code of AnalogClock were based on the
|
||
|
original wxPython's AnalogClock module, which was created by several folks on
|
||
|
the wxPython-users list.
|
||
|
|
||
|
AnalogClock is distributed under the wxWidgets license.
|
||
|
|
||
|
This code should meet the wxPython Coding Guidelines
|
||
|
<http://www.wxpython.org/codeguidelines.php> and the wxPython Style Guide
|
||
|
<http://wiki.wxpython.org/index.cgi/wxPython_20Style_20Guide>.
|
||
|
|
||
|
For all kind of problems, requests, enhancements, bug reports, etc,
|
||
|
please drop me an e-mail.
|
||
|
|
||
|
For updates please visit <http://j.domaindlx.com/elements28/wxpython/>.
|
||
|
"""
|
||
|
|
||
|
# History:
|
||
|
#
|
||
|
# Version 0.02:
|
||
|
# - Module/namespace rearranges;
|
||
|
# - All '-1' occurrences meaning "use any id" were eliminated or replaced
|
||
|
# to 'wx.ID_ANY'.
|
||
|
# - Better names to the methods triggered by the context menu events.
|
||
|
# - Included small demo class code in analogclock.py.
|
||
|
# Version 0.01:
|
||
|
# - Initial release.
|
||
|
|
||
|
#----------------------------------------------------------------------
|
||
|
|
||
|
from analogclock import AnalogClock, AnalogClockWindow
|
||
|
from styles import *
|
||
|
|
||
|
#
|
||
|
##
|
||
|
### eof
|