File: AnalogClock.py

package info (click to toggle)
wxpython3.0 3.0.2.0%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 482,760 kB
  • ctags: 518,293
  • sloc: cpp: 2,127,226; python: 294,045; makefile: 51,942; ansic: 19,033; sh: 3,013; xml: 1,629; perl: 17
file content (142 lines) | stat: -rw-r--r-- 6,003 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# AnalogClock demo
#   E. A. Tacao <e.a.tacao |at| estadao.com.br>
#   http://j.domaindlx.com/elements28/wxpython/
#   12 Fev 2006, 22:00 GMT-03:00
# Distributed under the wxWidgets license.

import wx
import wx.lib.analogclock as ac

#----------------------------------------------------------------------

class TestPanel(wx.Panel):
    def __init__(self, parent, log):
        self.log = log
        wx.Panel.__init__(self, parent)

        # A mostly default clock
        c1 = ac.AnalogClock(self, size=(200,200))

        if True: # for a simpler test case just set this to False and
                 # only the one clock will be created
            
            # A plain clock, with square hour and round minute marks, no
            # shadow, static border
            c2 = ac.AnalogClock(self, style=wx.STATIC_BORDER,
                                hoursStyle=ac.TICKS_SQUARE,
                                minutesStyle=ac.TICKS_CIRCLE,
                                clockStyle=ac.SHOW_HOURS_TICKS| \
                                           ac.SHOW_MINUTES_TICKS|
                                           ac.SHOW_HOURS_HAND| \
                                           ac.SHOW_MINUTES_HAND| \
                                           ac.SHOW_SECONDS_HAND)
            c2.SetTickSize(12, target=ac.HOUR)

            # No minute tick marks
            c3 = ac.AnalogClock(self, hoursStyle=ac.TICKS_CIRCLE,
                                clockStyle=ac.SHOW_HOURS_TICKS| \
                                           ac.SHOW_HOURS_HAND| \
                                           ac.SHOW_MINUTES_HAND| \
                                           ac.SHOW_SECONDS_HAND| \
                                           ac.SHOW_SHADOWS)
            c3.SetTickSize(12)

            # A clock with hex numbers no seconds hand and different colours.
            c4 = ac.AnalogClock(self, hoursStyle=ac.TICKS_HEX,
                                clockStyle=ac.SHOW_HOURS_TICKS| \
                                           ac.SHOW_HOURS_HAND| \
                                           ac.SHOW_MINUTES_HAND| \
                                           ac.SHOW_SHADOWS)
            colour = wx.Colour(0, 255, 255)
            c4.SetForegroundColour(colour)
            colour = wx.Colour(0, 132, 132)
            c4.SetShadowColour(colour)
            c4.SetTickFont(wx.Font(10, wx.FONTFAMILY_MODERN, wx.NORMAL, wx.BOLD))
            c4.SetBackgroundColour(wx.BLACK)
            c4.SetFaceBorderColour(wx.BLACK)
            c4.SetFaceFillColour(wx.BLACK)

            # A clock with binary numbers shown only at the quarter tick marks,
            # no minutes ticks and different colours.
            c5 = ac.AnalogClock(self, style = wx.RAISED_BORDER, 
                                hoursStyle=ac.TICKS_BINARY,
                                clockStyle=ac.SHOW_QUARTERS_TICKS| \
                                           ac.SHOW_HOURS_HAND| \
                                           ac.SHOW_MINUTES_HAND| \
                                           ac.SHOW_SECONDS_HAND| \
                                           ac.SHOW_SHADOWS)
            colour = wx.Colour(0, 128, 0)
            c5.SetHandFillColour(colour, target=ac.SECOND)
            c5.SetHandBorderColour(colour, target=ac.SECOND)
            c5.SetBackgroundColour(colour)
            colour = wx.Colour(128, 0, 64)
            c5.SetTickFillColour(colour)
            c5.SetFaceBorderColour(colour)
            c5.SetFaceBorderWidth(1)
            colour = wx.Colour(0, 198, 0)
            c5.SetFaceFillColour(colour)
            c5.SetShadowColour(wx.WHITE)

            # A clock with a sunken border, roman numerals shown only at the 
            # quarter tick marks with a roman font, circular minutes ticks,
            # no seconds hand, no shadows, tick overlapping and different colours.
            c6 = ac.AnalogClock(self, style = wx.SUNKEN_BORDER,
                                hoursStyle=ac.TICKS_ROMAN,
                                minutesStyle=ac.TICKS_CIRCLE,
                                clockStyle=ac.SHOW_QUARTERS_TICKS| \
                                           ac.SHOW_MINUTES_TICKS| \
                                           ac.SHOW_HOURS_HAND| \
                                           ac.SHOW_MINUTES_HAND| \
                                           ac.OVERLAP_TICKS)
            colour = wx.Colour(128, 0, 0)
            c6.SetHandFillColour(colour)
            colour = wx.Colour(179, 0, 89)
            c6.SetHandBorderColour(colour)
            c6.SetTickFillColour(colour)
            c6.SetTickBorderColour(colour)
            colour = wx.Colour(225, 255, 255)
            c6.SetFaceBorderColour(colour)
            c6.SetBackgroundColour(colour)
            colour = wx.Colour(249, 255, 255)
            c6.SetFaceFillColour(colour)
            colour = wx.Colour(255, 213, 213)
            c6.SetShadowColour(colour)
            c6.SetTickFont(wx.Font(10, wx.FONTFAMILY_ROMAN, wx.NORMAL, wx.BOLD))

            # layout the clocks in a grid
            gs = wx.GridSizer(2, 3, 4, 4)
            gs.Add(c1, 0, wx.EXPAND)
            gs.Add(c2, 0, wx.EXPAND)
            gs.Add(c3, 0, wx.EXPAND)
            gs.Add(c4, 0, wx.EXPAND)
            gs.Add(c5, 0, wx.EXPAND)
            gs.Add(c6, 0, wx.EXPAND)

            # put it in another sizer for a border
            sizer = wx.BoxSizer(wx.VERTICAL)
            sizer.Add(gs, 1, wx.EXPAND|wx.ALL, 10)

            self.SetSizerAndFit(sizer)

#----------------------------------------------------------------------

def runTest(frame, nb, log):
    win = TestPanel(nb, log)
    return win

#----------------------------------------------------------------------



overview = """<html>
<PRE><FONT SIZE=-1>
""" + ac.__doc__.replace("<", "").replace(">", "") + """
</FONT></PRE>"""



if __name__ == '__main__':
    import sys,os
    import run
    run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])