WoWInterface SVN QuestGuruTracker

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 5 to Rev 6
    Reverse comparison

Rev 5 → Rev 6

trunk/Bindings.xml File deleted
trunk/QuestGuru_Tracker_Templates.xml File deleted \ No newline at end of file
trunk/localization.RU.lua File deleted \ No newline at end of file
trunk/QuestGuru_Tracker.xml File deleted \ No newline at end of file
trunk/localization.FR.lua File deleted
trunk/QGT_Quests.lua File deleted \ No newline at end of file
trunk/QuestGuru_Tracker.lua File deleted \ No newline at end of file
trunk/localization.DE.lua File deleted \ No newline at end of file
trunk/localization.TW.lua File deleted \ No newline at end of file
trunk/QuestGuru_Tracker.toc File deleted \ No newline at end of file
trunk/ChangeLog.txt File deleted
trunk/QGT_Achievements.lua File deleted \ No newline at end of file
trunk/localization.lua File deleted \ No newline at end of file
trunk/QuestGuru_Tracker/QGT_Achievements.lua New file
0,0 → 1,710
QGT_WatchAchievements = {};
QGT_WatchAchievementLines = 0;
QGT_AchievementTimer = {};
QGT_AWUpdating = false;
 
WATCHFRAME_MAXACHIEVEMENTS = 9999;
 
function QGT_SetAchievementWatchBorder(enabled)
if (enabled) then
QGT_AchievementWatchFrame:SetBackdrop({
bgFile="Interface\\Characterframe\\UI-Party-Background",
edgeFile="Interface\\Tooltips\\UI-Tooltip-Border",
tile=1, tileSize=16, edgeSize=16,
insets={left=4, right=4, top=4, bottom=4}
});
else
QGT_AchievementWatchFrame:SetBackdrop({
bgFile="Interface\\Characterframe\\UI-Party-Background",
tile=1, tileSize=16,
insets={left=4, right=4, top=4, bottom=4}
});
end
QGT_AchievementWatchFrame:SetBackdropColor(0,0,0,QGT_Settings.Alpha);
end
 
do
local temp, i;
 
QGT_AchievementWatchFrame = CreateFrame("FRAME", "QGT_AchievementWatchFrame", UIParent);
QGT_AchievementWatchFrame:Hide();
QGT_AchievementWatchFrame:EnableMouse(1);
QGT_AchievementWatchFrame:EnableMouseWheel(1);
QGT_AchievementWatchFrame:SetMovable(1);
QGT_AchievementWatchFrame:SetResizable(0);
QGT_AchievementWatchFrame:SetToplevel(1);
QGT_AchievementWatchFrame:SetFrameStrata("LOW");
QGT_AchievementWatchFrame:SetClampedToScreen(true);
QGT_AchievementWatchFrame:SetWidth(256);
QGT_AchievementWatchFrame:SetHeight(20);
QGT_AchievementWatchFrame:SetPoint("TOPRIGHT", MinimapCluster, "BOTTOMRIGHT", 0, 10);
QGT_AchievementWatchFrame:SetHitRectInsets(-16, 0, 0, 0);
QGT_SetAchievementWatchBorder(true);
 
QGT_AchievementWatchFrame:RegisterForDrag("LeftButton");
QGT_AchievementWatchFrame:SetScript("OnDragStart",
function ()
if (not QGT_Settings.Pin) then
QGT_AchievementWatchFrame:StartMoving();
QGT_AchievementWatchFrame.isMoving = true;
end
end);
QGT_AchievementWatchFrame:SetScript("OnDragStop",
function ()
QGT_AchievementWatchFrame:StopMovingOrSizing();
QGT_AchievementWatchFrame.isMoving = false;
QGT_Settings.AchievementWatch.Left = QGT_AchievementWatchFrame:GetLeft();
QGT_Settings.AchievementWatch.Top = QGT_AchievementWatchFrame:GetTop();
QGT_Settings.AchievementWatch.Bottom = QGT_AchievementWatchFrame:GetBottom();
QGT_AchievementWatchFrameSlider:ClearAllPoints();
if (((QGT_Settings.AchievementWatch.Left + 256) * QGT_Settings.Scale) > (UIParent:GetWidth() - 16)) then
QGT_AchievementWatchFrameSlider:SetPoint("TOPLEFT", -14, -16);
else
QGT_AchievementWatchFrameSlider:SetPoint("TOPRIGHT", 14, -16);
end
end);
QGT_AchievementWatchFrame:SetScript("OnEnter",
function (self)
QGT_AchievementWatchFrameSlider:SetScript("OnMouseUp", nil);
QGT_ShowAchievementTrackerSlider(self, true);
end);
QGT_AchievementWatchFrame:SetScript("OnLeave",
function (self)
QGT_ShowAchievementTrackerSlider(self, false);
end);
QGT_AchievementWatchFrame:SetScript("OnMouseWheel",
function (self, delta)
local min, max = QGT_AchievementWatchFrameSlider:GetMinMaxValues();
local currVal = QGT_AchievementWatchFrameSlider:GetValue();
 
currVal = currVal - delta;
if (currVal < min) then currVal = min; end
if (currVal > max) then currVal = max; end
QGT_AchievementWatchFrameSlider:SetValue(currVal);
end);
QGT_AchievementWatchFrame:SetScript("OnShow",
function (self)
QGT_ShowAchievementTrackerSlider(self, false);
end);
QGT_AchievementWatchFrame:RegisterEvent("ACHIEVEMENT_EARNED");
QGT_AchievementWatchFrame:RegisterEvent("VARIABLES_LOADED");
QGT_AchievementWatchFrame:RegisterEvent("TRACKED_ACHIEVEMENT_UPDATE");
QGT_AchievementWatchFrame:SetScript("OnEvent",
function (self, event, achievementID, ...)
if (event == "ACHIEVEMENT_EARNED") then
RemoveTrackedAchievement(achievementID);
elseif (event == "TRACKED_ACHIEVEMENT_UPDATE") then
local criteriaID, elapsed, duration = ...;
 
if ( not elapsed or not duration ) then
-- Don't do anything
elseif ( elapsed >= duration ) then
QGT_AchievementTimer[achievementID] = nil;
else
QGT_AchievementTimer[achievementID] = {};
QGT_AchievementTimer[achievementID].startTime = GetTime() - elapsed;
QGT_AchievementTimer[achievementID].duration = duration;
end
elseif (event == "VARIABLES_LOADED") then
QGT_SetAchievements();
end
end);
QGT_AchievementWatchFrame:SetScript("OnUpdate",
function (self, elapsed)
QGT_AchievementWatch_OnUpdate(elapsed);
end);
 
temp = QGT_AchievementWatchFrame:CreateTexture("QGT_AchievementWatchFrameBackground", "ARTWORK");
temp:SetHeight(18);
temp:SetPoint("TOPRIGHT", -4, -4);
temp:SetPoint("TOPLEFT", 4, -4);
temp:SetTexture(1, 1, 1);
temp:SetGradientAlpha("VERTICAL", 0, 0, 0, 0, 0.3, 0.3, 0.3, 1);
 
temp = QGT_AchievementWatchFrame:CreateFontString("QGT_AchievementWatchName", "ARTWORK", "GameFontNormal");
temp:SetPoint("TOPLEFT", 8, -6);
temp:SetJustifyH("LEFT");
temp:SetWidth(0);
temp:SetHeight(12);
temp:SetText("QuestGuru "..QG_TRACKER_ACHIEVE);
 
temp = QGT_AchievementWatchFrame:CreateFontString("QGT_AchievementWatchNum", "ARTWORK", "GameFontNormal");
temp:SetPoint("LEFT", QGT_AchievementWatchName, "RIGHT", 12, 0);
temp:SetJustifyH("CENTER");
temp:SetWidth(0);
temp:SetHeight(12);
temp:SetText("");
 
QGT_AchievementWatchFrameOptions = CreateFrame("BUTTON", "QGT_AchievementWatchFrameOptions", QGT_AchievementWatchFrame, "QGT_QuestWatchMiniButtonTemplate");
QGT_AchievementWatchFrameOptions:SetText("O");
QGT_AchievementWatchFrameOptions:SetPoint("TOPRIGHT", -5, -4);
QGT_AchievementWatchFrameOptions:SetScript("OnClick",
function ()
InterfaceOptionsFrame_OpenToCategory("QG Tracker");
end);
QGT_AchievementWatchFrameOptions:SetScript("OnEnter",
function (self)
QGT_AchievementWatchFrameSlider:SetScript("OnMouseUp", nil);
QGT_ShowAchievementTrackerSlider(self, true);
GameTooltip:SetOwner(self, "ANCHOR_LEFT");
GameTooltip:SetText(QG_TRACKER_OPTIONS, nil,nil, nil, nil, 1);
end);
QGT_AchievementWatchFrameOptions:SetScript("OnLeave",
function (self)
QGT_ShowAchievementTrackerSlider(self, false);
GameTooltip:Hide();
end);
 
QGT_AchievementWatchFrameMinimize = CreateFrame("BUTTON", "QGT_AchievementWatchFrameMinimize", QGT_AchievementWatchFrame, "QGT_QuestWatchMiniButtonTemplate");
QGT_AchievementWatchFrameMinimize:SetText("-");
QGT_AchievementWatchFrameMinimize:SetPoint("RIGHT", QGT_AchievementWatchFrameOptions, "LEFT", 0, 0);
QGT_AchievementWatchFrameMinimize:RegisterForClicks("LeftButtonUp", "RightButtonUp");
QGT_AchievementWatchFrameMinimize:SetScript("OnClick",
function (self, button, down)
if (button == "LeftButton") then
if (QGT_Settings.AchievementWatch.AutoMinimize) then
QGT_ShowAchievementTrackerSlider(self, false);
QGT_Settings.AchievementWatch.Minimized = true;
else
QGT_ShowAchievementTrackerSlider(self, QGT_Settings.AchievementWatch.Minimized);
QGT_Settings.AchievementWatch.Minimized = not QGT_Settings.AchievementWatch.Minimized;
end
QGT_Settings.AchievementWatch.AutoMinimize = false;
WatchFrame_Update();
GameTooltip:Hide();
elseif (button == "RightButton") then
QGT_Settings.AchievementWatch.AutoMinimize = not QGT_Settings.AchievementWatch.AutoMinimize;
WatchFrame_Update();
end
end);
QGT_AchievementWatchFrameMinimize:SetScript("OnEnter",
function (self)
QGT_AchievementWatchFrameSlider:SetScript("OnMouseUp", nil);
QGT_ShowAchievementTrackerSlider(self, true);
GameTooltip:SetOwner(self, "ANCHOR_LEFT");
if (QGT_Settings.AchievementWatch.Minimized) then
GameTooltip:SetText(QG_TRACKER_SHOW, nil,nil, nil, nil, 1);
else
GameTooltip:SetText(QG_TRACKER_MINIMIZE, nil,nil, nil, nil, 1);
end
end);
QGT_AchievementWatchFrameMinimize:SetScript("OnLeave",
function ()
QGT_ShowAchievementTrackerSlider(self, false);
GameTooltip:Hide();
end);
 
QGT_AchievementWatchFrameToggle = CreateFrame("BUTTON", "QGT_AchievementWatchFrameToggle", QGT_AchievementWatchFrame, "QGT_QuestWatchMiniButtonTemplate");
QGT_AchievementWatchFrameToggle:SetText(QG_TRACKER_Q);
QGT_AchievementWatchFrameToggle:SetPoint("RIGHT", QGT_AchievementWatchFrameMinimize, "LEFT", 0, 0);
QGT_AchievementWatchFrameToggle:RegisterForClicks("LeftButtonUp", "RightButtonUp");
QGT_AchievementWatchFrameToggle:SetScript("OnClick",
function (self, button, down)
if (button == "LeftButton") then
QGT_Settings.LastTracker = "Q";
QGT_Settings.BothTrackers = false;
QGT_Settings.QuestWatch.Top = QGT_Settings.AchievementWatch.Top;
QGT_Settings.QuestWatch.Bottom = QGT_Settings.AchievementWatch.Bottom;
QGT_Settings.QuestWatch.Left = QGT_Settings.AchievementWatch.Left;
QGT_Settings.QuestWatch.Minimized = QGT_Settings.AchievementWatch.Minimized;
QGT_Settings.QuestWatch.AutoMinimize = QGT_Settings.AchievementWatch.AutoMinimize;
WatchFrame_Update();
GameTooltip:Hide();
elseif (button == "RightButton") then
QGT_Settings.LastTracker = "A";
QGT_Settings.BothTrackers = not QGT_Settings.BothTrackers;
WatchFrame_Update();
end
end);
QGT_AchievementWatchFrameToggle:SetScript("OnEnter",
function (self)
QGT_AchievementWatchFrameSlider:SetScript("OnMouseUp", nil);
QGT_ShowAchievementTrackerSlider(self, true);
GameTooltip:SetOwner(self, "ANCHOR_LEFT");
GameTooltip:SetText(QG_TRACKER_TOGGLE, nil,nil, nil, nil, 1);
end);
QGT_AchievementWatchFrameToggle:SetScript("OnLeave",
function (self)
QGT_ShowAchievementTrackerSlider(self, false);
GameTooltip:Hide();
end);
 
QGT_AchievementWatchFrameSlider = CreateFrame("Slider", "QGT_AchievementWatchFrameSlider", QGT_AchievementWatchFrame, "OptionsSliderTemplate");
QGT_AchievementWatchFrameSlider:SetWidth(16);
QGT_AchievementWatchFrameSlider:SetHeight(200);
QGT_AchievementWatchFrameSliderText:SetText("");
QGT_AchievementWatchFrameSliderHigh:SetText("");
QGT_AchievementWatchFrameSliderLow:SetText("");
QGT_AchievementWatchFrameSlider:SetOrientation("VERTICAL");
QGT_AchievementWatchFrameSlider:SetPoint("TOPLEFT", QGT_AchievementWatchFrame, "TOPLEFT", -14, -16);
QGT_AchievementWatchFrameSlider:SetMinMaxValues(0,0);
QGT_AchievementWatchFrameSlider:SetValueStep(1);
QGT_AchievementWatchFrameSlider:SetValue(0);
QGT_AchievementWatchFrameSlider:Hide();
QGT_AchievementWatchFrameSlider:SetScript("OnEnter",
function (self)
QGT_ShowAchievementTrackerSlider(self, true);
end);
QGT_AchievementWatchFrameSlider:SetScript("OnLeave",
function (self)
QGT_ShowAchievementTrackerSlider(self, false);
end);
QGT_AchievementWatchFrameSlider:SetScript("OnValueChanged",
function ()
WatchFrame_Update();
end);
 
for i=1, 40 do
temp = CreateFrame("Button", "QGT_AchievementWatchLine"..i, QGT_AchievementWatchFrame, "QGT_AchievementWatchButtonTemplate");
temp.statusBar = _G["QGT_AchievementWatchLine"..i.. "StatusBar"]
temp:SetPoint("TOPLEFT", QGT_AchievementWatchFrame, 8, -22);
temp:SetHeight(13);
temp:SetWidth(240);
temp:RegisterForClicks("LeftButtonUp");
temp:SetScript("OnEnter",
function (self)
_G[self:GetName().."Highlight"]:SetAlpha(0.5);
_G[self:GetName().."Highlight"]:Show();
if (self.achievementID) then
GameTooltip:SetOwner(self);
GameTooltip:SetHyperlink(GetAchievementLink(self.achievementID));
GameTooltip:Show()
local tW = GameTooltip:GetWidth();
if (QGT_Settings.AchievementWatch.Left < tW) then
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
GameTooltip:SetHyperlink(GetAchievementLink(self.achievementID));
GameTooltip:Show()
else
GameTooltip:SetOwner(self, "ANCHOR_LEFT");
GameTooltip:SetHyperlink(GetAchievementLink(self.achievementID));
GameTooltip:Show()
end
end
QGT_ShowAchievementTrackerSlider(self, true);
end);
temp:SetScript("OnLeave",
function (self)
_G[self:GetName().."Highlight"]:Hide();
GameTooltip:Hide();
QGT_ShowAchievementTrackerSlider(self, false);
end);
temp:SetScript("OnClick",
function (self, button, down)
if (self.achievementID) then
if (IsShiftKeyDown()) then
local activeWindow = ChatEdit_GetActiveWindow();
if (activeWindow) then
activeWindow:Insert(GetAchievementLink(self.achievementID));
else
RemoveTrackedAchievement(self.achievementID);
end
else
AchievementFrame_LoadUI();
AchievementFrame:Show();
AchievementFrame_SelectAchievement(self.achievementID);
end
end
end);
end
 
QGT_AchievementWatchFrameTooltip = CreateFrame("GameTooltip", "QGT_AchievementWatchFrameTooltip", QGT_AchievementWatchFrame, "GameTooltipTemplate");
QGT_AchievementWatchFrameTooltip:Hide();
QGT_AchievementWatchFrameTooltip:SetFrameStrata("TOOLTIP");
end
 
function QGT_ShowAchievementTrackerSlider(self, flag)
if (QGT_Settings and QGT_Settings.AchievementWatch and (QGT_Settings.AchievementWatch.AutoMinimize==true) and not IsMouseButtonDown("LeftButton")) then
QGT_Settings.AchievementWatch.Minimized = not flag;
end
 
local watchLines = 30;
if (QGT_Settings and QGT_Settings.Lines) then
watchLines = QGT_Settings.Lines;
end
if ((flag == true) and (QGT_WatchAchievementLines > watchLines) and not QGT_Settings.AchievementWatch.Minimized) then
QGT_AchievementWatchFrameSlider:Show();
else
if (IsMouseButtonDown("LeftButton")) then
self:SetScript("OnMouseUp",
function (self)
QGT_ShowAchievementTrackerSlider(self, false);
self:SetScript("OnMouseUp", nil);
end);
else
QGT_AchievementWatchFrameSlider:Hide();
end
end
end
 
function QGT_SetAchievementTrackerMouse(enableFlag)
QGT_AchievementWatchFrame:EnableMouse(enableFlag);
for i=1, 40 do
_G["QGT_AchievementWatchLine"..i]:EnableMouse(enableFlag);
end
end
 
-- QuestWatch functions
function QGT_AchievementWatch_Update()
local achieveCount=0;
local i, j;
 
if (QGT_AWUpdating == true) then return; end
QGT_AWUpdating = true;
 
table.sort(QGT_WatchAchievements, function(a, b) return (a < b); end);
for i, j in pairs(QGT_WatchAchievements) do
achieveCount = achieveCount + 1;
end
 
QGT_AchievementWatchNum:SetText(achieveCount);
 
if (QGT_Settings.AchievementWatch.AutoMinimize) then
QGT_AchievementWatchFrameMinimize:SetText("*");
else
QGT_AchievementWatchFrameMinimize:SetText("-");
end
 
local numEntries, numQuests = GetNumQuestLogEntries();
local questCount=0;
 
for i=1, numEntries do
if (IsQuestWatched(i)) then questCount = questCount + 1; end
end
 
if (questCount == 0) then
QGT_AchievementWatchFrameToggle:Hide();
else
QGT_AchievementWatchFrameToggle:Show();
if (QGT_Settings.BothTrackers) then
QGT_AchievementWatchFrameToggle:SetText("*");
else
QGT_AchievementWatchFrameToggle:SetText(QG_TRACKER_Q);
end
end
 
if (achieveCount == 0 and questCount == 0) then
QGT_AchievementWatchFrame:Hide();
QGT_AWUpdating = false;
return;
elseif (achieveCount == 0 and questCount > 0) then
if (QGT_Settings.BothTrackers) then
QGT_AchievementWatchFrame:Hide();
else
QGT_AchievementWatchFrameToggle:Click();
end
QGT_AWUpdating = false;
return;
else
QGT_AchievementWatchFrame:Show();
end
 
if (QGT_Settings.AchievementWatch.Left == nil) then
QGT_Settings.AchievementWatch.Left = MinimapCluster:GetLeft();
end
if (QGT_Settings.AchievementWatch.Top == nil) then
QGT_Settings.AchievementWatch.Top = MinimapCluster:GetBottom()+10;
end
if (QGT_Settings.AchievementWatch.Bottom == nil) then
QGT_Settings.AchievementWatch.Bottom = 60;
end
 
if (QGT_Settings.ClickThrough) then
QGT_SetAchievementTrackerMouse(0);
else
QGT_SetAchievementTrackerMouse(1);
end
 
if (QGT_Settings.Pin) then
QGT_AchievementWatchFrame:SetMovable(0);
else
QGT_AchievementWatchFrame:SetMovable(1);
end
 
local _;
local self = QGT_AchievementWatchFrame;
 
local numTrackedAchievements = achieveCount;
 
local maxWidth = 0;
local heightUsed = 0;
local heightNeeded = 0;
 
local achievementID;
local achievementName, completed, description, icon;
 
local line;
local currLine = 0;
local achievementTitle;
local previousLine;
local nextXOffset = 0;
local linkButton;
 
local numCriteria, criteriaDisplayed;
local criteriaString, criteriaType, criteriaCompleted, quantity, totalQuantity, name, flags, assetID, quantityString, criteriaID, achievementCategory;
 
local achieveLine = {};
achieveLine[currLine] = {};
 
for i = 1, 40 do
local aLine = _G["QGT_AchievementWatchLine"..i];
local aLineIcon = _G["QGT_AchievementWatchLine"..i.."Icon"];
aLine.text:SetText("");
aLine.text:SetTextColor(1.0, 1.0, 1.0);
aLine.statusBar:Hide();
aLine.achievementID = nil;
aLineIcon:SetTexture("");
end
 
if (QGT_Settings.AchievementWatch.Minimized) then
if (QGT_Settings.AchievementWatch.AutoMinimize) then
QGT_AchievementWatchFrameMinimize:SetText("*");
else
QGT_AchievementWatchFrameMinimize:SetText("+");
end
QGT_AchievementWatchFrame:SetHeight(26);
 
for i = 1, 40 do
local aLine = _G["QGT_AchievementWatchLine"..i];
local aLineIcon = _G["QGT_AchievementWatchLine"..i.."Icon"];
aLineIcon:Hide();
aLine:Hide();
end
 
if (QGT_Settings.AchievementWatch.Left == nil) then
QGT_Settings.AchievementWatch.Left = MinimapCluster:GetLeft();
end
if (QGT_Settings.AchievementWatch.Top == nil) then
QGT_Settings.AchievementWatch.Top = MinimapCluster:GetBottom()+10;
end
if (QGT_Settings.AchievementWatch.Bottom == nil) then
QGT_Settings.AchievementWatch.Bottom = 60;
end
if (not QGT_AchievementWatchFrame.isMoving) then
QGT_AchievementWatchFrame:ClearAllPoints();
if (QGT_Settings.Anchor == "TOP") then
QGT_AchievementWatchFrame:SetPoint("TOPLEFT", "UIParent", "BOTTOMLEFT", QGT_Settings.AchievementWatch.Left, QGT_Settings.AchievementWatch.Top);
elseif (QGT_Settings.Anchor == "BOTTOM") then
QGT_AchievementWatchFrame:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT", QGT_Settings.AchievementWatch.Left, QGT_Settings.AchievementWatch.Bottom);
end
end
QGT_AWUpdating = false;
return;
end
 
for k, v in pairs(QGT_WatchAchievements) do
achievementID = k;
achievementCategory = GetAchievementCategory(achievementID);
if ( (not displayOnlyArena) or achievementCategory == WATCHFRAME_ACHIEVEMENT_ARENA_CATEGORY ) then
_, achievementName, _, completed, _, _, _, description, _, icon = GetAchievementInfo(achievementID);
if (achievementName == nil) then
RemoveTrackedAchievement(achievementID);
else
currLine = currLine + 1;
achieveLine[currLine] = {};
achieveLine[currLine].Icon = icon;
achieveLine[currLine].text = achievementName;
achieveLine[currLine].achievementID = achievementID;
if ( completed ) then
achieveLine[currLine].TextColor = { r=NORMAL_FONT_COLOR.r, g=NORMAL_FONT_COLOR.g, b=NORMAL_FONT_COLOR.b };
else
achieveLine[currLine].TextColor = { r=0.75, g=0.61, b=0 };
end
numCriteria = GetAchievementNumCriteria(achievementID);
if ( numCriteria > 0 ) then
criteriaDisplayed = 0;
for j = 1, numCriteria do
criteriaString, criteriaType, criteriaCompleted, quantity, totalQuantity, name, flags, assetID, quantityString, criteriaID = GetAchievementCriteriaInfo(achievementID, j);
if ( not criteriaCompleted ) then
if ( bit.band(flags, ACHIEVEMENT_CRITERIA_PROGRESS_BAR) == ACHIEVEMENT_CRITERIA_PROGRESS_BAR ) then
currLine = currLine + 1;
achieveLine[currLine] = {};
achieveLine[currLine].totalQuantity = totalQuantity;
achieveLine[currLine].quantity = quantity;
achieveLine[currLine].quantityString = quantityString;
else
currLine = currLine + 1;
achieveLine[currLine] = {};
achieveLine[currLine].text = " - " .. criteriaString;
achieveLine[currLine].TextColor = { r=0.8, g=0.8, b=0.8 };
end
end
end
else
currLine = currLine + 1;
achieveLine[currLine] = {};
achieveLine[currLine].text = " - "..description;
achieveLine[currLine].TextColor = { r=0.8, g=0.8, b=0.8 };
end
end
end
end
 
