Mercurial > wow > devian
comparison Dock.lua @ 98:33bc8baba858
start of a lot of v3 groundwork based on better knowledge of the addon interface:
- use of mixin as a lexical center for generated frames
- removal of unfinished segments
| author | Nenue |
|---|---|
| date | Wed, 26 Oct 2016 10:17:43 -0400 |
| parents | f6fae1a4c66c |
| children | 7d94df3804a7 |
comparison
equal
deleted
inserted
replaced
| 97:34131d11e61b | 98:33bc8baba858 |
|---|---|
| 5 -- Created: 12/26/2015 12:32 PM | 5 -- Created: 12/26/2015 12:32 PM |
| 6 -- Docking and arrangement calls | 6 -- Docking and arrangement calls |
| 7 local _, D = ... | 7 local _, D = ... |
| 8 local ceil, floor, sqrt, pairs, GetScreenWidth, GetScreenHeight = math.ceil, math.floor, math.sqrt, pairs, GetScreenWidth, GetScreenHeight | 8 local ceil, floor, sqrt, pairs, GetScreenWidth, GetScreenHeight = math.ceil, math.floor, math.sqrt, pairs, GetScreenWidth, GetScreenHeight |
| 9 local db | 9 local db |
| 10 local print = D.print | 10 local print = DEVIAN_WORKSPACE and function(...) print('DvnDock', ...) end or nop |
| 11 local DOCK_BUTTON_PADDING = 6 | 11 local DOCK_BUTTON_PADDING = 6 |
| 12 | 12 |
| 13 DevianDockHandler = { | |
| 14 usedButtons = {}, | |
| 15 buttons = {}, | |
| 16 } | |
| 13 DevianDockButtonMixin = {} | 17 DevianDockButtonMixin = {} |
| 14 | 18 |
| 15 --- Updates region visibility as needed | 19 --- Updates region visibility as needed |
| 16 local getFadeInArgs = function(sign, region) | 20 local getFadeInArgs = function(sign, region) |
| 17 --print('Dvn', region) | 21 --print('Dvn', region) |
| 35 local function queueFade (self, duration, from, to) | 39 local function queueFade (self, duration, from, to) |
| 36 self:SetAlpha(to) | 40 self:SetAlpha(to) |
| 37 end | 41 end |
| 38 | 42 |
| 39 local numBeacons = 0 | 43 local numBeacons = 0 |
| 40 function D:GetDockButton(console) | 44 function DevianDockHandler:GetDockButton(console) |
| 41 self.dock.usedButtons = self.dock.usedButtons or {} | 45 self.usedButtons = self.usedButtons or {} |
| 42 | 46 local index = console:GetID() |
| 43 local button = self.dock.usedButtons[console.index] | 47 local button = self.usedButtons[index] |
| 44 if not button then | 48 if not button then |
| 45 numBeacons = numBeacons + 1 | 49 numBeacons = numBeacons + 1 |
| 46 button = CreateFrame('Button', 'DevianDockBeacon'.. numBeacons, UIParent, 'DevianBeacon') | 50 button = CreateFrame('Button', 'DevianDockBeacon'.. numBeacons, UIParent, 'DevianBeacon') |
| 47 button.color = {r = math.random(), g = math.random(), b = math.random()} | 51 button.color = {r = math.random(), g = math.random(), b = math.random()} |
| 48 button.Stripe:SetColorTexture(button.color.r, button.color.g, button.color.b,1) | 52 button.Stripe:SetColorTexture(button.color.r, button.color.g, button.color.b,1) |
| 49 button.console = console | 53 button.console = console |
| 50 self.dock.usedButtons[console.index] = button | 54 self.usedButtons[index] = button |
| 51 tinsert(self.dock.buttons, button) | 55 tinsert(self.buttons, button) |
| 56 --oldprint('create dock', index, console.signature) | |
| 52 end | 57 end |
| 53 button.index = console.index | 58 button.index = console.index |
| 54 button.caption.name:SetText(console.signature) | 59 button.caption.name:SetText(console.signature) |
| 55 button:SetShown(true) | 60 button:SetShown(true) |
| 56 return button | 61 return button |
| 58 | 63 |
| 59 function DevianDockButtonMixin:OnMouseDown(button) | 64 function DevianDockButtonMixin:OnMouseDown(button) |
| 60 --print("click", self:GetName(), button, self.console.index) | 65 --print("click", self:GetName(), button, self.console.index) |
| 61 if button == "LeftButton" then | 66 if button == "LeftButton" then |
| 62 if IsShiftKeyDown() then | 67 if IsShiftKeyDown() then |
| 63 D:Console_Toggle(self.console.index, 0) | 68 self.console:Toggle() |
| 64 else | 69 else |
| 65 if self.console.index == D.currentProfile.current_channel or (not self.console.enabled) then | 70 if self.console.isFront or (not self.console.enabled) then |
| 66 D:Console_Toggle(self.console.index) | 71 |
| 72 self.console:Toggle() | |
| 67 if self.console.enabled then | 73 if self.console.enabled then |
| 68 if self.console.minimized then | 74 if self.console.minimized then |
| 69 self.console:MinMax() | 75 self.console:MinMax() |
| 70 end | 76 end |
| 71 self.console:ToFront() | 77 self.console:ToFront() |
| 75 end | 81 end |
| 76 end | 82 end |
| 77 elseif button == "RightButton" then | 83 elseif button == "RightButton" then |
| 78 self.console:MinMax() | 84 self.console:MinMax() |
| 79 end | 85 end |
| 80 self.console:Save() | |
| 81 end | 86 end |
| 82 function DevianDockButtonMixin:OnShow() | 87 function DevianDockButtonMixin:OnShow() |
| 83 self:Update() | 88 self:Update() |
| 84 end | 89 end |
| 85 function DevianDockButtonMixin:OnEnter() | 90 function DevianDockButtonMixin:OnEnter() |
| 146 frame:Save() | 151 frame:Save() |
| 147 last = frame | 152 last = frame |
| 148 end | 153 end |
| 149 end | 154 end |
| 150 | 155 |
| 151 function D:Dock_OnMouseWheel(delta) | 156 function DevianDockHandler:OnMouseWheel(delta) |
| 152 if delta >= 1 then | 157 if delta >= 1 then |
| 153 D.dockScale = (D.dockScale or 1) - 0.1 | 158 self.dockScale = (self.dockScale or 1) - 0.1 |
| 154 else | 159 else |
| 155 D.dockScale = (D.dockScale or 1) + 0.1 | 160 self.dockScale = (self.dockScale or 1) + 0.1 |
| 156 end | 161 end |
| 157 D:UpdateDock() | 162 self:Update() |
| 158 end | 163 end |
| 159 | 164 |
| 160 --- Space everything and set the dock size | 165 --- Space everything and set the dock size |
| 161 function D:UpdateDock() | 166 function DevianDockHandler:Update() |
| 162 local pad_offset = 12 | 167 local pad_offset = 12 |
| 163 local drawWidth = 0 | 168 local drawWidth = 0 |
| 164 local lastButton | 169 local lastButton |
| 165 local numButtons = 0 | 170 local numButtons = 0 |
| 166 for i, d in ipairs(self.dock.buttons) do | 171 for i, d in ipairs(self.buttons) do |
| 167 if d and d:IsShown() then | 172 if d and d:IsShown() then |
| 168 d:SetScale(D.dockScale or 1) | 173 d:SetScale(D.dockScale or 1) |
| 169 if lastButton then | 174 if lastButton then |
| 170 d:SetPoint('TOPLEFT', lastButton, 'TOPRIGHT', pad_offset, 0) | 175 d:SetPoint('TOPLEFT', lastButton, 'TOPRIGHT', pad_offset, 0) |
| 171 else | 176 else |
| 177 numButtons = numButtons + 1 | 182 numButtons = numButtons + 1 |
| 178 print(numButtons) | 183 print(numButtons) |
| 179 end | 184 end |
| 180 end | 185 end |
| 181 self.numButtons = numButtons | 186 self.numButtons = numButtons |
| 182 self.dock:SetWidth(drawWidth) | 187 self:SetWidth(drawWidth) |
| 183 self.db.dockPoint = self.db.dockPoint or 'TOP' | 188 |
| 184 self.dock:SetPoint(self.db.dockPoint, UIParent, self.db.dockPoint, 0, 0) | 189 D.db.dockPoint = D.db.dockPoint or 'TOPLEFT' |
| 190 self:SetPoint(D.db.dockPoint , UIParent, D.db.dockPoint , 0, 0) | |
| 185 end | 191 end |
| 186 | 192 |
| 187 | 193 |
| 188 local function FrameFade(frame) | 194 local function FrameFade(frame) |
| 189 if not D.fader then | 195 if not D.fader then |
