ESOUI SVN ZAMNotebook

[/] [trunk/] [ZAM_Notebook/] [ZAM_Notebook.lua] - Blame information for rev 14

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 5 Seerah-7
-- ZAM_Notebook © ZAM Network LLC
2 Seerah-7
-- All Rights Reserved
3 Seerah-7
 
4 2 Seerah-7
local wm = WINDOW_MANAGER
5 Seerah-7
local em = EVENT_MANAGER
6 Seerah-7
local znb, db, indexPool, currentlyViewing
7 Seerah-7
local tinsert = table.insert
8 Seerah-7
local tremove = table.remove
9 Seerah-7
 
10 Seerah-7
local defaults = {
11 Seerah-7
        anchor = {
12 Seerah-7
                a = CENTER,
13 Seerah-7
                b = CENTER,
14 Seerah-7
                x = 0,
15 Seerah-7
                y = 0,
16 Seerah-7
        }
17 Seerah-7
 
18 Seerah-7
}
19 Seerah-7
 
20 Seerah-7
 
21 11 Seerah-7
local function ProtectText(text)        --protect against backslashes corrupting our saved variables
22 Seerah-7
        return text:gsub([[\]], [[%%92]])
23 Seerah-7
end
24 Seerah-7
 
25 Seerah-7
local function UnprotectText(text)      --convert back to what should be displayed
26 Seerah-7
        return text:gsub([[%%92]], [[\]])
27 Seerah-7
end
28 Seerah-7
 
29 2 Seerah-7
local buttonCount = 1
30 Seerah-7
local function CreateIndexButton(indexPool)
31 14 Seerah-7
        local button = ZO_ObjectPool_CreateControl("ZAM_NotebookIndex", indexPool, znb.menu.scrollChild)
32 Seerah-7
        local anchorBtn = buttonCount == 1 and znb.menu.scrollChild or indexPool:AcquireObject(buttonCount-1)
33 2 Seerah-7
        button:SetAnchor(TOPLEFT, anchorBtn, buttonCount == 1 and TOPLEFT or BOTTOMLEFT)
34 Seerah-7
        button:SetHorizontalAlignment(TEXT_ALIGN_LEFT)
35 Seerah-7
        button:SetWidth(190)
36 Seerah-7
        button:SetHandler("OnClicked", function(self)
37 11 Seerah-7
                                znb.titleEdit:SetText(UnprotectText(self.data.title))
38 Seerah-7
                                znb.edit:SetText(UnprotectText(self.data.text))
39 2 Seerah-7
                                currentlyViewing = self.id
40 8 Seerah-7
                                znb.save.highlight:SetHidden(true)
41 10 Seerah-7
                                znb.selectedHL:SetHidden(false)
42 Seerah-7
                                znb.selectedHL:ClearAnchors()
43 Seerah-7
                                znb.selectedHL:SetAnchorFill(self)
44 2 Seerah-7
                        end)
45 Seerah-7
 
46 Seerah-7
        buttonCount = buttonCount + 1
47 Seerah-7
        return button
48 Seerah-7
end
49 Seerah-7
 
50 Seerah-7
local function RemoveIndexButton(button)
51 Seerah-7
        button:SetHidden(true)
52 Seerah-7
end
53 Seerah-7
 
54 Seerah-7
local function PopulateScrollList()
55 Seerah-7
        local numPages = #db.pages
56 Seerah-7
        for i = 1, numPages do
57 Seerah-7
                local button = indexPool:AcquireObject(i)
58 Seerah-7
                button.data = db.pages[i]
59 Seerah-7
                button.id = i
60 14 Seerah-7
                button:SetText(UnprotectText(button.data.title))
61 2 Seerah-7
                button:SetHidden(false)
62 Seerah-7
        end
63 Seerah-7
        local activePages = indexPool:GetActiveObjectCount()
64 Seerah-7
        if activePages > numPages then
65 Seerah-7
                for i = numPages+1, activePages do