local watchLines = 30;
if (QGT_Settings and QGT_Settings and QGT_Settings.Lines) then
watchLines = QGT_Settings.Lines;
end
if (currLine > watchLines) then
QGT_AchievementWatchFrameSlider:SetMinMaxValues(0, currLine - watchLines);
else
QGT_AchievementWatchFrameSlider:SetMinMaxValues(0, 0);
end
 
QGT_WatchAchievementLines = currLine;
 
local sliderVal = QGT_AchievementWatchFrameSlider:GetValue();
local iconWidth, yOffset;
local titles = 0;
local statusBars = 0;
local yOffset = 0;
local xOffset = 0;
for i= 1, currLine do
j = i - sliderVal;
if (j > watchLines) then
j = j - 1;
break;
end
if (i > sliderVal) then
local aLine = _G["QGT_AchievementWatchLine"..j];
local aLineText = _G["QGT_AchievementWatchLine"..j.."NormalText"];
local aLineIcon = _G["QGT_AchievementWatchLine"..j.."Icon"];
local aLineTimer = _G["QGT_AchievementWatchLine"..j.."Timer"];
 
if (achieveLine[i].Icon) then
aLineIcon:SetTexture(achieveLine[i].Icon);
aLineIcon:Show();
iconWidth = 16;
xOffset = 16;
if (j > 1) then yOffset = yOffset + 6; end
else
iconWidth = 0;
xOffset = 0;
end
aLine.achievementID = achieveLine[i].achievementID;
if (achieveLine[i].totalQuantity) then --statusBar
aLine:SetText("");
aLine.statusBar:Show();
aLine.statusBar:GetStatusBarTexture():SetVertexColor(0,0.6,0,1);
aLine.statusBar:SetMinMaxValues(0, achieveLine[i].totalQuantity);
aLine.statusBar:SetValue(achieveLine[i].quantity);
aLine.statusBar.text:SetText(achieveLine[i].quantityString);
yOffset = yOffset + 4;
iconWidth = -16;
else
aLine:SetText(achieveLine[i].text);
aLineText:SetTextColor(achieveLine[i].TextColor.r,achieveLine[i].TextColor.g,achieveLine[i].TextColor.b);
end
if (QGT_AchievementTimer[achieveLine[i].achievementID]) then
aLine:SetScript("OnUpdate",
function (self)
if (QGT_AchievementTimer[achieveLine[i].achievementID] == nil) then
self:SetScript("OnUpdate", nil);
return;
end
local timeLeft = math.floor(QGT_AchievementTimer[self.achievementID].startTime + QGT_AchievementTimer[self.achievementID].duration - GetTime());
local aLineTimer = _G[self:GetName().."Timer"];
if (timeLeft <= 0) then timeLeft = 0; end
aLineTimer:SetText(SecondsToTime(timeLeft));
local tempWidth = aLineTimer:GetWidth() + 8;
_G[self:GetName().."NormalText"]:SetWidth(240 - tempWidth - 16);
end);
else
aLineTimer:SetText("");
aLine:SetScript("OnUpdate", nil);
end
aLine:SetWidth(240 - iconWidth);
aLineText:SetWidth(240 - iconWidth);
aLine:SetPoint("TOPLEFT", QGT_AchievementWatchFrame, 8 + xOffset, (-yOffset - 22 - ((j-1) * 13)));
aLine:Show();
end
end
 
for i = j + 1, 40 do
local aLine = _G["QGT_AchievementWatchLine"..i];
local aLineIcon = _G["QGT_AchievementWatchLine"..i.."Icon"];
aLineIcon:Hide();
aLine:Hide();
end
 
QGT_AchievementWatchFrame:Show();
local tempHeight = 30 + (j * 13) + yOffset;
QGT_AchievementWatchFrame:SetHeight(tempHeight);
QGT_AchievementWatchFrameSlider:SetHeight(tempHeight - 16);
QGT_AchievementWatchFrame:SetWidth(256);
if (not QGT_AchievementWatchFrame.isMoving) then
QGT_AchievementWatchFrame:ClearAllPoints();
if (QGT_Settings.Anchor == "TOP") then
QGT_AchievementWatchFrame:SetPoint("TOPLEFT", "UIParent", "BOTTOMLEFT", QGT_Settings.AchievementWatch.Left, QGT_Settings.AchievementWatch.Top);
QGT_Settings.AchievementWatch.Bottom = QGT_AchievementWatchFrame:GetBottom();
elseif (QGT_Settings.Anchor == "BOTTOM") then
QGT_AchievementWatchFrame:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT", QGT_Settings.AchievementWatch.Left, QGT_Settings.AchievementWatch.Bottom);
QGT_Settings.AchievementWatch.Top = QGT_AchievementWatchFrame:GetTop();
end
end
QGT_AchievementWatchFrameSlider:ClearAllPoints();
if (((QGT_Settings.AchievementWatch.Left + 256) * QGT_Settings.Scale) > (UIParent:GetWidth() - 16)) then
QGT_AchievementWatchFrameSlider:SetPoint("TOPLEFT", -14, -16);
else
QGT_AchievementWatchFrameSlider:SetPoint("TOPRIGHT", 14, -16);
end
QGT_AWUpdating = false;
end
 
function AchievementButton_ToggleTracking(id)
if ( IsTrackedAchievement(id) ) then
RemoveTrackedAchievement(id);
AchievementFrameAchievements_ForceUpdate();
WatchFrame_Update();
return;
end
 
local _, _, _, completed = GetAchievementInfo(id)
if ( completed ) then
UIErrorsFrame:AddMessage(ERR_ACHIEVEMENT_WATCH_COMPLETED, 1.0, 0.1, 0.1, 1.0);
return;
end
 
AddTrackedAchievement(id);
AchievementFrameAchievements_ForceUpdate();
WatchFrame_Update();
 
return true;
end
 
function QGT_RemoveTrackedAchievement(id)
QGT_WatchAchievements[id] = nil;
table.sort(QGT_WatchAchievements, function(a, b) return (a < b); end);
 
WatchFrame_Update();
end
hooksecurefunc("RemoveTrackedAchievement", QGT_RemoveTrackedAchievement);
 
function QGT_AddTrackedAchievement(id)
QGT_WatchAchievements[id] = true;
table.sort(QGT_WatchAchievements, function(a, b) return (a < b); end);
 
WatchFrame_Update();
end
hooksecurefunc("AddTrackedAchievement", QGT_AddTrackedAchievement);
 
--function IsTrackedAchievement(id)
-- if (QGT_WatchAchievements[id] == true) then
-- return true;
-- else
-- return false;
-- end
--end
 
function QGT_SetAchievements()
local k, v;
 
QGT_WatchAchievements = {};
local trackedAchivements = {GetTrackedAchievements()};
 
for k, v in pairs(trackedAchivements) do
QGT_AddTrackedAchievement(v);
end
end
 
function QGT_AchievementWatch_OnUpdate(elapsed)
-- Do nothing for now
end
\ No newline at end of file
trunk/QuestGuru_Tracker/localization.lua New file
0,0 → 1,85
--------------------------------------------
-- QuestGuru_Tracker English Localization --
--------------------------------------------
 
-- Default filler words used in various places
QG_UNKNOWN = "Unknown";
QG_NONE = "None";
 
-- Right click menu strings for Quest Log and Tracker
QG_TRACK = "Track";
QG_UNTRACK = "Untrack";
QG_SHARE_QUEST = "Share Quest";
QG_ABANDON_QUEST = "Abandon Quest";
QG_DELETE_QUEST = "Delete Quest";
 
-- Party Info Tooltip strings
QG_ABANDONED = "Abandonded"
QG_INCOMPLETE = "Not Complete";
QG_ACTIVE = "Active";
QG_ALT_STATUS_HEAD = "------------- Alts Quest Status -------------";
QG_GUILD_STATUS_HEAD = "---------- Guild Members Status ----------";
 
-- User Interface Elements
QG_EXPAND_HEADERS = "Expand/Collapse all headers";
QG_OPTIONS = "Options";
QG_SEARCH = "Search: ";
QG_CLEAR_ABANDON = "Clear Abandon List";
 
-- Tracker
QG_TRACKER_SHOW = "Show Tracker";
QG_TRACKER_MINIMIZE = "Minimize Tracker";
QG_TRACKER_OPTIONS = "Tracker Options";
QG_TRACKER_TOGGLE = "Click to switch between Quest and Achievement tracking. Right-click to toggle showing both windows";
QG_TRACKER_SORT = "Click to open a menu with quest sorting options";
QG_TRACKER_QUESTS = "Quests";
QG_TRACKER_ACHIEVE = "Achievements";
QG_TRACKER_Q = "Q"; --Abbreviation for Quest for toggle button
QG_TRACKER_A = "A"; --Abbreviation for Achievement for toggle button
 
-- Options
QG_OPT_TRACKER_DESC = "These options change the look of the QuestGuru Tracker.\nChanges to these settings are saved immediately.";
QG_OPT_TRACKER_BORDER = "Show border";
QG_OPT_TRACKER_BORDER_DESC = "Check this option to display a thin border around the tracker";
QG_OPT_TRACKER_ITEMICONS = "Show quest item icons";
QG_OPT_TRACKER_ITEMICONS_DESC = "Check this option to display icons for special quest items";
QG_OPT_TRACKER_CLICKTHROUGH = "Click through tracker";
QG_OPT_TRACKER_CLICKTHROUGH_DESC = "Check this option to disable the mouse for the tracker, allowing you to click through it";
QG_OPT_TRACKER_HEADERS = "Show headers";
QG_OPT_TRACKER_HEADERS_DESC = "Checking this option displays zone headers in the tracker";
QG_OPT_TRACKER_LEVELS = "Show quest levels";
QG_OPT_TRACKER_LEVELS_DESC = "Checking this option shows quest level information in the tracker";
QG_OPT_TRACKER_QUEST_TOOLTIPS = "Show quest tooltips";
QG_OPT_TRACKER_QUEST_TOOLTIPS_DESC = "Checking this option displays a tooltip with more information when you mouse over a quest name or objective item in the tracker";
QG_OPT_TRACKER_PARTY_TOOLTIPS = "Show party tooltips";
QG_OPT_TRACKER_PARTY_TOOLTIPS_DESC = "Checking this option displays the party/alt/guild info tooltip when you mouse over a quest name in the tracker";
QG_OPT_TRACKER_PERCENT = "Show quest percent";
QG_OPT_TRACKER_PERCENT_DESC = "This option shows your quest progress percentage next to the quest name in the tracker";
QG_OPT_TRACKER_ANCHOR_BOTTOM = "Anchor Bottom";
QG_OPT_TRACKER_ANCHOR_BOTTOM_DESC = "Anchor the bottom of the tracker to make it expand upwards.";
QG_OPT_TRACKER_PIN = "Pin Tracker Position";
QG_OPT_TRACKER_PIN_DESC = "Check this option to lock the tracker in place so it can't be accidentally moved.";
QG_OPT_TRACKER_AUTOUNTRACK = "Untrack complete quests";
QG_OPT_TRACKER_AUTOUNTRACK_DESC = "Automatically remove quests from the tracker upon completion of all objectives";
QG_OPT_TRACKER_COMPLETE_OBJ = "Show completed objectives";
QG_OPT_TRACKER_COMPLETE_OBJ_DESC = "Uncheck this option to hide complete objectives in the tracker";
QG_OPT_TRACKER_COLOR_OBJ = "Colorize objective progress";
QG_OPT_TRACKER_COLOR_OBJ_DESC = "Check this option to color objectives based on progress using the colors below";
QG_OPT_TRACKER_OBJ_COLOR_0 = "Color for objectives that are 0% complete";
QG_OPT_TRACKER_OBJ_COLOR_99 = "Color for objectives that are 99% complete";
QG_OPT_TRACKER_OBJ_COLOR_COMPLETE = "Color for objectives that are complete";
QG_OPT_TRACKER_SIZE = "Tracker Size";
QG_OPT_TRACKER_MAX_LINES = "Max. Tracker Lines:";
QG_OPT_TRACKER_ALPHA = "Background Alpha";
QG_OPT_TRACKER_BULLET = "Bullet symbol to use for objectives:";
QG_OPT_TRACKER_HIDECOMBAT = "Hide during combat";
QG_OPT_TRACKER_HIDECOMBAT_DESC = "Selecting this option will automatically hide the tracker(s) during combat.";
QG_OPT_TRACKER_HIDEBLIZZTRACK = "Hide Blizzard Tracker";
QG_OPT_TRACKER_HIDEBLIZZTRACK_DESC = "Select this option will hide the default Blizzard tracker. Uncheck if special functions of that tracker are needed.";
QG_OPT_TRACKER_SORTQUESTNONE = "Sort by header/quest level";
QG_OPT_TRACKER_SORTQUESTPROX = "Sort by proximity";
 
-- Other strings that may or may not need localizing
QG_ITEM_REQ_STR = "(.*):%s*([%d]+)%s*/%s*([%d]+)"; -- The format of the line when an item is required for a quest, an invalid format can cause many errors
QG_ITEM_REQ_STR2 = "(.*):%s*%(([%d]+)%)"; -- The format of the line when an item is required for a quest, an invalid format can cause many errors (alternate format for some quests)
QG_DATETIME = "%m/%d/%Y %H:%M:%S"; -- The format that date/time values are stored and displayed for start/finish info
\ No newline at end of file
trunk/QuestGuru_Tracker/Bindings.xml New file
0,0 → 1,6
<Bindings>
<Binding name="QGT_TOGGLE_TRACKER_KB" description="Toggle Tracker" header="QGT_HEADER">
QGT_ShowTracker = not QGT_ShowTracker;
WatchFrame_Update();
</Binding>
</Bindings>
trunk/QuestGuru_Tracker/QuestGuru_Tracker_Templates.xml New file
0,0 → 1,279
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd">
<Button name="QGT_QuestWatchButtonTemplate" virtual="true">
<Size x="240" y="14"/>
<Attributes>
<Attribute name="qID" type="text" value="" />
</Attributes>
<Layers>
<Layer level="ARTWORK">
<Texture name="$parentHighlight" file="Interface\QuestFrame\UI-QuestLogTitleHighlight" alphaMode="ADD" hidden="true"/>
<FontString name="$parentTag" inherits="GameFontNormal" justifyH="RIGHT">
<Size x="0" y="16"/>
<Anchors>
<Anchor point="RIGHT">
<Offset x="-2" y="0"/>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnClick>
QGT_QuestWatchButton_OnClick(self, button, down);
</OnClick>
<OnEnter>
QGT_QuestWatchButton_OnEnter(self, motion);
QGT_QuestWatchFrameSlider:SetScript("OnMouseUp", nil);
QGT_ShowQuestTrackerSlider(self, true);
</OnEnter>
<OnLeave>
QGT_QuestWatchButton_OnLeave(self, motion);
</OnLeave>
</Scripts>
<NormalTexture name="$parentArrow" file="Interface\Buttons\UI-SortArrow">
<Size x="8" y="8" />
<Anchors>
<Anchor point="LEFT" />
</Anchors>
<TexCoords left="0" right="0.5" top="0" bottom="1"/>
</NormalTexture>
<ButtonText name="$parentNormalText" nonspacewrap="true">
<Size x="0" y="10"/>
<Anchors>
<Anchor point="LEFT">
<Offset x="0" y="0"/>
</Anchor>
</Anchors>
</ButtonText>
<NormalFont style="GameFontNormalLeft" />
<HighlightFont style="GameFontHighlightLeft" />
<DisabledFont style="GameFontHighlightLeft" />
</Button>
 
<StatusBar name="AchievementProgressBarTemplate" virtual="true">
<Size>
<AbsDimension x="212" y="14"/>
</Size>
<Anchors>
<Anchor point="CENTER"/>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<Texture name="$parentBG">
<Anchors>
<Anchor point="TOPLEFT"/>
<Anchor point="BOTTOMRIGHT"/>
</Anchors>
<Color r="0" g="0" b="0" a=".4"/>
</Texture>
</Layer>
<Layer level="OVERLAY">
<FontString name="$parentText" inherits="GameFontHighlightSmall" text="700/700" justifyV="TOP">
<Size x="0" y="0"/>
<Anchors>
<Anchor point="CENTER">
<Offset x="0" y="0"/>
</Anchor>
</Anchors>
</FontString>
</Layer>
<Layer level="ARTWORK">
<Texture name="$parentBorderLeft" file="Interface\AchievementFrame\UI-Achievement-ProgressBar-Border">
<Size x="16" y="0"/>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="-6" y="5"/>
</Offset>
</Anchor>
<Anchor point="BOTTOMLEFT">
<Offset>
<AbsDimension x="-6" y="-5"/>
</Offset>
</Anchor>
</Anchors>
<TexCoords left="0" right="0.0625" top="0" bottom="0.75"/>
</Texture>
<Texture name="$parentBorderRight" file="Interface\AchievementFrame\UI-Achievement-ProgressBar-Border">
<Size x="16" y="0"/>
<Anchors>
<Anchor point="TOPRIGHT">
<Offset>
<AbsDimension x="6" y="5"/>
</Offset>
</Anchor>
<Anchor point="BOTTOMRIGHT">
<Offset>
<AbsDimension x="6" y="-5"/>
</Offset>
</Anchor>
</Anchors>
<TexCoords left="0.812" right="0.8745" top="0" bottom="0.75"/>
</Texture>
<Texture name="$parentBorderCenter" file="Interface\AchievementFrame\UI-Achievement-ProgressBar-Border">
<Size x="16"/>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentBorderLeft" relativePoint="TOPRIGHT"/>
<Anchor point="BOTTOMRIGHT" relativeTo="$parentBorderRight" relativePoint="BOTTOMLEFT"/>
</Anchors>
<TexCoords left="0.0625" right="0.812" top="0" bottom="0.75"/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnLoad>
self:SetStatusBarColor(0, .6, 0, 1);
self:SetMinMaxValues(0, 100);
self:SetValue(0);
self.text = _G[self:GetName() .. "Text"];
self:GetStatusBarTexture():SetDrawLayer("BORDER");
</OnLoad>
</Scripts>
<BarTexture file="Interface\TargetingFrame\UI-StatusBar"/>
</StatusBar>
<Button name="QGT_AchievementWatchButtonTemplate" virtual="true" inherits="WatchFrameLineTemplate">
<Layers>
<Layer level="ARTWORK">
<Texture name="$parentHighlight" file="Interface\QuestFrame\UI-QuestLogTitleHighlight" alphaMode="ADD" hidden="true"/>
<FontString name="$parentTimer" inherits="GameFontNormal" justifyH="RIGHT">
<Size x="0" y="16"/>
<Anchors>
<Anchor point="RIGHT">
<Offset x="-2" y="0"/>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Frames>
<StatusBar name="$parentStatusBar" inherits="AchievementProgressBarTemplate" hidden="true">
<Anchors>
<Anchor point="TOPLEFT">
<Offset x="10" y="0"/>
</Anchor>
<Anchor point="BOTTOMRIGHT">
<Offset x="-16" y="0"/>
</Anchor>
</Anchors>
</StatusBar>
</Frames>
<ButtonText name="$parentNormalText" nonspacewrap="true">
<Size x="0" y="10"/>
<Anchors>
<Anchor point="LEFT">
<Offset x="0" y="0"/>
</Anchor>
</Anchors>
</ButtonText>
<NormalFont style="GameFontNormalLeft" />
<HighlightFont style="GameFontHighlightLeft" />
<DisabledFont style="GameFontHighlightLeft" />
</Button>
 
<Button name="QGT_QuestWatchMiniButtonTemplate" virtual="true">
<Size x="16" y="16" />
<ButtonText name="$parentText" nonspacewrap="true">
<Anchors>
<Anchor point="CENTER">
<Offset x="0" y="0"/>
</Anchor>
</Anchors>
</ButtonText>
<NormalTexture name="$parentNormalTexture" file="Interface\Buttons\UI-Quickslot2">
<Size x="25" y="25"/>
<Anchors>
<Anchor point="CENTER">
<Offset x="0" y="-1"/>
</Anchor>
</Anchors>
</NormalTexture>
<PushedTexture file="Interface\Buttons\UI-Quickslot-Depress"/>
<HighlightTexture alphaMode="ADD" file="Interface\Buttons\ButtonHilight-Square"/>
<NormalFont style="GameFontNormalLeft" />
<HighlightFont style="GameFontHighlightLeft" />
<DisabledFont style="GameFontHighlightLeft" />
</Button>
<CheckButton name="QGT_InterfaceOptionsBaseCheckButtonTemplate" virtual="true">
<Size x="26" y="26"/>
<HitRectInsets>
<AbsInset left="0" right="-100" top="0" bottom="0"/>
</HitRectInsets>
<Scripts>
<OnShow>
self:SetHitRectInsets(0, -getglobal(self:GetName().."Text"):GetWidth(), 0, 0);
</OnShow>
<OnMouseUp>
if ( self:GetChecked() ) then
PlaySound("igMainMenuOptionCheckBoxOn");
else
PlaySound("igMainMenuOptionCheckBoxOff");
end
</OnMouseUp>
<OnEnter>
if ( self.tooltipText ) then
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
GameTooltip:SetText(self.tooltipText, nil, nil, nil, nil, 1);
end
if ( self.tooltipRequirement ) then
GameTooltip:AddLine(self.tooltipRequirement, "", 1.0, 1.0, 1.0);
GameTooltip:Show();
end
</OnEnter>
<OnLeave>
GameTooltip:Hide();
</OnLeave>
</Scripts>
<NormalTexture file="Interface\Buttons\UI-CheckBox-Up"/>
<PushedTexture file="Interface\Buttons\UI-CheckBox-Down"/>
<HighlightTexture file="Interface\Buttons\UI-CheckBox-Highlight" alphaMode="ADD"/>
<CheckedTexture file="Interface\Buttons\UI-CheckBox-Check"/>
<DisabledCheckedTexture file="Interface\Buttons\UI-CheckBox-Check-Disabled"/>
</CheckButton>
<CheckButton name="QGT_InterfaceOptionsCheckButtonTemplate" virtual="true" inherits="QGT_InterfaceOptionsBaseCheckButtonTemplate">
<Layers>
<Layer level="ARTWORK">
<FontString name="$parentText" inherits="GameFontHighlight">
<Anchors>
<Anchor point="LEFT" relativePoint="RIGHT">
<Offset>
<AbsDimension x="0" y="1"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
</CheckButton>
<Button name="QGT_ColorPickerButtonTemplate" virtual="true">
<Size x="16" y="16"/>
<Layers>
<Layer level="ARTWORK">
<Texture name="$parentSwatch">
<Size x="12" y="12"/>
<Anchors>
<Anchor point="CENTER">
<Offset x="0" y="0"/>
</Anchor>
</Anchors>
<Color r="1.0" g="1.0" b="1.0" a="1.0"/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnEnter>
if ( self.tooltipText ) then
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
GameTooltip:SetText(self.tooltipText, nil, nil, nil, nil, 1);
end
if ( self.tooltipRequirement ) then
GameTooltip:AddLine(self.tooltipRequirement, "", 1.0, 1.0, 1.0);
GameTooltip:Show();
end
</OnEnter>
<OnLeave>
GameTooltip:Hide();
</OnLeave>
</Scripts>
</Button>
</Ui>
\ No newline at end of file
trunk/QuestGuru_Tracker/localization.RU.lua New file
0,0 → 1,79
------------------------------------
-- QuestGuru Russian Localization by StingerSoft--
------------------------------------
if (GetLocale() == "ruRU") then
-- Default filler words used in various places
QG_UNKNOWN = "Неизвестный";
QG_NONE = "Отсутствует";
 
-- Right click menu strings for Quest Log and Tracker
QG_TRACK = "Следить";
QG_UNTRACK = "Не следить";
QG_SHARE_QUEST = "Поделиться";
QG_ABANDON_QUEST = "Отменить задание";
QG_DELETE_QUEST = "Удалить задание";
 
-- Party Info Tooltip strings
QG_ABANDONED = "Отменённый"
QG_INCOMPLETE = "Не выполненный";
QG_ACTIVE = "Активный";
QG_ALT_STATUS_HEAD = "------------- Статус задания альта -------------";
QG_GUILD_STATUS_HEAD = "---------- Статус участников гильдии ----------";
 
-- User Interface Elements
QG_EXPAND_HEADERS = "Развернуть/Свернуть все загаловки";
QG_OPTIONS = "Настройки";
QG_SEARCH = "Поиск: ";
QG_CLEAR_ABANDON = "Очистить список отменений";
 
-- Tracker
QG_TRACKER_SHOW = "Показать трекер";
QG_TRACKER_MINIMIZE = "Свернуть трекер";
QG_TRACKER_OPTIONS = "Настройки трекера";
QG_TRACKER_TOGGLE = "Кликните чтобы переключиться между заданиями и достижениями. Правый-клик переключает показ обоих окон";
QG_TRACKER_QUESTS = "Задания";
QG_TRACKER_ACHIEVE = "Достижения";
QG_TRACKER_Q = "З"; --Abbreviation for Quest for toggle button
QG_TRACKER_A = "Д"; --Abbreviation for Achievement for toggle button
 
