View Single Post
01-13-15, 02:38 AM   #4
Duugu
Premium Member
 
Duugu's Avatar
AddOn Author - Click to view addons
Join Date: Nov 2006
Posts: 851
Das funktioniert grundsätzlich eigentlich ganz einfach. Am Beispiel von Phanx-Code grob erklärt:

Zuerst erstellst Du einfach ein Frame das später in den Blizzard Interfaceoptionen eingeblendet wird wenn jemand die Optionen für Dein Addon aufruft.

Lua Code:
  1. local Options = CreateFrame("Frame", ADDON.."Options", InterfaceOptionsFramePanelContainer)

Und dann fügst Du dieses Frame den Interfaceoptionen hinzu.

Lua Code:
  1. Options.name = GetAddOnMetadata(ADDON, "Title") or ADDON
  2. InterfaceOptions_AddCategory(Options)
  3. Addon.OptionsPanel = Options
Jetzt musst Du Dein Options-Frame nur noch mit den gewünschten Einstellungselementen füllen und diese entsprechend der aktuellen Einstellungen konfigurieren.

Lua Code:
  1. Options:SetScript("OnShow", function()
  2. --hier werden verschiedene Elemente erstellt und konfiguriert. zum Beispiel ein Titel:
  3.     local Title = Options:CreateFontString("$parentTitle", "ARTWORK", "GameFontNormalLarge")
  4.     Title:SetPoint("TOPLEFT", 16, -16)
  5.     Title:SetText(Options.name)
  6. --danach werden dann Unterkategorien erstellt. Aber ich würde sagen Du versuchst erstmal Optionen ohne Unterkategorien/Registerkarten zu bauen bevor Du Dich damit beschäftigst. :)
  7.  
  8. -- und dann kommen noch die Funktionen für die Standardbuttons die es bei den Optionen für jede Addon gibt (Ok, Abbrechen, Reset)
  9.     function Options.okay()
  10.     --was auch immer bei denen Optionen passieren soll wenn jemand auf ok klickt
  11.     end
  12.     function Options.cancel()
  13.     --was auch immer bei denen Optionen passieren soll wenn jemand auf abbrechen klickt
  14.     end
  15.  
  16. --und mit dieser Funktion werden die einzelnen optionselemente bei der anzeige aktualisiert
  17.     function Options.refresh()
  18.     --deine optionselemente entsprechend der aktuellen Einstellungen konfigurieren
  19.     end
  20. end)
Und zum Schluss wird dann noch ein Slash-Befehl registriert der das Optionsfenster öffnet:

Lua Code:
  1. SLASH_CLEANCOMPARE1 = "/ccompare"
  2. SlashCmdList.CLEANCOMPARE = function() InterfaceOptionsFrame_OpenToCategory(Options) end

Ich hoffe das erhellt die Sache ein wenig. Ansonsten frag einfach noch mal nach.
  Reply With Quote