66 Seerah-7
                        indexPool:ReleaseObject(i)
67 Seerah-7
                end
68 Seerah-7
        end
69 Seerah-7
end
70 Seerah-7
 
71 Seerah-7
local function CreateNotebook()
72 Seerah-7
        --main window
73 Seerah-7
        znb = wm:CreateTopLevelWindow("ZAM_Notebook")
74 Seerah-7
        znb:SetDimensions(800, 650)
75 Seerah-7
        znb:SetAnchor(db.anchor.a, GuiRoot, db.anchor.b, db.anchor.x, db.anchor.y)
76 Seerah-7
        znb:SetClampedToScreen(true)
77 Seerah-7
        znb:SetMouseEnabled(true)
78 Seerah-7
        znb:SetMovable(true)
79 Seerah-7
        znb:SetHandler("OnReceiveDrag", function(self)
80 Seerah-7
                        --if not db.locked then
81 Seerah-7
                                self:StartMoving()
82 Seerah-7
                        --end
83 Seerah-7
                end)
84 Seerah-7
        znb:SetHandler("OnMouseUp", function(self)
85 Seerah-7
                        self:StopMovingOrResizing()
86 Seerah-7
                        local _,a,_,b,x,y = self:GetAnchor()
87 Seerah-7
                        db.anchor = {["a"]=a, ["b"]=b, ["x"]=x, ["y"]=y}
88 Seerah-7
                end)
89 Seerah-7
 
90 Seerah-7
        --window bg
91 Seerah-7
        znb.bg = wm:CreateControl("ZAM_NotebookBG", znb, CT_TEXTURE)
92 Seerah-7
        znb.bg:SetTexture("ZAM_Notebook\\NotebookBG.dds")
93 Seerah-7
        znb.bg:SetTextureCoords(0, 0.98, 0, 0.85)
94 Seerah-7
        znb.bg:SetAnchorFill(znb)
95 Seerah-7
 
96 Seerah-7
        --window title
97 Seerah-7
        znb.title = wm:CreateControl("ZAM_NotebookTitle", znb, CT_LABEL)
98 Seerah-7
        znb.title:SetAnchor(TOPLEFT, znb, TOPLEFT, 50, 50)
99 Seerah-7
        znb.title:SetFont("ZoFontWindowTitle")
100 Seerah-7
        znb.title:SetText("ZAM Notebook")
101 Seerah-7
 
102 Seerah-7
        --divider below title
103 Seerah-7
        znb.titleDiv = wm:CreateControl("ZAM_NotebookTitleDiv", znb, CT_TEXTURE)
104 Seerah-7
        znb.titleDiv:SetDimensions(800, 4)
105 Seerah-7
        znb.titleDiv:SetAnchor(TOPLEFT, znb.title, BOTTOMLEFT, -50, 5)
106 Seerah-7
        znb.titleDiv:SetTexture("EsoUI\\Art\\Miscellaneous\\centerscreen_topDivider.dds")
107 Seerah-7
 
108 Seerah-7
        --pages menu
109 Seerah-7
        znb.menu = wm:CreateControlFromVirtual("ZAM_NotebookMenu", znb, "ZO_ScrollContainer")
110 Seerah-7
        znb.menu:SetAnchor(TOPLEFT, znb.titleDiv, BOTTOMLEFT, 70, 30)
111 Seerah-7
        znb.menu:SetAnchor(BOTTOMLEFT, znb, BOTTOMLEFT, 70, -60)
112 Seerah-7
        znb.menu:SetWidth(200)
113 14 Seerah-7
        znb.menu.scrollChild = znb.menu:GetNamedChild("ScrollChild")
114 2 Seerah-7
 
115 10 Seerah-7
        --page selected highlight
116 14 Seerah-7
        znb.selectedHL = wm:CreateControl(nil, znb.menu.scrollChild, CT_TEXTURE)
