uiradiogroup.lua

main 67 lines · 1.6 KB Raw
Alex Alex Commit Client Upload Part 2 19/10/2026 00:06
1-- @docclass
2UIRadioGroup = newclass("UIRadioGroup")
3
4function UIRadioGroup.create()
5 local radiogroup = UIRadioGroup.internalCreate()
6 radiogroup.widgets = {}
7 radiogroup.selectedWidget = nil
8 return radiogroup
9end
10
11function UIRadioGroup:destroy()
12 for k,widget in pairs(self.widgets) do
13 widget.onClick = nil
14 end
15 self.widgets = {}
16end
17
18function UIRadioGroup:addWidget(widget)
19 table.insert(self.widgets, widget)
20 widget.onClick = function(widget) self:selectWidget(widget) end
21end
22
23function UIRadioGroup:removeWidget(widget)
24 if self.selectedWidget == widget then
25 self:selectWidget(nil)
26 end
27 widget.onClick = nil
28 table.removevalue(self.widgets, widget)
29end
30
31function UIRadioGroup:selectWidget(selectedWidget, dontSignal)
32 if selectedWidget == self.selectedWidget then return end
33
34 local previousSelectedWidget = self.selectedWidget
35 self.selectedWidget = selectedWidget
36
37 if previousSelectedWidget then
38 previousSelectedWidget:setChecked(false)
39 end
40
41 if selectedWidget then
42 selectedWidget:setChecked(true)
43 end
44
45 if not dontSignal then
46 signalcall(self.onSelectionChange, self, selectedWidget, previousSelectedWidget)
47 end
48end
49
50function UIRadioGroup:clearSelected()
51 if not self.selectedWidget then return end
52
53 local previousSelectedWidget = self.selectedWidget
54 self.selectedWidget:setChecked(false)
55 self.selectedWidget = nil
56
57 signalcall(self.onSelectionChange, self, nil, previousSelectedWidget)
58end
59
60function UIRadioGroup:getSelectedWidget()
61 return self.selectedWidget
62end
63
64function UIRadioGroup:getFirstWidget()
65 return self.widgets[1]
66end
67
Top