File: AnalogClock.py

package info (click to toggle)
wxwidgets2.6 2.6.3.2.1.5%2Betch1
  • links: PTS
  • area: main
  • in suites: etch
  • size: 83,228 kB
  • ctags: 130,941
  • sloc: cpp: 820,043; ansic: 113,030; python: 107,485; makefile: 42,996; sh: 10,305; lex: 194; yacc: 128; xml: 95; pascal: 74
file content (139 lines) | stat: -rw-r--r-- 5,498 bytes parent folder | download | duplicates (4)
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
# 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)

        # 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:])