117 10 Seerah-7
        local selectedHL = znb.selectedHL
118 Seerah-7
        selectedHL:SetTexture("EsoUI\\Art\\Buttons\\generic_highlight.dds")
119 Seerah-7
        selectedHL:SetHidden(true)
120 Seerah-7
 
121 2 Seerah-7
        --divider between menu and notebook editbox
122 Seerah-7
        znb.divider = wm:CreateControl("ZAM_NotebookDivider", znb, CT_TEXTURE)
123 Seerah-7
        znb.divider:SetAnchor(TOPLEFT, znb.menu, TOPRIGHT, 15, -15)
124 Seerah-7
        znb.divider:SetAnchor(BOTTOMLEFT, znb.menu, BOTTOMRIGHT)
125 Seerah-7
        znb.divider:SetWidth(4)
126 Seerah-7
        znb.divider:SetTexture("EsoUI\\Art\\Miscellaneous\\window_edge.dds")
127 Seerah-7
 
128 Seerah-7
        --page title editbox bg
129 Seerah-7
        znb.titleEditbg = wm:CreateControlFromVirtual("ZAM_NotebookTitleEditBG", znb, "ZO_EditBackdrop")
130 Seerah-7
        znb.titleEditbg:SetDimensions(250, 28)
131 Seerah-7
        znb.titleEditbg:SetAnchor(TOPLEFT, znb.divider, TOPRIGHT, 15, 15)
132 Seerah-7
 
133 Seerah-7
        --page title editbox
134 Seerah-7
        znb.titleEdit = wm:CreateControlFromVirtual("ZAM_NotebookTitleEdit", znb.titleEditbg, "ZO_DefaultEditForBackdrop")
135 4 Seerah-7
        znb.titleEdit:SetHandler("OnTab", function() znb.edit:TakeFocus() end)
136 Seerah-7
        znb.titleEdit:SetHandler("OnEscape", znb.titleEdit.LoseFocus)
137 2 Seerah-7
 
138 Seerah-7
        --editbox bg
139 Seerah-7
        znb.editbg = wm:CreateControlFromVirtual("ZAM_NotebookEditBG", znb, "ZO_EditBackdrop")
140 Seerah-7
        znb.editbg:SetDimensions(450, 350)
141 Seerah-7
        znb.editbg:SetAnchor(TOPLEFT, znb.titleEditbg, BOTTOMLEFT, 0, 15)
142 Seerah-7
 
143 Seerah-7
        --editbox
144 Seerah-7
        znb.edit = wm:CreateControlFromVirtual("ZAM_NotebookEdit", znb.editbg, "ZO_DefaultEditMultiLineForBackdrop")
145 Seerah-7
        znb.edit:SetMaxInputChars(3000)
146 4 Seerah-7
        znb.edit:SetHandler("OnTab", function() if IsShiftKeyDown() then znb.titleEdit:TakeFocus() end end)
147 Seerah-7
        znb.edit:SetHandler("OnEscape", znb.edit.LoseFocus)
148 11 Seerah-7
        znb.edit:SetHandler("OnMouseWheel", function(self, delta)
149 Seerah-7
                        if self:HasFocus() then --only set focus to new spots if the editbox is currently in use
150 Seerah-7
                                local cursorPos = self:GetCursorPosition()
151 Seerah-7
                                local text = self:GetText()
152 Seerah-7
                                local textLen = text:len()
153 Seerah-7
                                local newPos
154 Seerah-7
                                if delta > 0 then       --scrolling up
155 Seerah-7
                                        local reverseText = text:reverse()
156 Seerah-7
                                        local revCursorPos = textLen - cursorPos
157 Seerah-7
                                        local revPos = reverseText:find("\n", revCursorPos+1)
158 Seerah-7
                                        newPos = revPos and textLen - revPos
159 Seerah-7
                                else    --scrolling down
160 Seerah-7
                                        newPos = text:find("\n", cursorPos+1)
161 Seerah-7
                                end
162 Seerah-7
                                if newPos then  --if we found a new line, then scroll, otherwise don't
163 Seerah-7
                                        self:SetCursorPosition(newPos)
164 Seerah-7
                                end
165 Seerah-7
                        end
166 Seerah-7
                end)
