local ns = select( 2, ... ); function ns:initbn() ns.bn = {}; local module = ns.bn; local L = ns.L; local e_active = false; local bn_active = false; local lastsaveid; local emergencysaveid; local lastactive_blizz_tab; local lastactive_blizz_frame; function module:ShowBossNotes() bn_active = true; module:SaveLastTab(); _G["EncounterJournalEncounterFrameInfoLootScrollFrame"]:Hide(); _G["EncounterJournalEncounterFrameInfoDetailsScrollFrame"]:Hide(); _G["EncounterJournalEncounterFrameInfoBossTab"]:Enable(); _G["EncounterJournalEncounterFrameInfoLootTab"]:Enable(); module.scrollframe:Show(); ns.mainframe.expandbutton:Hide(); ns.mainframe.collapsebutton:Hide(); module.notesbutton:Disable(); if(e_active==false) then module.editbutton:Show(); local saveid = module:GetSaveID(); module.scrollchild.text:SetText(ns.activeconfig.bn[saveid] or ""); module.scrollframe:SetScrollChild(module.scrollchild); module.scrollchild:Show(); module.scrollchild.text:Show(); else module.savebutton:Show(); module.canclebutton:Show(); end end --temp function module:ShowBossNotes2() if(bn_active==false) then return; end if(e_active==true) then StaticPopup_Show ("DJE_BN_CONFIRM_NO_SAVE"); emergencysaveid = lastsaveid; EncounterJournal:Hide(); end e_active = false; _G["EncounterJournalEncounterFrameInfoLootScrollFrame"]:Hide(); _G["EncounterJournalEncounterFrameInfoDetailsScrollFrame"]:Hide(); _G["EncounterJournalEncounterFrameInfoBossTab"]:Enable(); _G["EncounterJournalEncounterFrameInfoLootTab"]:Enable(); module.scrollframe:Show(); ns.mainframe.expandbutton:Hide(); ns.mainframe.collapsebutton:Hide(); module.notesbutton:Disable(); module.editbutton:Show(); local saveid = module:GetSaveID(); module.scrollchild.text:SetText(ns.activeconfig.bn[saveid] or ""); module.scrollchild:Show(); module.scrollchild.text:Show(); module.scrollframe:SetScrollChild(module.scrollchild); module.scrollchild:Show(); module.editchild:Hide(); module.canclebutton:Hide(); module.savebutton:Hide(); end function module:SaveLastTab() if(_G["EncounterJournalEncounterFrameInfoLootScrollFrame"]:IsVisible()) then lastactive_tab = _G["EncounterJournalEncounterFrameInfoLootTab"]; lastactive_frame =_G["EncounterJournalEncounterFrameInfoLootScrollFrame"]; elseif(_G["EncounterJournalEncounterFrameInfoDetailsScrollFrame"]:IsVisible()) then lastactive_frame = _G["EncounterJournalEncounterFrameInfoDetailsScrollFrame"]; lastactive_tab= _G["EncounterJournalEncounterFrameInfoBossTab"]; --else -- lastactive_tab = "self"; end end function module:ActivateLastTab() if(lastactive_tab) then lastactive_tab:Disable(); lastactive_frame:Show(); -- end end end function module:HideBossNotes() if(e_active==true) then StaticPopup_Show ("DJE_BN_CONFIRM_NO_SAVE"); emergencysaveid = lastsaveid; EncounterJournal:Hide(); end e_active = false; module:ActivateLastTab() module.notesbutton:Enable(); module.scrollframe:Hide(); module.scrollframe:SetScrollChild(module.scrollchild); module.scrollchild:Show(); module.editchild:Hide(); module.canclebutton:Hide(); module.savebutton:Hide(); module.editbutton:Hide(); end --temp function module:HideBossNotes2() module:SaveLastTab(); bn_active = false; module.notesbutton:Enable(); module.scrollframe:Hide(); module.canclebutton:Hide(); module.savebutton:Hide(); module.editbutton:Hide(); ns.mainframe.expandbutton:Show(); ns.mainframe.collapsebutton:Show(); end function module:CancleEditMode() e_active = false; module.scrollchild.text:SetText(ns.activeconfig.bn[module:GetSaveID()] or "") module.scrollchild:Show(); module.editchild:Hide(); module.scrollframe:SetScrollChild(module.scrollchild); module.canclebutton:Hide(); module.savebutton:Hide(); module.editbutton:Show(); end function module:EditMode() e_active = true; module.editchild:SetText(module.scrollchild.text:GetText() or ""); module.editchild:Show(); module.scrollframe:SetScrollChild(module.editchild); module.scrollchild:Hide(); module.canclebutton:Show(); module.savebutton:Show(); module.editbutton:Hide(); end function module:GetSaveID() local mode,size; if(EncounterJournal.isHeroic==true) then mode = 'h'; else mode = 'n'; end if(EncounterJournal.is10Man==true) then size = '10'; else size = '25'; end lastsaveid = ns.mainframe:GetCurrentEncounterID().."|"..size..mode; return lastsaveid; end function module:SaveNotes() e_active=false; local saveid = module:GetSaveID(); if (not ns.activeconfig.bn[saveid]) then ns.activeconfig.bn[saveid] = {}; end ns.activeconfig.bn[saveid] = module.editchild:GetText(); module.scrollchild.text:SetText(module.editchild:GetText()); module.scrollframe:SetScrollChild(module.scrollchild); module.editchild:Hide(); module.scrollchild:Show(); module.canclebutton:Hide(); module.savebutton:Hide(); module.editbutton:Show(); end function module:CreateBNFrame() local scrollframe = CreateFrame("ScrollFrame","DJE_BNScrollFrame",EncounterJournalEncounterFrameInfo,"UIPanelScrollFrameTemplate");--"UIPanelScrollFrameCodeTemplate"); scrollframe:SetWidth(350); scrollframe:SetHeight(380); scrollframe:SetPoint("BOTTOMRIGHT",-5,1); scrollframe:SetPoint("CENTER",UIParent,"CENTER",100,100); scrollframe.ScrollBar:ClearAllPoints(); scrollframe.ScrollBar:SetPoint("TOPRIGHT",0,-17); scrollframe.ScrollBar:SetPoint("BOTTOMRIGHT",0,17); module.scrollframe = scrollframe; local scrollchild = CreateFrame("frame","DJE_BNScrollFrameScrollChild",scrollframe); scrollchild:SetWidth(320); scrollchild:SetHeight(372); scrollchild:SetPoint("TOPLEFT",0,0); scrollframe:SetScrollChild(scrollchild); module.scrollchild = scrollchild; local fontstring = scrollchild:CreateFontString( nil, "ARTWORK", "GameFontBlack" ); fontstring:SetJustifyH("LEFT"); fontstring:SetPoint("TOPLEFT",0,-8); fontstring:SetTextColor(0.25,0.1484375,0.02,1.0); fontstring:SetNonSpaceWrap(true); fontstring:SetWidth(315); scrollchild:Hide(); scrollchild.text = fontstring; local editchild = CreateFrame("EditBox","DJE_BNScrollFrameEditChild",scrollframe); editchild:SetWidth(320); editchild:SetHeight(372); editchild:SetPoint("TOPLEFT",0,0); editchild:SetMultiLine(true); editchild:SetFontObject("GameFontBlack"); editchild:SetJustifyH("LEFT"); editchild:SetTextColor(0.25,0.1484375,0.02,1.0); module.editchild = editchild; scrollframe:SetScrollChild(editchild); editchild:Hide(); local button1 = CreateFrame("Button","DJE_BN_EDIT_BUTTON",EncounterJournal,"MagicButtonTemplate"); button1:SetText(L.EDIT); button1:SetWidth(_G[button1:GetName().."Text"]:GetWidth()+10); button1:SetPoint("BOTTOMRIGHT",EncounterJournal,0,-(button1:GetHeight())); button1:SetScript("onclick",module.EditMode); button1:Hide(); module.editbutton = button1; local button2 = CreateFrame("Button","DJE_BN_CANCLE_BUTTON",EncounterJournal,"MagicButtonTemplate"); button2:SetText(L.CANCEL); button2:SetWidth(_G[button2:GetName().."Text"]:GetWidth()+10); button2:SetPoint("BOTTOMRIGHT",EncounterJournal,0,-(button2:GetHeight())); button2:SetScript("onclick",module.CancleEditMode); button2:Hide(); module.canclebutton = button2; local button3 = CreateFrame("Button","DJE_BN_SAVE_BUTTON",EncounterJournal,"MagicButtonTemplate"); button3:SetText(L.SAVE); button3:SetWidth(_G[button3:GetName().."Text"]:GetWidth()+10); button3:SetPoint("RIGHT",button2,"LEFT",-10,0); button3:SetScript("onclick",module.SaveNotes); button3:Hide(); module.savebutton = button3; end function module:init() local notesbutton = CreateFrame("Button","DungenJournalEnhancedBossNotesButton",EncounterJournal,"EncounterTabTemplate"); notesbutton:SetPoint("TOP",EncounterJournalEncounterFrameInfoLootTab,"BOTTOM",0,2); notesbutton.id = "BossNotes"; notesbutton:SetScript("onclick",module.ShowBossNotes); notesbutton:Hide(); local art1 = notesbutton:CreateTexture(nil,"OVERLAY"); art1:SetWidth(40); art1:SetHeight(43); art1:SetTexture([[Interface\AddOns\DungeonJournalEnhanced\images\bnicon_selected]]) art1:SetHeight(20); art1:SetPoint("RIGHT",-6,0); notesbutton.selected = art1; local art2 = notesbutton:CreateTexture(nil,"OVERLAY"); art2:SetWidth(40); art2:SetHeight(43); art2:SetTexture([[Interface\AddOns\DungeonJournalEnhanced\images\bnicon]]) art2:SetHeight(20); art2:SetPoint("RIGHT",-6,0); notesbutton.unselected = art2; module.notesbutton = notesbutton; EncounterJournalEncounterFrameInfoBossTab:HookScript("onclick",module.HideBossNotes2); EncounterJournalEncounterFrameInfoLootTab:HookScript("onclick",module.HideBossNotes2); EncounterJournalEncounterFrameInfo10ManButton:HookScript("onclick",module.ShowBossNotes2); EncounterJournalEncounterFrameInfo25ManButton:HookScript("onclick",module.ShowBossNotes2); EncounterJournalEncounterFrameInfoHeroicButton:HookScript("onclick",module.ShowBossNotes2); module:CreateBNFrame(); if(not ns.activeconfig.bn) then ns.activeconfig.bn = {}; end StaticPopupDialogs["DJE_BN_CONFIRM_NO_SAVE"] = { text = L.EDIT_LOSS_WARNING, button1 = L.YES, button2 = L.NO, OnAccept = module.SaveNow, OnCancel = function () EncounterJournal:Show();end, timeout = 0, whileDead = true, hideOnEscape = true, } end function module:SaveNow() EncounterJournal:Show(); ns.activeconfig.bn[emergencysaveid] = module.editchild:GetText(); end module:init(); end