Mercurial > wow > devian
view Dock.lua @ 48:2bf7eb1844cb v2.0-raw
commenting out prints
author | Nenue |
---|---|
date | Mon, 04 Jan 2016 07:56:08 -0500 |
parents | eb7544afd77a |
children | c3166f700438 |
line wrap: on
line source
--- ${PACKAGE_NAME} -- @file-author@ -- @project-revision@ @project-hash@ -- @file-revision@ @file-hash@ -- Created: 12/26/2015 12:32 PM -- Dock management functions local D = LibStub("AceAddon-3.0"):GetAddon("Devian") local _G = _G local db local function Dock_MenuClick() end local function Dock_MouseDown(self, button, up) end local function Dock_MouseUp (self, button) Dock_MouseDown(self, button, true) end --- Adjusts frame element alignments local function PrepareForDock (frame, draw_x) frame.left:SetPoint('TOPLEFT', frame.out, 'TOPLEFT', -2, 0) frame.left:SetPoint('BOTTOMRIGHT', frame.out, 'BOTTOMLEFT', 0, 0) frame.topleft:SetPoint('BOTTOMRIGHT', frame.out, 'TOPLEFT', 0, 0) frame.top: SetPoint('TOPLEFT', frame.out, 'TOPLEFT', 0, 2) frame.top:SetPoint('BOTTOMRIGHT', frame.out, 'TOPRIGHT', 0, 0) frame.topright:SetPoint('BOTTOMLEFT', frame.out, 'TOPRIGHT', 0, 0) frame.right:SetPoint('TOPLEFT', frame.out, 'TOPRIGHT', 0, 0) frame.header:SetWidth(frame.header:GetStringWidth() * 1.2) frame.header:SetPoint('TOPLEFT', frame, 'TOPLEFT', draw_x+4, 0) frame.titlebar:SetPoint('TOPLEFT', frame.header, 'TOPLEFT', -4, 0) frame.titlebar:SetPoint('TOPRIGHT', frame.header, 'TOPRIGHT', 0, 0) return (draw_x + frame.header:GetStringWidth() * 1.2 + 4) end --- Docks frames together -- @param target frame on which to dock -- @param ... frame objects to be docked -- function D:DockFrame(...) local target = D.console[select(1,...)] if target.dockedTo then local t = D.c[target.dockedTo] --print('channel',target.index,target.signature, 'is docked to',t.index, t.signature..'. using that instead') target = D.console[target.DockedTo] end target.docked = {} local draw_x = PrepareForDock(target, 4) for i = 2, select('#', ...) do local frame = D.console[select(i, ...)] frame.dockedTo = target.index width, draw_x = MorphToDock (frame, draw_x) table.insert(target.docked, frame.index) frame:ClearAllPoints() frame:SetPoint('TOPLEFT', target, 'TOPLEFT', 0, 0) frame:SetSize(target:GetWidth(), target:GetHeight()) frame.x = nil frame.y = nil frame.width = nil frame.height = nil frame.scriptsMD = frame:GetScript('OnMouseDown') frame.scriptsMU = frame:GetScript('OnMouseUp') frame:SetScript('OnMouseDown', nil) frame:SetScript('OnMouseUp', nil) frame:Save() end end --- Spaces each frame evenly across the screen. function D:DistributeFrames() -- --print('frame grid:', max, num_side) local max = self.num_channels local num_side = math.ceil(math.sqrt(max)) local w = GetScreenWidth() / num_side local h = GetScreenHeight() / num_side for i, frame in pairs(D.console) do local dx = (i-1) % num_side local dy = math.floor((i-1) / num_side) --print('move:', frame.signature, 'dx=', dx, 'dy=', dy) --print('move:', frame.signature, ' x=', dx * w, 'y=', -(dy * h), 'h=', h, 'w=', w) frame.width = w frame.height = h frame.x = dx * w frame.y = -(dy * h) frame:Save() end end --- Place all frames stacked beneath the primary frame. function D:StackFrames() local last for i, frame in pairs(self.console) do if last then frame.x = last.x frame.y = last.y - 20 else frame.x = (GetScreenWidth()-frame:GetWidth())/2 frame.y = 0 end frame:Save() last = frame end end --- function D:UpdateDock() local pad_offset = 12 local draw_offset = pad_offset for i = 1, #self.dock.buttons do local d = self.dock.buttons[i] d:SetPoint('TOPLEFT', DevianDock, 'TOPLEFT', draw_offset, 0) draw_offset= draw_offset + d:GetWidth() + pad_offset end self.dock:SetWidth(draw_offset) end --- Dock interactions function D.DockHighlight(beacon) db = D.db --print('Dvn', 'dock mouse event', beacon) local self = D.dock local mouseOverDock --for i, b in pairs(self.buttons) do --print('polling', i, b:GetName()) if self:IsMouseOver() then mouseOverDock = true end if beacon and beacon:IsMouseOver() then mouseOverDock = true --print('mouse is over', i, b:GetName()) if not beacon.raised then beacon.raised = true local a = (db.dock_button_alpha_on - self:GetAlpha()) local b = (db.dock_button_alpha_on-db.dock_button_alpha_off) local dur = (a / b) * db.dock_button_fade_in --print(a, b, db.dock_button_fade_in, dur) UIFrameFadeIn(beacon, dur,beacon:GetAlpha(),db.dock_button_alpha_on) UIFrameFadeIn(beacon.caption, dur,beacon:GetAlpha(),1) end elseif beacon.raised and beacon.index ~= db.current_channel then beacon.raised = nil local a = (self:GetAlpha() - db.dock_button_alpha_off) local b = (db.dock_button_alpha_on-db.dock_button_alpha_off) local dur = (a / b) * db.dock_button_fade_out --print(a, b, db.dock_button_fade_in, dur) UIFrameFadeOut(beacon, dur,beacon:GetAlpha(),db.dock_button_alpha_off) UIFrameFadeOut(beacon.caption, dur,beacon:GetAlpha(),0) end --end --end if mouseOverDock then if not self.raised then --print('rising') self.raised = true local a = (db.dock_alpha_on - self:GetAlpha()) local b = (db.dock_alpha_on-db.dock_alpha_off) local dur = (a / b) * db.dock_fade_in --print(a, b, db.dock_fade_in, dur) UIFrameFadeIn(self, dur,self:GetAlpha(),db.dock_alpha_on) end elseif self.raised then --print('dropping') self.raised = nil local a = (self:GetAlpha() - db.dock_alpha_off) local b = (db.dock_alpha_on-db.dock_alpha_off) local dur = (a / b) * db.dock_fade_out --print(a, b, db.dock_fade_in, dur) UIFrameFadeOut(self, dur,self:GetAlpha(),db.dock_alpha_off) end end