167 2 Seerah-7
 
168 Seerah-7
        --run script button
169 Seerah-7
        znb.run = wm:CreateControl("ZAM_NotebookRun", znb, CT_BUTTON)
170 Seerah-7
        znb.run:SetDimensions(34, 34)
171 Seerah-7
        znb.run:SetAnchor(TOPLEFT, znb.editbg, BOTTOMLEFT, 0, 12)
172 Seerah-7
        znb.run:SetNormalTexture("EsoUI\\Art\\Buttons\\edit_up.dds")
173 Seerah-7
        znb.run:SetPressedTexture("EsoUI\\Art\\Buttons\\edit_down.dds")
174 Seerah-7
        znb.run:SetMouseOverTexture("EsoUI\\Art\\Buttons\\edit_over.dds")
175 14 Seerah-7
        znb.run.data = {tooltipText = "Run this page as a Lua script."}
176 2 Seerah-7
        znb.run:SetHandler("OnMouseEnter", ZO_Options_OnMouseEnter)
177 Seerah-7
        znb.run:SetHandler("OnMouseExit", ZO_Options_OnMouseExit)
178 Seerah-7
        --setting to run at startup?
179 Seerah-7
        znb.run:SetHandler("OnClicked", function()
180 Seerah-7
                        local znbScript = zo_loadstring(znb.edit:GetText())
181 Seerah-7
                        if znbScript then
182 Seerah-7
                                znbScript()
183 Seerah-7
                        end
184 Seerah-7
                end)
185 Seerah-7
 
186 Seerah-7
        --undo changes button
187 Seerah-7
        znb.undo = wm:CreateControl("ZAM_NotebookUndo", znb, CT_BUTTON)
188 Seerah-7
        znb.undo:SetDimensions(30, 30)
189 Seerah-7
        znb.undo:SetAnchor(LEFT, znb.run, RIGHT, 15, 1)
190 Seerah-7
        znb.undo:SetNormalTexture("EsoUI\\Art\\Buttons\\decline_up.dds")
191 Seerah-7
        znb.undo:SetPressedTexture("EsoUI\\Art\\Buttons\\decline_down.dds")
192 Seerah-7
        znb.undo:SetMouseOverTexture("EsoUI\\Art\\Buttons\\decline_over.dds")
193 14 Seerah-7
        znb.undo.data = {tooltipText = "Undo changes made to this page."}
194 2 Seerah-7
        znb.undo:SetHandler("OnMouseEnter", ZO_Options_OnMouseEnter)
195 Seerah-7
        znb.undo:SetHandler("OnMouseExit", ZO_Options_OnMouseExit)
196 Seerah-7
        znb.undo:SetHandler("OnClicked", function()
197 Seerah-7
                        if currentlyViewing then
198 Seerah-7
                                znb.titleEdit:SetText(db.pages[currentlyViewing].title)
199 Seerah-7
                                znb.edit:SetText(db.pages[currentlyViewing].text)
200 Seerah-7
                        end
201 Seerah-7
                end)
202 Seerah-7
 
203 Seerah-7
        --save changes button
204 Seerah-7
        znb.save = wm:CreateControl("ZAM_NotebookSave", znb, CT_BUTTON)
205 Seerah-7
        znb.save.highlight = wm:CreateControl("ZAM_NotebookSaveHL", znb.save, CT_TEXTURE)
206 Seerah-7
        local highlight = znb.save.highlight
207 Seerah-7
        znb.save:SetDimensions(30, 30)
208 Seerah-7
        znb.save:SetAnchor(LEFT, znb.undo, RIGHT, 15, 1)