-- Options
QG_OPT_TRACKER_DESC = "Данный раздел поможет вам настроить внешний вид трекера QG.";
QG_OPT_TRACKER_BORDER = "Показ края";
QG_OPT_TRACKER_BORDER_DESC = "Отметьте данную опцию для отображения тонкого края вокруг трекера";
QG_OPT_TRACKER_ITEMICONS = "Показ иконку предмета";
QG_OPT_TRACKER_ITEMICONS_DESC = "Отметьте данную опцию для отображения иконки, для предметов в задании";
QG_OPT_TRACKER_CLICKTHROUGH = "Клики по трекеру";
QG_OPT_TRACKER_CLICKTHROUGH_DESC = "Отметьте данную опцию для отключения мыши в окне трекера, то есть, окно не будет реагировать на ваши клики мышью по нему.";
QG_OPT_TRACKER_HEADERS = "Показ заголовки";
QG_OPT_TRACKER_HEADERS_DESC = "Отметьте данную опцию для отображения зоны в заголовках, в трекере";
QG_OPT_TRACKER_LEVELS = "Показ уровни заданий";
QG_OPT_TRACKER_LEVELS_DESC = "Отметьте данную опцию для отображения уровня задания в трекере";
QG_OPT_TRACKER_QUEST_TOOLTIPS = "Показ подсказки заданий";
QG_OPT_TRACKER_QUEST_TOOLTIPS_DESC = "Отметьте данную опцию для отображения подсказки с информацией о задании, при наводе мыши на название или на предмет требования задания в трекере";
QG_OPT_TRACKER_PARTY_TOOLTIPS = "Показ подсказки группы";
QG_OPT_TRACKER_PARTY_TOOLTIPS_DESC = "Отметьте данную опцию для отображения подсказки с информацией группы/альта/гильдии, при наводе мыши на название задания в трекере";
QG_OPT_TRACKER_PERCENT = "Показ процент выполнения";
QG_OPT_TRACKER_PERCENT_DESC = "Данный опция отвечает за отображение в трекере значения, степени выполнения вашего задания в процентах";
QG_OPT_TRACKER_ANCHOR_BOTTOM = "Нижний якорь";
QG_OPT_TRACKER_ANCHOR_BOTTOM_DESC = "Нижний якорь трекера даёт возможность раскрываться вверх.";
QG_OPT_TRACKER_PIN = "Закрепить трекеер";
QG_OPT_TRACKER_PIN_DESC = "Отметьте данную опцию для фиксации трекера, это обезопасит от случайного перемещения.";
QG_OPT_TRACKER_AUTOUNTRACK = "Убирать выполненные";
QG_OPT_TRACKER_AUTOUNTRACK_DESC = "Автоматически убирает задание из трекера после выполнения всех требований";
QG_OPT_TRACKER_COMPLETE_OBJ = "Выполненные требования";
QG_OPT_TRACKER_COMPLETE_OBJ_DESC = "Сняв галку с опции, тем самым вы уберёте из трекера выполненные требования с заданий";
QG_OPT_TRACKER_COLOR_OBJ = "Окраска требований, основанных на прогрессе";
QG_OPT_TRACKER_COLOR_OBJ_DESC = "Отметьте данную опцию для окраски требований, основанных на прогрессе, используя цвета приведённые ниже";
QG_OPT_TRACKER_OBJ_COLOR_0 = "Окраски требований, которые находятся в 0% стадии выполнения";
QG_OPT_TRACKER_OBJ_COLOR_99 = "Окраски требований, которые находятся в 99% стадии выполнения";
QG_OPT_TRACKER_OBJ_COLOR_COMPLETE = "Окраски требований, которые уже выполнены";
QG_OPT_TRACKER_SIZE = "Размер трекера";
QG_OPT_TRACKER_MAX_LINES = "Макс. строк в трекере:";
QG_OPT_TRACKER_ALPHA = "Прозрачность фона";
QG_OPT_TRACKER_BULLET = "Символы для подмечивания целей задания:";
 
-- Other strings that may or may not need localizing
QG_ITEM_REQ_STR = "(.*):%s*([%d]+)%s*/%s*([%d]+)"; -- The format of the line when an item is required for a quest, an invalid format can cause many errors
QG_DATETIME = "%m/%d/%Y %H:%M:%S"; -- The format that date/time values are stored and displayed for start/finish info
end
 
\ No newline at end of file
trunk/QuestGuru_Tracker/QuestGuru_Tracker.xml New file
0,0 → 1,20
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
..\FrameXML\UI.xsd">
<Script file="QuestGuru_Tracker.lua" />
<Script file="QGT_Quests.lua" />
<Script file="QGT_Achievements.lua" />
<Frame name="QGT_QuestWatchTitleMenu" inherits="UIDropDownMenuTemplate" id="1">
<Scripts>
<OnLoad>
UIDropDownMenu_Initialize(self, QGT_QuestWatchTitleMenu_OnLoad, "MENU");
</OnLoad>
</Scripts>
</Frame>
<Frame name="QGT_QuestsTitleMenu" inherits="UIDropDownMenuTemplate" id="1">
<Scripts>
<OnLoad>
UIDropDownMenu_Initialize(self, QGT_QuestsTitleMenu_OnLoad, "MENU");
</OnLoad>
</Scripts>
</Frame>
</Ui>
\ No newline at end of file
trunk/QuestGuru_Tracker/localization.FR.lua New file
0,0 → 1,197
------------------------------------
-- QuestGuru French Localization --
------------------------------------
 
-- À \195\128
-- Á \195\129
-- Â \195\130
-- Ä \195\132
-- È \195\136
-- É \195\137
-- Ê \195\138
-- Ë \195\139
-- Î \195\142
-- Ï \195\143
-- Ô \195\148
-- Ö \195\150
-- Û \195\155
-- Ü \195\156
-- à \195\160
-- á \195\161
-- â \195\162
-- ä \195\164
-- è \195\168
-- é \195\169
-- ê \195\170
-- ë \195\171
-- î \195\174
-- ï \195\175
-- ô \195\180
-- ö \195\182
-- û \195\187
-- ü \195\188
-- 'Π\39\197\146
--
 
if (GetLocale() == "frFR") then
QG_REP_GAIN = "R\195\169putation aupr\195\168s de (.*) augment\195\169e de ([%d]+).";
QG_REP_DEC = "R\195\169putation aupr\195\168s de (.*) diminu\195\169e de ([%d]+).";
QG_XP_GAIN = "Vous gagnez ([%d]+) points d'exp\195\169rience.";
QG_QUEST_COMPLETE = "Qu\195\170te termin\195\169e !";
 
-- Default filler words used in various places
QG_UNKNOWN = "Inconnu";
QG_NONE = "Aucun";
 
-- Right click menu strings for Quest Log and Tracker
QG_TRACK = "Suivre";
QG_UNTRACK = "Ne pas suivre";
QG_SHARE_QUEST = "Partager la qu\195\170te";
QG_ABANDON_QUEST = "Abandonner la qu\195\170te";
QG_DELETE_QUEST = "Supprimer la qu\195\170te";
 
-- Quest Start and Finish information
QG_QSTART_HEAD = "D\195\169tails du d\195\169but de qu\195\170te";
QG_QSTART_NPC = "Lanc\195\169e par :";
QG_QSTART_TIME = "Le :";
QG_QSTART_LEVEL = "Au niveau :";
QG_QFINISH_HEAD = "D\195\169tails de fin de qu\195\170te";
QG_QFINISH_NPC = "Finie par :";
QG_QFINISH_TIME = "A :";
QG_QFINISH_LEVEL = "Au niveau :";
QG_QABANDON = "Abandonn\195\169e:";
 
-- Tab Text
QG_TAB_CURRENT = "En cours";
QG_TAB_HISTORY = "Historique";
QG_TAB_ABANDON = "Abandon\195\169es";
QG_TAB_GUILD = "Guilde";
QG_TAB_PARTY = "Groupe";
 
-- Party Info Tooltip strings
QG_ABANDONED = "Abandonn\195\169e";
QG_INCOMPLETE = "Incompl\195\168te";
QG_ACTIVE = "Active";
QG_ALT_STATUS_HEAD = "------------- Vos autres personnages ----------";
QG_GUILD_STATUS_HEAD = "-------- Les membres de votre Guilde ---------";
 
-- User Interface Elements
QG_EXPAND_HEADERS = "Ouvrir/fermer tout";
QG_OPTIONS = "Options";
QG_SEARCH = "Rech. : ";
QG_CLEAR_ABANDON = "Effacer la liste";
 
-- Abandon Tab Strings
QG_ABANDON_CLEAR = "Voulez-vous effacer la liste ?";
QG_ABANDON_DELETE = "Effacer \"%s\" du journal d'abandon ?"; -- %s est le nom de la quete
 
-- History Tab strings
QG_HISTORY_DELETE = "Effacer \"%s\" de l'historique ?"; -- %s est le nom de la quete
QG_HISTORY_NONE = "Pas de qu\195\170te dans l'historique";
QG_HISTORY_EXPGAIN = "Exp\195\169rience gagn\195\169e :";
QG_HISTORY_REPGAIN = "R\195\169putation :";
 
-- Announcer
QG_OPT_ANNOUNCE_HEAD = "Options d'annonce";
QG_OPT_ANNOUNCE_DESC = "Evitez les annonces publiques si vous ne voulez pas vous faire ignorer !\nLes modifications sont enregistr\195\169es lors du clic sur OK.";
QG_OPT_ANNOUNCE_PROGRESS = "Annoncer la progression";
QG_OPT_ANNOUNCE_CHANNEL_HEAD = "Canaux :";
QG_OPT_ANNOUNCE_CHANNEL_SAY = "/s";
QG_OPT_ANNOUNCE_CHANNEL_SAY_DESC = "Annoncer \195\160 ceux qui vous entourent";
QG_OPT_ANNOUNCE_CHANNEL_PARTY = "/p";
QG_OPT_ANNOUNCE_CHANNEL_PARTY_DESC = "Annoncer au groupe";
QG_OPT_ANNOUNCE_CHANNEL_GUILD = "/g";
QG_OPT_ANNOUNCE_CHANNEL_GUILD_DESC = "Annoncer \195\160 votre guilde";
QG_OPT_ANNOUNCE_CHANNEL_WHISPER = "/w";
QG_OPT_ANNOUNCE_CHANNEL_WHISPER_DESC = "Annoncer \195\160 un ami";
QG_OPT_ANNOUNCE_CHANNEL_WHISPER_TO = "A :";
QG_OPT_ANNOUNCE_ECHO = "Discussion";
QG_OPT_ANNOUNCE_ECHO_DESC = "Afficher votre progression sur la fen\195\169tre de discussion (conseill\195\169).";
QG_OPT_ANNOUNCE_MESSAGES = "Messages :";
QG_OPT_ANNOUNCE_HELP_DONE = "Nombre d'objets collect\195\169s ou de mobs tu\195\169s";
QG_OPT_ANNOUNCE_HELP_NEEDED = "Nombre total d'objets ou de mobs n\195\169c\195\169ssaires";
QG_OPT_ANNOUNCE_HELP_NUMLEFT = "Nombre d'objets restants";
QG_OPT_ANNOUNCE_HELP_NAME = "Texte d'objectif (sans #/#)";
QG_OPT_ANNOUNCE_HELP_TITLE = "Nom de la qu\195\170te pour cet objectif";
QG_OPT_ANNOUNCE_HELP_UITEXT = "Le texte affich\195\169 sur l'\195\169cran";
QG_OPT_ANNOUNCE_HELP_COMPLETE = "Message \""..COMPLETE.."\"";
QG_OPT_ANNOUNCE_HELP_QLINK = "Lien de la qu\195\170te concern\195\169e";
QG_OPT_ANNOUNCE_ITEM_MSG = "Message pour la progression d'objectifs (objets) :";
QG_OPT_ANNOUNCE_MOB_MSG = "Message pour la progression d'objectifs (mobs) :";
QG_OPT_ANNOUNCE_EVENT_MSG = "Message pour la progression d'objectifs (event) :";
QG_OPT_ANNOUNCE_COMPLETE_MSG = "Message pour la fin de qu\195\170te :";
QG_ANNOUNCE_ITEM_DEFAULT = "$done $name sur $needed collect\195\169(s) pour la qu\195\170te $questTitle";
QG_ANNOUNCE_MOB_DEFAULT = "$done $name sur $needed n\195\169c\195\169ssaires pour la qu\195\170te $questTitle";
QG_ANNOUNCE_RESET = "Restaurer les param\195\169tres par d\195\169faut.";
 
-- Tracker
QG_TRACKER_SHOW = "Afficher le suivi";
QG_TRACKER_MINIMIZE = "R\195\169duire";
QG_TRACKER_OPTIONS = "Options";
 
-- Options
QG_OPT_OPTIONS_DESC = "Param\195\169tres g\195\169n\195\169raux de QuestGuru. Les modifications sont prises en compte imm\195\169diatement.";
QG_OPT_COLORIZE_HEAD = "Couleurs";
QG_OPT_COLORIZE_PLAYER = "Joueurs";
QG_OPT_COLORIZE_AREA = "Zones";
QG_OPT_COLORIZE_NPC = "PNJ";
QG_OPT_LEVELS_HEAD = "Afficher les niveaux";
QG_OPT_LEVELS_QUESTLOG = "Dans le journal de qu\195\170te";
QG_OPT_LEVELS_HISTORY = "Dans l'historique";
QG_OPT_LEVELS_ABANDON = "Dans le journal d'abandon";
QG_OPT_TOOLTIP_TEXT = "Afficher le texte dans les infobulles des objets/mobs";
QG_OPT_AUTOCOMPLETE = "Terminer automatiquement les qu\195\170tes";
QG_OPT_ALT_STATUS = "Afficher vos autres personnages dans l'infobulle";
QG_OPT_GUILD_STATUS = "Afficher les membres de votre guilde dans l'infobulle";
QG_OPT_GUILD_SIMPLE = "Affichage simple des membres de guilde";
QG_OPT_OBJ_ICON = "Afficher les ic\195\180nes des objets dans le journal";
QG_OPT_WORLDMAP_ICON = "Afficher les donneurs de qu\195\170tes sur la carte du monde";
QG_OPT_HEADER_QUEST_NUM = "Montrer le nombre de qu\195\170tes dans les ent\195\170tes";
QG_OPT_DISABLE_COMM = "Emp\195\170cher QG de communiquer avec les autres joueurs";
 
QG_OPT_TRACKER_DESC = "Faites-vous un superbe Tracker avec plein de couleurs !\nLes modifications sont appliqu\195\169es imm\195\169diatement.";
QG_OPT_TRACKER_USE = "Suivre les qu\195\170tes avec QG";
QG_OPT_TRACKER_USE_DESC = "D\195\169cocher cette option pour utiliser le Tracker original du jeu.";
QG_OPT_TRACKER_BORDER = "Afficher la bordure";
QG_OPT_TRACKER_BORDER_DESC = "Afficher ou non une bordure autour de la fen\195\170tre de suivi.";
QG_OPT_TRACKER_CLICKTHROUGH = "Fixer la fen\195\170tre";
QG_OPT_TRACKER_CLICKTHROUGH_DESC = "Cette option activ\195\169e, vous ne pouvez plus d\195\169placer la fen\195\170tre.";
QG_OPT_TRACKER_HEADERS = "Afficher les ent\195\170tes";
QG_OPT_TRACKER_HEADERS_DESC = "Affiche les ent\195\170tes des zones/cat\195\169gories des qu\195\170tes";
QG_OPT_TRACKER_LEVELS = "Afficher les niveaux";
QG_OPT_TRACKER_LEVELS_DESC = "Affiche les informations sur le niveau n\195\169c\195\169ssaire pour faire les qu\195\170tes.";
QG_OPT_TRACKER_QUEST_TOOLTIPS = "Afficher les infobulles";
QG_OPT_TRACKER_QUEST_TOOLTIPS_DESC = "Ouvre une infobulle avec plein d'infos sur la qu\195\170te survol\195\169e. Ne fonctionne pas si le Tracker est fix\195\169 !";
QG_OPT_TRACKER_PARTY_TOOLTIPS = "Infobulles de groupe";
QG_OPT_TRACKER_PARTY_TOOLTIPS_DESC = "Ouvre une infobulle avec plein d'infos concernant le groupe/la guilde sur la qu\195\170te survol\195\169e.\nNe fonctionne pas si le tracker est fix\195\169 !";
QG_OPT_TRACKER_PERCENT = "Afficher les pourcentages";
QG_OPT_TRACKER_PERCENT_DESC = "Affiche le pourcentage de r\195\169alisation des qu\195\170tes.";
QG_OPT_TRACKER_ANCHOR_BOTTOM = "Etirer vers le haut";
QG_OPT_TRACKER_ANCHOR_BOTTOM_DESC = "La fen\195\170tre de suivi grandit vers le haut (pratique pour la fixer en bas de l'\195\169cran)";
QG_OPT_TRACKER_AUTOTRACK = "Suivi auto. des qu\195\170tes";
QG_OPT_TRACKER_AUTOTRACK_DESC = "Ajoute automatiquement les nouvelles qu\195\170tes \195\160 la fen\195\170tre de suivi.";
QG_OPT_TRACKER_AUTOUNTRACK = "Masquer les qu\195\170tes termin\195\169es";
QG_OPT_TRACKER_AUTOUNTRACK_DESC = "D\195\169sactive automatiquement le suivi des qu\195\170tes termin\195\169es.";
QG_OPT_TRACKER_COMPLETE_OBJ = "Objectifs termin\195\169s";
QG_OPT_TRACKER_COMPLETE_OBJ_DESC = "D\195\169cocher la case pour masquer les objectifs termin\195\169s.";
QG_OPT_TRACKER_COLOR_OBJ = "Couleurs";
QG_OPT_TRACKER_COLOR_OBJ_DESC = "Utiliser les couleurs ci-dessous pour identifier l'\195\169tat des qu\195\170tes :";
QG_OPT_TRACKER_OBJ_COLOR_0 = "Couleur quand l'objectif est atteint \195\160 0%";
QG_OPT_TRACKER_OBJ_COLOR_99 = "Couleur quand l'objectif est atteint \195\160 99%";
QG_OPT_TRACKER_OBJ_COLOR_COMPLETE = "Couleur quand l'objectif est termin\195\169";
QG_OPT_TRACKER_SIZE = "Taille de la fen\195\170tre";
QG_OPT_TRACKER_MAX_LINES = "Lignes maximum :";
QG_OPT_TRACKER_ALPHA = "Transparence";
QG_OPT_TRACKER_BULLET = "Symbole affich\195\169 devant les objectifs :";
 
QG_OPT_SOUND_HEAD = "Sons";
QG_OPT_SOUND_DESC = "Vous pouvez modifier les sons jou\195\169s lors de la progression des qu\195\170tes.\nLes modifications sont prises en compte imm\195\169diatement.";
QG_OPT_SOUND_ENABLE = "Activer les sons";
QG_OPT_SOUND_OBJ = "Pour la progression d'un objectif :";
QG_OPT_SOUND_OBJ_DONE = "Pour la fin d'un objectif :";
QG_SOUND_QUEST_DONE = "Pour la fin d'une qu\195\170te :";
 
-- Other strings that may or may not need localizing
QG_ITEM_REQ_STR = "(.*):%s*([%d]+)%s*/%s*([%d]+)"; -- The format of the line when an item is required for a quest, an invalid format can cause many errors
QG_DATETIME = "%d/%m/%Y %H:%M:%S"; -- Format des dates utilise dans les infos des quetes
end
trunk/QuestGuru_Tracker/QGT_Quests.lua New file
0,0 → 1,1444
QGT_WatchHeaders = {};
QGT_WatchQuests = {}; -- Stores if objectives for individual quests are shown
QGT_WatchFlash = {};
QGT_WatchList = {}; -- List of quests that are tracked
QGT_WatchLine = {};
QGT_WatchLines = 0;
QGT_WatchUpdateTime = 0;
QGT_WATCHFRAME_NUM_ITEMS = 0;
QGT_LastAbandonQuestTitle = "";
QGT_QuestTimer = {};
 
QGT_Timer = {};
-- .interval = number of seconds to wait
-- .currTime = number of seconds remaining
-- .func = function to call after interval
-- .count = number of times to repeat (-1 for infinite)
-- .args = options arguments to pass
QGT_CurrTime = 0;
 
function QGT_SetQuestWatchBorder(enabled)
if (enabled) then
QGT_QuestWatchFrame:SetBackdrop({
bgFile="Interface\\Characterframe\\UI-Party-Background",
edgeFile="Interface\\Tooltips\\UI-Tooltip-Border",
tile=1, tileSize=16, edgeSize=16,
insets={left=4, right=4, top=4, bottom=4}
});
else
QGT_QuestWatchFrame:SetBackdrop({
bgFile="Interface\\Characterframe\\UI-Party-Background",
tile=1, tileSize=16,
insets={left=4, right=4, top=4, bottom=4}
});
end
QGT_QuestWatchFrame:SetBackdropColor(0,0,0,QGT_Settings.Alpha);
end
 
do
local temp, i;
 
QGT_QuestWatchFrame = CreateFrame("FRAME", "QGT_QuestWatchFrame", UIParent);
QGT_QuestWatchFrame:Hide();
QGT_QuestWatchFrame:EnableMouse(1);
QGT_QuestWatchFrame:EnableMouseWheel(1);
QGT_QuestWatchFrame:SetMovable(1);
QGT_QuestWatchFrame:SetResizable(0);
QGT_QuestWatchFrame:SetToplevel(1);
QGT_QuestWatchFrame:SetFrameStrata("LOW");
QGT_QuestWatchFrame:SetClampedToScreen(true);
QGT_QuestWatchFrame:SetWidth(256);
QGT_QuestWatchFrame:SetHeight(20);
QGT_QuestWatchFrame:SetPoint("TOPRIGHT", MinimapCluster, "BOTTOMRIGHT", 0, 10);
QGT_QuestWatchFrame:SetHitRectInsets(-16, 0, 0, 0);
QGT_SetQuestWatchBorder(true);
 
QGT_QuestWatchFrame:RegisterForDrag("LeftButton");
QGT_QuestWatchFrame:SetScript("OnDragStart",
function ()
QGT_DragStart();
end);
QGT_QuestWatchFrame:SetScript("OnDragStop",
function ()
QGT_DragStop();
end);
QGT_QuestWatchFrame:SetScript("OnEnter",
function (self)
QGT_QuestWatchFrameSlider:SetScript("OnMouseUp", nil);
QGT_ShowQuestTrackerSlider(self, true);
end);
QGT_QuestWatchFrame:SetScript("OnLeave",
function (self)
QGT_ShowQuestTrackerSlider(self, false);
end);
QGT_QuestWatchFrame:SetScript("OnMouseWheel",
function (self, delta)
local min, max = QGT_QuestWatchFrameSlider:GetMinMaxValues();
local currVal = QGT_QuestWatchFrameSlider:GetValue();
 
currVal = currVal - delta;
if (currVal < min) then currVal = min; end
if (currVal > max) then currVal = max; end
QGT_QuestWatchFrameSlider:SetValue(currVal);
end);
QGT_QuestWatchFrame:SetScript("OnShow",
function (self)
QGT_ShowQuestTrackerSlider(self, false);
end);
QGT_QuestWatchFrame:RegisterEvent("QUEST_WATCH_UPDATE");
QGT_QuestWatchFrame:RegisterEvent("VARIABLES_LOADED");
QGT_QuestWatchFrame:RegisterEvent("UI_INFO_MESSAGE");
QGT_QuestWatchFrame:RegisterEvent("PLAYER_ENTERING_WORLD");
QGT_QuestWatchFrame:RegisterEvent("PLAYER_REGEN_DISABLED");
QGT_QuestWatchFrame:RegisterEvent("PLAYER_REGEN_ENABLED");
QGT_QuestWatchFrame:SetScript("OnEvent",
function (self, event, arg1, arg2, arg3, arg4)
if (event == "QUEST_WATCH_UPDATE") then
QGT_AddTimer(2, 1, CheckRemoveQuestWatch, arg1);
elseif (event == "VARIABLES_LOADED") then
QGT_VariablesLoaded = true;
QGT_QuestWatchLoadSettings();
elseif (event == "UI_INFO_MESSAGE") then
QGT_UIInfoMessage(arg1);
elseif (event == "PLAYER_ENTERING_WORLD") then
QGT_PlayerAlive = true;
if (GetBindingKey("QGT_TOGGLE_TRACKER_KB") == nil) then
SetBinding("SHIFT-L", "QGT_TOGGLE_TRACKER_KB");
if (GetCurrentBindingSet() == 2) then
SaveBindings(2);
else
SaveBindings(1);
end
end
QGT_QuestWatchFrame:UnregisterEvent("PLAYER_ENTERING_WORLD");
elseif (event == "PLAYER_REGEN_ENABLED") then
QGT_PlayerInCombat = false;
WatchFrame_Update();
elseif (event == "PLAYER_REGEN_DISABLED") then
QGT_PlayerInCombat = true;
WatchFrame_Update();
end
end);
QGT_QuestWatchFrame:SetScript("OnUpdate",
function (self, elapsed)
QGT_OnUpdate(elapsed);
end);
 
