Initial revision
diff --git a/Demo/stdwin/RadioGroups.py b/Demo/stdwin/RadioGroups.py
new file mode 100755
index 0000000..37240d3
--- /dev/null
+++ b/Demo/stdwin/RadioGroups.py
@@ -0,0 +1,98 @@
+#! /usr/local/python
+
+# radiogroups.py
+#
+# Demonstrate multiple groups of radio buttons
+
+import stdwin
+from Buttons import *
+from WindowParent import WindowParent, MainLoop
+from HVSplit import HSplit, VSplit
+
+def main():
+	#
+	# Create the widget hierarchy, top-down
+	#
+	# 1. Create the window
+	#
+	window = WindowParent().create('Radio Groups', (0, 0))
+	#
+	# 2. Create a horizontal split to contain the groups
+	#
+	topsplit = HSplit().create(window)
+	#
+	# 3. Create vertical splits, one for each group
+	#
+	group1 = VSplit().create(topsplit)
+	group2 = VSplit().create(topsplit)
+	group3 = VSplit().create(topsplit)
+	#
+	# 4. Create individual radio buttons, each in their own split
+	#
+	b11 = RadioButton().definetext(group1, 'Group 1 button 1')
+	b12 = RadioButton().definetext(group1, 'Group 1 button 2')
+	b13 = RadioButton().definetext(group1, 'Group 1 button 3')
+	#
+	b21 = RadioButton().definetext(group2, 'Group 2 button 1')
+	b22 = RadioButton().definetext(group2, 'Group 2 button 2')
+	b23 = RadioButton().definetext(group2, 'Group 2 button 3')
+	#
+	b31 = RadioButton().definetext(group3, 'Group 3 button 1')
+	b32 = RadioButton().definetext(group3, 'Group 3 button 2')
+	b33 = RadioButton().definetext(group3, 'Group 3 button 3')
+	#
+	# 5. Define the grouping for the radio buttons.
+	#    Note: this doesn't have to be the same as the
+	#    grouping is splits (although it usually is).
+	#    Also set the 'hook' procedure for each button
+	#
+	list1 = [b11, b12, b13]
+	list2 = [b21, b22, b23]
+	list3 = [b31, b32, b33]
+	#
+	for b in list1:
+		b.group = list1
+		b.on_hook = myhook
+	for b in list2:
+		b.group = list2
+		b.on_hook = myhook
+	for b in list3:
+		b.group = list3
+		b.on_hook = myhook
+	#
+	# 6. Select a default button in each group
+	#
+	b11.select(1)
+	b22.select(1)
+	b33.select(1)
+	#
+	# 6. Realize the window
+	#
+	window.realize()
+	#
+	# 7. Dispatch events until the window is closed
+	#
+	MainLoop()
+	#
+	# 8. Report final selections
+	#
+	print 'You selected the following choices:'
+	if b11.selected: print '1.1'
+	if b12.selected: print '1.2'
+	if b13.selected: print '1.3'
+	if b21.selected: print '2.1'
+	if b22.selected: print '2.2'
+	if b23.selected: print '2.3'
+	if b31.selected: print '3.1'
+	if b32.selected: print '3.2'
+	if b33.selected: print '3.3'
+
+
+# My 'hook' procedure
+# This is placed as 'hook' attribute on each button.
+# The example just prints the title of the selected button.
+#
+def myhook(self):
+	print 'Selected:', self.text
+
+main()