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
|
<?xml version="1.0"?>
<!--
###################################################
##Variable Slider:
## a combined slider and text box form
###################################################
-->
<block>
<name>Variable Slider</name>
<key>variable_slider</key>
<import>from gnuradio.wxgui import forms</import>
<var_make>self.$(id) = $(id) = $value</var_make>
<make>#set $parent = $notebook() and 'self.%s.GetPage(%s)'%$notebook() or 'self'
#set $win = '_%s_sizer'%$id
$win = wx.BoxSizer(wx.VERTICAL)
self._$(id)_text_box = forms.text_box(
parent=$(parent).GetWin(),
sizer=$win,
value=self.$id,
callback=self.set_$(id),
#if $label()
label=$label,
#else
label='$id',
#end if
converter=forms.$(converver)(),
proportion=0,
)
self._$(id)_slider = forms.slider(
parent=$(parent).GetWin(),
sizer=$win,
value=self.$id,
callback=self.set_$(id),
minimum=$min,
maximum=$max,
num_steps=$num_steps,
style=$style,
cast=$(converver.slider_cast),
proportion=1,
)
#if not $grid_pos()
$(parent).Add($win)
#else
$(parent).GridAdd($win, $(', '.join(map(str, $grid_pos()))))
#end if</make>
<callback>self.set_$(id)($value)</callback>
<callback>self._$(id)_slider.set_value($id)</callback>
<callback>self._$(id)_text_box.set_value($id)</callback>
<param>
<name>Label</name>
<key>label</key>
<value></value>
<type>string</type>
<hide>#if $label() then 'none' else 'part'#</hide>
</param>
<param>
<name>Default Value</name>
<key>value</key>
<value>50</value>
<type>real</type>
</param>
<param>
<name>Minimum</name>
<key>min</key>
<value>0</value>
<type>real</type>
</param>
<param>
<name>Maximum</name>
<key>max</key>
<value>100</value>
<type>real</type>
</param>
<param>
<name>Num Steps</name>
<key>num_steps</key>
<value>100</value>
<type>int</type>
<hide>part</hide>
</param>
<param>
<name>Style</name>
<key>style</key>
<value>wx.SL_HORIZONTAL</value>
<type>enum</type>
<hide>part</hide>
<option>
<name>Horizontal</name>
<key>wx.SL_HORIZONTAL</key>
</option>
<option>
<name>Vertical</name>
<key>wx.SL_VERTICAL</key>
</option>
</param>
<param>
<name>Converter</name>
<key>converver</key>
<value>float_converter</value>
<type>enum</type>
<option>
<name>Float</name>
<key>float_converter</key>
<opt>slider_cast:float</opt>
</option>
<option>
<name>Integer</name>
<key>int_converter</key>
<opt>slider_cast:int</opt>
</option>
</param>
<param>
<name>Grid Position</name>
<key>grid_pos</key>
<value></value>
<type>grid_pos</type>
</param>
<param>
<name>Notebook</name>
<key>notebook</key>
<value></value>
<type>notebook</type>
</param>
<check>$min <= $value <= $max</check>
<check>$min < $max</check>
<check>0 < $num_steps <= 1000</check>
<doc>
This block creates a variable with a slider. \
Leave the label blank to use the variable id as the label. \
The value must be a real number. \
The value must be between the minimum and the maximum. \
The number of steps must be between 0 and 1000.
Use the Grid Position (row, column, row span, column span) to position the graphical element in the window.
Use the Notebook Param (notebook-id, page-index) to place the graphical element inside of a notebook page.
</doc>
</block>
|