temp = QGT_QuestWatchFrame:CreateTexture("QGT_QuestWatchFrameBackground", "ARTWORK");
temp:SetHeight(18);
temp:SetPoint("TOPRIGHT", -4, -4);
temp:SetPoint("TOPLEFT", 4, -4);
temp:SetTexture(1, 1, 1);
temp:SetGradientAlpha("VERTICAL", 0, 0, 0, 0, 0.3, 0.3, 0.3, 1);
 
temp = QGT_QuestWatchFrame:CreateFontString("QGT_QuestWatchQuestName", "ARTWORK", "GameFontNormal");
temp:SetPoint("TOPLEFT", 8, -6);
temp:SetJustifyH("LEFT");
temp:SetWidth(0);
temp:SetHeight(12);
temp:SetText("QuestGuru "..QG_TRACKER_QUESTS);
 
temp = QGT_QuestWatchFrame:CreateFontString("QGT_QuestWatchNumQuests", "ARTWORK", "GameFontNormal");
temp:SetPoint("LEFT", QGT_QuestWatchQuestName, "RIGHT", 12, 0);
temp:SetJustifyH("CENTER");
temp:SetWidth(0);
temp:SetHeight(12);
temp:SetText("0/"..MAX_QUESTS);
 
QGT_QuestWatchFrameOptions = CreateFrame("BUTTON", "QGT_QuestWatchFrameOptions", QGT_QuestWatchFrame, "QGT_QuestWatchMiniButtonTemplate");
QGT_QuestWatchFrameOptions:SetText("O");
QGT_QuestWatchFrameOptions:SetPoint("TOPRIGHT", -5, -4);
QGT_QuestWatchFrameOptions:SetScript("OnClick",
function ()
InterfaceOptionsFrame_OpenToCategory("QG Tracker");
end);
QGT_QuestWatchFrameOptions:SetScript("OnEnter",
function (self)
QGT_QuestWatchFrameSlider:SetScript("OnMouseUp", nil);
QGT_ShowQuestTrackerSlider(self, true);
GameTooltip:SetOwner(self, "ANCHOR_LEFT");
GameTooltip:SetText(QG_TRACKER_OPTIONS, nil,nil, nil, nil, 1);
end);
QGT_QuestWatchFrameOptions:SetScript("OnLeave",
function (self)
QGT_ShowQuestTrackerSlider(self, false);
GameTooltip:Hide();
end);
 
QGT_QuestWatchFrameMinimize = CreateFrame("BUTTON", "QGT_QuestWatchFrameMinimize", QGT_QuestWatchFrame, "QGT_QuestWatchMiniButtonTemplate");
QGT_QuestWatchFrameMinimize:SetText("-");
QGT_QuestWatchFrameMinimize:SetPoint("RIGHT", QGT_QuestWatchFrameOptions, "LEFT", 0, 0);
QGT_QuestWatchFrameMinimize:RegisterForClicks("LeftButtonUp", "RightButtonUp");
QGT_QuestWatchFrameMinimize:SetScript("OnClick",
function (self, button, down)
if (button == "LeftButton") then
if (QGT_Settings.QuestWatch.AutoMinimize) then
QGT_ShowQuestTrackerSlider(self, false);
QGT_Settings.QuestWatch.Minimized = true;
else
QGT_ShowQuestTrackerSlider(self, QGT_Settings.QuestWatch.Minimized);
QGT_Settings.QuestWatch.Minimized = not QGT_Settings.QuestWatch.Minimized;
end
QGT_Settings.QuestWatch.AutoMinimize = false;
WatchFrame_Update();
GameTooltip:Hide();
elseif (button == "RightButton") then
QGT_Settings.QuestWatch.AutoMinimize = not QGT_Settings.QuestWatch.AutoMinimize;
WatchFrame_Update();
end
end);
QGT_QuestWatchFrameMinimize:SetScript("OnEnter",
function (self)
QGT_QuestWatchFrameSlider:SetScript("OnMouseUp", nil);
QGT_ShowQuestTrackerSlider(self, true);
GameTooltip:SetOwner(self, "ANCHOR_LEFT");
if (QGT_Settings.QuestWatch.Minimized) then
GameTooltip:SetText(QG_TRACKER_SHOW, nil,nil, nil, nil, 1);
else
GameTooltip:SetText(QG_TRACKER_MINIMIZE, nil,nil, nil, nil, 1);
end
end);
QGT_QuestWatchFrameMinimize:SetScript("OnLeave",
function (self)
QGT_ShowQuestTrackerSlider(self, false);
GameTooltip:Hide();
end);
 
QGT_QuestWatchFrameToggle = CreateFrame("BUTTON", "QGT_QuestWatchFrameToggle", QGT_QuestWatchFrame, "QGT_QuestWatchMiniButtonTemplate");
QGT_QuestWatchFrameToggle:SetText(QG_TRACKER_A);
QGT_QuestWatchFrameToggle:SetPoint("RIGHT", QGT_QuestWatchFrameMinimize, "LEFT", 0, 0);
QGT_QuestWatchFrameToggle:RegisterForClicks("LeftButtonUp", "RightButtonUp");
QGT_QuestWatchFrameToggle:SetScript("OnClick",
function (self, button, down)
if (button == "LeftButton") then
QGT_Settings.LastTracker = "A";
QGT_Settings.BothTrackers = false;
QGT_Settings.AchievementWatch.Top = QGT_Settings.QuestWatch.Top;
QGT_Settings.AchievementWatch.Bottom = QGT_Settings.QuestWatch.Bottom;
QGT_Settings.AchievementWatch.Left = QGT_Settings.QuestWatch.Left;
QGT_Settings.AchievementWatch.Minimized = QGT_Settings.QuestWatch.Minimized;
QGT_Settings.AchievementWatch.AutoMinimize = QGT_Settings.QuestWatch.AutoMinimize;
WatchFrame_Update();
GameTooltip:Hide();
elseif (button == "RightButton") then
QGT_Settings.LastTracker = "Q";
QGT_Settings.BothTrackers = not QGT_Settings.BothTrackers;
WatchFrame_Update();
end
end);
QGT_QuestWatchFrameToggle:SetScript("OnEnter",
function (self)
QGT_QuestWatchFrameSlider:SetScript("OnMouseUp", nil);
QGT_ShowQuestTrackerSlider(self, true);
GameTooltip:SetOwner(self, "ANCHOR_LEFT");
GameTooltip:SetText(QG_TRACKER_TOGGLE, nil,nil, nil, nil, 1);
end);
QGT_QuestWatchFrameToggle:SetScript("OnLeave",
function (self)
QGT_ShowQuestTrackerSlider(self, false);
GameTooltip:Hide();
end);
 
QGT_QuestWatchFrameSort = CreateFrame("BUTTON", "QGT_QuestWatchFrameSort", QGT_QuestWatchFrame, "QGT_QuestWatchMiniButtonTemplate");
QGT_QuestWatchFrameSort:SetText("~");
QGT_QuestWatchFrameSort:SetPoint("RIGHT", QGT_QuestWatchFrameToggle, "LEFT", 0, 0);
QGT_QuestWatchFrameSort:RegisterForClicks("LeftButtonUp");
QGT_QuestWatchFrameSort:SetScript("OnClick",
function (self, button, down)
ToggleDropDownMenu(1, nil, QGT_QuestsTitleMenu, self:GetName(), 0, 0);
end);
QGT_QuestWatchFrameSort:SetScript("OnEnter",
function (self)
QGT_QuestWatchFrameSlider:SetScript("OnMouseUp", nil);
QGT_ShowQuestTrackerSlider(self, true);
GameTooltip:SetOwner(self, "ANCHOR_LEFT");
GameTooltip:SetText(QG_TRACKER_SORT, nil,nil, nil, nil, 1);
end);
QGT_QuestWatchFrameSort:SetScript("OnLeave",
function (self)
QGT_ShowQuestTrackerSlider(self, false);
GameTooltip:Hide();
end);
QGT_QuestWatchFrameSort:Hide();
 
QGT_QuestWatchFrameSlider = CreateFrame("Slider", "QGT_QuestWatchFrameSlider", QGT_QuestWatchFrame, "OptionsSliderTemplate");
QGT_QuestWatchFrameSlider:SetWidth(16);
QGT_QuestWatchFrameSlider:SetHeight(200);
QGT_QuestWatchFrameSliderText:SetText("");
QGT_QuestWatchFrameSliderHigh:SetText("");
QGT_QuestWatchFrameSliderLow:SetText("");
QGT_QuestWatchFrameSlider:SetOrientation("VERTICAL");
QGT_QuestWatchFrameSlider:SetPoint("TOPLEFT", QGT_QuestWatchFrame, "TOPLEFT", -14, -2);
QGT_QuestWatchFrameSlider:SetMinMaxValues(0,0);
QGT_QuestWatchFrameSlider:SetValueStep(1);
QGT_QuestWatchFrameSlider:SetValue(0);
QGT_QuestWatchFrameSlider:Hide();
QGT_QuestWatchFrameSlider:SetScript("OnEnter",
function (self)
QGT_ShowQuestTrackerSlider(self, true);
end);
QGT_QuestWatchFrameSlider:SetScript("OnLeave",
function (self)
QGT_ShowQuestTrackerSlider(self, false);
end);
QGT_QuestWatchFrameSlider:SetScript("OnValueChanged",
function ()
WatchFrame_Update();
end);
 
for i=1, 40 do
temp = CreateFrame("Button", "QGT_QuestWatchLine"..i, QGT_QuestWatchFrame, "QGT_QuestWatchButtonTemplate");
temp:SetPoint("TOPLEFT", QGT_QuestWatchFrame, 8, -20);
temp:SetHeight(13);
temp:RegisterForClicks("LeftButtonUp", "RightButtonUp");
end
 
QGT_QuestWatchFrameTooltip = CreateFrame("GameTooltip", "QGT_QuestWatchFrameTooltip", QGT_QuestWatchFrame, "GameTooltipTemplate");
QGT_QuestWatchFrameTooltip:Hide();
QGT_QuestWatchFrameTooltip:SetFrameStrata("TOOLTIP");
end
 
function CheckRemoveQuestWatch(arg1)
if (QGT_IsQuestComplete(arg1) and QGT_Settings.AutoUnTrack) then
RemoveQuestWatch(arg1);
end
end
 
function QGT_DragStart()
if (not QGT_Settings.Pin) then
QGT_QuestWatchFrame:StartMoving();
QGT_QuestWatchFrame.isMoving = true;
end
end
 
function QGT_DragStop()
QGT_QuestWatchFrame:StopMovingOrSizing();
QGT_QuestWatchFrame.isMoving = false;
QGT_Settings.QuestWatch.Left = QGT_QuestWatchFrame:GetLeft();
QGT_Settings.QuestWatch.Top = QGT_QuestWatchFrame:GetTop();
QGT_Settings.QuestWatch.Bottom = QGT_QuestWatchFrame:GetBottom();
QGT_QuestWatchFrameSlider:ClearAllPoints();
if (((QGT_Settings.QuestWatch.Left + 256) * QGT_Settings.Scale) > (UIParent:GetWidth() - 16)) then
QGT_QuestWatchFrameSlider:SetPoint("TOPLEFT", -14, -16);
else
QGT_QuestWatchFrameSlider:SetPoint("TOPRIGHT", 14, -16);
end
end
 
function QGT_IsQuestComplete(index)
local questLogTitleText, level, questTag, suggestedGroup, isHeader, isCollapsed, isComplete, isDaily = GetQuestLogTitle(index);
local numObjectives = GetNumQuestLeaderBoards(index);
 
return (isComplete or (numObjectives == 0));
end
 
function QGT_QuestWatchTitleMenu_OnLoad(self)
local info = UIDropDownMenu_CreateInfo();
info.func = QGT_QuestWatchTitleMenu_OnClick;
info.arg1 = self:GetID();
if (self.qID) then info.arg1 = self.qID; end
info.checked = nil;
info.icon = nil;
 
local questLogTitleText, level, questTag, suggestedGroup, isHeader, isCollapsed, isComplete, isDaily = GetQuestLogTitle(info.arg1);
if (questLogTitleText == nil) then return; end
if (IsQuestWatched(info.arg1)) then
info.text = QG_UNTRACK.." "..questLogTitleText;
info.value = "untrack";
UIDropDownMenu_AddButton(info, 1);
else
info.text = QG_TRACK.." "..questLogTitleText;
info.value = "track";
UIDropDownMenu_AddButton(info, 1);
end
 
if (not self.isHeader) then
if (GetQuestLogPushable() and ( GetRealNumPartyMembers() > 0 or GetRealNumRaidMembers() > 0) ) then
info.disabled = nil;
else
info.disabled = 1;
end
info.text = QG_SHARE_QUEST;
info.value = "share";
UIDropDownMenu_AddButton(info, 1);
info.disabled = nil;
 
info.text = QG_ABANDON_QUEST;
info.value = "abandon";
UIDropDownMenu_AddButton(info, 1);
end
 
info.text = "--------------------";
info.value = "-";
info.isTitle = 1;
UIDropDownMenu_AddButton(info, 1);
 
info = UIDropDownMenu_CreateInfo();
info.func = QGT_QuestWatchTitleMenu_OnClick;
info.checked = nil;
info.icon = nil;
info.text = CANCEL;
info.value = "cancel";
UIDropDownMenu_AddButton(info, 1);
end
 
function QGT_QuestWatchTitleMenu_OnClick(self, button, down)
if (self.value == "abandon") then
QGT_Abandon();
elseif (self.value == "share") then
QuestLogPushQuest();
elseif (self.value == "track") then
AddQuestWatch(self.arg1);
QuestLog_Update();
elseif (self.value == "untrack") then
RemoveQuestWatch(self.arg1);
QuestLog_Update();
end
end
 
function QGT_QuestsTitleMenu_OnLoad()
if (QGT_Settings.QuestWatchSort == nil) then QGT_Settings.QuestWatchSort = 0; end
local info = UIDropDownMenu_CreateInfo();
info.func = QGT_QuestsTitleMenu_OnClick;
info.checked = (QGT_Settings.QuestWatchSort == 0);
info.icon = nil;
info.text = QG_OPT_TRACKER_SORTQUESTNONE;
info.value = "questsortnone";
UIDropDownMenu_AddButton(info, 1);
 
info.checked = (QGT_Settings.QuestWatchSort == 1);
info.text = QG_OPT_TRACKER_SORTQUESTPROX;
info.value = "questsortprox";
UIDropDownMenu_AddButton(info, 1);
 
info.checked = nil;
info.text = "--------------------";
info.value = "-";
info.isTitle = 1;
UIDropDownMenu_AddButton(info, 1);
 
info = UIDropDownMenu_CreateInfo();
info.func = QGT_QuestsTitleMenu_OnClick;
info.checked = nil;
info.icon = nil;
info.text = CANCEL;
info.value = "cancel";
UIDropDownMenu_AddButton(info, 1);
end
 
function QGT_QuestsTitleMenu_OnClick(self, button, down)
if (self.value == "questsortnone") then
QGT_Settings.QuestWatchSort = 0;
elseif (self.value == "questsortprox") then
QGT_Settings.QuestWatchSort = 1;
SortQuestWatches();
end
WatchFrame_Update();
end
 
function QGT_ShowQuestTrackerSlider(self, flag)
if (QGT_Settings and QGT_Settings.QuestWatch and (QGT_Settings.QuestWatch.AutoMinimize==true) and not IsMouseButtonDown("LeftButton")) then
QGT_Settings.QuestWatch.Minimized = not flag;
end
 
local watchLines = 30;
if (QGT_Settings and QGT_Settings.Lines) then
watchLines = QGT_Settings.Lines;
end
if ((flag == true) and (QGT_WatchLines > watchLines) and not QGT_Settings.QuestWatch.Minimized) then
QGT_QuestWatchFrameSlider:Show();
else
if (IsMouseButtonDown("LeftButton")) then
self:SetScript("OnMouseUp",
function (self)
QGT_ShowQuestTrackerSlider(self, false);
self:SetScript("OnMouseUp", nil);
end);
else
QGT_QuestWatchFrameSlider:Hide();
end
end
end
 
function QGT_SetQuestTrackerMouse(enableFlag)
QGT_QuestWatchFrame:EnableMouse(enableFlag);
for i=1, 40 do
_G["QGT_QuestWatchLine"..i]:EnableMouse(enableFlag);
end
end
 
function QGT_QuestWatchButton_OnEnter(self, motion)
local qID = self.qID;
local minWidth = 224;
 
self.fading = 0;
self.flashing = 0;
self:SetScript("OnUpdate", nil);
_G[self:GetName().."Highlight"]:SetAlpha(0.5);
_G[self:GetName().."Highlight"]:Show();
if (qID == nil) then -- header
return;
elseif (tonumber(qID) == nil) then -- objective line
local objName = string.sub(self:GetText(),3+strlen(QGT_Settings.Bullet));
local objText = "";
if (qID == "item") then
local itemName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemTexture = GetItemInfo(objName);
if ((not itemLink) and IsAddOnLoaded("QuestGuru") and QuestGuru_Items and QuestGuru_Items[QuestGuru_RealmName] and QuestGuru_Items[QuestGuru_RealmName][objName]) then
itemName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemTexture = GetItemInfo(QuestGuru_Items[QuestGuru_RealmName][objName]);
end
if (itemLink and QGT_Settings.ShowQuestTooltips) then
GameTooltip:SetOwner(self);
GameTooltip:SetHyperlink(itemLink);
GameTooltip:Show();
local tW = GameTooltip:GetWidth();
if (QGT_Settings.QuestWatch.Left < tW) then
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
GameTooltip:SetHyperlink(itemLink);
GameTooltip:Show();
else
GameTooltip:SetOwner(self, "ANCHOR_LEFT");
GameTooltip:SetHyperlink(itemLink);
GameTooltip:Show();
end
end
end
else -- quest line
if (QGT_Settings.ShowQuestTooltips) then
QGT_QuestWatchFrameTooltip:SetOwner(self);
local qLink = GetQuestLink(qID);
if (qLink) then QGT_QuestWatchFrameTooltip:SetHyperlink(qLink); end
QGT_QuestWatchFrameTooltip:Show();
local tW = QGT_QuestWatchFrameTooltip:GetWidth();
if (QGT_Settings.QuestWatch.Left < tW) then
QGT_QuestWatchFrameTooltip:SetOwner(self, "ANCHOR_RIGHT");
if (qLink) then QGT_QuestWatchFrameTooltip:SetHyperlink(qLink); end
QGT_QuestWatchFrameTooltip:Show();
else
QGT_QuestWatchFrameTooltip:SetOwner(self, "ANCHOR_LEFT");
if (qLink) then QGT_QuestWatchFrameTooltip:SetHyperlink(qLink); end
QGT_QuestWatchFrameTooltip:Show();
end
end
if (QGT_Settings.ShowPartyTooltips) then QGT_UpdatePartyInfoTooltip(self); end
end
end
 
function QGT_UpdatePartyInfoTooltip(self)
local numPartyMembers = GetNumPartyMembers();
if ( numPartyMembers == 0 or self.isHeader ) then
return;
end
GameTooltip_SetDefaultAnchor(GameTooltip, self);
 
local questLogTitleText = GetQuestLogTitle(self.qID);
GameTooltip:SetText(questLogTitleText);
 
local partyMemberOnQuest;
for i=1, numPartyMembers do
if ( IsUnitOnQuest(self.qID, "party"..i) ) then
if ( not partyMemberOnQuest ) then
GameTooltip:AddLine(HIGHLIGHT_FONT_COLOR_CODE..PARTY_QUEST_STATUS_ON..FONT_COLOR_CODE_CLOSE);
partyMemberOnQuest = 1;
end
GameTooltip:AddLine(LIGHTYELLOW_FONT_COLOR_CODE..UnitName("party"..i)..FONT_COLOR_CODE_CLOSE);
end
end
if ( not partyMemberOnQuest ) then
GameTooltip:AddLine(HIGHLIGHT_FONT_COLOR_CODE..PARTY_QUEST_STATUS_NONE..FONT_COLOR_CODE_CLOSE);
end
GameTooltip:Show();
end
 
function QGT_QuestWatchButton_OnLeave(self, motion)
_G[self:GetName().."Highlight"]:Hide();
QGT_ShowQuestTrackerSlider(self, false);
QGT_QuestWatchFrameTooltip:Hide();
GameTooltip:Hide();
end
 
function QGT_QuestWatchButton_OnUpdate(self, elapsed)
local hilight = _G[self:GetName().."Highlight"];
 
if (self.fading == 1) then
local a = hilight:GetAlpha();
a = a - elapsed;
if (a <= 0) then
a = 0;
self.fading = 0;
self:SetScript("OnUpdate", nil);
end
hilight:SetAlpha(a);
end
if (self.flashing and self.flashing ~= 0) then
local a = hilight:GetAlpha();
a = a + (elapsed * self.flashing);
if (self.flashing == -1 and a < 0) then
a = 0;
self.flashing = 1;
elseif (self.flashing == 1 and a > 1) then
a = 1;
self.flashing = -1;
end
hilight:SetAlpha(a);
end
end
 
function QGT_QuestWatchButton_OnClick(self, button, down)
local qID = self.qID;
 
if (button == "LeftButton") then
if ( IsShiftKeyDown() ) then
local activeWindow = ChatEdit_GetActiveWindow();
if (qID == nil) then -- header line
if (activeWindow) then
activeWindow:Insert(self:GetText());
end
elseif (tonumber(qID) == nil) then -- objective line
local objName = string.sub(self:GetText(), 3 + strlen(QGT_Settings.Bullet));
local objText = "";
if (qID == "item") then
local itemName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemTexture = GetItemInfo(objName);
if (itemLink == nil) then
objText = objName;
else
objText = itemLink;
end
else
objText = objName;
end
if (activeWindow) then
activeWindow:Insert(objText);
end
else -- quest number
if (activeWindow) then
activeWindow:Insert(GetQuestLink(qID));
end
end
else
if (qID == nil) then -- header line
local headName = self:GetText();
if (QGT_WatchHeaders[headName] ~= false) then
QGT_WatchHeaders[headName] = false;
else
QGT_WatchHeaders[headName] = true;
end
WatchFrame_Update();
elseif (tonumber(qID) == nil) then -- objective line
local objName = string.sub(self:GetText(), 3 + strlen(QGT_Settings.Bullet));
if (qID == "item") then
local itemName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemTexture = GetItemInfo(objName);
if (itemLink ~= nil) then
SetItemRef(itemLink, nil, button);
end
end
else -- title line
-- Autocomplete
local title, level, questTag, suggestedGroup, isHeader, isCollapsed, isComplete, isDaily = GetQuestLogTitle(qID);
if (isComplete and GetQuestLogIsAutoComplete(qID)) then
QuestIsAutoComplete = true;
else
QuestIsAutoComplete = false;
end
if (QuestIsAutoComplete) then
ShowQuestComplete(qID);
else
QuestLog_OpenToQuest(qID);
QuestLogFrame:Show();
end
end
end
elseif (button == "RightButton") then
if (IsShiftKeyDown()) then
if (qID and (tonumber(qID) ~= nil)) then
QuestLog_SetSelection(qID, button);
QuestLog_Update();
ToggleDropDownMenu(1, nil, QGT_QuestWatchTitleMenu, self:GetName(), 0, 0);
end
else
if (qID == nil) then -- header line
local headName = self:GetText();
if (QGT_WatchHeaders[headName] ~= false) then
QGT_WatchHeaders[headName] = false;
else
QGT_WatchHeaders[headName] = true;
end
WatchFrame_Update();
elseif (tonumber(qID) ~= nil) then -- title line
-- expand/collapse quests
local qName = GetQuestLogTitle(qID);
 
if (QGT_WatchQuests[qName] ~= false) then
QGT_WatchQuests[qName] = false;
else
QGT_WatchQuests[qName] = true;
end
WatchFrame_Update();
end
end
end
QGT_ShowQuestTrackerSlider(self, true);
end
 
function QGT_WatchFrameItem_OnEnter(self)
GameTooltip_SetDefaultAnchor(GameTooltip, self);
GameTooltip:SetQuestLogSpecialItem(self:GetID());
QGT_ShowQuestTrackerSlider(self, true);
end
 
function QGT_WatchFrameItem_OnLeave(self)
GameTooltip:Hide();
QGT_ShowQuestTrackerSlider(self, false);
end
 
function QGT_UpdateQuestTimers(...)
local numTimers = select("#", ...);
 
QGT_QuestTimer = {};
if ( numTimers == 0 ) then
return;
end
 
for i = 1, numTimers do
QGT_QuestTimer[GetQuestIndexForTimer(i)] = select(i, ...);
end
end
 
-- QuestWatch functions
function QGT_QuestWatch_Update()
local numEntries, numQuests = GetNumQuestLogEntries();
 
QGT_UpdateQuestTimers(GetQuestTimers());
 
local questCount=0;
local i;
 
for i=1, numEntries do
if (IsQuestWatched(i)) then questCount = questCount + 1; end
end
 
QGT_QuestWatchNumQuests:SetText(numQuests.."/"..MAX_QUESTS);
 
if (QGT_Settings.QuestWatch.AutoMinimize) then
QGT_QuestWatchFrameMinimize:SetText("*");
else
QGT_QuestWatchFrameMinimize:SetText("-");
end
 
local achieveCount=0;
local i, j;
 
for i, j in pairs(QGT_WatchAchievements) do
achieveCount = achieveCount + 1;
end
 
