--[[ GUI for Gatherer (by Islorgris, original idea and most of the base UI code came from bcui_TrackingMenu) ]] -- Counter for fixed item count fixedItemCount = 0; gathererFixItems = 0; -- Number of buttons for the menu defined in the XML file. GathererUI_NUM_BUTTONS = 7; -- Constants used in determining menu width/height. GathererUI_BORDER_WIDTH = 15; GathererUI_BUTTON_HEIGHT = 12; GATHERERUI_SUBFRAMES = { "GathererUI_FiltersOptionsBorderFrame", "GathererUI_GathererOptionsBorderFrame", "GathererUI_DisplayOptionsBorderFrame" }; -- List of toggles to display. GathererUI_QuickMenu = { {name=GATHERER_TEXT_TOGGLE_MINIMAP, option="useMinimap"}, {name=GATHERER_TEXT_TOGGLE_MAINMAP, option="useMainmap"}, {name=GATHERER_TEXT_TOGGLE_HERBS, option="herbs"}, {name=GATHERER_TEXT_TOGGLE_MINERALS, option="mining"}, {name=GATHERER_TEXT_TOGGLE_TREASURE, option="treasure"}, {name=GATHERER_TEXT_TOGGLE_REPORT, option="report" }, {name=GATHERER_TEXT_TOGGLE_SEARCH, option="search" }, }; -- ****************************************************************** function GathererUI_OnLoad() -- Create the slash commands to show/hide the menu. SlashCmdList["GathererUI_SHOWMENU"] = GathererUI_ShowMenu; SLASH_GathererUI_SHOWMENU1 = "/GathererUI_showmenu"; SlashCmdList["GathererUI_HIDEMENU"] = GathererUI_HideMenu; SLASH_GathererUI_HIDEMENU1 = "/GathererUI_hidemenu"; -- Create the slash commands to show/hide the options window. SlashCmdList["GathererUI_SHOWOPTIONS"] = GathererUI_ShowOptions; SLASH_GathererUI_SHOWOPTIONS1 = "/GathererUI_showoptions"; SlashCmdList["GathererUI_HIDEOPTIONS"] = GathererUI_HideOptions; SLASH_GathererUI_HIDEOPTIONS1 = "/GathererUI_hideoptions"; end function GathererUI_OnEvent() if ( event == "VARIABLES_LOADED" ) then local playerName = UnitName("player"); if ((playerName) and (playerName ~= UNKNOWNOBJECT)) then Gather_Player = playerName; end; GathererUI_InitializeOptions(); GathererUI_InitializeMenu(); return; end if ( event == "UNIT_NAME_UPDATE" ) then if ((arg1) and (arg1 == "player")) then local playerName = UnitName("player"); if ((playerName) and (playerName ~= UNKNOWNOBJECT)) then Gather_Player = playerName; GathererUI_InitializeMenu(); end end end end -- *********************************************************** -- Tab selection code function ToggleGathererUI_Dialog(tab) local subFrame = getglobal(tab); if ( subFrame ) then PanelTemplates_SetTab(GathererUI_DialogFrame, subFrame:GetID()); if ( GathererUI_DialogFrame:IsVisible() ) then PlaySound("igCharacterInfoTab"); GathererUI_DialogFrame_ShowSubFrame(tab); else GathererUI_DialogFrame:Show(); GathererUI_DialogFrame_ShowSubFrame(tab); end end end function GathererUI_DialogFrame_ShowSubFrame(frameName) for index, value in GATHERERUI_SUBFRAMES do if ( value == frameName ) then getglobal(value):Show() else getglobal(value):Hide(); end end end function GathererUIFrameTab_OnClick() if ( this:GetName() == "GathererUI_DialogFrameTab1" ) then ToggleGathererUI_Dialog("GathererUI_FiltersOptionsBorderFrame"); elseif ( this:GetName() == "GathererUI_DialogFrameTab2" ) then ToggleGathererUI_Dialog("GathererUI_GathererOptionsBorderFrame"); elseif ( this:GetName() == "GathererUI_DialogFrameTab3" ) then ToggleGathererUI_Dialog("GathererUI_DisplayOptionsBorderFrame"); end PlaySound("igCharacterInfoTab"); end -- ****************************************************************** function GathererUI_ShowMenu(x, y, anchor) if (GathererUI_Popup:IsVisible()) then GathererUI_Hide(); return; end if (not x or not y) then -- Get the cursor position. Point is relative to the bottom left corner of the screen. x, y = GetCursorPosition(); end if (anchor == nil) then anchor = "center"; end -- Adjust for the UI scale. x = x / UIParent:GetEffectiveScale(); y = y / UIParent:GetEffectiveScale(); -- Adjust for the height/width/anchor of the menu. if (anchor == "topright") then x = x - GathererUI_Popup:GetWidth(); y = y - GathererUI_Popup:GetHeight(); elseif (anchor == "topleft") then y = y - GathererUI_Popup:GetHeight(); elseif (anchor == "bottomright") then x = x - GathererUI_Popup:GetWidth(); elseif (anchor == "bottomleft") then -- do nothing. else -- anchor is either "center" or not a valid value. x = x - GathererUI_Popup:GetWidth() / 2; y = y - GathererUI_Popup:GetHeight() / 2; end -- Clear the current anchor point, and set it to be centered under the mouse. GathererUI_Popup:ClearAllPoints(); GathererUI_Popup:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT", x, y); GathererUI_Show(); end -- ****************************************************************** function GathererUI_HideMenu() GathererUI_Hide(); end -- ****************************************************************** function GathererUI_InitializeOptions() local SETTINGS = Gatherer_Settings; if ( SETTINGS.showWorldMapFilters == 1 ) then GathererWD_DropDownFilters:Show(); else GathererWD_DropDownFilters:Hide(); end if ( SETTINGS.disableWMFreezeWorkaround == 1 ) then Gatherer_WorldMapDisplay:Show(); else Gatherer_WorldMapDisplay:Hide(); end if ( SETTINGS.useMainmap) then Gatherer_WorldMapDisplay:SetText("Hide Items"); GathererMapOverlayFrame:Show(); else Gatherer_WorldMapDisplay:SetText("Show Items"); GathererMapOverlayFrame:Hide(); end GathererHelp.currentPage = GathererHelp.currentPage or tonumber("1"); -- UI related GathererUI_CheckShowOnMouse:SetChecked(SETTINGS.ShowOnMouse); GathererUI_CheckHideOnMouse:SetChecked(SETTINGS.HideOnMouse); GathererUI_CheckShowOnClick:SetChecked(SETTINGS.ShowOnClick); GathererUI_CheckHideOnClick:SetChecked(SETTINGS.HideOnClick); GathererUI_CheckHideIcon:SetChecked(SETTINGS.HideIcon); GathererUI_CheckHideOnButton:SetChecked(SETTINGS.HideOnButton); GathererUI_IconFrame:SetPoint("TOPLEFT", "Minimap", "TOPLEFT", 52 - (SETTINGS.Radius * cos(SETTINGS.Position)), (SETTINGS.Radius * sin(SETTINGS.Position)) - 52); -- Gatherer related GathererUI_CheckNoMinIcon:SetChecked(SETTINGS.NoIconOnMinDist); GathererUI_CheckRareOre:SetChecked(SETTINGS.rareOre); GathererUI_CheckMapMinder:SetChecked(SETTINGS.mapMinder); GathererUI_CheckHideMiniNotes:SetChecked(SETTINGS.HideMiniNotes); GathererUI_CheckToggleWorldNotes:SetChecked(SETTINGS.ToggleWorldNotes); GathererUI_CheckToggleWorldFilters:SetChecked(SETTINGS.showWorldMapFilters); GathererUI_CheckHerbRecord:SetChecked(SETTINGS.filterRecording[1]); GathererUI_CheckOreRecord:SetChecked(SETTINGS.filterRecording[2]); GathererUI_CheckTreasureRecord:SetChecked(SETTINGS.filterRecording[0]); GathererUI_CheckDisableWMFix:SetChecked(SETTINGS.disableWMFreezeWorkaround); GathererUI_InitializeMenu(); end -- ****************************************************************** function GathererUI_InitializeMenu() GathererUI_IconFrame.haveAbilities = true; if ( Gatherer_Settings and Gatherer_Settings.HideIcon and Gatherer_Settings.HideIcon == 1 ) then GathererUI_IconFrame:Hide(); else GathererUI_IconFrame:Show(); end -- Set the text for the buttons while keeping track of how many -- buttons we actually need. local count = 0; for quickoptionpos, quickoptiondata in GathererUI_QuickMenu do quickoptions = quickoptiondata.name; gathermap_id = quickoptiondata.option; count = count + 1; local button = getglobal("GathererUI_PopupButton"..count); Gatherer_Value="none"; if ( gathermap_id =="useMinimap" ) then Gatherer_Value = "off"; if (Gatherer_Settings.useMinimap) then Gatherer_Value = "on"; end button.SpellID = "toggle" elseif ( gathermap_id == "useMainmap" ) then Gatherer_Value = "off"; if (Gatherer_Settings.useMainmap) then Gatherer_Value = "on"; end button.SpellID = "mainmap toggle"; elseif ( gathermap_id == "report" ) then button.SpellID = "report"; Gatherer_Value = ""; elseif ( gathermap_id == "search" ) then button.SpellID = "search"; Gatherer_Value = ""; else Gatherer_Value = Gatherer_GetFilterVal(gathermap_id); button.SpellID = gathermap_id.." toggle"; end if ( Gatherer_Value ~= "" ) then button:SetText(quickoptions.."["..Gatherer_Value.."]"); else button:SetText(quickoptions); end button:Show(); end -- Set the width for the menu. local width = GathererUI_TitleButton:GetWidth(); for i = 1, count do width = math.max(width, getglobal("GathererUI_PopupButton"..i):GetTextWidth()); end GathererUI_Popup:SetWidth(width + 2 * GathererUI_BORDER_WIDTH); -- By default, the width of the button is set to the width of the text -- on the button. Set the width of each button to the width of the -- menu so that you can still click on it without being directly -- over the text. for i = 1, count do getglobal("GathererUI_PopupButton"..i):SetWidth(width); end -- Hide the buttons we don't need. for i = count + 1, GathererUI_NUM_BUTTONS do getglobal("GathererUI_PopupButton"..i):Hide(); end -- Set the height for the menu. GathererUI_Popup:SetHeight(GathererUI_BUTTON_HEIGHT + ((count + 1) * GathererUI_BUTTON_HEIGHT) + (3 * GathererUI_BUTTON_HEIGHT)); end -- ****************************************************************** function GathererUI_ButtonClick() Gatherer_Command(this.SpellID); GathererUI_InitializeMenu(); end -- ****************************************************************** function GathererUI_Show() -- Check to see if the aspect menu is shown. If so, hide it before -- showing the tracking menu. if (GathererUI_Popup and GathererUI_Popup:IsVisible()) then GathererUI_Hide(); end GathererUI_Popup:Show(); end -- ****************************************************************** function GathererUI_Hide() GathererUI_Popup:Hide(); end -- ****************************************************************** function GathererUI_ShowOptions() GathererUI_DialogFrame:Show(); -- ToggleGathererUI_Dialog(GATHERERUI_SUBFRAMES[PanelTemplates_GetSelectedTab(GathererUI_DialogFrame)]); end -- ****************************************************************** function GathererUI_HideOptions() GathererUI_DialogFrame:Hide(); end -- ****************************************************************** function GathererUI_OnUpdate(dummy) -- Check to see if the mouse is still over the menu or the icon. if (Gatherer_Settings.HideOnMouse == 1 and GathererUI_Popup:IsVisible()) then if (not MouseIsOver(GathererUI_Popup) and not MouseIsOver(GathererUI_IconFrame)) then -- If not, hide the menu. GathererUI_Hide(); end end end -- ****************************************************************** function GathererUI_IconFrameOnEnter() -- Set the anchor point of the menu so it shows up next to the icon. GathererUI_Popup:ClearAllPoints(); GathererUI_Popup:SetPoint("TOPRIGHT", "GathererUI_IconFrame", "TOPLEFT"); -- Show the menu. if (Gatherer_Settings.ShowOnMouse == 1) then GathererUI_Show(); end end -- ****************************************************************** function GathererUI_IconFrameOnClick() if (GathererUI_Popup:IsVisible()) then if (Gatherer_Settings.HideOnClick == 1) then GathererUI_Hide(); end else if (Gatherer_Settings.ShowOnClick == 1) then GathererUI_Show(); end end end -- ****************************************************************** function GathererUIDropDownTheme_Initialize() for value in Gather_IconSet do local info = {}; info.text = value; info.checked = nil; info.func = GathererUIDropDownTheme_OnClick; UIDropDownMenu_AddButton(info); if (Gatherer_Settings.iconSet == info.text) then UIDropDownMenu_SetText(info.text, GathererUI_DropDownTheme); end end end function GathererUIDropDownHerbs_Initialize() local filterValue = "herbs"; local iconIndex = 1; local dropDownText = "Herbs"; GathererUIDropDown_Initialize(filterValue, iconIndex, dropDownText); end function GathererUIDropDownOre_Initialize() local filterValue = "mining"; local iconIndex = 2; local dropDownText = "Ore"; GathererUIDropDown_Initialize(filterValue, iconIndex, dropDownText); end function GathererUIDropDownTreasure_Initialize() local filterValue = "treasure"; local iconIndex = 0; local dropDownText = "Treasure"; GathererUIDropDown_Initialize(filterValue, iconIndex, dropDownText); end function GathererUIDropDown_Initialize(filterValue, iconIndex, dropDownText) local varMenuVal1, varMenuVal2; local value = Gatherer_GetFilterVal(filterValue); if ( value == "on" ) then varMenuVal1 = NORMAL_FONT_COLOR_CODE.."auto".."|r"; varMenuVal2 = NORMAL_FONT_COLOR_CODE.."off".."|r"; elseif ( value == "off" ) then varMenuVal1 = NORMAL_FONT_COLOR_CODE.."auto".."|r"; varMenuVal2 = NORMAL_FONT_COLOR_CODE.."on".."|r"; else varMenuVal1 = NORMAL_FONT_COLOR_CODE.."on".."|r"; varMenuVal2 = NORMAL_FONT_COLOR_CODE.."off".."|r"; end UIDropDownMenu_SetText(Gatherer_GetMenuName(value), getglobal("GathererUI_DropDown"..dropDownText)); local itemWithRareMatch = {}; local rareItem = {}; for iconName, rareMatch in Gather_RareMatch do if (Gather_DB_IconIndex[iconIndex][iconName]) then itemWithRareMatch[iconName] = rareMatch; rareItem[rareMatch] = iconName; end end if ( itemWithRareMatch[UIDROPDOWNMENU_MENU_VALUE] ) then GathererUIDropDownSub_Initialize(UIDROPDOWNMENU_MENU_VALUE, iconIndex, dropDownText); return; end local gathererFilters = {varMenuVal1, varMenuVal2}; for iconName in Gather_DB_IconIndex[iconIndex] do if (iconName ~= "default" and not rareItem[iconName]) then tinsert(gathererFilters, iconName); end end table.sort(gathererFilters, function (a, b) local aSkillLevel = Gather_SkillLevel[a] or 0; local bSkillLevel = Gather_SkillLevel[b] or 0; if (strfind(a, "on|r") or strfind(a, "off|r") or strfind(a, "auto|r")) then aSkillLevel = -1; end if (strfind(b, "on|r") or strfind(b, "off|r") or strfind(b, "auto|r")) then bSkillLevel = -1; end return string.format("%03d%s", aSkillLevel, a) < string.format("%03d%s", bSkillLevel, b); end); for index, value in gathererFilters do local info = {}; info.text = Gatherer_GetMenuName(value); info.value = value; info.checked = nil; if (itemWithRareMatch[value]) then info.hasArrow = 1; info.func = nil; else info.hasArrow = nil; info.func = getglobal("GathererUIDropDownFilter"..dropDownText.."_OnClick"); end if (string.find(value, "on|r")) then info.value = "on"; end if (string.find(value, "off|r")) then info.value = "off"; end if (string.find(value, "auto|r")) then info.value = "auto"; end if ( index > 2 and Gatherer_Settings) then info.keepShownOnClick = 1; if ( Gatherer_Settings.interested[iconIndex][value] ) then info.checked = 1; end info.textR = 1; info.textG = 1; info.textB = 1; else info.textR = 1; info.textG = 1; info.textB = 255; info.checked = nil; end UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL); end end function GathererUIDropDownSub_Initialize(rareItem, iconIndex, dropDownText) if (not dropDownText) then if (iconIndex == 1) then dropDownText = "Herbs"; elseif (iconIndex == 2) then dropDownText = "Ore"; elseif (iconIndex == 0) then dropDownText = "Treasure"; end end for index, value in {rareItem, Gather_RareMatch[rareItem]} do local info = {}; info.text = Gatherer_GetMenuName(value); info.value = value; info.checked = nil; info.func = getglobal("GathererUIDropDownFilter"..dropDownText.."_OnClick"); info.keepShownOnClick = 1; if ( Gatherer_Settings.interested[iconIndex][value] ) then info.checked = 1; end info.textR = 1; info.textG = 1; info.textB = 1; UIDropDownMenu_AddButton(info, UIDROPDOWNMENU_MENU_LEVEL); end end -- World Map functions -- World Map filters dropdown Load function Gatherer_WorldMapFilter_Load() UIDropDownMenu_SetText(GATHERER_FILTERDM_TEXT, GathererWD_DropDownFilters); if ( UIDROPDOWNMENU_MENU_VALUE == "Herb" ) then GathererUIDropDownHerbs_Initialize(); return; elseif ( UIDROPDOWNMENU_MENU_VALUE == "Ore" ) then GathererUIDropDownOre_Initialize(); return; elseif ( UIDROPDOWNMENU_MENU_VALUE == "Treasure" ) then GathererUIDropDownTreasure_Initialize(); return; elseif( Gather_RareMatch[UIDROPDOWNMENU_MENU_VALUE] ) then for iconIndex in Gather_DB_IconIndex do if (Gather_DB_IconIndex[iconIndex][UIDROPDOWNMENU_MENU_VALUE]) then GathererUIDropDownSub_Initialize(UIDROPDOWNMENU_MENU_VALUE, iconIndex); break; end end return; end local info = {}; info.text = GATHERER_TEXT_TOGGLE_HERBS.."["..Gatherer_GetFilterVal("herbs").."]"; info.value = "Herb" info.hasArrow = 1; info.func = nil; info.notCheckable = 1; UIDropDownMenu_AddButton(info); local info = {}; info.text = GATHERER_TEXT_TOGGLE_MINERALS.."["..Gatherer_GetFilterVal("mining").."]"; info.value = "Ore" info.hasArrow = 1; info.func = nil; info.notCheckable = 1; UIDropDownMenu_AddButton(info); local info = {}; info.text = GATHERER_TEXT_TOGGLE_TREASURE.."["..Gatherer_GetFilterVal("treasure").."]"; info.value = "Treasure" info.hasArrow = 1; info.func = nil; info.notCheckable = 1; UIDropDownMenu_AddButton(info); end -- ****************************************************************** function GathererUIDropDownTheme_OnClick() UIDropDownMenu_SetSelectedID(GathererUI_DropDownTheme, this:GetID()); local cmd = UIDropDownMenu_GetText(GathererUI_DropDownTheme); Gatherer_Command("theme "..cmd); end function GathererUIDropDownFilterHerbs_OnClick() local filterValue = "herbs"; local iconIndex = 1; local dropDownText = "Herbs"; GathererUIDropDownFilter_OnClick(filterValue, iconIndex, dropDownText); end function GathererUIDropDownFilterOre_OnClick() local filterValue = "mining"; local iconIndex = 2; local dropDownText = "Ore"; GathererUIDropDownFilter_OnClick(filterValue, iconIndex, dropDownText); end function GathererUIDropDownFilterTreasure_OnClick() local filterValue = "treasure"; local iconIndex = 0; local dropDownText = "Treasure"; GathererUIDropDownFilter_OnClick(filterValue, iconIndex, dropDownText); end function GathererUIDropDownFilter_OnClick(filterValue, iconIndex, dropDownText) if ( this:GetID() < 3 and (this.value == "on" or this.value == "off" or this.value == "auto")) then UIDropDownMenu_SetText(Gatherer_GetMenuName(this.value), getglobal("GathererUI_DropDown"..dropDownText)); Gatherer_Command(filterValue.." "..this.value); GathererUI_InitializeMenu(); else Gatherer_Settings.interested[iconIndex][this.value] = not this.checked; end GatherMain_Draw(); end function GathererUI_OnEnterPressed_HerbSkillEditBox() if ( GathererUI_HerbSkillEditBox:GetNumber() > 300 ) then GathererUI_HerbSkillEditBox:SetNumber(300); end if ( GathererUI_HerbSkillEditBox:GetNumber() < 0 ) then GathererUI_HerbSkillEditBox:SetNumber(0); end Gatherer_Settings.minSetHerbSkill = GathererUI_HerbSkillEditBox:GetNumber(); end function GathererUI_OnEnterPressed_OreSkillEditBox() if ( GathererUI_OreSkillEditBox:GetNumber() > 300 ) then GathererUI_OreSkillEditBox:SetNumber(300); end if ( GathererUI_OreSkillEditBox:GetNumber() < 0 ) then GathererUI_OreSkillEditBox:SetNumber(0); end Gatherer_Settings.minSetOreSkill = GathererUI_OreSkillEditBox:GetNumber(); end function GathererUI_OnEnterPressed_IconSizeEditBox() if ( GathererUI_WorldMapIconSize:GetNumber() < 8 or GathererUI_WorldMapIconSize:GetNumber() > 16 ) then if ( Gatherer_Settings.IconSize ) then GathererUI_WorldMapIconSize:SetNumber(Gatherer_Settings.IconSize) else GathererUI_WorldMapIconSize:SetNumber(12); end end Gatherer_Settings.IconSize = GathererUI_WorldMapIconSize:GetNumber(); end function GathererUI_OnEnterPressed_IconAlphaEditBox() if ( GathererUI_WorldMapIconAlpha:GetNumber() < 20 or GathererUI_WorldMapIconAlpha:GetNumber() > 100 ) then if ( Gatherer_Settings.IconAlpha ) then GathererUI_WorldMapIconAlpha:SetNumber(Gatherer_Settings.IconAlpha/100) else GathererUI_WorldMapIconAlpha:SetNumber(80); end end Gatherer_Settings.IconAlpha = GathererUI_WorldMapIconAlpha:GetNumber(); end -- ******************************************************************* -- Zone Rematch Section: Handle with care function GathererUI_ZoneRematch(sourceZoneMapping, destZoneMapping) local zone_swap=0; local new_idx_z, gatherType; NewGatherItems = {} fixedItemCount = 0; Gatherer_ChatPrint(GATHERER_TEXT_APPLY_REMATCH.." "..sourceZoneMapping.." -> "..destZoneMapping); for idx_c, rec_continent in GatherItems do if (idx_c ~= 0) then NewGatherItems[idx_c]= {}; end for idx_z, rec_zone in rec_continent do if ( idx_c ~= 0 and idx_z ~= 0) then new_idx_z= GathererUI_ZoneMatchTable[sourceZoneMapping][destZoneMapping][idx_c][idx_z]; if ( idx_z ~= new_idx_z ) then zone_swap = zone_swap + 1; end; NewGatherItems[idx_c][new_idx_z] = {}; for myItems, rec_gatheritem in rec_zone do local fixedItemName; if (gathererFixItems == 1) then fixedItemName = GathererUI_FixItemName(myItems); else fixedItemName= myItems; end NewGatherItems[idx_c][new_idx_z][fixedItemName] = {}; for idx_item, myGather in rec_gatheritem do local myGatherType, myIcon; if ( type(myGather.gtype) == "number" ) then myGatherType = myGather.gtype; else myGatherType = Gatherer_EGatherType[myGather.gtype]; end if ( type(myGather.icon) == "number" ) then myIcon= myGather.icon; else myIcon= Gatherer_GetDB_IconIndex(myGather.icon, myGatherType); end -- convertion of rich thorium veins to new format if ( myGatherType == 2 and myIcon == 8 ) then myIcon = Gatherer_GetDB_IconIndex(Gatherer_FindOreType(fixedItemName), myGatherType); end NewGatherItems[idx_c][new_idx_z][fixedItemName][idx_item] = { x=myGather.x, y=myGather.y, gtype=myGatherType, icon=myIcon, count=myGather.count }; fixedItemCount = fixedItemCount + 1; end end end end end Gatherer_ChatPrint("Zone swapping completed ("..zone_swap.." done, "..fixedItemCount.." items accounted for).") end -- ******************************************************************* -- Zone Match UI functions function GathererUI_ShowRematchDialog() if ( GathererUI_ZoneRematchDialog:IsVisible() ) then GathererUI_ZoneRematchDialog:Hide() GathererUI_DestinationZoneDropDown:Hide(); else GathererUI_ZoneRematchDialog:Show() end end -- ******************************************************************* -- DropDown Menu functions function GathererUIDropDownSourceZone_Initialize() for index in GathererUI_ZoneMatchTable do local info = {}; info.text = index; info.checked = nil; info.func = GathererUIDropDownFilterSourceZone_OnClick; UIDropDownMenu_AddButton(info); if ( Gatherer_Settings.DataBuild and Gatherer_Settings.DataBuild == info.text ) then UIDropDownMenu_SetText(info.text, GathererUI_SourceZoneDropDown); end end end function GathererUIDropDownDestionationZone_Initialize() local cmd = UIDropDownMenu_GetText(GathererUI_SourceZoneDropDown); if ( cmd and cmd ~= "" ) then for index in GathererUI_ZoneMatchTable[cmd] do local info = {}; info.text = index; info.checked = nil; info.func = GathererUIDropDownFilterDestinationZone_OnClick; UIDropDownMenu_AddButton(info); end end end -- ******************************************************************* -- OnClick in DropDown Menu functions function GathererUIDropDownFilterSourceZone_OnClick() UIDropDownMenu_SetSelectedID(GathererUI_SourceZoneDropDown, this:GetID()); GathererUI_DestinationZoneDropDown:Show(); end function GathererUIDropDownFilterDestinationZone_OnClick() UIDropDownMenu_SetSelectedID(GathererUI_DestinationZoneDropDown, this:GetID()); end -- ******************************************************************* -- Apply Button function GathererUI_ShowRematchDialogApply() local source, dest source = UIDropDownMenu_GetText(GathererUI_SourceZoneDropDown); dest = UIDropDownMenu_GetText(GathererUI_DestinationZoneDropDown); if( source and dest ) then -- hide Option dialog (since the position of the confirmation dialog can cause miss-click on stuff in there) GathererUI_HideOptions() -- add extra confirmation dialog StaticPopup_Show("CONFIRM_REMATCH"); elseif ( not source ) then Gatherer_ChatPrint(GATHERER_TEXT_SRCZONE_MISSING); else Gatherer_ChatPrint(GATHERER_TEXT_DESTZONE_MISSING); end end StaticPopupDialogs["CONFIRM_REMATCH"] = { text = TEXT(GATHERER_TEXT_CONFIRM_REMATCH), button1 = TEXT(ACCEPT), button2 = TEXT(DECLINE), OnAccept = function() Gatherer_ConfirmZoneRematch(); end, timeout = 60, showAlert = 1, }; function Gatherer_ConfirmZoneRematch() local source = UIDropDownMenu_GetText(GathererUI_SourceZoneDropDown); local dest = UIDropDownMenu_GetText(GathererUI_DestinationZoneDropDown); -- Swap tables and Recompute notes GathererUI_ZoneRematch(source, dest); GatherItems = NewGatherItems; Gatherer_Settings.DataBuild = dest; GathererUI_ShowRematchDialog(); end -- ************************************************************************** -- Help Page functions. -- Update the help function GathererUI_HelpFrame_Update() -- Check if an addon is selected GathererUI_HelpFrameName:SetText("Gatherer Help"); local help = GathererHelp; local currentPage = help.currentPage; local totalPages = 9; GathererUI_HelpFrameHelp:SetText(help[currentPage]); GathererUI_HelpFramePage:SetText("Page "..currentPage.."/"..totalPages); GathererUI_HelpFrame_UpdateButtons() end -- Enable/Disable the help buttons function GathererUI_HelpFrame_UpdateButtons() -- Get the help local help = GathererHelp; -- Check if there is an help local currentPage = help.currentPage; local totalPages = 9; -- Check if the current help page is the first one if (currentPage == 1) then GathererUI_HelpFramePrevPageButton:Disable(); else GathererUI_HelpFramePrevPageButton:Enable(); end -- Check if the current help page is the last one if (currentPage == totalPages) then GathererUI_HelpFrameNextPageButton:Disable(); else GathererUI_HelpFrameNextPageButton:Enable(); end end -- Help previous page OnClick event function GathererUI_HelpFramePrevPageButton_OnClick() -- Set the current page to previous page local help = GathererHelp; help.currentPage = help.currentPage - 1; -- Update the help GathererUI_HelpFrame_Update() end -- Help next page OnClick event function GathererUI_HelpFrameNextPageButton_OnClick() -- Set the current page to next page local help = GathererHelp; help.currentPage = help.currentPage + 1; -- Update the help GathererUI_HelpFrame_Update(); end