209 Seerah-7
        znb.save:SetNormalTexture("EsoUI\\Art\\Buttons\\accept_up.dds")
210 Seerah-7
        znb.save:SetPressedTexture("EsoUI\\Art\\Buttons\\accept_down.dds")
211 Seerah-7
        znb.save:SetMouseOverTexture("EsoUI\\Art\\Buttons\\accept_over.dds")
212 14 Seerah-7
        znb.save.data = {tooltipText = "Save changes made to this page."}
213 2 Seerah-7
        znb.save:SetHandler("OnMouseEnter", ZO_Options_OnMouseEnter)
214 Seerah-7
        znb.save:SetHandler("OnMouseExit", ZO_Options_OnMouseExit)
215 11 Seerah-7
        znb.save:SetHandler("OnClicked", function(self)
216 2 Seerah-7
                        local titleText = znb.titleEdit:GetText()
217 4 Seerah-7
                        if titleText == "" then
218 Seerah-7
                                znb.titleEdit:SetText("New Page "..#db.pages+1)
219 Seerah-7
                                titleText = znb.titleEdit:GetText()
220 Seerah-7
                        end
221 2 Seerah-7
                        local pageText = znb.edit:GetText()
222 9 Seerah-7
                        --with the changes to how text is stored in saved variables, literal strings work again.
223 Seerah-7
                        --if pageText:find("%[%[") then
224 Seerah-7
                        --      error([=[ZAM_Notebook does not support literal strings.
225 Seerah-7
                        --
226 Seerah-7
                        --              This would cause a nested literal string error and erase your saved variables data.
227 Seerah-7
                        --              Please edit your page text before saving to remove the literal string. ( [[...]] )]=], 0)
228 Seerah-7
                        --      return
229 Seerah-7
                        --end]]
230 11 Seerah-7
                        --so now we need to prevent escaped quotes instead...
231 Seerah-7
                        --if pageText:find("%\\\"") then