if (achieveCount == 0) then
QGT_QuestWatchFrameToggle:Hide();
else
QGT_QuestWatchFrameToggle:Show();
if (QGT_Settings.BothTrackers) then
QGT_QuestWatchFrameToggle:SetText("*");
else
QGT_QuestWatchFrameToggle:SetText(QG_TRACKER_A);
end
end
 
if (questCount == 0 and achieveCount == 0) then
QGT_QuestWatchFrame:Hide();
return;
elseif (questCount == 0 and achieveCount > 0) then
if (QGT_Settings.BothTrackers) then
QGT_QuestWatchFrame:Hide();
else
QGT_QuestWatchFrameToggle:Click();
end
return;
else
QGT_QuestWatchFrame:Show();
end
 
if (QGT_Settings.QuestWatch.Left == nil) then
QGT_Settings.QuestWatch.Left = MinimapCluster:GetLeft();
end
if (QGT_Settings.QuestWatch.Top == nil) then
QGT_Settings.QuestWatch.Top = MinimapCluster:GetBottom()+10;
end
if (QGT_Settings.QuestWatch.Bottom == nil) then
QGT_Settings.QuestWatch.Bottom = 60;
end
 
if (QGT_Settings.ClickThrough) then
QGT_SetQuestTrackerMouse(0);
else
QGT_SetQuestTrackerMouse(1);
end
 
if (QGT_Settings.Pin) then
QGT_QuestWatchFrame:SetMovable(0);
else
QGT_QuestWatchFrame:SetMovable(1);
end
 
local numObjectives;
local questWatchMaxWidth = 0;
local tempWidth;
local watchText;
local text, type, finished;
local questTitle;
local watchTextIndex = 1;
QGT_WatchLine[watchTextIndex] = {};
local objectivesCompleted;
local strLvl;
local questIndex = 0;
local currHeader = "";
local lastWatchHeader = "";
local lastWatchIndex = 0;
local i, j = 0, 0;
local numEntries, numQuests;
 
if (QGT_WatchFlash == nil) then QGT_WatchFlash = {}; end
 
if (QGT_Settings.QuestWatchSort == 0 or QGT_Settings.QuestWatchSort == nil or QGT_Settings == nil) then
numEntries, numQuests = GetNumQuestLogEntries();
elseif (QGT_Settings.QuestWatchSort == 1) then
numEntries = GetNumQuestWatches();
end
if (numEntries == nil) then return; end
 
for questIndex=1, numEntries do
if (QGT_Settings.QuestWatchSort == 1) then
questIndex = GetQuestIndexForWatch(questIndex);
end
local questLogTitleText, level, questTag, suggestedGroup, isHeader, isCollapsed, isComplete, isDaily = GetQuestLogTitle(questIndex);
if (questLogTitleText == nil) then questLogTitleText = QG_UNKNOWN; end
if (isHeader) then
currHeader = questLogTitleText;
if (currHeader == nil) then currHeader = QG_UNKNOWN; end
end
if (IsQuestWatched(questIndex) and (not isHeader)) then
if (currHeader ~= lastWatchHeader and QGT_Settings.ShowHeaders) then
QGT_WatchLine[watchTextIndex].Text = currHeader;
QGT_WatchLine[watchTextIndex].TextColor = {r=1, g=1, b=1};
QGT_WatchLine[watchTextIndex].Tag = "";
lastWatchHeader = currHeader;
lastWatchIndex = watchTextIndex;
QGT_WatchLine[watchTextIndex].qID = nil;
QGT_WatchLine[watchTextIndex].isHeader = true;
QGT_WatchLine[watchTextIndex].isTitle = false;
watchTextIndex = watchTextIndex + 1;
QGT_WatchLine[watchTextIndex] = {};
end
 
if ( QGT_WatchHeaders[currHeader] ~= false ) then
-- Set title
strLvl = "["..level
if (isDaily) then
strLvl = strLvl.."Y";
end
if (questTag ~= nil) then
if ((questTag == "Group") and (suggestedGroup > 0)) then
strLvl = strLvl.."G"..suggestedGroup;
elseif (questTag == "Dungeon") then
strLvl = strLvl.."D";
elseif ((questTag == "Elite") or (questTag == "Group")) then
strLvl = strLvl.."+"
else
strLvl = strLvl.."+"
end
end
strLvl = strLvl.."] "
if (QGT_Settings.ShowLevels) then
QGT_WatchLine[watchTextIndex].Text = strLvl..questLogTitleText;
else
QGT_WatchLine[watchTextIndex].Text = questLogTitleText;
end
-- Autocomplete
if (isComplete and GetQuestLogIsAutoComplete(questIndex)) then
QGT_WatchLine[watchTextIndex].Text = "(?) "..QGT_WatchLine[watchTextIndex].Text;
QGT_WatchLine[watchTextIndex].flashing = true;
end
QGT_WatchLine[watchTextIndex].qID = questIndex;
 
QGT_WatchLine[watchTextIndex].isHeader = false;
QGT_WatchLine[watchTextIndex].isTitle = true;
 
local watchQuestIndex = watchTextIndex;
watchTextIndex = watchTextIndex + 1;
QGT_WatchLine[watchTextIndex] = {};
objectivesCompleted = 0;
local questNumNeeded = 0;
local questNumDone = 0;
local r, g, b;
 
numObjectives = GetNumQuestLeaderBoards(questIndex);
for j=1, numObjectives do
text, type, finished = GetQuestLogLeaderBoard(j, questIndex);
if (text ~= nil) then
local qi, qj, itemName, numDone, numNeeded = string.find(text, QG_ITEM_REQ_STR);
if (itemName == nil) then
qi, qj, itemName, numDone = string.find(text, QG_ITEM_REQ_STR2);
numNeeded = 1;
end
 
if ((type == "item") and itemName and IsAddOnLoaded("QuestGuru") and QuestGuru_Items[QuestGuru_RealmName]) then
iiName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, texture = GetItemInfo(itemName);
if ((iiName and itemLink) and QuestGuru_Items[QuestGuru_RealmName][iiName] == nil) then
QuestGuru_Items[QuestGuru_RealmName][iiName] = itemLink;
end
end
 
if ((not finished) or QGT_Settings.ShowCompletedObj) then
-- Set Objective text
if (((type == "item") or (type == "monster") or (type == "object")) and (itemName ~= nil)) then
QGT_WatchLine[watchTextIndex].Text = " "..QGT_Settings.Bullet.." "..itemName;
if (numDone == numNeeded) then
QGT_WatchLine[watchTextIndex].Tag = COMPLETE;
objectivesCompleted = objectivesCompleted + 1;
else
QGT_WatchLine[watchTextIndex].Tag = numDone.."/"..numNeeded;
end
r, g, b = QGT_QuestWatchGetObjColor(numDone/numNeeded);
questNumNeeded = questNumNeeded + numNeeded;
questNumDone = questNumDone + numDone;
else
QGT_WatchLine[watchTextIndex].Text = " "..QGT_Settings.Bullet.." "..text;
QGT_WatchLine[watchTextIndex].Tag = "";
questNumNeeded = questNumNeeded + 1;
if (finished) then
questNumDone = questNumDone + 1;
objectivesCompleted = objectivesCompleted + 1;
r, g, b = QGT_QuestWatchGetObjColor(1);
else
r, g, b = QGT_QuestWatchGetObjColor(0);
end
end
QGT_WatchLine[watchTextIndex].qID = type;
QGT_WatchLine[watchTextIndex].isHeader = false;
QGT_WatchLine[watchTextIndex].isTitle = false;
-- Color the objectives
QGT_WatchLine[watchTextIndex].TextColor = {r=r,g=g,b=b};
if (QGT_WatchQuests[questLogTitleText] == false) then
if (QGT_WatchFlash and QGT_WatchFlash[questIndex] and QGT_WatchFlash[questIndex][j]) then
QGT_WatchLine[watchQuestIndex].fading = QGT_WatchFlash[questIndex][j];
QGT_WatchFlash[questIndex][j] = nil;
end
watchTextIndex = watchTextIndex - 1;
else
if (QGT_WatchFlash and QGT_WatchFlash[questIndex] and QGT_WatchFlash[questIndex][j]) then
QGT_WatchLine[watchTextIndex].fading = QGT_WatchFlash[questIndex][j];
QGT_WatchFlash[questIndex][j] = nil;
end
end
watchTextIndex = watchTextIndex + 1;
QGT_WatchLine[watchTextIndex] = {};
elseif (finished) then
objectivesCompleted = objectivesCompleted + 1;
if ((type == "item") or (type == "monster") or (type == "object")) then
questNumNeeded = questNumNeeded + numNeeded;
questNumDone = questNumDone + numDone;
else
questNumNeeded = questNumNeeded + 1;
questNumDone = questNumDone + 1;
end
end
end
end
-- Brighten the quest title if all the quest objectives were met
color = GetQuestDifficultyColor(level);
if ( objectivesCompleted == numObjectives ) then
QGT_WatchLine[watchQuestIndex].Tag = COMPLETE;
QGT_WatchLine[watchQuestIndex].TextColor = {r=color.r, g=color.g, b=color.b};
else
if (questNumNeeded > 0) then
local perComplete = math.floor((questNumDone * 100) / questNumNeeded);
QGT_WatchLine[watchQuestIndex].Tag = perComplete.."%";
else
QGT_WatchLine[watchQuestIndex].Tag = "";
end
QGT_WatchLine[watchQuestIndex].TextColor = {r=color.r * 0.75, g=color.g * 0.75, b=color.b * 0.75};
end
elseif (QGT_WatchFlash[questIndex]) then
if (QGT_WatchFlash[questIndex].fading == true) then
QGT_WatchLine[lastWatchIndex].fading = true;
QGT_WatchFlash[questIndex].fading = nil;
end
end
end
end
 
local watchLines = 30;
if (QGT_Settings and QGT_Settings and QGT_Settings.Lines) then
watchLines = QGT_Settings.Lines;
end
 
QGT_WatchLines = watchTextIndex - 1;
if (QGT_WatchLines > watchLines) then
QGT_QuestWatchFrameSlider:SetMinMaxValues(0, QGT_WatchLines - watchLines);
else
QGT_QuestWatchFrameSlider:SetMinMaxValues(0, 0);
end
 
if (QGT_Settings.QuestWatch.Minimized) then
if (QGT_Settings.QuestWatch.AutoMinimize) then
QGT_QuestWatchFrameMinimize:SetText("*");
else
QGT_QuestWatchFrameMinimize:SetText("+");
end
for i=1, 40 do
_G["QGT_QuestWatchLine"..i]:Hide();
end
for i=1, QGT_WATCHFRAME_NUM_ITEMS do
_G["QGT_WatchFrameItem"..i]:Hide();
end
QGT_QuestWatchFrame:SetHeight(26);
 
if (QGT_Settings.QuestWatch.Left == nil) then
QGT_Settings.QuestWatch.Left = MinimapCluster:GetLeft();
end
if (QGT_Settings.QuestWatch.Top == nil) then
QGT_Settings.QuestWatch.Top = MinimapCluster:GetBottom()+10;
end
if (QGT_Settings.QuestWatch.Bottom == nil) then
QGT_Settings.QuestWatch.Bottom = 60;
end
if (not QGT_QuestWatchFrame.isMoving) then
QGT_QuestWatchFrame:ClearAllPoints();
if (QGT_Settings.Anchor == "TOP") then
QGT_QuestWatchFrame:SetPoint("TOPLEFT", "UIParent", "BOTTOMLEFT", QGT_Settings.QuestWatch.Left, QGT_Settings.QuestWatch.Top);
elseif (QGT_Settings.Anchor == "BOTTOM") then
QGT_QuestWatchFrame:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT", QGT_Settings.QuestWatch.Left, QGT_Settings.QuestWatch.Bottom);
end
end
return;
end
 
local numHeaders = 0;
local numTitles = 0;
local watchItemIndex = 0;
local oldWatchItems = QGT_WATCHFRAME_NUM_ITEMS;
local sliderVal = QGT_QuestWatchFrameSlider:GetValue();
local lastQuestWatch = 1;
for i= 1, QGT_WatchLines do
j = i - sliderVal;
if (j > watchLines) then
j = j - 1;
break;
end
if (i > sliderVal) then
watchText = _G["QGT_QuestWatchLine"..j];
watchTextTag = _G["QGT_QuestWatchLine"..j.."Tag"];
watchNormalText = _G["QGT_QuestWatchLine"..j.."NormalText"];
watchTextHighlight = _G["QGT_QuestWatchLine"..j.."Highlight"];
watchText:SetText(QGT_WatchLine[i].Text);
if (QGT_WatchLine[i].TextColor == nil) then
watchNormalText:SetTextColor(1, 1, 1);
else
watchNormalText:SetTextColor(QGT_WatchLine[i].TextColor.r,QGT_WatchLine[i].TextColor.g,QGT_WatchLine[i].TextColor.b);
end
watchText.qID = QGT_WatchLine[i].qID;
watchTextTag:SetText(QGT_WatchLine[i].Tag);
watchTextTag:Show();
 
if (QGT_WatchLine[i].isHeader == true) then
if ( j > 1 ) then
watchText:SetPoint("TOPLEFT", "QGT_QuestWatchLine"..(j - 1), "BOTTOMLEFT", 0, -6);
numHeaders = numHeaders + 1;
end
watchText:SetNormalTexture("Interface\\Buttons\\UI-SortArrow");
watchNormalText:SetPoint("LEFT", "QGT_QuestWatchLine"..j, "LEFT", 8, 0);
if (QGT_WatchLine[i].Text == nil) then QGT_WatchLine[i].Text = QG_UNKNOWN; end
if (QGT_WatchHeaders[QGT_WatchLine[i].Text] ~= false) then
QGT_WatchHeaders[QGT_WatchLine[i].Text] = true;
_G["QGT_QuestWatchLine"..j.."Arrow"]:SetTexCoord(0, 0.5, 0, 1);
else
_G["QGT_QuestWatchLine"..j.."Arrow"]:SetTexCoord(0.5, 0, 0, 0, 0.5, 1, 0, 1);
end
elseif (QGT_WatchLine[i].isTitle == true) then
if ( j > 1 ) then
watchText:SetPoint("TOPLEFT", "QGT_QuestWatchLine"..(j - 1), "BOTTOMLEFT", 0, -4);
numTitles = numTitles + 1;
end
watchText:SetNormalTexture("");
watchNormalText:SetPoint("LEFT", "QGT_QuestWatchLine"..j, "LEFT", 0, 0);
 
if (QGT_QuestTimer[watchText.qID]) then
watchTextTag:SetText(SecondsToTime(QGT_QuestTimer[watchText.qID]));
watchText:SetScript("OnUpdate",
function (self)
QGT_UpdateQuestTimers(GetQuestTimers());
if (QGT_QuestTimer[self.qID]) then
_G[self:GetName().."Tag"]:SetText(SecondsToTime(QGT_QuestTimer[self.qID]));
local tempWidth = _G[self:GetName().."Tag"]:GetWidth() + 8;
_G[self:GetName().."NormalText"]:SetWidth(240 - tempWidth);
else
self:SetScript("OnUpdate", nil);
end
end);
else
if (not QGT_Settings.ShowQuestPercent) then watchTextTag:Hide(); end
end
 
local link, item, charges = GetQuestLogSpecialItemInfo(watchText.qID);
if ( item and QGT_Settings.QuestItemIcons and QGT_WatchLine[i].Tag ~= COMPLETE ) then
watchItemIndex = watchItemIndex + 1;
itemButton = _G["QGT_WatchFrameItem"..watchItemIndex];
if ( not itemButton ) then
QGT_WATCHFRAME_NUM_ITEMS = watchItemIndex;
itemButton = CreateFrame("BUTTON", "QGT_WatchFrameItem" .. watchItemIndex, QGT_QuestWatchFrame, "WatchFrameItemButtonTemplate");
itemButton:SetScript("OnLeave", QGT_WatchFrameItem_OnLeave);
end
itemButton:Show();
itemButton:ClearAllPoints();
itemButton:SetID(watchText.qID);
SetItemButtonTexture(itemButton, item);
SetItemButtonCount(itemButton, charges);
itemButton.charges = charges;
WatchFrameItem_UpdateCooldown(itemButton);
itemButton.rangeTimer = -1;
if ((QGT_Settings.QuestWatch.Left * QGT_Settings.Scale) < 32) then
if (QGT_QuestWatchFrameSlider:GetAlpha() > 0) then
itemButton:SetPoint("TOPLEFT", watchText, "TOPRIGHT", 16, 0);
else
itemButton:SetPoint("TOPLEFT", watchText, "TOPRIGHT", 4, 0);
end
else
if ((QGT_QuestWatchFrameSlider:GetAlpha() > 0) and (((QGT_Settings.QuestWatch.Left + 256) * QGT_Settings.Scale) > (UIParent:GetWidth() - 16))) then
itemButton:SetPoint("TOPRIGHT", watchText, "TOPLEFT", -16, 0);
else
itemButton:SetPoint("TOPRIGHT", watchText, "TOPLEFT", -4, 0);
end
end
end
else
if (j > 1) then
watchText:SetPoint("TOPLEFT", "QGT_QuestWatchLine"..(j - 1), "BOTTOMLEFT", 0, 0);
end
watchText:SetNormalTexture("");
watchNormalText:SetPoint("LEFT", "QGT_QuestWatchLine"..j, "LEFT", 0, 0);
end
local tempWidth = watchTextTag:GetWidth() + 8;
watchNormalText:SetWidth(240 - tempWidth);
if (QGT_WatchLine[i].flashing) then
watchText.flashing = 1;
watchText:SetScript("OnUpdate", QGT_QuestWatchButton_OnUpdate);
watchTextHighlight:SetAlpha(0);
watchTextHighlight:Show();
else
watchText.flashing = 0;
watchTextHighlight:SetAlpha(0);
watchText:SetScript("OnUpdate", nil);
end
if (QGT_WatchLine[i].fading) then
watchText.fading = 1;
watchText:SetScript("OnUpdate", QGT_QuestWatchButton_OnUpdate);
watchTextHighlight:SetAlpha(1);
watchTextHighlight:Show();
end
watchText:Show();
lastQuestWatch = j;
end
end
 
QGT_QuestWatchFrame:Show();
local tempHeight = 16 + (numHeaders*6)+(numTitles*4)+((lastQuestWatch+1)*13);
QGT_QuestWatchFrame:SetHeight(tempHeight);
QGT_QuestWatchFrameSlider:SetHeight(tempHeight-16);
if (IsAddOnLoaded("MobMap") and (mobmap_hide_questtracker_buttons == false)) then
QGT_QuestWatchFrame:SetWidth(276);
else
QGT_QuestWatchFrame:SetWidth(256);
end
if (not QGT_QuestWatchFrame.isMoving) then
QGT_QuestWatchFrame:ClearAllPoints();
if (QGT_Settings.Anchor == "TOP") then
QGT_QuestWatchFrame:SetPoint("TOPLEFT", "UIParent", "BOTTOMLEFT", QGT_Settings.QuestWatch.Left, QGT_Settings.QuestWatch.Top);
QGT_Settings.QuestWatch.Bottom = QGT_QuestWatchFrame:GetBottom();
elseif (QGT_Settings.Anchor == "BOTTOM") then
QGT_QuestWatchFrame:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT", QGT_Settings.QuestWatch.Left, QGT_Settings.QuestWatch.Bottom);
QGT_Settings.QuestWatch.Top = QGT_QuestWatchFrame:GetTop();
end
end
QGT_QuestWatchFrameSlider:ClearAllPoints();
if (((QGT_Settings.QuestWatch.Left + 256) * QGT_Settings.Scale) > (UIParent:GetWidth() - 16)) then
QGT_QuestWatchFrameSlider:SetPoint("TOPLEFT", -14, -16);
else
QGT_QuestWatchFrameSlider:SetPoint("TOPRIGHT", 14, -16);
end
-- Hide unused watch lines
for i=j + 1, 40 do
_G["QGT_QuestWatchLine"..i]:Hide();
end
for i=watchItemIndex+1, oldWatchItems do
_G["QGT_WatchFrameItem"..i]:Hide();
end
 
if (IsAddOnLoaded("MobMap")) then
for i=1, 40 do
local frame = _G["QGT_QuestWatchLine"..i];
local button = _G["MobMapQGTWatchButton"..i];
if (frame:IsVisible() and (mobmap_hide_questtracker_buttons == false) and (frame.qID ~= nil)) then
local questobj=frame:GetText();
if(questobj) then
if (button==nil) then
button = CreateFrame("Frame","MobMapQGTWatchButton"..i, frame, "MobMapQuestButtonFrameTemplate");
button:ClearAllPoints();
button:SetPoint("RIGHT","QGT_QuestWatchLine"..i,"RIGHT",24,0);
button:SetAlpha(0.6);
button:SetFrameStrata("LOW");
_G[button:GetName().."Button"]:SetScript("OnEnter",
function (self)
QGT_ShowQuestTrackerSlider(self, true);
GameTooltip_AddNewbieTip(self, "MobMap",1.0,1.0,1.0,MOBMAP_QUEST_BUTTON_TOOLTIP);
end);
_G[button:GetName().."Button"]:SetScript("OnLeave",
function (self)
QGT_ShowQuestTrackerSlider(self, false);
GameTooltip:Hide();
end);
end
if (string.sub(questobj,1,2+strlen(QGT_Settings.Bullet))==" "..QGT_Settings.Bullet.." ") then
button.questobj=string.sub(questobj,3+strlen(QGT_Settings.Bullet));
button.questtitle=nil;
button.unknowntext=nil;
button:Show();
else
local title=questobj;
if(title~=nil) then
local filteredtitle=string.match(title,".*%] (.*)");
if(filteredtitle~=nil) then
title=filteredtitle;
end
end
button.questtitle=title;
button.questobj=nil;
button.unknowntext=nil;
button:Show();
end
end
else
if (button) then
button:Hide();
end
end
end
end
end
 
function QGT_QuestWatchGetObjColor(progress, alwaysColor)
local r, g, b;
if (QGT_Settings.ColorizeObj or alwaysColor) then
if (progress == 1) then
r = QGT_Settings.ColorizeObjComplete.r;
g = QGT_Settings.ColorizeObjComplete.g;
b = QGT_Settings.ColorizeObjComplete.b;
else
r = QGT_Settings.ColorizeObjZero.r + ((QGT_Settings.ColorizeObjFull.r - QGT_Settings.ColorizeObjZero.r) * progress);
g = QGT_Settings.ColorizeObjZero.g + ((QGT_Settings.ColorizeObjFull.g - QGT_Settings.ColorizeObjZero.g) * progress);
b = QGT_Settings.ColorizeObjZero.b + ((QGT_Settings.ColorizeObjFull.b - QGT_Settings.ColorizeObjZero.b) * progress);
end
else
if (progress == 1) then
r = HIGHLIGHT_FONT_COLOR.r;
g = HIGHLIGHT_FONT_COLOR.g;
b = HIGHLIGHT_FONT_COLOR.b;
else
r = GRAY_FONT_COLOR.r;
g = GRAY_FONT_COLOR.g;
b = GRAY_FONT_COLOR.b;
end
end
return r, g, b;
end
 
function QGT_AddQuestWatch(questIndex, watchTime)
local questLogTitleText, level, questTag, suggestedGroup, isHeader, isCollapsed, isComplete, isDaily = GetQuestLogTitle(questIndex);
if (isHeader) then
QGT_AddQuestWatchHeader(questLogTitleText);
return false;
end
if (QGT_WatchList[questLogTitleText] == nil) then
QGT_WatchList[questLogTitleText] = {};
end
if (QGT_WatchList[questLogTitleText].Watched) then
return true;
end
QGT_WatchList[questLogTitleText].Watched = true;
return true;
end
hooksecurefunc("AddQuestWatch", QGT_AddQuestWatch);
 
function QGT_AddQuestWatchHeader(questHeader)
local numEntries, numQuests = GetNumQuestLogEntries();
local inHeader = false;
 
for questIndex=1, numEntries do
local questLogTitleText, level, questTag, suggestedGroup, isHeader, isCollapsed, isComplete, isDaily = GetQuestLogTitle(questIndex);
if (isHeader) then
if (questLogTitleText == questHeader) then
inHeader = true;
else
inHeader = false;
end
end
if (inHeader and (not isHeader)) then
AddQuestWatch(questIndex);
end
end
end
 
function QGT_RemoveQuestWatch(questIndex, ...)
local questLogTitleText, level, questTag, suggestedGroup, isHeader, isCollapsed, isComplete, isDaily = GetQuestLogTitle(questIndex);
if (isHeader) then
QGT_RemoveQuestWatchHeader(questLogTitleText);
end
if (questLogTitleText) then
QGT_WatchList[questLogTitleText] = nil;
QGT_WatchQuests[questLogTitleText] = nil;
end
WatchFrame_Update();
end
hooksecurefunc("RemoveQuestWatch", QGT_RemoveQuestWatch);
 
function QGT_RemoveQuestWatchHeader(questHeader)
local numEntries, numQuests = GetNumQuestLogEntries();
local inHeader = false;
 
for questIndex=1, numEntries do
local questLogTitleText, level, questTag, suggestedGroup, isHeader, isCollapsed, isComplete, isDaily = GetQuestLogTitle(questIndex);
if (isHeader) then
if (questLogTitleText == questHeader) then
inHeader = true;
else
inHeader = false;
end
end
if (inHeader and (not isHeader)) then
RemoveQuestWatch(questIndex);
end
end
end
 
