File: test_wizard.py

package info (click to toggle)
wxpython4.0 4.2.3%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 221,752 kB
  • sloc: cpp: 962,555; python: 230,573; ansic: 170,731; makefile: 51,756; sh: 9,342; perl: 1,564; javascript: 584; php: 326; xml: 200
file content (120 lines) | stat: -rw-r--r-- 3,807 bytes parent folder | download | duplicates (2)
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
import unittest
from unittests import wtc
import wx
import wx.adv
import os

pngFile = os.path.join(os.path.dirname(__file__), 'wizard.png')

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

class MySimpleWizPage(wx.adv.WizardPageSimple):
    def __init__(self, parent, title):
        wx.adv.WizardPageSimple.__init__(self, parent)
        st = wx.StaticText(self, label='Wizard Page: %s' % title)
        st.SetFont(wx.FFont(24, wx.FONTFAMILY_SWISS))
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(st, 0, wx.ALIGN_CENTER)
        sizer.Add(wx.StaticLine(self), 0, wx.EXPAND)
        self.SetSizer(sizer)



class wizard_Tests(wtc.WidgetTestCase):

    def test_wizard1(self):
        wx.adv.WIZARD_EX_HELPBUTTON
        wx.adv.WIZARD_VALIGN_TOP
        wx.adv.WIZARD_VALIGN_CENTRE
        wx.adv.WIZARD_VALIGN_BOTTOM
        wx.adv.WIZARD_HALIGN_LEFT
        wx.adv.WIZARD_HALIGN_CENTRE
        wx.adv.WIZARD_HALIGN_RIGHT
        wx.adv.WIZARD_TILE

    def test_wizard2(self):
        # Create the wizard
        bmp = wx.BitmapBundle(wx.Bitmap(pngFile))
        wiz = wx.adv.Wizard(self.frame, title="Test Wizard 2", bitmap=bmp)

        # create the pages
        pages = []
        for i in range(5):
            pages.append(MySimpleWizPage(wiz, str(i+1)))

        # set the next/prev pages
        for idx, p in enumerate(pages):
            p.SetNext(pages[idx+1] if idx < len(pages)-1 else None)
            p.SetPrev(pages[idx-1] if idx > 0 else None)

        wiz.FitToPage(pages[0])
        wx.CallLater(100, self._autoPilot, wiz)
        wiz.RunWizard(pages[0])
        wiz.Destroy()

    def test_wizard3(self):
        # Same as above but use the Chain function to connect the pages
        bmp = wx.BitmapBundle(wx.Bitmap(pngFile))
        wiz = wx.adv.Wizard(self.frame, title="Test Wizard 2", bitmap=bmp)

        pages = []
        for i in range(5):
            pages.append(MySimpleWizPage(wiz, str(i+1)))

        wx.adv.WizardPageSimple.Chain(pages[0], pages[1])
        wx.adv.WizardPageSimple.Chain(pages[1], pages[2])
        wx.adv.WizardPageSimple.Chain(pages[2], pages[3])
        wx.adv.WizardPageSimple.Chain(pages[3], pages[4])

        wiz.FitToPage(pages[0])
        wx.CallLater(100, self._autoPilot, wiz)
        wiz.RunWizard(pages[0])
        wiz.Destroy()


    def test_wizard4(self):
        # Create the wizard
        bmp = wx.BitmapBundle(wx.Bitmap(pngFile))
        wiz = wx.adv.Wizard(self.frame, title="Test Wizard 2", bitmap=bmp)

        # create the pages
        pages = []
        for i in range(5):
            pages.append(MySimpleWizPage(wiz, str(i+1)))

        # set the next/prev pages
        for idx, p in enumerate(pages):
            p.SetNext(pages[idx+1] if idx < len(pages)-1 else None)
            p.SetPrev(pages[idx-1] if idx > 0 else None)

        wiz.FitToPage(pages[0])
        wx.CallLater(100, self._autoPilot, wiz)

        # Simply test if these new methods exist
        wiz.ShowPage(pages[2])
        wiz.IsRunning()

        wiz.RunWizard(pages[0])
        wiz.Destroy()


    def _autoPilot(self, wiz):
        # simulate clicking the next button until the wizard closes
        if not wiz or not wiz.GetCurrentPage():
            return

        # There seems to be a problem with stacking CallLaters while running
        # the unittests, so for now just cancel and return.
        wiz.EndModal(wx.ID_CANCEL)
        return

        #btn = wiz.FindWindowById(wx.ID_FORWARD)
        #evt = wx.CommandEvent(wx.EVT_BUTTON.typeId, wx.ID_FORWARD)
        #evt.SetEventObject(btn)
        #wx.PostEvent(btn, evt)
        #wx.CallLater(100, self._autoPilot, wiz)

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

if __name__ == '__main__':
    unittest.main()