232 Seerah-7
                        --      error([=[ZAM_Notebook does not support escaped double-quotes.
233 Seerah-7
                        --
234 Seerah-7
                        --              Because ESO saved variables currently escape any double-quotes found in their contents,
235 Seerah-7
                        --              this would cause a malformed table error and erase your saved variables data.
236 Seerah-7
                        --
237 Seerah-7
                        --              Please edit your page text before saving to remove the escaped double-quote ( \" ).
238 Seerah-7
                        --              You may use a single quote instead ( \' ) or change to use a literal string. ( [[ "quote" ]] )]=], 0)
239 Seerah-7
                        --      return
240 Seerah-7
                        --end
241 Seerah-7
                        local safe_pageText = ProtectText(pageText)
242 Seerah-7
                        local safe_titleText = ProtectText(titleText)
243 2 Seerah-7
                        if currentlyViewing == nil then --if this was a new page
244 11 Seerah-7
                                tinsert(db.pages, {["title"] = safe_titleText, ["text"]=safe_pageText})
245 2 Seerah-7
                                currentlyViewing = #db.pages
246 10 Seerah-7
                                znb.selectedHL:SetHidden(false)
247 Seerah-7
                                znb.selectedHL:ClearAnchors()
248 11 Seerah-7
                                self.new = true
249 2 Seerah-7
                        else
250 11 Seerah-7
                                db.pages[currentlyViewing].title = safe_titleText
251 Seerah-7
                                db.pages[currentlyViewing].text = safe_pageText
252 Seerah-7
                                self.new = false
253 2 Seerah-7
                        end
254 Seerah-7
                        PopulateScrollList()
255 11 Seerah-7
                        if self.new then
256 Seerah-7
                                znb.selectedHL:SetAnchorFill(_G["ZAM_NotebookIndex"..currentlyViewing])
257 Seerah-7
                        end
258 2 Seerah-7
                        highlight:SetHidden(true)
259 Seerah-7
                end)
260 Seerah-7
        highlight:SetAnchor(TOPLEFT, znb.save, TOPLEFT, -15, -15)
261 Seerah-7
        highlight:SetAnchor(BOTTOMRIGHT, znb.save, BOTTOMRIGHT, 15, 15)
262 Seerah-7
        highlight:SetTexture("EsoUI\\Art\\Miscellaneous\\icon_highlight_pulse.dds")
263 Seerah-7
        highlight:SetAlpha(.75)
264 Seerah-7
        highlight:SetHidden(true)
265 Seerah-7
        znb.titleEdit:SetHandler("OnTextChanged", function(self)
266 Seerah-7
                        local page = db.pages[currentlyViewing]
267 Seerah-7
                        if not page or self:GetText() ~= page.title or self:GetText() then
268 Seerah-7
                                highlight:SetHidden(false)
269 Seerah-7
                        else
270 Seerah-7
                                highlight:SetHidden(true)
271 Seerah-7
                        end
272 Seerah-7
                end)
273 Seerah-7
        znb.edit:SetHandler("OnTextChanged", function(self)
274 Seerah-7
                        local page = db.pages[currentlyViewing]
275 8 Seerah-7
                        if not page or self:GetText() ~= page.text or self:GetText() then
276 2 Seerah-7
                                highlight:SetHidden(false)
277 Seerah-7
                        else
278 Seerah-7
                                highlight:SetHidden(true)
279 Seerah-7
                        end
280 Seerah-7
                end)
281 Seerah-7
 
282 Seerah-7
        --close window button
283 Seerah-7
        znb.close = wm:CreateControlFromVirtual("ZAM_NotebookClose", znb, "ZO_DefaultTextButton")
284 Seerah-7
        znb.close:SetText("Close")
285 Seerah-7
        znb.close:SetAnchor(TOPRIGHT, znb.editbg, BOTTOMRIGHT, 0, 15)
286 Seerah-7
        znb.close:SetWidth(75)
287 Seerah-7
        znb.close:SetHandler("OnClicked", function() znb:SetHidden(true) end)
288 Seerah-7
 
289 Seerah-7
        --new page button
290 Seerah-7
        znb.new = wm:CreateControl("ZAM_NotebookNew", znb, CT_BUTTON)
291 Seerah-7
        znb.new:SetDimensions(30, 30)
292 Seerah-7
        znb.new:SetAnchor(LEFT, znb.titleEditbg, RIGHT, 15, 0)
293 Seerah-7
        znb.new:SetNormalTexture("EsoUI\\Art\\Buttons\\pointsplus_up.dds")
294 Seerah-7
        znb.new:SetPressedTexture("EsoUI\\Art\\Buttons\\pointsplus_down.dds")
295 Seerah-7
        znb.new:SetMouseOverTexture("EsoUI\\Art\\Buttons\\pointsplus_over.dds")
296 14 Seerah-7
        znb.new.data = {tooltipText = "Create a new page."}
297 2 Seerah-7
        znb.new:SetHandler("OnMouseEnter", ZO_Options_OnMouseEnter)
298 Seerah-7
        znb.new:SetHandler("OnMouseExit", ZO_Options_OnMouseExit)
299 Seerah-7
        znb.new:SetHandler("OnClicked", function()
300 Seerah-7
                        currentlyViewing = nil
301 Seerah-7
                        znb.titleEdit:SetText("New Page "..#db.pages+1)
302 Seerah-7
                        znb.titleEdit:SelectAll()
303 Seerah-7
                        znb.titleEdit:TakeFocus()
304 Seerah-7
                        znb.edit:Clear()
305 Seerah-7
                end)
306 Seerah-7
 
307 Seerah-7
        --delete page button
308 Seerah-7
        znb.delete = wm:CreateControl("ZAM_NotebookDelete", znb, CT_BUTTON)
309 Seerah-7
        znb.delete:SetDimensions(32, 32)
310 Seerah-7
        znb.delete:SetAnchor(LEFT, znb.new, RIGHT, 15, 0)
311 Seerah-7
        znb.delete:SetNormalTexture("EsoUI\\Art\\Buttons\\minus_up.dds")
312 Seerah-7
        znb.delete:SetPressedTexture("EsoUI\\Art\\Buttons\\minus_down.dds")
313 Seerah-7
        znb.delete:SetMouseOverTexture("EsoUI\\Art\\Buttons\\minus_over.dds")
314 14 Seerah-7
        znb.delete.data = {tooltipText = "Delete this page."}
315 2 Seerah-7
        znb.delete:SetHandler("OnMouseEnter", ZO_Options_OnMouseEnter)
316 Seerah-7
        znb.delete:SetHandler("OnMouseExit", ZO_Options_OnMouseExit)
317 Seerah-7
        znb.delete:SetHandler("OnClicked", function()
318 Seerah-7
                        if currentlyViewing then
319 Seerah-7
                                tremove(db.pages, currentlyViewing)
320 Seerah-7
                                currentlyViewing = nil
321 Seerah-7
                                PopulateScrollList()
322 Seerah-7
                                znb.save.highlight:SetHidden(true)
323 10 Seerah-7
                                znb.selectedHL:SetHidden(true)
324 2 Seerah-7
                        end
325 4 Seerah-7
                        znb.titleEdit:Clear()
326 Seerah-7
                        znb.edit:Clear()
327 Seerah-7
                        highlight:SetHidden(true)
328 2 Seerah-7
                end)
329 Seerah-7
 
330 Seerah-7
        znb:SetHidden(true)
331 Seerah-7
end
332 Seerah-7
 
333 5 Seerah-7
--global for keybind
334 Seerah-7
function ZAMNotebookToggleVisibility()
335 Seerah-7
        if znb:IsHidden() then
336 Seerah-7
                znb:SetHidden(false)
337 Seerah-7
                if not SCENE_MANAGER:IsInUIMode() then
338 Seerah-7
                        SCENE_MANAGER:SetInUIMode(true)
339 Seerah-7
                end
340 Seerah-7
        else
341 Seerah-7
                znb:SetHidden(true)
342 Seerah-7
        end
343 Seerah-7
end
344 Seerah-7
 
345 2 Seerah-7
local function Initialize()
346 Seerah-7
        ZAM_NotebookDB = ZAM_NotebookDB or {}
347 Seerah-7
        for k,v in pairs(defaults) do
348 Seerah-7
            if type(ZAM_NotebookDB[k]) == "nil" then
349 Seerah-7
                ZAM_NotebookDB[k] = v
350 Seerah-7
            end
351 Seerah-7
        end
352 Seerah-7
        ZAM_NotebookDB.pages = ZAM_NotebookDB.pages or {}
353 Seerah-7
        db = ZAM_NotebookDB
354 Seerah-7
 
355 Seerah-7
        indexPool = ZO_ObjectPool:New(CreateIndexButton, RemoveIndexButton)
356 Seerah-7
 
357 5 Seerah-7
        ZO_CreateStringId("SI_BINDING_NAME_ZAM_NOTEBOOK_TOGGLE", "Toggle ZAM Notebook")
358 Seerah-7
        SLASH_COMMANDS["/znb"] = ZAMNotebookToggleVisibility
359 2 Seerah-7
end
360 Seerah-7
 
361 Seerah-7
 
362 Seerah-7
em:RegisterForEvent("ZAM_Notebook", EVENT_ADD_ON_LOADED, function(event, addon)
363 Seerah-7
--em:RegisterForEvent("ZAM_Notebook", EVENT_PLAYER_ACTIVATED, function(event, addon)
364 Seerah-7
                if addon == "ZAM_Notebook" then
365 Seerah-7
                        Initialize()
366 Seerah-7
                        CreateNotebook()
367 Seerah-7
                        PopulateScrollList()
368 Seerah-7
                end
369 Seerah-7
        end)