local old_IsQuestWatched = IsQuestWatched;
function IsQuestWatched(questIndex, ...)
local questLogTitleText, level, questTag, suggestedGroup, isHeader, isCollapsed, isComplete, isDaily = GetQuestLogTitle(questIndex);
if (QGT_WatchList[questLogTitleText] == nil) then
return false;
end
return QGT_WatchList[questLogTitleText].Watched;
end
 
function QGT_OnUpdate(elapsed)
QGT_CurrTime = QGT_CurrTime + elapsed;
if (QGT_CurrTime < 1) then return; end
 
local i, timer;
 
for i, timer in ipairs(QGT_Timer) do
timer.currTime = timer.currTime - 1;
if (timer.currTime == 0) then
timer.func(timer.arg1, timer.arg2, timer.arg3, timer.arg4);
timer.currTime = timer.interval;
timer.count = timer.count - 1;
if (timer.count < 0) then
timer.count = -1;
elseif (timer.count == 0) then
tremove(QGT_Timer, i);
i = i - 1;
end
end
end
 
QGT_CurrTime = 0;
end
 
function QGT_AddTimer(interval, count, func, arg1, arg2, arg3, arg4)
local tempTimer = {}
tempTimer.interval = interval;
tempTimer.currTime = interval;
tempTimer.count = count;
tempTimer.func = func;
tempTimer.arg1 = arg1;
tempTimer.arg2 = arg2;
tempTimer.arg3 = arg3;
tempTimer.arg4 = arg4;
tinsert(QGT_Timer, tempTimer);
end
 
function QGT_UIInfoMessage(arg1)
local questID=0;
local numEntries, numQuests = GetNumQuestLogEntries();
local i, ii, jj, itemName, numDone, numNeeded;
local questLogTitleText, level, questTag, suggestedGroup, isHeader, isCollapsed, isComplete, isDaily;
 
if (arg1 == nil) then return; end
 
for questID=1, numEntries, 1 do
questLogTitleText, level, questTag, suggestedGroup, isHeader, isCollapsed, isComplete, isDaily = GetQuestLogTitle(questID);
local numObjectives = GetNumQuestLeaderBoards(questID);
 
if (numObjectives ~= nil) then
for i=1, numObjectives, 1 do
local text, type, finished = GetQuestLogLeaderBoard(i,questID);
if (text ~= nil) then
local qi, qj, qitemName, qnumDone, qnumNeeded = string.find(text, QG_ITEM_REQ_STR);
if (qitemName == nil) then
qi, qj, qitemName, qnumDone = string.find(text, QG_ITEM_REQ_STR2);
qnumNeeded = 1;
end
if ((type == "item") or (type == "monster") or (type == "object")) then
if (type == "object") then type = "item"; end
ii, jj, itemName, numDone, numNeeded = string.find(arg1, QG_ITEM_REQ_STR);
if ((itemName == qitemName) and (numNeeded == qnumNeeded)) then
if (QGT_WatchFlash[questID] == nil) then QGT_WatchFlash[questID] = {}; end
QGT_WatchFlash[questID].fading = true;
QGT_WatchFlash[questID][i] = true;
end
elseif (type == "event") then
itemName = text;
numDone=1;
numNeeded=1;
if (arg1 == text.." ("..COMPLETE..")") then
if (QGT_WatchFlash[questID] == nil) then QGT_WatchFlash[questID] = {}; end
QGT_WatchFlash[questID].fading = true;
QGT_WatchFlash[questID][i] = true;
end
end
end
end
end
end
end
 
function QGT_RewardComplete_Click()
local qTitle = GetTitleText();
 
if (qTitle) then
QGT_WatchList[qTitle] = nil;
QGT_WatchQuests[qTitle] = nil;
end
end
hooksecurefunc("QuestRewardCompleteButton_OnClick", QGT_RewardComplete_Click);
 
function QGT_Abandon()
SetAbandonQuest();
local items = GetAbandonQuestItems();
if ( items ) then
StaticPopup_Hide("ABANDON_QUEST");
StaticPopup_Show("ABANDON_QUEST_WITH_ITEMS", GetAbandonQuestName(), items);
else
StaticPopup_Hide("ABANDON_QUEST_WITH_ITEMS");
StaticPopup_Show("ABANDON_QUEST", GetAbandonQuestName());
end
end
 
function QGT_AbandonQuest()
if (QGT_LastAbandonQuestTitle) then
QGT_WatchList[QGT_LastAbandonQuestTitle] = nil;
QGT_WatchQuests[QGT_LastAbandonQuestTitle] = nil;
end
end
hooksecurefunc("AbandonQuest", QGT_AbandonQuest);
 
function QGT_SetAbandonQuest()
QGT_LastAbandonQuestTitle = GetAbandonQuestName();
end
hooksecurefunc("SetAbandonQuest", QGT_SetAbandonQuest);
\ No newline at end of file
trunk/QuestGuru_Tracker/QuestGuru_Tracker.lua New file
0,0 → 1,710
QGT_Settings = {};
QGT_PlayerAlive = false;
QGT_VariablesLoaded = false;
QGT_ShowTracker = true;
QGT_PlayerInCombat = false;
 
BINDING_HEADER_QGT_HEADER = "QuestGuru Tracker";
BINDING_NAME_QGT_TOGGLE_TRACKER_KB = "Toggle QuestGuru Tracker";
 
local lastColorPick;
 
do
---------------------
-- Tracker Options --
---------------------
QGT_OptionsFrameTracker = CreateFrame("FRAME", "QGT_OptionsFrameTracker", QGT_OptionsFrame);
QGT_OptionsFrameTracker.name = "QG Tracker";
if (IsAddOnLoaded("QuestGuru")) then QGT_OptionsFrameTracker.parent = "QuestGuru"; end
QGT_OptionsFrameTracker.default = function () QGT_SetTrackerDefaults(); end;
InterfaceOptions_AddCategory(QGT_OptionsFrameTracker);
QGT_OptionsFrameTracker:SetScript("OnShow",
function ()
QGT_UpdateOptionsTrackerObjFade();
end);
 
QGT_OptionsFrameTrackerTitle = QGT_OptionsFrameTracker:CreateFontString("QGT_OptionsFrameTrackerTitle", "ARTWORK", "GameFontNormalLarge");
QGT_OptionsFrameTrackerTitle:SetPoint("TOPLEFT", 16, -16);
QGT_OptionsFrameTrackerTitle:SetJustifyH("LEFT");
QGT_OptionsFrameTrackerTitle:SetJustifyV("TOP");
QGT_OptionsFrameTrackerTitle:SetText("QuestGuru Tracker "..QG_OPTIONS);
 
QGT_OptionsFrameTrackerSubText = QGT_OptionsFrameTracker:CreateFontString("QGT_OptionsFrameTrackerSubText", "ARTWORK", "GameFontHighlightSmall");
QGT_OptionsFrameTrackerSubText:SetPoint("TOPLEFT", "QGT_OptionsFrameTrackerTitle", "BOTTOMLEFT", 0, -8);
QGT_OptionsFrameTrackerSubText:SetPoint("RIGHT", -32, 0);
QGT_OptionsFrameTrackerSubText:SetJustifyH("LEFT");
QGT_OptionsFrameTrackerSubText:SetJustifyV("TOP");
QGT_OptionsFrameTrackerSubText:SetHeight(24);
QGT_OptionsFrameTrackerSubText:SetText(QG_OPT_TRACKER_DESC);
 
QGT_OptionsFrameTrackerBorderToggle = CreateFrame("CheckButton", "QGT_OptionsFrameTrackerBorderToggle", QGT_OptionsFrameTracker, "QGT_InterfaceOptionsCheckButtonTemplate");
QGT_OptionsFrameTrackerBorderToggle:SetPoint("TOPLEFT", QGT_OptionsFrameTrackerSubText, "BOTTOMLEFT", -2, -8);
QGT_OptionsFrameTrackerBorderToggleText:SetText(QG_OPT_TRACKER_BORDER);
QGT_OptionsFrameTrackerBorderToggle.tooltipText = QG_OPT_TRACKER_BORDER_DESC;
QGT_OptionsFrameTrackerBorderToggle:SetScript("OnClick",
function ()
if (QGT_OptionsFrameTrackerBorderToggle:GetChecked()) then
QGT_Settings.ShowBorder = true;
else
QGT_Settings.ShowBorder = false;
end
QGT_SetQuestWatchBorder(QGT_Settings.ShowBorder);
QGT_SetAchievementWatchBorder(QGT_Settings.ShowBorder);
WatchFrame_Update();
end);
 
QGT_OptionsFrameQuestItemIconsToggle = CreateFrame("CheckButton", "QGT_OptionsFrameQuestItemIconsToggle", QGT_OptionsFrameTracker, "QGT_InterfaceOptionsCheckButtonTemplate");
QGT_OptionsFrameQuestItemIconsToggle:SetPoint("TOPLEFT", QGT_OptionsFrameTrackerBorderToggle, "BOTTOMLEFT", 0, 2);
QGT_OptionsFrameQuestItemIconsToggleText:SetText(QG_OPT_TRACKER_ITEMICONS);
QGT_OptionsFrameQuestItemIconsToggle.tooltipText = QG_OPT_TRACKER_ITEMICONS_DESC;
QGT_OptionsFrameQuestItemIconsToggle:SetScript("OnClick",
function ()
if (QGT_OptionsFrameQuestItemIconsToggle:GetChecked()) then
QGT_Settings.QuestItemIcons = true;
else
QGT_Settings.QuestItemIcons = false;
end
WatchFrame_Update();
end);
 
QGT_OptionsFrameTrackerClickThroughToggle = CreateFrame("CheckButton", "QGT_OptionsFrameTrackerClickThroughToggle", QGT_OptionsFrameTracker, "QGT_InterfaceOptionsCheckButtonTemplate");
QGT_OptionsFrameTrackerClickThroughToggle:SetPoint("TOPLEFT", QGT_OptionsFrameQuestItemIconsToggle, "BOTTOMLEFT", 0, 2);
QGT_OptionsFrameTrackerClickThroughToggleText:SetText(QG_OPT_TRACKER_CLICKTHROUGH);
QGT_OptionsFrameTrackerClickThroughToggle.tooltipText = QG_OPT_TRACKER_CLICKTHROUGH_DESC;
QGT_OptionsFrameTrackerClickThroughToggle:SetScript("OnClick",
function ()
if (QGT_OptionsFrameTrackerClickThroughToggle:GetChecked()) then
QGT_Settings.ClickThrough = true;
else
QGT_Settings.ClickThrough = false;
end
WatchFrame_Update();
end);
 
QGT_OptionsFrameTrackerHeadersToggle = CreateFrame("CheckButton", "QGT_OptionsFrameTrackerHeadersToggle", QGT_OptionsFrameTracker, "QGT_InterfaceOptionsCheckButtonTemplate");
QGT_OptionsFrameTrackerHeadersToggle:SetPoint("TOPLEFT", QGT_OptionsFrameTrackerSubText, "BOTTOMLEFT", 200, -8);
QGT_OptionsFrameTrackerHeadersToggleText:SetText(QG_OPT_TRACKER_HEADERS);
QGT_OptionsFrameTrackerHeadersToggle.tooltipText = QG_OPT_TRACKER_HEADERS_DESC;
QGT_OptionsFrameTrackerHeadersToggle:SetScript("OnClick",
function ()
if (QGT_OptionsFrameTrackerHeadersToggle:GetChecked()) then
QGT_Settings.ShowHeaders = true;
else
QGT_Settings.ShowHeaders = false;
end
WatchFrame_Update();
end);
 
QGT_OptionsFrameTrackerShowLevelsToggle = CreateFrame("CheckButton", "QGT_OptionsFrameTrackerShowLevelsToggle", QGT_OptionsFrameTracker, "QGT_InterfaceOptionsCheckButtonTemplate");
QGT_OptionsFrameTrackerShowLevelsToggle:SetPoint("TOPLEFT", QGT_OptionsFrameTrackerHeadersToggle, "BOTTOMLEFT", 0, 2);
QGT_OptionsFrameTrackerShowLevelsToggleText:SetText(QG_OPT_TRACKER_LEVELS);
QGT_OptionsFrameTrackerShowLevelsToggle.tooltipText = QG_OPT_TRACKER_LEVELS_DESC;
QGT_OptionsFrameTrackerShowLevelsToggle:SetScript("OnClick",
function ()
if (QGT_OptionsFrameTrackerShowLevelsToggle:GetChecked()) then
QGT_Settings.ShowLevels = true;
else
QGT_Settings.ShowLevels = false;
end
WatchFrame_Update();
end);
 
QGT_OptionsFrameTrackerQuestTooltipsToggle = CreateFrame("CheckButton", "QGT_OptionsFrameTrackerQuestTooltipsToggle", QGT_OptionsFrameTracker, "QGT_InterfaceOptionsCheckButtonTemplate");
QGT_OptionsFrameTrackerQuestTooltipsToggle:SetPoint("TOPLEFT", QGT_OptionsFrameTrackerShowLevelsToggle, "BOTTOMLEFT", 0, 2);
QGT_OptionsFrameTrackerQuestTooltipsToggleText:SetText(QG_OPT_TRACKER_QUEST_TOOLTIPS);
QGT_OptionsFrameTrackerQuestTooltipsToggle.tooltipText = QG_OPT_TRACKER_QUEST_TOOLTIPS_DESC;
QGT_OptionsFrameTrackerQuestTooltipsToggle:SetScript("OnClick",
function ()
if (QGT_OptionsFrameTrackerQuestTooltipsToggle:GetChecked()) then
QGT_Settings.ShowQuestTooltips = true;
else
QGT_Settings.ShowQuestTooltips = false;
end
end);
 
QGT_OptionsFrameTrackerPartyTooltipsToggle = CreateFrame("CheckButton", "QGT_OptionsFrameTrackerPartyTooltipsToggle", QGT_OptionsFrameTracker, "QGT_InterfaceOptionsCheckButtonTemplate");
QGT_OptionsFrameTrackerPartyTooltipsToggle:SetPoint("TOPLEFT", QGT_OptionsFrameTrackerQuestTooltipsToggle, "BOTTOMLEFT", 0, 2);
QGT_OptionsFrameTrackerPartyTooltipsToggleText:SetText(QG_OPT_TRACKER_PARTY_TOOLTIPS);
QGT_OptionsFrameTrackerPartyTooltipsToggle.tooltipText = QG_OPT_TRACKER_PARTY_TOOLTIPS_DESC;
QGT_OptionsFrameTrackerPartyTooltipsToggle:SetScript("OnClick",
function ()
if (QGT_OptionsFrameTrackerPartyTooltipsToggle:GetChecked()) then
QGT_Settings.ShowPartyTooltips = true;
else
QGT_Settings.ShowPartyTooltips = false;
end
end);
 
QGT_OptionsFrameTrackerQuestPercentToggle = CreateFrame("CheckButton", "QGT_OptionsFrameTrackerQuestPercentToggle", QGT_OptionsFrameTracker, "QGT_InterfaceOptionsCheckButtonTemplate");
QGT_OptionsFrameTrackerQuestPercentToggle:SetPoint("TOPLEFT", QGT_OptionsFrameTrackerPartyTooltipsToggle, "BOTTOMLEFT", 0, 2);
QGT_OptionsFrameTrackerQuestPercentToggleText:SetText(QG_OPT_TRACKER_PERCENT);
QGT_OptionsFrameTrackerQuestPercentToggle.tooltipText = QG_OPT_TRACKER_PERCENT_DESC;
QGT_OptionsFrameTrackerQuestPercentToggle:SetScript("OnClick",
function ()
if (QGT_OptionsFrameTrackerQuestPercentToggle:GetChecked()) then
QGT_Settings.ShowQuestPercent = true;
else
QGT_Settings.ShowQuestPercent = false;
end
WatchFrame_Update();
end);
 
QGT_OptionsFrameTrackerExpandUpToggle = CreateFrame("CheckButton", "QGT_OptionsFrameTrackerExpandUpToggle", QGT_OptionsFrameTracker, "QGT_InterfaceOptionsCheckButtonTemplate");
QGT_OptionsFrameTrackerExpandUpToggle:SetPoint("TOPLEFT", QGT_OptionsFrameTrackerQuestPercentToggle, "BOTTOMLEFT", 0, 2);
QGT_OptionsFrameTrackerExpandUpToggleText:SetText(QG_OPT_TRACKER_ANCHOR_BOTTOM);
QGT_OptionsFrameTrackerExpandUpToggle.tooltipText = QG_OPT_TRACKER_ANCHOR_BOTTOM_DESC;
QGT_OptionsFrameTrackerExpandUpToggle:SetScript("OnClick",
function ()
if (QGT_OptionsFrameTrackerExpandUpToggle:GetChecked()) then
QGT_Settings.Anchor = "BOTTOM";
else
QGT_Settings.Anchor = "TOP";
end
WatchFrame_Update();
end);
 
QGT_OptionsFrameTrackerHideCombatToggle = CreateFrame("CheckButton", "QGT_OptionsFrameTrackerHideCombatToggle", QGT_OptionsFrameTracker, "QGT_InterfaceOptionsCheckButtonTemplate");
QGT_OptionsFrameTrackerHideCombatToggle:SetPoint("TOPLEFT", QGT_OptionsFrameTrackerExpandUpToggle, "BOTTOMLEFT", 0, 2);
QGT_OptionsFrameTrackerHideCombatToggleText:SetText(QG_OPT_TRACKER_HIDECOMBAT);
QGT_OptionsFrameTrackerHideCombatToggle.tooltipText = QG_OPT_TRACKER_HIDECOMBAT_DESC;
QGT_OptionsFrameTrackerHideCombatToggle:SetScript("OnClick",
function ()
if (QGT_OptionsFrameTrackerHideCombatToggle:GetChecked()) then
QGT_Settings.HideDuringCombat = true;
else
QGT_Settings.HideDuringCombat = false;
end
WatchFrame_Update();
end);
 
QGT_OptionsFrameTrackerHideBlizzTrackToggle = CreateFrame("CheckButton", "QGT_OptionsFrameTrackerHideBlizzTrackToggle", QGT_OptionsFrameTracker, "QGT_InterfaceOptionsCheckButtonTemplate");
QGT_OptionsFrameTrackerHideBlizzTrackToggle:SetPoint("TOPLEFT", QGT_OptionsFrameTrackerHideCombatToggle, "BOTTOMLEFT", 0, 2);
QGT_OptionsFrameTrackerHideBlizzTrackToggleText:SetText(QG_OPT_TRACKER_HIDEBLIZZTRACK);
QGT_OptionsFrameTrackerHideBlizzTrackToggle.tooltipText = QG_OPT_TRACKER_HIDEBLIZZTRACK_DESC;
QGT_OptionsFrameTrackerHideBlizzTrackToggle:SetScript("OnClick",
function ()
if (QGT_OptionsFrameTrackerHideBlizzTrackToggle:GetChecked()) then
QGT_Settings.HideBlizzardTracker = true;
else
QGT_Settings.HideBlizzardTracker = false;
end
WatchFrame_Update();
end);
 
QGT_OptionsFrameTrackerPinToggle = CreateFrame("CheckButton", "QGT_OptionsFrameTrackerPinToggle", QGT_OptionsFrameTracker, "QGT_InterfaceOptionsCheckButtonTemplate");
QGT_OptionsFrameTrackerPinToggle:SetPoint("TOPLEFT", QGT_OptionsFrameTrackerClickThroughToggle, "BOTTOMLEFT", 0, 2);
QGT_OptionsFrameTrackerPinToggleText:SetText(QG_OPT_TRACKER_PIN);
QGT_OptionsFrameTrackerPinToggle.tooltipText = QG_OPT_TRACKER_PIN_DESC;
QGT_OptionsFrameTrackerPinToggle:SetScript("OnClick",
function ()
if (QGT_OptionsFrameTrackerPinToggle:GetChecked()) then
QGT_Settings.Pin = true;
else
QGT_Settings.Pin = false;
end
WatchFrame_Update();
end);
 
QGT_OptionsFrameTrackerAutoUnTrackToggle = CreateFrame("CheckButton", "QGT_OptionsFrameTrackerAutoUnTrackToggle", QGT_OptionsFrameTracker, "QGT_InterfaceOptionsCheckButtonTemplate");
QGT_OptionsFrameTrackerAutoUnTrackToggle:SetPoint("TOPLEFT", QGT_OptionsFrameTrackerPinToggle, "BOTTOMLEFT", 0, 2);
QGT_OptionsFrameTrackerAutoUnTrackToggleText:SetText(QG_OPT_TRACKER_AUTOUNTRACK);
QGT_OptionsFrameTrackerAutoUnTrackToggle.tooltipText = QG_OPT_TRACKER_AUTOUNTRACK_DESC;
QGT_OptionsFrameTrackerAutoUnTrackToggle:SetScript("OnClick",
function ()
if (QGT_OptionsFrameTrackerAutoUnTrackToggle:GetChecked()) then
QGT_Settings.AutoUnTrack = true;
else
QGT_Settings.AutoUnTrack = false;
end
end);
 
QGT_OptionsFrameTrackerShowCompletedObjToggle = CreateFrame("CheckButton", "QGT_OptionsFrameTrackerShowCompletedObjToggle", QGT_OptionsFrameTracker, "QGT_InterfaceOptionsCheckButtonTemplate");
QGT_OptionsFrameTrackerShowCompletedObjToggle:SetPoint("TOPLEFT", QGT_OptionsFrameTrackerAutoUnTrackToggle, "BOTTOMLEFT", 0, 2);
QGT_OptionsFrameTrackerShowCompletedObjToggleText:SetText(QG_OPT_TRACKER_COMPLETE_OBJ);
QGT_OptionsFrameTrackerShowCompletedObjToggle.tooltipText = QG_OPT_TRACKER_COMPLETE_OBJ_DESC;
QGT_OptionsFrameTrackerShowCompletedObjToggle:SetScript("OnClick",
function ()
if (QGT_OptionsFrameTrackerShowCompletedObjToggle:GetChecked()) then
QGT_Settings.ShowCompletedObj = true;
else
QGT_Settings.ShowCompletedObj = false;
end
WatchFrame_Update();
end);
 
QGT_OptionsFrameTrackerColorizeObjToggle = CreateFrame("CheckButton", "QGT_OptionsFrameTrackerColorizeObjToggle", QGT_OptionsFrameTracker, "QGT_InterfaceOptionsCheckButtonTemplate");
QGT_OptionsFrameTrackerColorizeObjToggle:SetPoint("TOPLEFT", QGT_OptionsFrameTrackerShowCompletedObjToggle, "BOTTOMLEFT", 0, 2);
QGT_OptionsFrameTrackerColorizeObjToggleText:SetText(QG_OPT_TRACKER_COLOR_OBJ);
QGT_OptionsFrameTrackerColorizeObjToggle.tooltipText = QG_OPT_TRACKER_COLOR_OBJ_DESC;
QGT_OptionsFrameTrackerColorizeObjToggle:SetScript("OnClick",
function ()
if (QGT_OptionsFrameTrackerColorizeObjToggle:GetChecked()) then
QGT_Settings.ColorizeObj = true;
else
QGT_Settings.ColorizeObj = false;
end
WatchFrame_Update();
end);
 
QGT_OptionsFrameTrackerZeroColor = CreateFrame("Button", "QGT_OptionsFrameTrackerZeroColor", QGT_OptionsFrameTracker, "QGT_ColorPickerButtonTemplate");
QGT_OptionsFrameTrackerZeroColor:SetPoint("TOPLEFT", QGT_OptionsFrameTrackerColorizeObjToggle, "BOTTOMLEFT", 0, -6);
QGT_OptionsFrameTrackerZeroColorSwatch:SetTexture(1.0, 1.0, 1.0, 1.0);
QGT_OptionsFrameTrackerZeroColor.tooltipText = QG_OPT_TRACKER_OBJ_COLOR_0;
QGT_OptionsFrameTrackerZeroColor:SetScript("OnClick",
function ()
ColorPickerFrame.hasOpacity = false;
ColorPickerFrame.func = QGT_OptionsSaveColor;
lastColorPick = "TrackerZero";
ColorPickerFrame:SetColorRGB(QGT_Settings.ColorizeObjZero.r, QGT_Settings.ColorizeObjZero.g, QGT_Settings.ColorizeObjZero.b);
ColorPickerFrame:Show();
ColorPickerFrame:SetPoint("TOPLEFT", InterfaceOptionsFrame, "TOPRIGHT", -50, 0);
end);
QGT_OptionsFrameTrackerZeroLabel = QGT_OptionsFrameTracker:CreateFontString("QGT_OptionsFrameTrackerZeroLabel", "ARTWORK", "GameFontNormalSmall");
QGT_OptionsFrameTrackerZeroLabel:SetPoint("TOP", "QGT_OptionsFrameTrackerZeroColor", "BOTTOM", 0, 0);
QGT_OptionsFrameTrackerZeroLabel:SetText("0%");
 
