Imported Upstream version 3.0
[debian/gnuradio] / gr-wxgui / src / python / slider.py
1 #!/usr/bin/env python
2
3 import wx
4
5 def slider(parent, min, max, callback):
6     """
7     Return a wx.Slider object.
8
9     @param min: minimum slider value
10     @type min: float
11     @param max: maximum slider value
12     @type max: float
13     @param callback: function of one arg invoked when slider moves.
14     @rtype: wx.Slider
15     """
16     new_id = wx.NewId()
17     s = wx.Slider(parent, new_id, (max+min)/2, min, max, wx.DefaultPosition,
18                   wx.Size(250,-1), wx.SL_HORIZONTAL | wx.SL_LABELS)
19     wx.EVT_COMMAND_SCROLL(parent, new_id,
20                           lambda evt : callback(evt.GetInt()))
21     return s
22
23
24 # ----------------------------------------------------------------
25 #                            Demo app
26 # ----------------------------------------------------------------
27 if __name__ == '__main__':
28
29     from gnuradio.wxgui import stdgui
30
31     class demo_graph(stdgui.gui_flow_graph):
32
33         def __init__(self, frame, panel, vbox, argv):
34             stdgui.gui_flow_graph.__init__ (self, frame, panel, vbox, argv)
35
36             vbox.Add(slider(panel, 23, 47, self.my_callback1), 1, wx.ALIGN_CENTER)
37             vbox.Add(slider(panel, -100, 100, self.my_callback2), 1, wx.ALIGN_CENTER)
38
39         def my_callback1(self, val):
40             print "cb1 = ", val
41
42         def my_callback2(self, val):
43             print "cb2 = ", val
44
45     def main ():
46         app = stdgui.stdapp (demo_graph, "Slider Demo")
47         app.MainLoop ()
48
49     main ()