1 |
6 |
Kragenwar-3044 |
import "Turbine.UI"; |
2 |
|
Kragenwar-3044 |
|
3 |
|
Kragenwar-3044 |
SetupQuickslots = class(Turbine.UI.ListBox); |
4 |
|
Kragenwar-3044 |
|
5 |
|
Kragenwar-3044 |
-- helper functions |
6 |
|
Kragenwar-3044 |
local tt = function(width, height, control, text) |
7 |
|
Kragenwar-3044 |
local tooltip = KragenPlugs.UI.Tooltip(); |
8 |
|
Kragenwar-3044 |
tooltip:SetText(text); |
9 |
|
Kragenwar-3044 |
tooltip:SetControl(control); |
10 |
|
Kragenwar-3044 |
tooltip:SetSize(width, height); |
11 |
|
Kragenwar-3044 |
end |
12 |
|
Kragenwar-3044 |
|
13 |
|
Kragenwar-3044 |
local holder = function(parent, height) |
14 |
|
Kragenwar-3044 |
local container = Turbine.UI.Control(); |
15 |
|
Kragenwar-3044 |
container:SetSize(400, height); |
16 |
|
Kragenwar-3044 |
parent:AddItem(container); |
17 |
|
Kragenwar-3044 |
return container; |
18 |
|
Kragenwar-3044 |
end |
19 |
|
Kragenwar-3044 |
|
20 |
|
Kragenwar-3044 |
|
21 |
|
Kragenwar-3044 |
function SetupQuickslots:Constructor() |
22 |
|
Kragenwar-3044 |
Turbine.UI.ListBox.Constructor(self); |
23 |
|
Kragenwar-3044 |
|
24 |
|
Kragenwar-3044 |
self.current = nil; |
25 |
62 |
Valdacil-446 |
self.titlebars = { }; |
26 |
|
Valdacil-446 |
self.quickslots = { }; |
27 |
6 |
Kragenwar-3044 |
|
28 |
|
Kragenwar-3044 |
self:SetOrientation(Turbine.UI.Orientation.Horizontal); |
29 |
|
Kragenwar-3044 |
self:SetMaxItemsPerLine(1); |
30 |
|
Kragenwar-3044 |
|
31 |
62 |
Valdacil-446 |
self:AddTitleBar("Quickslots"); |
32 |
6 |
Kragenwar-3044 |
line = holder(self, 20); |
33 |
|
Kragenwar-3044 |
self.labelclear = KragenPlugs.UI.Label(); |
34 |
|
Kragenwar-3044 |
self.labelclear:SetParent(line); |
35 |
|
Kragenwar-3044 |
self.labelclear:SetSize(400, 20); |
36 |
|
Kragenwar-3044 |
self.labelclear:SetPosition(0,0); |
37 |
|
Kragenwar-3044 |
self.labelclear:SetText("Alt+Rt. Click to Clear Quickslot"); |
38 |
|
Kragenwar-3044 |
self.labelclear:SetVisible(true); |
39 |
62 |
Valdacil-446 |
|
40 |
|
Valdacil-446 |
for i = 1,4 do self:AddQuickslotRow(self.quickslots) end -- Adds 2 quickslots each row therefore #quickslots = for-end x 2 |
41 |
|
Valdacil-446 |
|
42 |
|
Valdacil-446 |
end |
43 |
|
Valdacil-446 |
|
44 |
|
Valdacil-446 |
|
45 |
|
Valdacil-446 |
function SetupQuickslots:AddTitleBar(text) |
46 |
|
Valdacil-446 |
local index = #self.titlebars + 1; |
47 |
6 |
Kragenwar-3044 |
|
48 |
62 |
Valdacil-446 |
local line = holder(self, 35); |
49 |
|
Valdacil-446 |
self.titlebars[index] = KragenPlugs.UI.PanelDivider(); |
50 |
|
Valdacil-446 |
self.titlebars[index]:SetPosition(0,0); |
51 |
|
Valdacil-446 |
self.titlebars[index]:SetParent(line); |
52 |
|
Valdacil-446 |
self.titlebars[index]:SetText(text); |
53 |
|
Valdacil-446 |
self.titlebars[index]:SetSize(400, 30); |
54 |
|
Valdacil-446 |
|
55 |
|
Valdacil-446 |
end |
56 |
|
Valdacil-446 |
|
57 |
|
Valdacil-446 |
function SetupQuickslots:AddCheckboxRow(option) |
58 |
|
Valdacil-446 |
local index = #option + 1; |
59 |
|
Valdacil-446 |
local line = holder(self, 20); |
60 |
6 |
Kragenwar-3044 |
|
61 |
62 |
Valdacil-446 |
for i = 1,2 do |
62 |
|
Valdacil-446 |
option[index] = KragenPlugs.UI.CheckBox(); |
63 |
|
Valdacil-446 |
option[index]:SetParent(line); |
64 |
|
Valdacil-446 |
option[index]:SetSize(180, 20); |
65 |
|
Valdacil-446 |
if math.mod(index, 2) == 0 then |
66 |
|
Valdacil-446 |
option[index]:SetPosition(220,0); |
67 |
|
Valdacil-446 |
option[index]:AlignLeft(true); |
68 |
|
Valdacil-446 |
else |
69 |
|
Valdacil-446 |
option[index]:SetPosition(0,0); |
70 |
6 |
Kragenwar-3044 |
end |
71 |
62 |
Valdacil-446 |
option[index]:SetText("Checkbox"); |
72 |
|
Valdacil-446 |
option[index]:SetVisible(false); |
73 |
|
Valdacil-446 |
index = #option + 1; |
74 |
|
Valdacil-446 |
end |
75 |
|
Valdacil-446 |
|
76 |
|
Valdacil-446 |
end |
77 |
|
Valdacil-446 |
|
78 |
|
Valdacil-446 |
function SetupQuickslots:AddSlider(option, mini, maxi, step, text) |
79 |
|
Valdacil-446 |
local index = #option + 1; |
80 |
6 |
Kragenwar-3044 |
|
81 |
62 |
Valdacil-446 |
local line = holder(self, 50); |
82 |
|
Valdacil-446 |
option[index] = KragenPlugs.UI.Slider(); |
83 |
|
Valdacil-446 |
option[index]:SetParent(line); |
84 |
|
Valdacil-446 |
option[index]:SetText(text); |
85 |
|
Valdacil-446 |
option[index]:SetPosition(49, 0); |
86 |
|
Valdacil-446 |
option[index]:SetSize(350, 40); |
87 |
|
Valdacil-446 |
option[index]:SetStep(step); |
88 |
|
Valdacil-446 |
option[index]:SetMin(mini); |
89 |
|
Valdacil-446 |
option[index]:SetMax(maxi); |
90 |
|
Valdacil-446 |
|
91 |
|
Valdacil-446 |
end |
92 |
|
Valdacil-446 |
|
93 |
|
Valdacil-446 |
function SetupQuickslots:AddComboBox(option) |
94 |
|
Valdacil-446 |
local index = #option + 1; |
95 |
6 |
Kragenwar-3044 |
|
96 |
62 |
Valdacil-446 |
local line = holder(self, 30); |
97 |
|
Valdacil-446 |
option[index] = { }; |
98 |
|
Valdacil-446 |
option[index].label = KragenPlugs.UI.Label(); |
99 |
|
Valdacil-446 |
option[index].label:SetParent(line); |
100 |
|
Valdacil-446 |
option[index].label:SetSize(190, 20); |
101 |
|
Valdacil-446 |
option[index].label:SetPosition(20, 0); |
102 |
|
Valdacil-446 |
option[index].label:SetText("Label"); |
103 |
|
Valdacil-446 |
option[index].label:SetVisible(false); |
104 |
|
Valdacil-446 |
|
105 |
|
Valdacil-446 |
option[index].combobox = KragenPlugs.UI.ComboBox(); |
106 |
|
Valdacil-446 |
option[index].combobox:SetParent(line); |
107 |
|
Valdacil-446 |
option[index].combobox:SetSize(190, 20); |
108 |
|
Valdacil-446 |
option[index].combobox:SetPosition(210, 0); |
109 |
|
Valdacil-446 |
option[index].combobox:SetVisible(false); |
110 |
|
Valdacil-446 |
|
111 |
|
Valdacil-446 |
end |
112 |
|
Valdacil-446 |
|
113 |
|
Valdacil-446 |
function SetupQuickslots:AddQuickslotRow(option) |
114 |
|
Valdacil-446 |
local index = #option + 1; |
115 |
|
Valdacil-446 |
local line = holder(self, 40); |
116 |
|
Valdacil-446 |
|
117 |
|
Valdacil-446 |
for i = 1,2 do |
118 |
|
Valdacil-446 |
option[index] = { }; |
119 |
|
Valdacil-446 |
option[index].quickslot = Turbine.UI.Lotro.Quickslot(); |
120 |
|
Valdacil-446 |
option[index].quickslot:SetParent(line); |
121 |
|
Valdacil-446 |
option[index].quickslot:SetSize(36, 36); |
122 |
|
Valdacil-446 |
if math.mod(index, 2) == 0 then |
123 |
|
Valdacil-446 |
option[index].quickslot:SetPosition(245, 0); |
124 |
|
Valdacil-446 |
else |
125 |
|
Valdacil-446 |
option[index].quickslot:SetPosition(120, 0); |
126 |
6 |
Kragenwar-3044 |
end |
127 |
62 |
Valdacil-446 |
option[index].quickslot:SetVisible(false); |
128 |
|
Valdacil-446 |
option[index].quickslot:SetUseOnRightClick(false); |
129 |
|
Valdacil-446 |
index = #option + 1; |
130 |
|
Valdacil-446 |
end |
131 |
6 |
Kragenwar-3044 |
|
132 |
|
Kragenwar-3044 |
line = holder(self, 20); |
133 |
62 |
Valdacil-446 |
index = #option - 1; |
134 |
6 |
Kragenwar-3044 |
|
135 |
62 |
Valdacil-446 |
for i = 1,2 do |
136 |
|
Valdacil-446 |
option[index].checkbox = KragenPlugs.UI.CheckBox(); |
137 |
|
Valdacil-446 |
option[index].checkbox:SetParent(line); |
138 |
|
Valdacil-446 |
option[index].checkbox:SetSize(180, 20); |
139 |
|
Valdacil-446 |
if math.mod(index, 2) == 0 then |
140 |
|
Valdacil-446 |
option[index].checkbox:SetPosition(220,0); |
141 |
|
Valdacil-446 |
option[index].checkbox:AlignLeft(true); |
142 |
|
Valdacil-446 |
else |
143 |
|
Valdacil-446 |
option[index].checkbox:SetPosition(0,0); |
144 |
6 |
Kragenwar-3044 |
end |
145 |
62 |
Valdacil-446 |
option[index].checkbox:SetText("Checkbox"); |
146 |
|
Valdacil-446 |
option[index].checkbox:SetVisible(false); |
147 |
|
Valdacil-446 |
index = index + 1; |
148 |
|
Valdacil-446 |
end |
149 |
|
Valdacil-446 |
|
150 |
6 |
Kragenwar-3044 |
end |
151 |
|
Kragenwar-3044 |
|
152 |
62 |
Valdacil-446 |
function SetupQuickslots:ActivateQuickslot(option, name, active, qstype, qsdata) |
153 |
|
Valdacil-446 |
pcall(function() option.quickslot:SetShortcut(Turbine.UI.Lotro.Shortcut( qstype, qsdata ) ); end); |
154 |
|
Valdacil-446 |
option.quickslot:SetVisible(true); |
155 |
65 |
Valdacil-446 |
option.quickslot.MouseClick = function(sender, args) |
156 |
|
Valdacil-446 |
if(args.Button == Turbine.UI.MouseButton.Right and option.quickslot:IsAltKeyDown()) then |
157 |
|
Valdacil-446 |
option.quickslot:SetShortcut(Turbine.UI.Lotro.Shortcut( Turbine.UI.Lotro.ShortcutType.Undefined, "" ) ); |
158 |
|
Valdacil-446 |
end |
159 |
|
Valdacil-446 |
end |
160 |
62 |
Valdacil-446 |
option.checkbox:SetText(name); |
161 |
|
Valdacil-446 |
option.checkbox:SetChecked(active); |
162 |
|
Valdacil-446 |
option.checkbox:SetVisible(true); |
163 |
6 |
Kragenwar-3044 |
|
164 |
65 |
Valdacil-446 |
|
165 |
|
Valdacil-446 |
|
166 |
6 |
Kragenwar-3044 |
end |
167 |
|
Kragenwar-3044 |
|
168 |
|
Kragenwar-3044 |
function SetupQuickslots:Destroy() |
169 |
|
Kragenwar-3044 |
-- cleanup the quickslots so the client doesn't crash |
170 |
|
Kragenwar-3044 |
|
171 |
|
Kragenwar-3044 |
end |