temp = QGT_OptionsFrameTracker:CreateTexture("QGT_OptionsFrameTrackerGradient", "ARTWORK");
temp:SetWidth(80);
temp:SetHeight(12);
temp:SetTexture(1, 1, 1);
temp:SetPoint("TOPLEFT", "QGT_OptionsFrameTrackerZeroColor", "TOPRIGHT", 12, -2);
 
QGT_OptionsFrameTrackerFullColor = CreateFrame("Button", "QGT_OptionsFrameTrackerFullColor", QGT_OptionsFrameTracker, "QGT_ColorPickerButtonTemplate");
QGT_OptionsFrameTrackerFullColor:SetPoint("TOPLEFT", "QGT_OptionsFrameTrackerGradient", "TOPRIGHT", 12, 2);
QGT_OptionsFrameTrackerFullColorSwatch:SetTexture(1.0, 1.0, 1.0, 1.0);
QGT_OptionsFrameTrackerFullColor.tooltipText = QG_OPT_TRACKER_OBJ_COLOR_99;
QGT_OptionsFrameTrackerFullColor:SetScript("OnClick",
function ()
ColorPickerFrame.hasOpacity = false;
ColorPickerFrame.func = QGT_OptionsSaveColor;
lastColorPick = "TrackerFull";
ColorPickerFrame:SetColorRGB(QGT_Settings.ColorizeObjFull.r, QGT_Settings.ColorizeObjFull.g, QGT_Settings.ColorizeObjFull.b);
ColorPickerFrame:Show();
ColorPickerFrame:SetPoint("TOPLEFT", InterfaceOptionsFrame, "TOPRIGHT", -50, 0);
end);
QGT_OptionsFrameTrackerFullLabel = QGT_OptionsFrameTracker:CreateFontString("QGT_OptionsFrameTrackerFullLabel", "ARTWORK", "GameFontNormalSmall");
QGT_OptionsFrameTrackerFullLabel:SetPoint("TOP", "QGT_OptionsFrameTrackerFullColor", "BOTTOM", 0, 0);
QGT_OptionsFrameTrackerFullLabel:SetText("99%");
 
QGT_OptionsFrameTrackerCompleteColor = CreateFrame("Button", "QGT_OptionsFrameTrackerCompleteColor", QGT_OptionsFrameTracker, "QGT_ColorPickerButtonTemplate");
QGT_OptionsFrameTrackerCompleteColor:SetPoint("TOPLEFT", QGT_OptionsFrameTrackerFullColor, "TOPRIGHT", 30, 0);
QGT_OptionsFrameTrackerCompleteColorSwatch:SetTexture(1.0, 1.0, 1.0, 1.0);
QGT_OptionsFrameTrackerCompleteColor.tooltipText = QG_OPT_TRACKER_OBJ_COLOR_COMPLETE;
QGT_OptionsFrameTrackerCompleteColor:SetScript("OnClick",
function ()
ColorPickerFrame.hasOpacity = false;
ColorPickerFrame.func = QGT_OptionsSaveColor;
lastColorPick = "TrackerComplete";
ColorPickerFrame:SetColorRGB(QGT_Settings.ColorizeObjComplete.r, QGT_Settings.ColorizeObjComplete.g, QGT_Settings.ColorizeObjComplete.b);
ColorPickerFrame:Show();
ColorPickerFrame:SetPoint("TOPLEFT", InterfaceOptionsFrame, "TOPRIGHT", -50, 0);
end);
QGT_OptionsFrameTrackerCompleteLabel = QGT_OptionsFrameTracker:CreateFontString("QGT_OptionsFrameTrackerCompleteLabel", "ARTWORK", "GameFontNormalSmall");
QGT_OptionsFrameTrackerCompleteLabel:SetPoint("TOP", "QGT_OptionsFrameTrackerCompleteColor", "BOTTOM", 0, 0);
QGT_OptionsFrameTrackerCompleteLabel:SetText(COMPLETE);
 
QGT_OptionsFrameTrackerBulletLabel = QGT_OptionsFrameTracker:CreateFontString("QGT_OptionsFrameTrackerBulletLabel", "ARTWORK", "GameFontNormal");
QGT_OptionsFrameTrackerBulletLabel:SetPoint("TOPLEFT", "QGT_OptionsFrameTrackerZeroLabel", "BOTTOMLEFT", 0, -6);
QGT_OptionsFrameTrackerBulletLabel:SetText(QG_OPT_TRACKER_BULLET);
 
QGT_OptionsFrameTrackerBulletText = CreateFrame("EditBox", "QGT_OptionsFrameTrackerBulletText", QGT_OptionsFrameTracker, "InputBoxTemplate");
QGT_OptionsFrameTrackerBulletText:SetPoint("LEFT", "QGT_OptionsFrameTrackerBulletLabel", "RIGHT", 8, 0);
QGT_OptionsFrameTrackerBulletText:SetHeight(20);
QGT_OptionsFrameTrackerBulletText:SetWidth(36);
QGT_OptionsFrameTrackerBulletText:SetAutoFocus(false);
QGT_OptionsFrameTrackerBulletText:SetScript("OnShow",
function (self)
QGT_OptionsFrameTrackerBulletText:SetCursorPosition(0);
end);
QGT_OptionsFrameTrackerBulletText:SetScript("OnTextChanged",
function ()
QGT_Settings.Bullet = QGT_OptionsFrameTrackerBulletText:GetText();
WatchFrame_Update();
end);
QGT_OptionsFrameTrackerBulletText:SetScript("OnEscapePressed",
function (self)
self:ClearFocus();
end);
 
QGT_OptionsFrameTrackerAlpha = CreateFrame("Slider", "QGT_OptionsFrameTrackerAlpha", QGT_OptionsFrameTracker, "OptionsSliderTemplate");
QGT_OptionsFrameTrackerAlpha:SetWidth(300);
QGT_OptionsFrameTrackerAlpha:SetHeight(16);
QGT_OptionsFrameTrackerAlpha:SetPoint("CENTER", QGT_OptionsFrameTracker, "BOTTOM", 0, 24);
QGT_OptionsFrameTrackerAlphaText:SetText(QG_OPT_TRACKER_ALPHA);
QGT_OptionsFrameTrackerAlphaHigh:SetText("100%");
QGT_OptionsFrameTrackerAlphaLow:SetText("0%");
QGT_OptionsFrameTrackerAlpha:SetMinMaxValues(0,1);
QGT_OptionsFrameTrackerAlpha:SetValueStep(0.01);
QGT_OptionsFrameTrackerAlpha:SetValue(0.7);
QGT_OptionsFrameTrackerAlpha:SetScript("OnValueChanged",
function ()
QGT_Settings.Alpha = QGT_OptionsFrameTrackerAlpha:GetValue();
QGT_QuestWatchFrame:SetBackdropColor(0,0,0,QGT_Settings.Alpha);
QGT_QuestWatchFrameBackground:SetGradientAlpha("VERTICAL", 0, 0, 0, 0, 0.3, 0.3, 0.3, QGT_Settings.Alpha);
QGT_AchievementWatchFrame:SetBackdropColor(0,0,0,QGT_Settings.Alpha);
QGT_AchievementWatchFrameBackground:SetGradientAlpha("VERTICAL", 0, 0, 0, 0, 0.3, 0.3, 0.3, QGT_Settings.Alpha);
QGT_OptionsFrameTrackerAlphaText:SetText(QG_OPT_TRACKER_ALPHA.." ("..abs(ceil((QGT_Settings.Alpha * 100)-0.5)).."%)");
end);
 
QGT_OptionsFrameTrackerScale = CreateFrame("Slider", "QGT_OptionsFrameTrackerScale", QGT_OptionsFrameTracker, "OptionsSliderTemplate");
QGT_OptionsFrameTrackerScale:SetWidth(300);
QGT_OptionsFrameTrackerScale:SetHeight(16);
QGT_OptionsFrameTrackerScale:SetPoint("CENTER", QGT_OptionsFrameTracker, "BOTTOM", 0, 58);
QGT_OptionsFrameTrackerScaleText:SetText(QG_OPT_TRACKER_SIZE);
QGT_OptionsFrameTrackerScaleHigh:SetText("150%");
QGT_OptionsFrameTrackerScaleLow:SetText("50%");
QGT_OptionsFrameTrackerScale:SetMinMaxValues(0.5,1.5);
QGT_OptionsFrameTrackerScale:SetValueStep(0.01);
QGT_OptionsFrameTrackerScale:SetValue(0.9);
QGT_OptionsFrameTrackerScale:SetScript("OnValueChanged",
function ()
QGT_Settings.Scale = QGT_OptionsFrameTrackerScale:GetValue();
QGT_OptionsFrameTrackerScaleText:SetText(QG_OPT_TRACKER_SIZE.." ("..ceil((QGT_Settings.Scale * 100)-0.5).."%)");
QGT_QuestWatchFrame:SetScale(QGT_Settings.Scale);
QGT_AchievementWatchFrame:SetScale(QGT_Settings.Scale);
end);
 
QGT_OptionsFrameTrackerLines = CreateFrame("Slider", "QGT_OptionsFrameTrackerLines", QGT_OptionsFrameTracker, "OptionsSliderTemplate");
QGT_OptionsFrameTrackerLines:SetWidth(300);
QGT_OptionsFrameTrackerLines:SetHeight(16);
QGT_OptionsFrameTrackerLines:SetPoint("CENTER", QGT_OptionsFrameTracker, "BOTTOM", 0, 92);
QGT_OptionsFrameTrackerLinesText:SetText(QG_OPT_TRACKER_MAX_LINES);
QGT_OptionsFrameTrackerLinesHigh:SetText("40");
QGT_OptionsFrameTrackerLinesLow:SetText("7");
QGT_OptionsFrameTrackerLines:SetMinMaxValues(7,40);
QGT_OptionsFrameTrackerLines:SetValueStep(1);
QGT_OptionsFrameTrackerLines:SetValue(30);
QGT_OptionsFrameTrackerLines:SetScript("OnValueChanged",
function ()
QGT_Settings.Lines = QGT_OptionsFrameTrackerLines:GetValue();
QGT_OptionsFrameTrackerLinesText:SetText(QG_OPT_TRACKER_MAX_LINES.." "..QGT_Settings.Lines);
WatchFrame_Update();
end);
 
end
 
function QGT_OptionsSaveColor()
local r,g,b = ColorPickerFrame:GetColorRGB();
 
if (lastColorPick == "TrackerZero") then
QGT_Settings.ColorizeObjZero.r = r;
QGT_Settings.ColorizeObjZero.g = g;
QGT_Settings.ColorizeObjZero.b = b;
QGT_UpdateOptionsTrackerObjFade();
WatchFrame_Update();
elseif (lastColorPick == "TrackerFull") then
QGT_Settings.ColorizeObjFull.r = r;
QGT_Settings.ColorizeObjFull.g = g;
QGT_Settings.ColorizeObjFull.b = b;
QGT_UpdateOptionsTrackerObjFade();
WatchFrame_Update();
elseif (lastColorPick == "TrackerComplete") then
QGT_Settings.ColorizeObjComplete.r = r;
QGT_Settings.ColorizeObjComplete.g = g;
QGT_Settings.ColorizeObjComplete.b = b;
QGT_OptionsFrameTrackerCompleteColorSwatch:SetTexture(r, g, b);
WatchFrame_Update();
end
end
 
function QGT_UpdateOptionsTrackerObjFade()
local r, g, b;
 
QGT_OptionsFrameTrackerGradient:SetGradient("HORIZONTAL", QGT_Settings.ColorizeObjZero.r, QGT_Settings.ColorizeObjZero.g, QGT_Settings.ColorizeObjZero.b, QGT_Settings.ColorizeObjFull.r, QGT_Settings.ColorizeObjFull.g, QGT_Settings.ColorizeObjFull.b);
 
r, g, b = QGT_QuestWatchGetObjColor(0, true);
QGT_OptionsFrameTrackerZeroColorSwatch:SetTexture(r, g, b);
 
r, g, b = QGT_QuestWatchGetObjColor(0.99, true);
QGT_OptionsFrameTrackerFullColorSwatch:SetTexture(r, g, b);
 
r, g, b = QGT_QuestWatchGetObjColor(1, true);
QGT_OptionsFrameTrackerCompleteColorSwatch:SetTexture(r, g, b);
end
 
function QGT_SetTrackerDefaults()
QGT_Settings.ShowBorder = true;
QGT_SetQuestWatchBorder(QGT_Settings.ShowBorder);
QGT_SetAchievementWatchBorder(QGT_Settings.ShowBorder);
QGT_OptionsFrameTrackerBorderToggle:SetChecked(QGT_Settings.ShowBorder);
 
QGT_Settings.Scale = 0.9;
QGT_OptionsFrameTrackerScaleText:SetText(QG_OPT_TRACKER_SIZE.." ("..ceil((QGT_Settings.Scale * 100)-0.5).."%)");
QGT_OptionsFrameTrackerScale:SetValue(QGT_Settings.Scale);
QGT_QuestWatchFrame:SetScale(QGT_Settings.Scale);
QGT_AchievementWatchFrame:SetScale(QGT_Settings.Scale);
 
QGT_Settings.Lines = 30;
QGT_OptionsFrameTrackerLinesText:SetText(QG_OPT_TRACKER_MAX_LINES.." "..QGT_Settings.Lines);
QGT_OptionsFrameTrackerLines:SetValue(QGT_Settings.Lines);
 
QGT_Settings.Minimized = false;
 
QGT_Settings.Alpha = 0.7;
QGT_QuestWatchFrame:SetBackdropColor(0,0,0,QGT_Settings.Alpha);
QGT_QuestWatchFrameBackground:SetGradientAlpha("VERTICAL", 0, 0, 0, 0, 0.3, 0.3, 0.3, QGT_Settings.Alpha);
QGT_AchievementWatchFrame:SetBackdropColor(0,0,0,QGT_Settings.Alpha);
QGT_AchievementWatchFrameBackground:SetGradientAlpha("VERTICAL", 0, 0, 0, 0, 0.3, 0.3, 0.3, QGT_Settings.Alpha);
QGT_OptionsFrameTrackerAlphaText:SetText(QG_OPT_TRACKER_ALPHA.." ("..abs(ceil((QGT_Settings.Alpha * 100)-0.5)).."%)");
QGT_OptionsFrameTrackerAlpha:SetValue(QGT_Settings.Alpha);
 
QGT_Settings.ShowHeaders = true;
QGT_OptionsFrameTrackerHeadersToggle:SetChecked(QGT_Settings.ShowHeaders);
 
QGT_Settings.QuestItemIcons = true;
QGT_OptionsFrameQuestItemIconsToggle:SetChecked(QGT_Settings.QuestItemIcons);
 
QGT_Settings.ShowLevels = true;
QGT_OptionsFrameTrackerShowLevelsToggle:SetChecked(QGT_Settings.ShowLevels);
 
QGT_Settings.Pin = false;
QGT_OptionsFrameTrackerPinToggle:SetChecked(QGT_Settings.Pin);
 
QGT_Settings.HideDuringCombat = false;
QGT_OptionsFrameTrackerHideCombatToggle:SetChecked(QGT_Settings.HideDuringCombat);
 
QGT_Settings.HideBlizzardTracker = true;
QGT_OptionsFrameTrackerHideBlizzTrackToggle:SetChecked(QGT_Settings.HideBlizzardTracker);
 
QGT_Settings.AutoUnTrack = false;
QGT_OptionsFrameTrackerAutoUnTrackToggle:SetChecked(QGT_Settings.AutoUnTrack);
 
QGT_Settings.ShowCompletedObj = true;
QGT_OptionsFrameTrackerShowCompletedObjToggle:SetChecked(QGT_Settings.ShowCompletedObj);
 
QGT_Settings.ColorizeObj = false;
QGT_OptionsFrameTrackerColorizeObjToggle:SetChecked(QGT_Settings.ColorizeObj);
QGT_Settings.ColorizeObjZero.r = 0.8;
QGT_Settings.ColorizeObjZero.g = 0.2;
QGT_Settings.ColorizeObjZero.b = 0.8;
QGT_Settings.ColorizeObjFull.r = 0.3;
QGT_Settings.ColorizeObjFull.g = 0.8;
QGT_Settings.ColorizeObjFull.b = 1.0;
QGT_Settings.ColorizeObjComplete.r = 0.1;
QGT_Settings.ColorizeObjComplete.g = 0.9;
QGT_Settings.ColorizeObjComplete.b = 1.0;
 
QGT_Settings.ClickThrough = false;
QGT_OptionsFrameTrackerClickThroughToggle:SetChecked(QGT_Settings.ClickThrough);
 
QGT_Settings.ShowQuestTooltips = true;
QGT_OptionsFrameTrackerQuestTooltipsToggle:SetChecked(QGT_Settings.ShowQuestTooltips);
 
QGT_Settings.ShowPartyTooltips = true;
QGT_OptionsFrameTrackerPartyTooltipsToggle:SetChecked(QGT_Settings.ShowPartyTooltips);
 
QGT_Settings.ShowQuestPercent = true;
QGT_OptionsFrameTrackerQuestPercentToggle:SetChecked(QGT_Settings.ShowQuestPercent);
 
QGT_Settings.Bullet = "-";
QGT_OptionsFrameTrackerBulletText:SetText(QGT_Settings.Bullet);
 
QGT_Settings.Anchor = "TOP";
QGT_OptionsFrameTrackerExpandUpToggle:SetChecked(false);
 
QGT_Settings.QuestWatchSort = 0; -- Default to Header/Quest style, like QuestLog (1=Sorted by proximity)
 
QGT_UpdateOptionsTrackerObjFade();
WatchFrame_Update();
end
 
-- QuestWatch functions
function QGT_WatchFrame_Update()
if (QGT_Settings.HideBlizzardTracker) then
WatchFrame:Hide();
else
WatchFrame:Show();
end
 
if (not (QGT_PlayerAlive and QGT_VariablesLoaded)) then return; end
 
if ((not QGT_ShowTracker) or (QGT_PlayerInCombat and QGT_Settings.HideDuringCombat)) then
QGT_QuestWatchFrame:Hide();
QGT_AchievementWatchFrame:Hide();
return;
end
 
if ((QGT_Settings.LastTracker == "Q") or QGT_Settings.BothTrackers) then
QGT_QuestWatch_Update();
else
QGT_QuestWatchFrame:Hide();
end
if ((QGT_Settings.LastTracker == "A") or QGT_Settings.BothTrackers) then
QGT_AchievementWatch_Update();
else
QGT_AchievementWatchFrame:Hide();
end
end
hooksecurefunc("WatchFrame_Update", QGT_WatchFrame_Update);
 
function WatchFrame_GetRemainingSpace()
return 1000;
end
 
function QGT_QuestWatchLoadSettings()
if (QGT_WatchHeaders == nil) then
QGT_WatchHeaders = {};
end
if (QGT_WatchQuests == nil) then
QGT_WatchQuests = {};
end
if (QGT_WatchAchievements == nil) then
QGT_WatchAchievements = {};
end
 
if (QGT_Settings == nil) then
QGT_Settings = {};
end
if (QGT_Settings.QuestWatch == nil) then
QGT_Settings.QuestWatch = {};
end
if (QGT_Settings.AchievementWatch == nil) then
QGT_Settings.AchievementWatch = {};
end
if (QGT_Settings.ShowBorder ~= false) then
QGT_Settings.ShowBorder = true;
end
QGT_OptionsFrameTrackerBorderToggle:SetChecked(QGT_Settings.ShowBorder);
QGT_SetQuestWatchBorder(QGT_Settings.ShowBorder);
QGT_SetAchievementWatchBorder(QGT_Settings.ShowBorder);
if (QGT_Settings.Scale == nil) then
QGT_Settings.Scale = 0.9;
end
QGT_OptionsFrameTrackerScaleText:SetText(QG_OPT_TRACKER_SIZE.." ("..ceil((QGT_Settings.Scale * 100)-0.5).."%)");
QGT_OptionsFrameTrackerScale:SetValue(QGT_Settings.Scale);
QGT_QuestWatchFrame:SetScale(QGT_Settings.Scale);
QGT_AchievementWatchFrame:SetScale(QGT_Settings.Scale);
 
if (QGT_Settings.Lines == nil) then
QGT_Settings.Lines = 30;
end
QGT_OptionsFrameTrackerLinesText:SetText(QG_OPT_TRACKER_MAX_LINES.." "..QGT_Settings.Lines);
QGT_OptionsFrameTrackerLines:SetValue(QGT_Settings.Lines);
 
if (QGT_Settings.QuestWatch.Minimized ~= true) then
QGT_Settings.QuestWatch.Minimized = false;
end
if (QGT_Settings.QuestWatch.AutoMinimize ~= true) then
QGT_Settings.QuestWatch.AutoMinimize = false;
end
if (QGT_Settings.AchievementWatch.Minimized ~= true) then
QGT_Settings.AchievementWatch.Minimized = false;
end
if (QGT_Settings.AchievementWatch.AutoMinimize ~= true) then
QGT_Settings.AchievementWatch.AutoMinimize = false;
end
if (QGT_Settings.Anchor == nil) then
QGT_Settings.Anchor = "TOP";
end
if (QGT_Settings.Anchor == "BOTTOM") then
QGT_OptionsFrameTrackerExpandUpToggle:SetChecked(true);
else
QGT_OptionsFrameTrackerExpandUpToggle:SetChecked(false);
end
 
if (QGT_Settings.Alpha == nil) then
QGT_Settings.Alpha = 0.7;
end
QGT_QuestWatchFrame:SetBackdropColor(0,0,0,QGT_Settings.Alpha);
QGT_QuestWatchFrameBackground:SetGradientAlpha("VERTICAL", 0, 0, 0, 0, 0.3, 0.3, 0.3, QGT_Settings.Alpha);
QGT_AchievementWatchFrame:SetBackdropColor(0,0,0,QGT_Settings.Alpha);
QGT_AchievementWatchFrameBackground:SetGradientAlpha("VERTICAL", 0, 0, 0, 0, 0.3, 0.3, 0.3, QGT_Settings.Alpha);
QGT_OptionsFrameTrackerAlphaText:SetText(QG_OPT_TRACKER_ALPHA.." ("..abs(ceil((QGT_Settings.Alpha * 100)-0.5)).."%)");
QGT_OptionsFrameTrackerAlpha:SetValue(QGT_Settings.Alpha);
 
if (QGT_Settings.ShowHeaders ~= false) then
QGT_Settings.ShowHeaders = true;
end
QGT_OptionsFrameTrackerHeadersToggle:SetChecked(QGT_Settings.ShowHeaders);
 
if (QGT_Settings.QuestItemIcons ~= false) then
QGT_Settings.QuestItemIcons = true;
end
QGT_OptionsFrameQuestItemIconsToggle:SetChecked(QGT_Settings.QuestItemIcons);
 
if (QGT_Settings.ShowLevels ~= false) then
QGT_Settings.ShowLevels = true;
end
QGT_OptionsFrameTrackerShowLevelsToggle:SetChecked(QGT_Settings.ShowLevels);
 
if (QGT_Settings.Pin ~= true) then
QGT_Settings.Pin = false;
end
QGT_OptionsFrameTrackerPinToggle:SetChecked(QGT_Settings.Pin);
 
if (QGT_Settings.HideDuringCombat ~= true) then
QGT_Settings.HideDuringCombat = false;
end
QGT_OptionsFrameTrackerHideCombatToggle:SetChecked(QGT_Settings.HideDuringCombat);
 
if (QGT_Settings.HideBlizzardTracker ~= false) then
QGT_Settings.HideBlizzardTracker = true;
end
QGT_OptionsFrameTrackerHideBlizzTrackToggle:SetChecked(QGT_Settings.HideBlizzardTracker);
 
if (QGT_Settings.AutoUnTrack ~= true) then
QGT_Settings.AutoUnTrack = false;
end
QGT_OptionsFrameTrackerAutoUnTrackToggle:SetChecked(QGT_Settings.AutoUnTrack);
 
if (QGT_Settings.ShowCompletedObj ~= false) then
QGT_Settings.ShowCompletedObj = true;
end
QGT_OptionsFrameTrackerShowCompletedObjToggle:SetChecked(QGT_Settings.ShowCompletedObj);
 
if (QGT_Settings.ColorizeObj ~= true) then
QGT_Settings.ColorizeObj = false;
end
QGT_OptionsFrameTrackerColorizeObjToggle:SetChecked(QGT_Settings.ColorizeObj);
 
if (QGT_Settings.ColorizeObjZero == nil) then
QGT_Settings.ColorizeObjZero = {};
QGT_Settings.ColorizeObjZero.r = 0.8;
QGT_Settings.ColorizeObjZero.g = 0.2;
QGT_Settings.ColorizeObjZero.b = 0.8;
end
if (QGT_Settings.ColorizeObjFull == nil) then
QGT_Settings.ColorizeObjFull = {};
QGT_Settings.ColorizeObjFull.r = 0.3;
QGT_Settings.ColorizeObjFull.g = 0.8;
QGT_Settings.ColorizeObjFull.b = 1.0;
end
if (QGT_Settings.ColorizeObjComplete == nil) then
QGT_Settings.ColorizeObjComplete = {};
QGT_Settings.ColorizeObjComplete.r = 0.1;
QGT_Settings.ColorizeObjComplete.g = 0.9;
QGT_Settings.ColorizeObjComplete.b = 1.0;
end
 
