Ich hab mich mal drangesetzt eine GUI "Bibliothek" / Klasse / Library zu schreiben.
Man kann Fenster erstellen wie mit den standart GUI Funktionen.
local hwnd = exports["gui"]:dxWindow("Einloggen", windowPosX, windowPosY, windowSizeX, windowSizeY)
exports["gui"]:dxWindowSetBorder(hwnd, true)
local usernameLabel = exports["gui"]:dxLabel("Benutzername:", 0, 5, 90, 15, tocolor(255, 255, 255), 1, "default", 0, 0, true, true)
exports["gui"]:dxAddChild(hwnd, usernameLabel)
local username = guiCreateEdit(hwnd:getData("contentStartX")+90, hwnd:getData("contentStartY"), 120, 25, "", false)
local passwordLabel = exports["gui"]:dxLabel("Passwort:", 0, 45, 90, 15, tocolor(255, 255, 255), 1, "default", 0, 0, true, true)
exports["gui"]:dxAddChild(hwnd, passwordLabel)
local password = guiCreateEdit(hwnd:getData("contentStartX")+90, hwnd:getData("contentStartY")+40, 120, 25, "", false)
local registerButton = exports["gui"]:dxButton("Registrieren", nil, nil, 0, 75, 75, 25)
exports["gui"]:dxAddChild(hwnd, registerButton)
addEventHandler("onDxButtonClick", registerButton, function()
hwnd:destroy()
username:destroy()
password:destroy()
createRegisterWindow()
end
)
local loginButton = exports["gui"]:dxButton("Einloggen", nil, nil, 145, 75, 75, 25)
exports["gui"]:dxAddChild(hwnd, loginButton)
Alles anzeigen
Hover in Aktion (Der rechte Button ist per dxSetEnabled(registerButton, false) deaktiviert): http://i.imgur.com/UasbgyN.gifv (gifv werden hier nicht richtig angezeigt deswegen der Link )
Derzeit werden die Edits noch per GUI Funktionen erstellt. Allerdings sieht das irgendwie schräg aus und passt irgendwie nicht in die Bibliothek.
Ich bin offen für Verbesserungsvorschläge, und auch dankbar :P.
Folgende Funktionen exportiert die Bibliothek:
<!-- GLOBAL -->
<export function="dxGetVisible" type="client" />
<export function="dxSetVisible" type="client" />
<export function="dxGetEnabled" type="client" />
<export function="dxSetEnabled" type="client" />
<export function="dxAddChild" type="client" />
<!-- WINDOW -->
<export function="dxWindow" type="client" />
<export function="dxWindowSetTitle" type="client" />
<export function="dxWindowSetPosition" type="client" />
<export function="dxWindowSetSize" type="client" />
<export function="dxWindowSetHeaderColor" type="client" />
<export function="dxWindowSetBorder" type="client" />
<export function="dxWindowSetTitleCentered" type="client" />
<!-- BUTTON -->
<export function="dxButton" type="client" />
<export function="dxButtonSetText" type="client" />
<export function="dxButtonSetFont" type="client" />
<!-- LABEL -->
<export function="dxLabel" type="client" />
<export function="dxLabelSetText" type="client" />
<export function="dxLabelSetColor" type="client" />
<!-- TEXTBOX -->
<export function="dxTextbox" type="client" />
Alles anzeigen
PS:
Ich weiß ich benutze mal OOP mal nicht :P. Hab mich noch nicht ganz an LUA OOP gewöhnt.
(Wusste nicht ob das hier der richtige Bereich ist. Ich hoffe aber.. )