add lang
[QuestHelper.git] / config.lua
blob19c6ad142d269b2f5cca785ebd4f36ac30b46c77
1 QuestHelper_File["config.lua"] = "Development Version"
2 QuestHelper_Loadtime["config.lua"] = GetTime()
4 -- This is pretty much ganked wholesale from lightsfuryuther's QuestHelperConfig UI mod, then tweaked heavily because I'm kind of an obsessive asshole when it comes to make things work.
5 -- It's provided under a somewhat mangled version of the MIT license, which I will reproduce verbatim:
7 --[[
8 The MIT License
10 Copyright (c) <year> <copyright holders>
12 Permission is hereby granted, free of charge, to any person obtaining a
13 copy
14 of this software and associated documentation files (the "Software"), to
15 deal
16 in the Software without restriction, including without limitation the
17 rights
18 to use, copy, modify, merge, publish, distribute, sublicense, and/or
19 sell
20 copies of the Software, and to permit persons to whom the Software is
21 furnished to do so, subject to the following conditions:
23 The above copyright notice and this permission notice shall be included
25 all copies or substantial portions of the Software.
27 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
29 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
30 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
31 THE
32 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
33 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
34 FROM,
35 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
37 THE SOFTWARE.
40 local addonTable = {} -- we are not doing a common table we're just jamming shit in here basically
45 local QH = QuestHelper;
46 QH.have_custom_config = true; -- enable a custom config page
47 local QHConfig = {}; -- create "global" addon table
49 local addon = QHConfig;
50 local ldb = LibStub("LibDataBroker-1.1");
52 QH_Event("ADDON_LOADED", function (addonid)
53 if addonid ~= "QuestHelper" then
54 return;
55 end
56 addon:OnInit(); -- initialize the config window and LDB entry
57 end);
59 function addon:OnInit()
60 addonTable.Profile_OnInit_Start = GetTime();
61 self:GenerateQHLocales();
62 self.Locale:SetCurrentLocale(GetLocale());
63 self.Version = GetAddOnMetadata("QuestHelper", "Version");
64 self:GenerateOptions();
65 self:SetupLDB();
66 self:SetupGUI();
67 addonTable.Profile_OnInit_Stop = GetTime();
68 end
70 function addon:SetupGUI()
71 LibStub("AceConfigRegistry-3.0"):RegisterOptionsTable("QuestHelper", addon.Options);
72 local lib = LibStub("AceConfigDialog-3.0");
73 addon.OptionsFrames = {};
74 if addon.Options.args.Error then -- version < targetVersion
75 addon.OptionsFrames.Global = lib:AddToBlizOptions("QuestHelper", "QuestHelper", nil, "Error");
76 return;
77 end
78 addon.OptionsFrames.Global = lib:AddToBlizOptions("QuestHelper", "QuestHelper", nil, "Global");
79 addon.OptionsFrames.Route = lib:AddToBlizOptions("QuestHelper", "Route", "QuestHelper", "RouteOptions");
80 addon.OptionsFrames.Interface = lib:AddToBlizOptions("QuestHelper", "Interface", "QuestHelper", "InterfaceOptions");
81 addon.OptionsFrames.Plugins = lib:AddToBlizOptions("QuestHelper", "Plugins", "QuestHelper", "Plugins");
82 end
84 function addon:SetupLDB()
85 self.dataObject = {
86 type = "launcher",
87 icon = "Interface\\QuestFrame\\UI-QuestLog-BookIcon",
88 label = "QuestHelper",
89 tocname = "QuestHelper",
90 OnClick = function(self, button)
91 if QuestHelper_Pref['hide'] then
92 QuestHelper:ToggleHide();
93 return
94 end
95 if button == "LeftButton" then
96 if IsShiftKeyDown() then
97 QH_Incomplete();
98 else
99 QuestHelper:ToggleHide();
101 else
102 addon:ShowGUI();
104 end,
105 OnTooltipShow = function(tooltip)
106 local theme = QuestHelper:GetColourTheme();
107 local L = addon.Locale
108 tooltip:AddLine("QuestHelper v" .. (GetAddOnMetadata("QuestHelper", "Version")) .. ", Config v" .. addon.Version, unpack(theme.tooltip));
109 tooltip:AddLine(QHFormat("QH_BUTTON_TOOLTIP1", QHText(QuestHelper_Pref.hide and "QH_BUTTON_SHOW" or "QH_BUTTON_HIDE")), unpack(theme.tooltip));
110 if not QuestHelper_Pref.hide then
111 tooltip:AddLine(L["TooltipOpenConfig"], unpack(theme.tooltip));
112 tooltip:AddLine(L["IncompleteToggleTooltip"], unpack(theme.tooltip));
114 end,
116 ldb:NewDataObject("QuestHelper", self.dataObject);
119 function addon:ShowGUI()
120 InterfaceOptionsFrame_OpenToCategory(self.OptionsFrames.Plugins);
121 InterfaceOptionsFrame_OpenToCategory(self.OptionsFrames.Global);
124 function addon:GenerateOptions()
125 local L = addon.Locale;
127 addon.Options = {
128 type = "group",
129 name = "QuestHelper",
130 get = function(i)
131 return QuestHelper_Pref[i[#i]];
132 end,
133 set = function(i, v)
134 QuestHelper_Pref[i[#i]] = v;
135 end,
136 args = {
137 Global = {
138 order = 1,
139 type = "group",
140 name = L["GlobalOptionsName"],
141 desc = L["GlobalOptionsDesc"],
142 disabled = function()
143 return QuestHelper_Pref['hide'];
144 end,
145 args = {
146 Enable = {
147 order = 1,
148 type = "toggle",
149 name = L["GlobalEnableName"],
150 desc = L["GlobalEnableDesc"],
151 disabled = false,
152 get = function(i)
153 return not QuestHelper_Pref['hide'];
154 end,
155 set = function(i, v)
156 QuestHelper_Pref['hide'] = not v;
158 if QuestHelper.MapButton then
159 QuestHelper.MapButton:GetNormalTexture():SetDesaturated(QuestHelper_Pref['hide']);
161 if QuestHelper_Pref['hide'] then
162 if QuestHelper_Pref['track'] then
163 QusetHelper:HideTracker();
165 QuestHelper.map_overlay:Hide();
166 else
167 if QuestHelper_Pref['track'] then
168 QuestHelper:ShowTracker();
170 QuestHelper.map_overlay:Show();
171 QuestHelper.minimap_marker:Show();
173 end,
175 Performance = {
176 type = "group",
177 order = 2,
178 name = L["PerfName"],
179 desc = L["PerfDesc"],
180 guiInline = true,
181 args = {
182 Route = {
183 type = "range",
184 order = 1,
185 name = L["PerfRouteName"],
186 desc = L["PerfRouteDesc"],
187 min = 0.1,
188 max = 5,
189 step = .05,
190 isPercent = true,
191 disabled = function()
192 return QuestHelper_Pref['hide'];
193 end,
194 get = function(i)
195 return QuestHelper_Pref['perf_scale_2'];
196 end,
197 set = function(i, v)
198 QuestHelper_Pref['perf_scale_2'] = v;
199 end,
201 Load = {
202 type = "range",
203 order = 2,
204 name = L["PerfLoadName"],
205 desc = L["PerfLoadDesc"],
206 min = 0.1,
207 max = 5,
208 step = .05,
209 isPercent = true,
210 get = function(i)
211 return QuestHelper_Pref['perfload_scale'];
212 end,
213 set = function(i, v)
214 QuestHelper_Pref['perfload_scale'] = v;
215 end,
219 Actions = {
220 type = "group",
221 order = 3,
222 guiInline = true,
223 name = L["ActionsName"],
224 desc = L["ActionsDesc"],
225 args = {
226 Hidden = {
227 type = "execute",
228 order = 1,
229 name = L["ActionsHiddenName"],
230 desc = L["ActionsHiddenDesc"],
231 func = function()
232 QH_Hidden_Menu();
233 end,
235 Incomplete = {
236 type = "execute",
237 order = 2,
238 name = L["ActionsIncompName"],
239 desc = L["ActionsIncompDesc"],
240 func = function()
241 QH_Incomplete();
242 end,
244 Purge = {
245 type = "execute",
246 order = 3,
247 name = L["ActionsPurgeName"],
248 desc = L["ActionsPurgeDesc"],
249 func = function()
250 if not StaticPopupDialogs["QHC_Purge_Dialog"] then
251 StaticPopupDialogs["QHC_Purge_Dialog"] = {
252 text = L["ActionsPurgeDialogText"],
253 button1 = L["ActionsDialogPurge"],
254 button2 = L["ActionsDialogCancel"],
255 OnAccept = function()
256 QuestHelper:Purge(nil, true); -- force a purge
257 end,
258 hideOnEscape = 1,
259 timeout = -1,
262 StaticPopup_Show("QHC_Purge_Dialog");
263 end,
265 HardReset = {
266 type = "execute",
267 order = 4,
268 name = L["ActionsResetName"],
269 desc = L["ActionsResetDesc"],
270 func = function()
271 if not StaticPopupDialogs["QHC_Reset_Dialog"] then
272 StaticPopupDialogs["QHC_Reset_Dialog"] = {
273 text = L["ActionsResetDialogText"],
274 button1 = L["ActionsDialogReset"],
275 button2 = L["ActionsDialogCancel"],
276 OnAccept = function()
277 QuestHelper.purge_code = 'asdf'; -- hack a 'force' parameter
278 QuestHelper:HardReset('asdf');
279 end,
280 hideOnEscape = 1,
281 timeout = -1,
284 StaticPopup_Show("QHC_Reset_Dialog");
285 end,
287 Submit = {
288 type = "execute",
289 order = 6,
290 name = L["ActionsSubmitName"],
291 desc = L["ActionsSubmitDesc"],
292 func = function()
293 QuestHelper:Submit();
294 end,
296 Changes = {
297 type = "execute",
298 order = 6,
299 name = L["ActionsChangesName"],
300 desc = L["ActionsChangesDesc"],
301 func = function()
302 QuestHelper:ChangeLog();
303 end,
307 AdditionalInfo = {
308 type = "group",
309 order = 4,
310 guiInline = true,
311 name = L["AdditionalInfoName"],
312 desc = L["AdditionalInfoDesc"],
313 args = {
314 Tooltip = {
315 type = "toggle",
316 order = 1,
317 name = L["InfoTooltipName"],
318 desc = L["InfoTooltipDesc"],
319 get = function(i)
320 return QuestHelper_Pref['tooltip'];
321 end,
322 set = function(i, v)
323 QuestHelper_Pref['tooltip'] = v;
324 end,
326 Metric = {
327 type = "select",
328 order = 5,
329 name = L["InfoMetricName"],
330 desc = L["InfoMetricDesc"],
331 values = {
332 yards = "Yards",
333 meters = "Meters",
335 get = function(i)
336 local v = QuestHelper_Pref['metric'];
337 if v then
338 return "meters";
339 else
340 return "yards";
342 end,
343 set = function(i, v)
344 QuestHelper_Pref['metric'] = (v == 'meters' and true) or false;
345 end,
347 FlightTime = {
348 type = "toggle",
349 order = 2,
350 name = L["InfoFlightName"],
351 desc = L["InfoFlightDesc"],
352 get = function(i)
353 return QuestHelper_Pref['flight_time'];
354 end,
355 set = function(i, v)
356 QuestHelper_Pref['flight_time'] = v;
357 end,
359 TravelTime = {
360 type = "toggle",
361 order = 3,
362 name = L["InfoTravelName"],
363 desc = L["InfoTravelDesc"],
364 get = function(i)
365 return QuestHelper_Pref['travel_time'];
366 end,
367 set = function(i, v)
368 QuestHelper_Pref['travel_time'] = v;
369 end,
371 MapButton = {
372 type = "toggle",
373 order = 4,
374 name = L["MapButtonName"],
375 desc = L["MapButtonDesc"],
376 get = function(i)
377 return QuestHelper_Pref['map_button'];
378 end,
379 set = function(i, v)
380 QuestHelper_Pref['map_button'] = v;
381 if QuestHelper_Pref['map_button'] then
382 QuestHelper:InitMapButton();
383 else
384 QuestHelper:HideMapButton();
386 end,
388 MiniOpacity = {
389 type = "range",
390 order = 6,
391 name = L["InfoMiniName"],
392 desc = L["InfoMiniDesc"],
393 min = 0,
394 max = 1,
395 step = 0.1,
396 isPercent = true,
397 get = function(i)
398 return QuestHelper_Pref['mini_opacity'];
399 end,
400 set = function(i, v)
401 QuestHelper_Pref['mini_opacity'] = v;
402 end,
408 InterfaceOptions = {
409 type = "group",
410 order = 3,
411 name = L["InterfaceOptionsName"],
412 desc = L["InterfaceOptionsDesc"],
413 disabled = function()
414 return QuestHelper_Pref['hide'];
415 end,
416 args = {
417 intro = {
418 type = "description",
419 order = 0,
420 name = L["InterfaceIntro"]
422 ArrowOptions = {
423 order = 1,
424 type = "group",
425 guiInline = true,
426 name = L["ArrowOptionsName"],
427 desc = L["ArrowOptionsDesc"],
428 args = {
429 Enable = {
430 type = "toggle",
431 order = 1,
432 name = L["ArrowEnableName"],
433 desc = L["ArrowEnableDesc"],
434 get = function(i)
435 return QuestHelper_Pref['arrow'];
436 end,
437 set = function(i, v)
438 QuestHelper_Pref['arrow'] = v;
439 end,
441 Locked = {
442 type = "toggle",
443 order = 2,
444 name = L["ArrowLockedName"],
445 desc = L["ArrowLockedDesc"],
446 disabled = function()
447 return not QuestHelper_Pref['arrow'] or QuestHelper_Pref['hide'];
448 end,
449 get = function(i)
450 return QuestHelper_Pref['arrow_locked'];
451 end,
452 set = function(i, v)
453 QuestHelper_Pref['arrow_locked'] = v;
454 end,
456 Scale = {
457 type = "range",
458 order = 3,
459 name = L["ArrowScaleName"],
460 desc = L["ArrowScaleDesc"],
461 min = 0.5,
462 max = 1.5,
463 step = 0.1,
464 isPercent = true,
465 disabled = function()
466 return not QuestHelper_Pref['arrow'] or QuestHelper_Pref['hide'];
467 end,
468 get = function(i)
469 return (QuestHelper_Pref['arrow_scale'] == nil) and 1 or QuestHelper_Pref['arrow_scale']; -- arrow_scale == nil ? 1 : arrow_scale
470 end,
471 set = function(i, v)
472 QH_Arrow_SetScale(v);
473 end,
475 TextSize = {
476 type = "range",
477 order = 4,
478 name = L["ArrowTextSizeName"],
479 desc = L["ArrowTextSizeDesc"],
480 min = 0.5,
481 max = 1.5,
482 step = 0.1,
483 isPercent = true,
484 disabled = function()
485 return not QuestHelper_Pref['arrow'] or QuestHelper_Pref['hide'];
486 end,
487 get = function(i)
488 return (QuestHelper_Pref['arrow_textsize'] == nil) and 1 or QuestHelper_Pref['arrow_textsize'];
489 end,
490 set = function(i, v)
491 QH_Arrow_SetTextScale(v);
492 end,
494 Reset = {
495 type = "execute",
496 order = 5,
497 name = L["ArrowResetName"],
498 desc = L["ArrowResetDesc"],
499 disabled = function()
500 return not QuestHelper_Pref['arrow'] or QuestHelper_Pref['hide'];
501 end,
502 func = function()
503 QH_Arrow_Reset();
504 end,
508 TrackerOptions = {
509 order = 2,
510 type = "group",
511 guiInline = true,
512 name = L["TrackerOptionsName"],
513 desc = L["TrackerOptionsDesc"],
514 args = {
515 Enable = {
516 order = 1,
517 type = "toggle",
518 name = L["TrackerEnableName"],
519 desc = L["TrackerEnableDesc"],
520 get = function(i)
521 return QuestHelper_Pref['track'];
522 end,
523 set = function(i, v)
524 QuestHelper_Pref['track'] = v;
525 if QuestHelper_Pref['track'] then
526 QuestHelper:ShowTracker();
527 else
528 QuestHelper:HideTracker();
530 end,
532 Minimized = {
533 order = 2,
534 type = "toggle",
535 name = L["TrackerMinimizeName"],
536 desc = L["TrackerMinimizeDesc"],
537 disabled = function()
538 return not QuestHelper_Pref['track'] or QuestHelper_Pref['hide'];
539 end,
540 get = function(i)
541 return QuestHelper_Pref['track_minimized'];
542 end,
543 set = function(i, v)
544 QuestHelper_Pref['track_minimized'] = v;
545 if QuestHelper_Pref['track_minimized'] then
546 QuestHelperQuestWatchFrameMinimizeButton:GetScript("OnLeave")();
547 QuestHelper.tracker:Hide();
548 else
549 QuestHelperQuestWatchFrameMinimizeButton:GetScript("OnLeave")();
550 QuestHelper.tracker:Show();
552 end,
554 Scale = {
555 type = "range",
556 order = 3,
557 name = L["TrackScaleName"],
558 desc = L["TrackScaleDesc"],
559 min = 0.5,
560 max = 2,
561 step = 0.1,
562 isPercent = true,
563 disabled = function()
564 return not QuestHelper_Pref['track'] or QuestHelper_Pref['hide'];
565 end,
566 get = function(i)
567 return QuestHelper_Pref['track_scale']; -- default to 1 if arrow_scale is nil
568 end,
569 set = function(i, v)
570 QuestHelper_Pref['track_scale'] = v;
571 QuestHelper.tracker:SetScale(QuestHelper_Pref.track_scale)
572 end,
574 Lines = {
575 type = "range",
576 order = 4,
577 name = L["TrackLinesName"],
578 desc = L["TrackLinesDesc"],
579 min = 2,
580 max = 20,
581 step = 1,
582 disabled = function()
583 return not QuestHelper_Pref['track'] or QuestHelper_Pref['hide'];
584 end,
585 get = function(i)
586 return QuestHelper_Pref['track_size'];
587 end,
588 set = function(i, v)
589 QuestHelper_Pref['track_size'] = v;
590 QH_Tracker_Rescan();
591 end,
593 Level = {
594 order = 5,
595 type = "toggle",
596 name = L["TrackerLevelName"],
597 desc = L["TrackerLevelDesc"],
598 width = "double",
599 disabled = function()
600 return not QuestHelper_Pref['track'] or QuestHelper_Pref['hide'];
601 end,
602 get = function(i)
603 return QuestHelper_Pref['track_level'];
604 end,
605 set = function(i, v)
606 QuestHelper_Pref['track_level'] = v;
607 QH_UpdateQuests(true)
608 QH_Tracker_Rescan()
609 end,
611 QuestColor = {
612 order = 6,
613 type = "toggle",
614 name = L["TrackerQColorName"],
615 desc = L["TrackerQColorDesc"],
616 width = "double",
617 disabled = function()
618 return not QuestHelper_Pref['track'];
619 end,
620 get = function(i)
621 return QuestHelper_Pref['track_qcolour'];
622 end,
623 set = function(i, v)
624 QuestHelper_Pref['track_qcolour'] = v;
625 QH_UpdateQuests(true)
626 QH_Tracker_Rescan()
627 end,
629 ObjColor = {
630 order = 7,
631 type = "toggle",
632 name = L["TrackerOColorName"],
633 desc = L["TrackerOColorDesc"],
634 width = "double",
635 disabled = function()
636 return not QuestHelper_Pref['track'] or QuestHelper_Pref['hide'];
637 end,
638 get = function(i)
639 return QuestHelper_Pref['track_ocolour'];
640 end,
641 set = function(i, v)
642 QuestHelper_Pref['track_ocolour'] = v;
643 QH_UpdateQuests(true)
644 QH_Tracker_Rescan()
645 end,
649 MapOptions = {
650 type = "group",
651 order = 3,
652 guiInline = true,
653 name = L["MapOptionsName"],
654 desc = L["MapOptionsDesc"],
655 args = {
656 BlizzMap = {
657 type = "toggle",
658 order = 1,
659 name = L["MapBlizzMapName"],
660 desc = L["MapBlizzMapDesc"],
661 hidden = function()
662 return not UpdateQuestMapPOI; -- likely removed for WoW
663 end,
664 get = function(i)
665 return QuestHelper_Pref['blizzmap'];
666 end,
667 set = function(i, v)
668 QuestHelper_Pref['blizzmap'] = v;
669 end,
671 Ants = {
672 type = "toggle",
673 order = 2,
674 name = L["MapAntsName"],
675 desc = L["MapAntsDesc"],
676 get = function(i)
677 return QuestHelper_Pref['show_ants'];
678 end,
679 set = function(i, v)
680 QuestHelper_Pref['show_ants'] = v;
681 end,
683 Zones = {
684 type = "toggle",
685 order = 3,
686 name = L["MapZonesName"],
687 desc = L["MapZonesDesc"],
688 get = function(i)
689 return QuestHelper_Pref['zones'] == 'next';
690 end,
691 set = function(i)
692 QuestHelper_Pref['zones'] = (v and 'next') or 'none';
693 end,
695 Scale = {
696 type = "range",
697 order = 4,
698 min = 0.1,
699 max = 1.5,
700 step = .05,
701 isPercent = true,
702 name = L["MapScaleName"],
703 desc = L["MapScaleDesc"],
704 get = function(i)
705 return QuestHelper_Pref['scale'];
706 end,
707 set = function(i, v)
708 QuestHelper_Pref['scale'] = v;
709 end,
715 RouteOptions = {
716 type = "group",
717 order = 2,
718 name = L["RouteOptionsName"],
719 desc = L["RouteOptionsDesc"],
720 disabled = function()
721 return QuestHelper_Pref['hide'];
722 end,
723 args = {
724 intro = {
725 type = "description",
726 order = 0,
727 name = L["RouteIntro"],
729 Solo = {
730 type = "toggle",
731 order = 1,
732 name = L["RouteSoloName"],
733 desc = L["RouteSoloDesc"],
734 get = function(i)
735 return QuestHelper_Pref['solo'];
736 end,
737 set = function(i, v)
738 QuestHelper_Pref['solo'] = v;
739 if QuestHelper_Pref['solo'] and QuestHelper_Pref['share'] then
740 QuestHelper:SetShare(false);
741 elseif QuestHelper_Pref['share'] then
742 QuestHelper:SetShare(true);
744 end,
746 Share = {
747 type = "toggle",
748 order = 2,
749 name = L["RouteShareName"],
750 desc = L["RouteShareDesc"],
751 disabled = function()
752 return QuestHelper_Pref['solo'] or QuestHelper_Pref['hide'];
753 end,
754 get = function(i)
755 return QuestHelper_Pref['share'];
756 end,
757 set = function(i, v)
758 QuestHelper_Pref['share'] = v;
759 if QuestHelper_Pref['share'] and not QuestHelper_Pref['solo'] then
760 QuestHelper:SetShare(true);
761 elseif QuestHelper_Pref['solo'] then
762 QusetHelper:SetShare(false);
764 end,
766 ObjectiveFitlers = {
767 type = "group",
768 order = 3,
769 guiInline = true,
770 name = L["RouteFiltersName"],
771 desc = L["RouteFiltersDesc"],
772 args = {
773 Level = {
774 type = "toggle",
775 order = 1,
776 name = L["FilterLevelName"],
777 desc = L["FilterLevelDesc"],
778 get = function(i)
779 return QuestHelper_Pref['filter_level'];
780 end,
781 set = function(i, v)
782 QuestHelper_Pref['filter_level'] = v;
783 QH_Route_Filter_Rescan("filter_quest_level");
784 end,
786 LevelOffset = {
787 type = "range",
788 order = 2,
789 name = L["FilterLevelOffsetName"],
790 desc = L["FilterLevelOffsetDesc"],
791 min = -2,
792 max = 5,
793 step = 1,
794 get = function(i)
795 return QuestHelper_Pref['level'];
796 end,
797 set = function(i, v)
798 QuestHelper_Pref['level'] = v;
799 QH_Route_Filter_Rescan("filter_quest_level");
800 end,
801 disabled = function()
802 return not QuestHelper_Pref['filter_level'] or QuestHelper_Pref['hide'];
803 end,
805 Group = {
806 type = "toggle",
807 order = 3,
808 name = L["FilterGroupName"],
809 desc = L["FilterGroupDesc"],
810 get = function(i)
811 return QuestHelper_Pref['filter_group'];
812 end,
813 set = function(i, v)
814 QuestHelper_Pref['filter_group'] = v;
815 QH_Route_Filter_Rescan("filter_quest_group");
816 end,
818 GroupSize = {
819 type = "range",
820 order = 4,
821 name = L["FilterGroupSizeName"],
822 desc = L["FilterGroupSizeDesc"],
823 min = 2,
824 max = 5,
825 step = 1,
826 get = function(i)
827 return QuestHelper_Pref['filter_group_param'];
828 end,
829 set = function(i, v)
830 QuestHelper_Pref['filter_group_param'] = v;
831 QH_Route_Filter_Rescan("filter_quest_level");
832 end,
833 disabled = function()
834 return not QuestHelper_Pref['filter_group'] or QuestHelper_Pref['hide'];
835 end,
837 Zone = {
838 type = "toggle",
839 order = 5,
840 name = L["FilterZoneName"],
841 desc = L["FilterZoneDesc"],
842 width = "double",
843 get = function(i)
844 return QuestHelper_Pref['filter_zone'];
845 end,
846 set = function(i, v)
847 QuestHelper_Pref['filter_zone'] = v;
848 QH_Route_Filter_Rescan("filter_zone");
849 end,
851 Done = {
852 type = "toggle",
853 order = 6,
854 name = L["FilterDoneName"],
855 desc = L["FilterDoneDesc"],
856 width = "double",
857 get = function(i)
858 return QuestHelper_Pref['filter_done'];
859 end,
860 set = function(i, v)
861 QuestHelper_Pref['filter_done'] = v;
862 QH_Route_Filter_Rescan("filter_quest_done");
863 end,
865 Blocked = {
866 type = "toggle",
867 order = 7,
868 name = L["FilterBlockedName"],
869 desc = L["FilterBlockedDesc"],
870 width = "double",
871 get = function(i)
872 return QuestHelper_Pref['filter_blocked'];
873 end,
874 set = function(i, v)
875 QuestHelper_Pref['filter_blocked'] = v;
876 QH_Route_Filter_Rescan("filter_blocked");
877 end,
879 Watched = {
880 type = "toggle",
881 order = 8,
882 name = L["FilterWatchedName"],
883 desc = L["FilterWatchedDesc"],
884 width = "double",
885 get = function(i)
886 return QuestHelper_Pref['filter_watched'];
887 end,
888 set = function(i, v)
889 QuestHelper_Pref['filter_watched'] = v;
890 QH_Route_Filter_Rescan("filter_quest_watched");
891 end,
893 Wintergrasp = {
894 type = "toggle",
895 order = 9,
896 name = L["FilterWGName"],
897 desc = L["FilterWGDesc"],
898 width = "double",
899 get = function(i)
900 return QuestHelper_Pref['filter_wintergrasp'];
901 end,
902 set = function(i, v)
903 QuestHelper_Pref['filter_wintergrasp'] = v;
904 QH_Route_Filter_Rescan("filter_quest_wintergrasp");
905 end,
907 Raid = {
908 type = "toggle",
909 order = 10,
910 name = L["FilterRaidName"],
911 desc = L["FilterRaidDesc"],
912 width = "double",
913 get = function(i)
914 return QuestHelper_Pref['filter_raid_accessible'];
915 end,
916 set = function(i, v)
917 QuestHelper_Pref['filter_raid_accessible'] = v;
918 QH_Route_Filter_Rescan("filter_quest_raid_accessible");
919 end,
925 Plugins = {
926 order = 3,
927 type = "group",
928 name = L["PluginOptionsName"],
929 desc = L["PluginOptionsDesc"],
930 disabled = function()
931 return QuestHelper_Pref['hide'];
932 end,
933 args = {
934 intro = {
935 order = 1,
936 type = "description",
937 name = L["PluginIntro"],
939 Cartographer = {
940 order = 2,
941 type = "group",
942 guiInline = true,
943 name = L["PluginCartographerName"],
944 desc = L["PluginCartographerDesc"],
945 disabled = function()
946 return not Cartographer_Waypoints or QuestHelper_Pref['hide'];
947 end,
948 args = {
949 Arrow = {
950 order = 1,
951 type = "toggle",
952 name = L["CartographerArrowName"],
953 desc = L["CartographerArrowDesc"],
954 get = function(i)
955 return QuestHelper_Pref['cart_wp_new'];
956 end,
957 set = function(i, v)
958 QuestHelper_Pref['cart_wp_new'] = v;
959 if QuestHelper_Pref['cart_wp_new'] then
960 QuestHelper:EnableCartographer();
961 else
962 QuestHelper:DisableCartographer();
964 end,
968 TomTom = {
969 order = 3,
970 type = "group",
971 guiInline = true,
972 name = L["PluginTomTomName"],
973 desc = L["PluginTomTomDesc"],
974 disabled = function()
975 return not TomTom or QuestHelper_Pref['hide'];
976 end,
977 args = {
978 Arrow = {
979 order = 1,
980 type = "toggle",
981 name = L["TomTomArrowName"],
982 desc = L["TomTomArrowDesc"],
983 get = function(i)
984 return QuestHelper_Pref['tomtom_wp_new'];
985 end,
986 set = function(i, v)
987 QuestHelper_Pref['tomtom_wp_new'] = v;
988 if QuestHelper_Pref['tomtom_wp_new'] then
989 QuestHelper:EnableTomTom();
990 else
991 QuestHelper:DisableTomTom();
993 end,
1003 function addon:GenerateQHLocales()
1004 local l = {};
1005 for loc, tbl in pairs(QuestHelper_Translations) do
1006 if tbl.LOCALE_NAME and tbl.LOCALE_NAME ~= '???' then
1007 l[loc] = tbl.LOCALE_NAME;
1010 addon.QHLocales = l;
1017 if not addon then
1018 error("QuestHelperConfig did not load properly.");
1021 local locale = {
1022 Data = {},
1023 CurLocale = "enUS",
1026 function locale:SetCurrentLocale(loc)
1027 if not loc then -- reset locale
1028 loc = GetLocale(); -- default to client locale
1030 if self.Data[loc] then -- only change if data is available
1031 self.CurLocale = loc;
1035 --[[
1036 loc: locale to register data for
1037 data: key-value pairs to register
1038 force: clear existing data before adding new data
1039 --]]
1040 function locale:RegisterData(loc, data, force)
1041 local d = self.Data[loc];
1042 if force and d then
1043 self:ClearTable(d);
1045 if not d then
1046 self.Data[loc] = {};
1047 d = self.Data[loc];
1049 for k, v in pairs(data) do -- add the new data
1050 d[k] = v;
1054 local function locale__index(t, k)
1055 local d, l = t.Data, t.CurLocale;
1056 if d[l] and d[l][k] then
1057 return d[l][k];
1058 elseif d["enUS"] and d["enUS"][k] then
1059 return d["enUS"][k];
1060 else
1061 return k;
1065 local function locale__newindex(t, k, v)
1066 local d, l = t.Data, t.CurLocale;
1067 if d[l] then
1068 d[l][k] = v;
1069 else
1070 d[l] = {};
1071 d[l][k] = v;
1073 return v;
1076 setmetatable(locale, {
1077 __index = locale__index,
1078 __newindex = locale__newindex,
1081 addon.Locale = locale;
1087 -- this is pretty dang grim isn't it
1088 if not QHConfig or not QHConfig.Locale then
1089 return; -- if we made it this far, one or more errors are already shown
1090 -- error("QuestHelperConfig did not load properly.");
1093 local l = QHConfig.Locale;
1095 l:RegisterData("enUS", {
1096 ["GlobalOptionsName"] = "Interface options",
1097 ["GlobalOptionsDesc"] = "Configure QuestHelper interface options",
1098 ["FilterBlockedName"] = "Blocked Objectives",
1099 ["FilterBlockedDesc"] = "Hide objectives that rely on incomplete objectives, such as quest turn-ins for incomplete quests",
1100 ["FilterDoneName"] = "Complete Objectives",
1101 ["FilterDoneDesc"] = "Only show objectives for complete quests",
1102 ["FilterLevelName"] = "Quest level",
1103 ["FilterLevelDesc"] = "Filter quests that are higher level than you",
1104 ["FilterGroupName"] = "Group Quests",
1105 ["FilterGroupDesc"] = "Filters objectives that require groups",
1106 ["FilterWatchedName"] = "Watched quests",
1107 ["FilterWatchedDesc"] = "Only show quests tracked in the Quest Log",
1108 ["FilterZoneName"] = "Zone filter",
1109 ["FilterZoneDesc"] = "Filter objectives outside the current zone",
1110 ["TooltipOpenConfig"] = "Right click: Open configuration window",
1111 ["GlobalEnableName"] = "Enable QuestHelper",
1112 ["GlobalEnableDesc"] = "Enable/Disable QuestHelper",
1113 ["PerfName"] = "Performance Options",
1114 ["PerfDesc"] = "",
1115 ["PerfRouteName"] = "Routing Performance",
1116 ["PerfRouteDesc"] = "Percentage of default resources to use for calculating the route",
1117 ["PerfLoadName"] = "Loading Performance",
1118 ["PerfLoadDesc"] = "Percentage of default resources to use when loading quest and achievement data",
1119 ["ArrowOptionsName"] = "Waypoint Arrow Options",
1120 ["ArrowOptionsDesc"] = "",
1121 ["ArrowEnableName"] = "Enable",
1122 ["ArrowEnableDesc"] = "Show/Hide the waypoint arrow",
1123 ["ArrowLockedName"] = "Lock",
1124 ["ArrowLockedDesc"] = "Lock the waypoint arrow in place",
1125 ["ArrowScaleName"] = "Size",
1126 ["ArrowScaleDesc"] = "Size of the waypoint arrow (100% is normal size)",
1127 ["ArrowTextSizeName"] = "Text Size",
1128 ["ArrowTextSizeDesc"] = "Size of waypoint arrow text (100% is normal size)",
1129 ["TrackerOptionsName"] = "Quest Tracker Options",
1130 ["TrackerOptionsDesc"] = "",
1131 ["TrackerEnableName"] = "Enable",
1132 ["TrackerEnableDesc"] = "Show/Hide the QuestHelper quest tracker",
1133 ["TrackerMinimizeName"] = "Minimize",
1134 ["TrackerMinimizeDesc"] = "Minimize the QuestHelper quest tracker",
1135 ["TrackScaleName"] = "Quest Tracker Size",
1136 ["TrackScaleDesc"] = "Size of the quest tracker (100% is normal size)",
1137 ["TrackerLevelName"] = "Quest Level",
1138 ["TrackerLevelDesc"] = "Show/Hide quest level in the tracker",
1139 ["TrackerQColorName"] = "Quest Color",
1140 ["TrackerQColorDesc"] = "Color quest names in the tracker based on level",
1141 ["TrackerOColorName"] = "Objective Color",
1142 ["TrackerOColorDesc"] = "Color quest objectives based on progress",
1143 ["RouteOptionsName"] = "Route Calculation Options",
1144 ["RouteOptionsDesc"] = "Options to control route calculation",
1145 ["RouteIntro"] = "Options to control route calculation",
1146 ["InterfaceIntro"] = "Options to control how QuestHelper interacts with the interface",
1147 ["RouteSoloName"] = "Solo mode",
1148 ["RouteSoloDesc"] = "Ignore party members and disable communications with party members.",
1149 ["RouteShareName"] = "Objective Sharing",
1150 ["RouteShareDesc"] = "Inform your party members of objectives you have and have not completed.",
1151 ["RouteFiltersName"] = "Objective Filter Options",
1152 ["RouteFiltersDesc"] = "",
1153 ["FilterGroupSizeName"] = "Group size",
1154 ["FilterGroupSizeDesc"] = "Threshold party size for filtering group quests",
1155 ["FilterLevelOffsetName"] = "Level difference",
1156 ["FilterLevelOffsetDesc"] = "Threshold level difference for filtering quests",
1157 ["FilterRaidName"] = "Raid Accessible Quests",
1158 ["FilterRaidDesc"] = "Hide non-raid quests while in a raid group",
1159 ["FilterWGName"] = "Lake Wintergrasp Quests",
1160 ["FilterWGDesc"] = "Hide PvP-quests for Lake Wintergrasp while outside Lake Wintergrasp",
1161 ["PluginOptionsName"] = "Plugin Options",
1162 ["PluginOptionsDesc"] = "",
1163 ["PluginIntro"] = "Options for 3rd party addons. 3rd party addons need to be installed for these options to be available",
1164 ["PluginCartographerName"] = "Cartographer options",
1165 ["PluginCartographerDesc"] = "",
1166 ["CartographerArrowName"] = "Waypoint Arrow",
1167 ["CartographerArrowDesc"] = "Use the Cartographer Waypoint Arrow instead of the built-in QuestHelper arrow",
1168 ["PluginTomTomName"] = "TomTom options",
1169 ["PluginTomTomDesc"] = "",
1170 ["TomTomArrowName"] = "Waypoint Arrow",
1171 ["TomTomArrowDesc"] = "Use the TomTom Waypoint Arrow instead of the built-in QuestHelper arrow",
1172 ["MapOptionsName"] = "Map Options",
1173 ["MapOptionsDesc"] = "",
1174 ["MapAntsName"] = "Ant Trails",
1175 ["MapAntsDesc"] = "Show ant trails on the world map",
1176 ["MapScaleName"] = "Map Icon Size",
1177 ["MapScaleDesc"] = "Size of icons, ant trails, etc on the world map and minimap (100 is normal size)",
1178 ["AdditionalInfoName"] = "Miscellaneous options",
1179 ["AdditionalInfoDesc"] = "",
1180 ["InfoTooltipName"] = "Tooltip info",
1181 ["InfoTooltipDesc"] = "Show quest progress in the tooltips of monsters, items, etc",
1182 ["InfoMetricName"] = "Distance metric",
1183 ["InfoMetricDesc"] = "Unit of measure to use when calculating distances",
1184 ["InfoFlightName"] = "Show flight times",
1185 ["InfoFlightDesc"] = "Show an estimated flight time onscreen while flying",
1186 ["InfoTravelName"] = "Show travel times",
1187 ["InfoTravelDesc"] = "Show an estimated travel time in objective tooltips",
1188 ["MapButtonName"] = "World map button",
1189 ["MapButtonDesc"] = "Show the QuestHelper button on the world map",
1190 ["InfoMiniName"] = "Minimap item transparency",
1191 ["InfoMiniDesc"] = "Adjust the transparency of QuestHelper items on the minimap",
1192 ["MapBlizzMapName"] = "Blizzard map points",
1193 ["MapBlizzMapDesc"] = "Show the built-in Blizzard map points",
1194 ["MapZonesName"] = "Map zones",
1195 ["MapZonesDesc"] = "Highlight areas of the world map where the current objective is located",
1196 ["IncompleteToggleTooltip"] = "Shift+Left Click: Toggle incomplete quest start locations",
1197 ["TrackLinesName"] = "Objectives shown",
1198 ["TrackLinesDesc"] = "Change the number of objectives shown in the tracker. Watched quests will always be shown in the tracker.",
1199 ["ErrorName"] = "This version of QuestHelperConfig is designed for a newer version of the QuestHelper addon. Please visit Curse or WoW Interface to update your version of QuestHelper.\nCurrent QuestHelper version: %s.\nTarget QuestHelper version: %s.",
1200 ["ArrowResetName"] = "Reset arrow position",
1201 ["ArrowResetDesc"] = "Unlock the waypoint arrow and bring it to the center of the screen. Use this if you can't find the arrow onscreen.",
1202 ["ActionsName"] = "Useful commands",
1203 ["ActionsDesc"] = "",
1204 ["ActionsHiddenName"] = "/qh hidden",
1205 ["ActionsHiddenDesc"] = "Display a list of hidden objectives and why those objectives are hidden.",
1206 ["ActionsIncompName"] = "/qh incomplete",
1207 ["ActionsIncompDesc"] = "Toggle map markers for incomplete quests.",
1208 ["ActionsPurgeName"] = "/qh purge",
1209 ["ActionsPurgeDesc"] = "Purge the local database of collected information. Deletes all collected data.\nPlease submit your data to qhaddon@gmail.com before performing a purge.",
1210 ["ActionsPurgeDialogText"] = "Are you sure you want to purge the local database?\nThis will delete all collected data.\nEnter /qh submit for instructions on how to submit your collected data.",
1211 ["ActionsResetName"] = "/qh hardreset",
1212 ["ActionsResetDesc"] = "Reset QuestHelper to \"factory default\" settings. Deletes all collected data and preferences.\nPlease submit your data to qhaddon@gmail.com before performing a hard reset.",
1213 ["ActionsResetDialogText"] = "Are you sure you want to reset QuestHelper?\nThis will delete all collected data and preferences.\nEnter /qh submit for instructions on how to submit your collected data.",
1214 ["ActionsDialogPurge"] = "Purge",
1215 ["ActionsDialogCancel"] = "Cancel",
1216 ["ActionsDialogReset"] = "Reset",
1217 ["ActionsChangesName"] = "/qh changes",
1218 ["ActionsChangesDesc"] = "View the changelog for the current version.",
1219 ["InterfaceOptionsName"] = "",
1220 ["InterfaceOptionsDesc"] = "",
1221 ["ActionsSubmitName"] = "/qh submit",
1222 ["ActionsSubmitDesc"] = "View information on how to submit collected data.",
1228 if not QHConfig or not QHConfig.Locale then
1229 return; -- if we made it this far, one or more errors are already shown
1230 -- error("QuestHelperConfig did not load properly.");
1233 local l = QHConfig.Locale;
1235 local L = {};
1236 L["ActionsDialogCancel"] = "Abbrechen"
1237 L["AdditionalInfoName"] = "Verschiedene Einstellungen"
1238 L["ArrowEnableDesc"] = "Wegepfeil zeigen/verbergen"
1239 L["ArrowEnableName"] = "ein"
1240 L["ArrowLockedDesc"] = "Wegpfeil sperren"
1241 L["ArrowLockedName"] = "gesperrt"
1242 L["ArrowOptionsName"] = "Wegepfeil Einstellungen"
1243 L["ArrowScaleDesc"] = "Wegpfeilgr\195\182\195\159e (100% ist Normalgr\195\182\195\159e)"
1244 L["ArrowScaleName"] = "Gr\195\182\195\159e"
1245 L["ArrowTextSizeDesc"] = "Gr\195\182\195\159e des Wegpfeiltextes (100% ist Normalgr\195\182\195\159e)"
1246 L["ArrowTextSizeName"] = "Textgr\195\182\195\159e"
1247 L["CartographerArrowDesc"] = "Verwende Wegpfeil von Cartograpfer anstelle des eingebauten QuestHelper-Wegpfeils"
1248 L["CartographerArrowName"] = "Wegepunkt Pfeil"
1249 L["FilterGroupName"] = "Gruppenquests"
1250 L["FilterGroupSizeName"] = "Gruppengr\195\182\195\159e"
1251 L["FilterLevelDesc"] = "Quests ausblenden, die ein h\195\182heres Level haben als man selbst"
1252 L["FilterLevelName"] = "Questlevel"
1253 L["FilterLevelOffsetName"] = "Levelunterschied"
1256 l:RegisterData("deDE", L);