if (QGT_Settings.ClickThrough ~= true) then
QGT_Settings.ClickThrough = false;
end
QGT_OptionsFrameTrackerClickThroughToggle:SetChecked(QGT_Settings.ClickThrough);
 
if (QGT_Settings.ShowQuestTooltips ~= false) then
QGT_Settings.ShowQuestTooltips = true;
end
QGT_OptionsFrameTrackerQuestTooltipsToggle:SetChecked(QGT_Settings.ShowQuestTooltips);
 
if (QGT_Settings.ShowPartyTooltips ~= false) then
QGT_Settings.ShowPartyTooltips = true;
end
QGT_OptionsFrameTrackerPartyTooltipsToggle:SetChecked(QGT_Settings.ShowPartyTooltips);
 
if (QGT_Settings.ShowQuestPercent ~= false) then
QGT_Settings.ShowQuestPercent = true;
end
QGT_OptionsFrameTrackerQuestPercentToggle:SetChecked(QGT_Settings.ShowQuestPercent);
 
if (QGT_Settings.Bullet == nil) then
QGT_Settings.Bullet = "-";
end
QGT_OptionsFrameTrackerBulletText:SetText(QGT_Settings.Bullet);
 
if (QGT_Settings.LastTracker ~= "A") then
QGT_Settings.LastTracker = "Q";
end
if (QGT_Settings.BothTrackers ~= true) then
QGT_Settings.BothTrackers = false;
end
end
\ No newline at end of file
trunk/QuestGuru_Tracker/localization.DE.lua New file
0,0 → 1,164
------------------------------------
-- QuestGuru German Localization --
------------------------------------
 
if (GetLocale() == "deDE") then
QG_REP_GAIN = "Euer Ruf bei der Fraktion '(.*)' hat sich um ([%d]+) verbessert.";
QG_REP_DEC = "Euer Ruf bei der Fraktion '(.*)' hat sich um ([%d]+) verschlechtert.";
QG_XP_GAIN = "Ihr bekommt ([%d]+) Erfahrung.";
QG_QUEST_COMPLETE = "Quest fertig!";
 
-- Default filler words used in various places
QG_UNKNOWN = "Unbekannt";
QG_NONE = "Nichts";
 
-- Right click menu strings for Quest Log and Tracker
QG_TRACK = "Beobachten";
QG_UNTRACK = "Nicht beobachten";
QG_SHARE_QUEST = "Quest teilen";
QG_ABANDON_QUEST = "Quest abbrechen";
QG_DELETE_QUEST = "Quest l\195\182schen";
 
-- Quest Start and Finish information
QG_QSTART_HEAD = "Queststart Details";
QG_QSTART_NPC = "Gestartet von:";
QG_QSTART_TIME = "Startzeit:";
QG_QSTART_LEVEL = "Startstufe:";
QG_QFINISH_HEAD = "Questabgabe Details";
QG_QFINISH_NPC = "Abgegeben bei:";
QG_QFINISH_TIME = "Abgabezeit:";
QG_QFINISH_LEVEL = "Abgabestufe:";
QG_QABANDON = "Abgebrochen:";
 
-- Tab Text
QG_TAB_CURRENT = "Aktuell";
QG_TAB_HISTORY = "Historie";
QG_TAB_ABANDON = "Abgebrochen";
QG_TAB_GUILD = "Gilde";
QG_TAB_PARTY = "Gruppe";
 
-- Party Info Tooltip strings
QG_COMPLETE = "Fertig";
QG_ABANDONED = "Abgebrochen";
QG_INCOMPLETE = "Nicht fertig";
QG_ACTIVE = "Aktiv";
QG_ALT_STATUS_HEAD = "------------- Status eigener Charaktere -------------";
QG_GUILD_STATUS_HEAD = "---------- Gildenmitglieder Status ----------";
 
-- User Interface Elements
QG_EXPAND_HEADERS = "Alle Bereiche ein-/ausklappen";
QG_OPTIONS = "Optionen";
QG_SEARCH = "Suchen: ";
QG_CLEAR_ABANDON = "Abgebrochen-Liste l\195\182schen";
 
-- Abandon Tab Strings
QG_ABANDON_CLEAR = "Wollen Sie die Liste l\195\182schen?";
QG_ABANDON_DELETE = "\"%s\" aus der Liste l\195\182schen?"; -- %s is the name of the quest
 
-- History Tab strings
QG_HISTORY_DELETE = "\"%s\" aus der Historie l\195\182schen?"; -- %s is the name of the quest
QG_HISTORY_NONE = "Keine Quest Historie";
QG_HISTORY_EXPGAIN = "Erfahrung erhalten: ";
QG_HISTORY_REPGAIN = "Ruf:";
 
-- Announcer
QG_OPT_ANNOUNCE_HEAD = "QuestGuru Announcer Optionen";
QG_OPT_ANNOUNCE_DESC = "Benutzen Sie diese Optionen, um Ihren Questfortschritt anderen mitzuteilen.\n\195\132nderungen werden beim Klick auf OK gespeichert.";
QG_OPT_ANNOUNCE_PROGRESS = "Questfortschritt mitteilen";
QG_OPT_ANNOUNCE_CHANNEL_HEAD = "Kan\195\164le:";
QG_OPT_ANNOUNCE_CHANNEL_SAY = "/s";
QG_OPT_ANNOUNCE_CHANNEL_SAY_DESC = "Questfortschritt in \"Say\" mitteilen";
QG_OPT_ANNOUNCE_CHANNEL_PARTY = "/p";
QG_OPT_ANNOUNCE_CHANNEL_PARTY_DESC = "Questfortschritt der Gruppe mitteilen";
QG_OPT_ANNOUNCE_CHANNEL_GUILD = "/g";
QG_OPT_ANNOUNCE_CHANNEL_GUILD_DESC = "Questfortschritt der Gilde mitteilen";
QG_OPT_ANNOUNCE_CHANNEL_WHISPER = "/w";
QG_OPT_ANNOUNCE_CHANNEL_WHISPER_DESC = "Questfortschritt jemandem zufl\195\188stern";
QG_OPT_ANNOUNCE_CHANNEL_WHISPER_TO = "an:";
QG_OPT_ANNOUNCE_ECHO = "Echo";
QG_OPT_ANNOUNCE_ECHO_DESC = "Fortschritt im allgemeinen Chatfenster anzeigen.";
QG_OPT_ANNOUNCE_MESSAGES = "Nachrichten:";
QG_OPT_ANNOUNCE_HELP_DONE = "Anzahl gesammelter Gegenst\195\164nde oder get\195\182teter Monster";
QG_OPT_ANNOUNCE_HELP_NEEDED = "Gesamtzahl ben\195\182tigter Gegens\195\164tnde oder Monster";
QG_OPT_ANNOUNCE_HELP_NUMLEFT = "Anzahl noch ben\195\182tigter Gegenst\195\164nde oder Monster";
QG_OPT_ANNOUNCE_HELP_NAME = "Zieltext ohne #/#";
QG_OPT_ANNOUNCE_HELP_TITLE = "Name der Quest f\195\188r dieses Ziel";
QG_OPT_ANNOUNCE_HELP_UITEXT = "The text that showed up onscreen";
QG_OPT_ANNOUNCE_HELP_COMPLETE = "\195\156bersetzte Fertigmeldung: \""..COMPLETE.."\"";
QG_OPT_ANNOUNCE_HELP_QLINK = "Der Questlink der betroffenen Quest";
QG_OPT_ANNOUNCE_ITEM_MSG = "Fortschritt bei Genst\195\164nden mit dieser Nachricht mitteilen:";
QG_OPT_ANNOUNCE_MOB_MSG = "Fortschritt bei Monstern mit dieser Nachricht mitteilen:";
QG_OPT_ANNOUNCE_EVENT_MSG = "Fortschritt bei Ereignissen mit dieser Nachricht mitteilen:";
QG_OPT_ANNOUNCE_COMPLETE_MSG = "Quest Fertigstellung mit dieser Nachticht mitteilen:";
QG_ANNOUNCE_ITEM_DEFAULT = "$done $name von $needed ben\195\182tigten f\195\188r $questTitle gesammelt";
QG_ANNOUNCE_MOB_DEFAULT = "$done $name von $needed ben\195\182tigten f\195\188r $questTitle";
QG_ANNOUNCE_RESET = "Announcer Optionen werden zur\195\188ckgesetzt.";
 
-- Tracker
QG_TRACKER_SHOW = "Tracker anzeigen";
QG_TRACKER_MINIMIZE = "Tracker minimieren";
QG_TRACKER_OPTIONS = "Trackeroptionen";
 
-- Options
QG_OPT_OPTIONS_DESC = "Die sind die allgemeinen Einstellungen von QuestGuru.\n\195\132nderungen werden sofort gespeichert.";
QG_OPT_COLORIZE_HEAD = "Einf\195\164rben";
QG_OPT_COLORIZE_PLAYER = "Spielername";
QG_OPT_COLORIZE_AREA = "Gebiete";
QG_OPT_COLORIZE_NPC = "NPC Namen";
QG_OPT_LEVELS_HEAD = "Stufen anzeigen";
QG_OPT_LEVELS_QUESTLOG = "Im Questlog";
QG_OPT_LEVELS_HISTORY = "In der Historie";
QG_OPT_LEVELS_ABANDON = "In der Abgebrochen-Liste";
QG_OPT_TOOLTIP_TEXT = "Zeige Text in Gegenstand- und Monstertooltips";
QG_OPT_AUTOCOMPLETE = "Quests automatisch einl\195\182sen";
QG_OPT_ALT_STATUS = "Zeige Queststatus eigener Charaktere im Tooltip";
QG_OPT_GUILD_STATUS = "Zeige Queststatus von Gildenmitgliedern im Tooltip";
QG_OPT_GUILD_SIMPLE = "Einfache Gildenmitgliederanzeige";
QG_OPT_OBJ_ICON = "Zeige Gegenstandicons im Questlog";
QG_OPT_DISABLE_COMM = "gesamte addon-zu-addon Kommunikation abschalten";
 
QG_OPT_TRACKER_DESC = "Diese Optionen \195\164ndern das Aussehen des QuestGuru Trackers.\n\195\132nderungen werden sofort gespeichert.";
QG_OPT_TRACKER_USE = "QuestGuru Tracker verwenden";
QG_OPT_TRACKER_USE_DESC = "Deaktivieren Sie diese Option, um den Standardtracker oder andere Tracker Addons zu verwenden";
QG_OPT_TRACKER_BORDER = "Rahmen anzeigen";
QG_OPT_TRACKER_BORDER_DESC = "Aktivieren Sie diese Option, um einen d\195\188nnen Rahmen um den Tracker anzuzeigen";
QG_OPT_TRACKER_CLICKTHROUGH = "Durch den Tracker klicken";
QG_OPT_TRACKER_CLICKTHROUGH_DESC = "Aktivieren Sie diese Option, um den Tracker nicht anklickbar zu machen";
QG_OPT_TRACKER_HEADERS = "\195\156berschriften anzeigen";
QG_OPT_TRACKER_HEADERS_DESC = "Aktivieren Sie diese Option, um Zonen\195\188berschriften im Tracker anzuzeigen";
QG_OPT_TRACKER_LEVELS = "Queststufen anzeigen";
QG_OPT_TRACKER_LEVELS_DESC = "Aktivieren Sie diese Option, um die Queststufen im Tracker anzuzeigen";
QG_OPT_TRACKER_QUEST_TOOLTIPS = "Quest Tooltips anzeigen";
QG_OPT_TRACKER_QUEST_TOOLTIPS_DESC = "Aktivieren Sie diese Option, um einen Tooltip mit Informationen anzuzeigen, wenn Sie mit dem Mauszeiger \195\188ber Questnamen oder Ziele fahren";
QG_OPT_TRACKER_PARTY_TOOLTIPS = "Gruppen Tooltips anzeigen";
QG_OPT_TRACKER_PARTY_TOOLTIPS_DESC = "Aktivieren Sie diese Option, um den Tooltip f\195\188r Gruppen-, Gilden und Zweitcharakterinformationen anzuzeigen, wenn Sie mit dem Mauszeiger \195\188ber Questnamen fahren";
QG_OPT_TRACKER_PERCENT = "Quest Prozentwert anzeigen";
QG_OPT_TRACKER_PERCENT_DESC = "Aktivieren Sie diese Option, um den Fortschrittsprozentwert neben dem Questnamen im Tracker anzuzeigen";
QG_OPT_TRACKER_ANCHOR_BOTTOM = "Unten verankern";
QG_OPT_TRACKER_ANCHOR_BOTTOM_DESC = "Verankert den unteren Rand des Trackers, um ihn nach oben zu vergr\195\182\195\159ern.";
QG_OPT_TRACKER_AUTOTRACK = "Neue Q's automatisch beobachten";
QG_OPT_TRACKER_AUTOTRACK_DESC = "Aktivieren Sie diese Option, um neue Quests automatisch zum Tracker hinzuzuf\195\188gen";
QG_OPT_TRACKER_AUTOUNTRACK = "Fertige Q's nicht beobachten";
QG_OPT_TRACKER_AUTOUNTRACK_DESC = "Nach abschlie\195\159en aller Questziele Quest automtisch aus dem Tracker entfernen";
QG_OPT_TRACKER_COMPLETE_OBJ = "Vollendete Ziele anzeigen";
QG_OPT_TRACKER_COMPLETE_OBJ_DESC = "Deaktivieren Sie diese Option, um vollendete Questziele nicht im Tracker anzuzeigen";
QG_OPT_TRACKER_COLOR_OBJ = "Ziele nach Fortschritt einf\195\164rben";
QG_OPT_TRACKER_COLOR_OBJ_DESC = "Aktivieren Sie diese Option, um Questziele nach dem Fortschritt mit den folgenden Farben einzuf\195\164rben";
QG_OPT_TRACKER_OBJ_COLOR_0 = "Farbe f\195\188r zu 0% vollendete Ziele";
QG_OPT_TRACKER_OBJ_COLOR_99 = "Farbe f\195\188r zu 99% vollendete Ziele";
QG_OPT_TRACKER_OBJ_COLOR_COMPLETE = "Farbe f\195\188r vollendete Ziele";
QG_OPT_TRACKER_SIZE = "Trackergr\195\182\195\159e";
QG_OPT_TRACKER_MAX_LINES = "Max. Trackerzeilen:";
QG_OPT_TRACKER_ALPHA = "Hintergrund-Alpha";
 
QG_OPT_SOUND_HEAD = "Klangoptionen";
QG_OPT_SOUND_DESC = "Benutzen Sie diese Optionen, um die Kl\195\164nge zu \195\164ndern, die beim Questfortschritt abgespielt werden.\n\195\132nderungen werden sofort gespeichert.";
QG_OPT_SOUND_ENABLE = "Zus\195\164tzliche Kl\195\164nge aktivieren";
QG_OPT_SOUND_OBJ = "Klang beim Zielfortschritt abspielen:";
QG_OPT_SOUND_OBJ_DONE = "Klang beim abschlie\195\159en eines Questziels abspielen:";
QG_SOUND_QUEST_DONE = "Klang beim Fertigstellen einer Quest abspielen:";
 
-- Other strings that may or may not need localizing
QG_ITEM_REQ_STR = "(.*):%s*([%d]+)%s*/%s*([%d]+)"; -- The format of the line when an item is required for a quest, an invalid format can cause many errors
QG_DATETIME = "%d/%m/%Y %H:%M:%S"; -- The format that date/time values are stored and displayed for start/finish info
end
\ No newline at end of file
trunk/QuestGuru_Tracker/localization.TW.lua New file
0,0 → 1,81
-------------------------------------------------------------------------------
-- QuestGuru Chinese Localization(zhTW) By Silver Fox, fixed/updated By Player Lin --
-------------------------------------------------------------------------------
 
if (GetLocale() == "zhTW") then
 
-- Default filler words used in various places
QG_UNKNOWN = "未知";
QG_NONE = "沒有";
 
-- Right click menu strings for Quest Log and Tracker
QG_TRACK = "加入追蹤";
QG_UNTRACK = "取消追蹤";
QG_SHARE_QUEST = "分享任務";
QG_ABANDON_QUEST = "放棄任務";
QG_DELETE_QUEST = "刪除任務";
 
-- Party Info Tooltip strings
QG_ABANDONED = "放棄"
QG_INCOMPLETE = "未完";
QG_ACTIVE = "進行";
QG_ALT_STATUS_HEAD = "------------- 分身角色任務狀況 -------------";
QG_GUILD_STATUS_HEAD = "------------- 公會成員任務狀況 -------------";
 
-- User Interface Elements
QG_EXPAND_HEADERS = "收起/展開所有標題";
QG_OPTIONS = "選項";
QG_SEARCH = "搜尋: ";
QG_CLEAR_ABANDON = "清除放棄任務列表";
 
-- Tracker
QG_TRACKER_SHOW = "顯示追蹤視窗";
QG_TRACKER_MINIMIZE = "縮小追蹤視窗";
QG_TRACKER_OPTIONS = "追蹤視窗設定";
QG_TRACKER_TOGGLE = "點擊轉換任務和成就追蹤. 右鍵點擊切換顯示視窗";
QG_TRACKER_QUESTS = "任務";
QG_TRACKER_ACHIEVE = "成就";
QG_TRACKER_Q = "Q"; --Abbreviation for Quest for toggle button
QG_TRACKER_A = "A"; --Abbreviation for Achievement for toggle button
 
-- Options
QG_OPT_TRACKER_DESC = "這些選項可以改變追蹤視窗的設定.";
QG_OPT_TRACKER_BORDER = "顯示追蹤視窗邊框";
QG_OPT_TRACKER_BORDER_DESC = "勾選這個項目會在追蹤視窗外圍顯示邊框";
QG_OPT_TRACKER_ITEMICONS = "顯示任務物品圖示";
QG_OPT_TRACKER_ITEMICONS_DESC = "溝選這項顯示特殊任務物品圖示";
QG_OPT_TRACKER_CLICKTHROUGH = "點選可穿越追蹤視窗";
QG_OPT_TRACKER_CLICKTHROUGH_DESC = "勾選這項滑鼠的點選可以穿越追蹤視窗";
QG_OPT_TRACKER_HEADERS = "顯示任務分類標題";
QG_OPT_TRACKER_HEADERS_DESC = "勾選這個項目在任務追蹤視窗會顯示任務分類的標題";
QG_OPT_TRACKER_LEVELS = "顯示任務等級";
QG_OPT_TRACKER_LEVELS_DESC = "勾選這個項目在任務追蹤視窗會顯示任務等級";
QG_OPT_TRACKER_QUEST_TOOLTIPS = "顯示任務提示";
QG_OPT_TRACKER_QUEST_TOOLTIPS_DESC = "勾選這個項目讓你的滑鼠游標移到任務上時可以看到提示";
QG_OPT_TRACKER_PARTY_TOOLTIPS = "顯示隊伍提示";
QG_OPT_TRACKER_PARTY_TOOLTIPS_DESC = "勾選這個項目會讓你的滑鼠游標移到任務上時會顯示 隊伍/分身/公會 的任務狀況";
QG_OPT_TRACKER_PERCENT = "顯示任務完成比例";
QG_OPT_TRACKER_PERCENT_DESC = "這個選項可以顯示任務的完成比例";
QG_OPT_TRACKER_ANCHOR_BOTTOM = "固定底部";
QG_OPT_TRACKER_ANCHOR_BOTTOM_DESC = "勾選這個項目追蹤視窗會以底部為準進行縮放";
QG_OPT_TRACKER_PIN = "鎖定追蹤視窗";
QG_OPT_TRACKER_PIN_DESC = "勾選這個項目將鎖定追蹤視窗所以無法自由移動.";
QG_OPT_TRACKER_AUTOUNTRACK = "完成任務自動解除追蹤";
QG_OPT_TRACKER_AUTOUNTRACK_DESC = "勾選這個項目可以自動將已經完成的任務從追蹤視窗中移除";
QG_OPT_TRACKER_COMPLETE_OBJ = "顯示已完成的任務項目";
QG_OPT_TRACKER_COMPLETE_OBJ_DESC = "取消勾選這項讓已經完成的任務項目從追蹤視窗中消失";
QG_OPT_TRACKER_COLOR_OBJ = "用顏色來標示任務完成比例";
QG_OPT_TRACKER_COLOR_OBJ_DESC = "勾選這個項目可以讓你用顏色來標示任務的完成比例";
QG_OPT_TRACKER_OBJ_COLOR_0 = "設定任務項目完成比例 0% 時的顏色";
QG_OPT_TRACKER_OBJ_COLOR_99 = "設定任務項目完成比例 99% 時的顏色";
QG_OPT_TRACKER_OBJ_COLOR_COMPLETE = "設定任務項目完成的顏色";
QG_OPT_TRACKER_SIZE = "追蹤視窗尺寸";
QG_OPT_TRACKER_MAX_LINES = "追蹤視窗行數:";
QG_OPT_TRACKER_ALPHA = "視窗背景透明度";
QG_OPT_TRACKER_BULLET = "任務目標前置符號:";
 
-- Other strings that may or may not need localizing
QG_ITEM_REQ_STR = "(.*):%s*([%d]+)%s*/%s*([%d]+)"; -- The format of the line when an item is required for a quest, an invalid format can cause many errors
QG_DATETIME = "%m/%d/%Y %H:%M:%S"; -- The format that date/time values are stored and displayed for start/finish info
 
end
\ No newline at end of file
trunk/QuestGuru_Tracker/QuestGuru_Tracker.toc New file
0,0 → 1,13
## Interface: 40300
## Title: QuestGuru Tracker
## Notes: Quest Tracker replacement
## Author: MrOBrian/Gregity
## Version: 1.5.8-40300
## SavedVariablesPerCharacter: QGT_WatchList, QGT_WatchHeaders, QGT_WatchQuests, QGT_WatchAchievements, QGT_Settings
localization.lua
localization.DE.lua
localization.FR.lua
localization.RU.lua
localization.TW.lua
QuestGuru_Tracker_Templates.xml
QuestGuru_Tracker.xml
\ No newline at end of file
trunk/QuestGuru_Tracker/ChangeLog.txt New file
0,0 → 1,142
QuestGuru_Tracker ChangeLog
===========================
 
Version 1.5.8-40300
-------------
* Refixed an issue in QGT_Quests.lua where SaveBindings sometimes received an invalid value because GetCurrentBindingSet() would return other than nil, 1, or 2.
 
Version 1.5.7-40300
-------------
* Changed TOC version for 4.3 cata
* MrObrien has asked that somebody pickup and work on the QuestGuru so I will try and do some updates as I can't play without this mod.
Addon home is www.wowinterface.com and you can PM me there if you like. Gregity is the name.
I will be making small changes to get used to the codebase before I try anything like a major update.
* Fixed an issue in QGT_Quests.lua where SaveBindings sometimes received an invalid value because GetCurrentBindingSet() would return nil
 
Version 1.5.6
-------------
* Fixed achievements not working quite right (thanks to FineWolf)
* Added a flashing effect to quests that can be remotely completed
 
 
Version 1.5.5
-------------
* Fixed a bug that was causing the game to crash (oops)
 
 
Version 1.5.4
-------------
* Fixed a bug when trying to track an achievement that no longer exists (usually on login)
* Removed UIFrame calls that could potentially cause taint
 
 
Version 1.5.3
-------------
* Thanks to Cartman, added ability to finish certain quests directly from the tracker
 
 
Version 1.5.2
-------------
* Removed ability to sort by proximity for now
* More bug fixes to better support Cataclysm
 
 
Version 1.5.1
-------------
* Bug fixes
 
 
Version 1.5
-----------
* Added ability to sort watched quests by proximity (may not work exactly right...)
* Shift-L Key Binding is now saved properly
* Bug fixes
* Updates to better support Cataclysm
 
 
Version 1.4.4
-------------
* Fixes for Blizzard's new chat frame
 
 
Version 1.4.3
-------------
* Added option to hide tracker(s) during combat
 
 
Version 1.4.2
-------------
* More minor bug fixes
 
 
Version 1.4.1
-------------
* Minor bug fix
 
 
Version 1.4
-----------
* Updated for patch 3.3
* Minor bug fixes
 
 
Version 1.3
-----------
* Updated to be compatible with WoW 3.2
 
 
Version 1.2.3
-------------
* Achievements no longer auto-track, this feature was too buggy and annoying
* Shift-clicking an achievement in the tracker will now untrack the achievement
* Fixed tooltip display issues
* Added Russian localization
 
 
Version 1.2.2
-------------
* Added quest timers in the tracker
* Achievement tracker should now update properly on achievement progress
* In the Achievement tracker, shift-clicking an achievement will now add a link to the chat frame
* Auto-tracking of achievements in chains when one step is completed has been added
* As always, more bug fixes
 
 
Version 1.2.1
-------------
* Bug fixes
 
 
Version 1.2
-----------
* Added button to toggle Quest and Achievement trackers with option to show both
* Some more bug fixes
 
 
Version 1.1.1
-------------
* A bunch of bug fixes
 
 
Version 1.1
-----------
* Added Achievement tracking
* Bug fix with quest item icon size
 
 
Version 1.0.2
-------------
* Added quest item icons
* Added option to pin tracker
* Fixed shift-right-click menu for quest titles
* More bug fixes
 
 
Version 1.0.1
-------------
* Bug fixes
 
 
Version 1.0
-----------
* First release as a separate addon