Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local dxRootElement = createElement("dxRootElement")
- local sx,sy = guiGetScreenSize()
- setElementData(dxRootElement,"x",0)
- setElementData(dxRootElement,"y",0)
- setElementData(dxRootElement,"width",sx)
- setElementData(dxRootElement,"height",sy)
- local movedElementOffset = {0,0}
- function dxGridListSetSelectedItem(item)
- for id, element in ipairs (getElementChildren(getElementParent(item))) do
- setElementData(element,"clicked",nil)
- end
- return setElementData(item,"clicked",true)
- end
- function dxGridListGetSelectedItem(grid)
- for id, element in ipairs (getElementChildren(grid)) do
- if getElementData(element,"clicked") then
- return element
- end
- end
- return false
- end
- function dxGridListGetItemCount(grid)
- if not grid then return false end
- local count = 0
- for id, element in ipairs (getElementChildren(grid)) do
- if getElementType(element) ~= "dxScrollBar" then
- count = count + 1
- end
- end
- return count
- end
- function dxGridListSetItemColorCoded(item,bool)
- if not item then return false end
- return setElementData(item,"colored",bool)
- end
- function dxGridListRemoveRow(item)
- return destroyElement(item)
- end
- function dxGridListGetItemText(item)
- return getElementData(item,"text")
- end
- function dxGridListSetItemText(item,text)
- return setElementData(item,"text",text)
- end
- function dxGridListClear(grid)
- for id, element in ipairs (getElementChlidren(grid)) do
- destroyElement(element)
- end
- return true
- end
- function dxGridListGetItemText(item)
- if not item then return false end
- return getElementData(item,"text")
- end
- function dxGridListSetItemText(item,text)
- if not item then return false end
- return setElementData(item,"text",text)
- end
- function dxStaticImageLoadImage(image,path)
- if not image then return false end
- return setElementData(image,"filepath",path)
- end
- function dxScrollBarSetScrollPosition(scroll,position)
- return setElementData(scroll,"scroll",position/100)
- end
- function dxCheckBoxGetSelected(cb)
- if not cb then return false end
- return (getElementData(cb,"check"))
- end
- function dxCheckBoxSetSelected(cb,state)
- if not cb then return false end
- return (setElementData(cb,"check",state))
- end
- function dxEditSetMasked(edit,bool)
- if not edit then return false end
- return setElementData(edit,"masked",bool)
- end
- function dxEditSetReadOnly(edit,bool)
- if not edit then return false end
- return setElementData(edit,"readonly",bool)
- end
- function dxScrollBarGetScrollPosition(scroll)
- return (tonumber(getElementData(scroll,"scroll")*100))
- end
- function dxCreateWindow (x,y,width,height,titleBarText,relative)
- if x and y and width and height and titleBarText then
- if relative then
- x = x * sx
- y = y * sy
- width = width * sx
- height = height * sy
- end
- local element = createElement("dxWindow")
- setElementParent(element,dxRootElement)
- setElementData(element,"x",x)
- setElementData(element,"y",y)
- setElementData(element,"width",width)
- setElementData(element,"height",height)
- setElementData(element,"movable",false)
- setElementData(element,"text",titleBarText)
- setElementData(element,"font","default")
- setElementData(element,"title",tocolor(0,0,0,255))
- setElementData(element,"backgroundColor",tocolor(255,255,255,255))
- return element
- else
- outputDebugString("ERROR: expected arguments are missing(dxCreateWindow)")
- end
- end
- function dxWindowSetTitleBackgroundColor(element,red,green,blue)
- setElementData(element,"titleBackgroundColor",tocolor(red,green,blue,255))
- end
- function dxWindowSetBackgroundColor(element,red,green,blue)
- setElementData(element,"backgroundColor",tocolor(red,green,blue,255))
- end
- function dxCreateGridList (x,y,width,height,relative,parent)
- if x and y and height and width then
- if relative then
- if parent then
- x = x*getElementData(parent,"x")
- y = y*getElementData(parent,"y")
- else
- x = x * sx
- y = y* sy
- end
- end
- local element = createElement("dxGridList")
- setElementParent(element,parent or dxRootElement)
- setElementData(element,"x",x)
- setElementData(element,"y",y)
- setElementData(element,"width",width)
- setElementData(element,"height",height)
- setElementData(element,"filepath",filepath)
- setElementData(element,"parent",parent)
- setElementData(element,"state","normal")
- return element
- else
- outputDebugString("ERROR: expected arguments are missing (dxCreateGridList)")
- end
- end
- function dxButtonSetBackgroundImage(button,state,path)
- if not button or not state or not path then return false end
- if path == "default" then
- path = "images/button"
- if state == "normal" then
- path = path..".png"
- elseif state == "clicked" then
- path = path..state.."clicked.png"
- elseif state == "hovered" then
- path = path..state.."hover.png"
- end
- end
- return setElementData(button,path.."path",path)
- end
- function dxCreateProgressBar (x,y,width,height,relative,parent)
- if x and y and height and width then
- if relative then
- if parent then
- x = x*getElementData(parent,"x")
- y = y*getElementData(parent,"y")
- else
- x = x * sx
- y = y* sy
- end
- end
- local element = createElement("dxProgressBar")
- setElementParent(element,parent or dxRootElement)
- setElementData(element,"x",x)
- setElementData(element,"y",y)
- setElementData(element,"width",width)
- setElementData(element,"height",height)
- setElementData(element,"progress",50)
- setElementData(element,"parent",parent)
- setElementData(element,"state","normal")
- return element
- else
- outputDebugString("ERROR: expected arguments are missing (dxCreateGridList)")
- end
- end
- function dxCreateScrollBar (x,y,width,height,horizontal, relative,parent)
- if x and y and height and width then
- if relative then
- if parent then
- x = x*getElementData(parent,"x")
- y = y*getElementData(parent,"y")
- else
- x = x * sx
- y = y* sy
- end
- end
- local element = createElement("dxScrollBar")
- setElementParent(element,parent or dxRootElement)
- setElementData(element,"x",x)
- setElementData(element,"y",y)
- setElementData(element,"scroll",0)
- setElementData(element,"horizontal",horizontal)
- setElementData(element,"width",width)
- setElementData(element,"height",height)
- setElementData(element,"filepath",filepath)
- setElementData(element,"parent",parent)
- setElementData(element,"state","normal")
- addEventHandler("onClientDXClick",element,
- function()
- local cx,cy = getCursorPosition()
- cx = cx * sx
- cy = cy * sy
- local x = 0
- local y = 0
- if getElementData(source,"parent") then
- x = getElementData(getElementParent(source),"x")
- y = getElementData(getElementParent(source),"y")
- end
- if getElementData(source,"horizontal") then
- cx = cx - getElementData(source,"x") - x
- cx = cx - (getElementData(source,"scroll")*getElementData(source,"width")/2)
- if cx >= 0 and cx <= ((getElementData(source,"width")/2)) then
- setElementData(source,"attachOffset",cx)
- end
- else
- cy = cy - getElementData(source,"y") - y
- cy = cy - (getElementData(source,"scroll")*getElementData(source,"height")/2)
- if cy >= 0 and cy <= ((getElementData(source,"height")/2)) then
- setElementData(source,"attachOffset",cy)
- end
- end
- end
- )
- return element
- else
- outputDebugString("ERROR: expected arguments are missing (dxCreateButton)")
- end
- end
- function dxCreateStaticImage (x,y,width,height,filepath,relative,parent)
- if x and y and height and width and filepath then
- if relative then
- if parent then
- x = x*getElementData(parent,"x")
- y = y*getElementData(parent,"y")
- else
- x = x * sx
- y = y* sy
- end
- end
- local element = createElement("dxStaticImage")
- setElementParent(element,parent or dxRootElement)
- setElementData(element,"x",x)
- setElementData(element,"y",y)
- setElementData(element,"width",width)
- setElementData(element,"height",height)
- setElementData(element,"filepath",filepath)
- setElementData(element,"parent",parent)
- setElementData(element,"state","normal")
- return element
- else
- outputDebugString("ERROR: expected arguments are missing (dxCreateButton)")
- end
- end
- function dxCreateLabel (x,y,width,height,text,relative,parent,colorcoded)
- if x and y and height and width and text then
- if relative then
- if parent then
- x = x*getElementData(parent,"x")
- y = y*getElementData(parent,"y")
- else
- x = x * sx
- y = y* sy
- end
- end
- local element = createElement("dxLabel")
- setElementParent(element,parent or dxRootElement)
- setElementData(element,"font","default")
- setElementData(element,"x",x)
- setElementData(element,"y",y)
- setElementData(element,"width",width)
- setElementData(element,"height",height)
- setElementData(element,"text",text)
- setElementData(element,"parent",parent)
- setElementData(element,"state","normal")
- setElementData(element,"colorcoded",colorcoded)
- return element
- else
- outputDebugString("ERROR: expected arguments are missing (dxCreateLabel)")
- end
- end
- function dxCreateButton(x,y,width,height,text,relative,parent)
- if x and y and height and width and text then
- if relative then
- if parent then
- x = x*getElementData(parent,"x")
- y = y*getElementData(parent,"y")
- else
- x = x * sx
- y = y* sy
- end
- end
- local element = createElement("dxButton")
- setElementParent(element,parent or dxRootElement)
- setElementData(element,"x",x)
- setElementData(element,"y",y)
- setElementData(element,"width",width)
- setElementData(element,"height",height)
- setElementData(element,"text",text)
- setElementData(element,"parent",parent)
- setElementData(element,"state","normal")
- setElementData(element,"normalpath","images/button.png")
- setElementData(element,"hoveredpath","images/buttonhover.png")
- setElementData(element,"clickedpath","images/buttonclicked.png")
- return element
- else
- outputDebugString("ERROR: expected arguments are missing (dxCreateButton)")
- end
- end
- function dxCreateEdit(x,y,width,height,text,relative,parent)
- if x and y and height and width and text then
- if relative then
- if parent then
- x = x*getElementData(parent,"x")
- y = y*getElementData(parent,"y")
- else
- x = x * sx
- y = y* sy
- end
- end
- local element = createElement("dxEdit")
- setElementParent(element,parent or dxRootElement)
- setElementData(element,"x",x)
- setElementData(element,"y",y)
- setElementData(element,"width",width)
- setElementData(element,"height",height)
- setElementData(element,"text",text)
- setElementData(element,"parent",parent)
- setElementData(element,"state","normal")
- setElementData(element,"font","default")
- addEventHandler("onClientDXClick",element,moveCursor)
- return element
- else
- outputDebugString("ERROR: expected arguments are missing (dxCreateEdit)")
- end
- end
- function dxCreateMemo(x,y,width,height,text,relative,parent)
- if x and y and height and width and text then
- if relative then
- if parent then
- x = x*getElementData(parent,"x")
- y = y*getElementData(parent,"y")
- else
- x = x * sx
- y = y* sy
- end
- end
- local element = createElement("dxMemo")
- setElementParent(element,parent or dxRootElement)
- setElementData(element,"x",x)
- setElementData(element,"y",y)
- setElementData(element,"width",width)
- setElementData(element,"height",height)
- setElementData(element,"text",text)
- setElementData(element,"parent",parent)
- setElementData(element,"state","normal")
- setElementData(element,"font","default")
- addEventHandler("onClientDXClick",element,moveCursor)
- return element
- else
- outputDebugString("ERROR: expected arguments are missing (dxCreateEdit)")
- end
- end
- function dxCreateCheckBox(x,y,text,selected,relative,parent)
- if x and y and text then
- if relative then
- if parent then
- x = x*getElementData(parent,"x")
- y = y*getElementData(parent,"y")
- else
- x = x * sx
- y = y* sy
- end
- end
- local element = createElement("dxCheckBox")
- setElementParent(element,parent or dxRootElement)
- setElementData(element,"x",x)
- setElementData(element,"y",y)
- setElementData(element,"width",20)
- setElementData(element,"height",20)
- setElementData(element,"text",text)
- setElementData(element,"check",selected)
- setElementData(element,"parent",parent)
- setElementData(element,"state","normal")
- setElementData(element,"font","default")
- addEventHandler("onClientDXClick",element,function () setElementData(source,"check",not getElementData(source,"check")) end)
- return element
- else
- outputDebugString("ERROR: expected arguments are missing (dxCreateButton)")
- end
- end
- function setEditText ()
- local control = controls()
- for id,element in ipairs(getElementsByType("dxEdit")) do
- if getElementData(element,"input") and not getElementData(element,"readonly") then
- if control == "backspace" then
- setElementData(element,"text",string.sub(getElementData(element,"text"),1,string.len(getElementData(element,"text"))-1))
- else
- if getElementData(element,"maxlength") then
- if (string.len(getElementData(element,"text"))) < getElementData(element,"maxlength") then
- setElementData(element,"text",getElementData(element,"text")..control)
- end
- else
- setElementData(element,"text",getElementData(element,"text")..control)
- end
- end
- end
- end
- end
- function moveCursor()
- for id, element in ipairs (getElementsByType("dxEdit")) do
- setElementData(element,"input",nil)
- end
- setElementData(source,"input",true)
- removeEventHandler("onClientRender",getRootElement(),setEditText)
- addEventHandler("onClientRender",getRootElement(),setEditText)
- end
- local KeyStates = {}
- function controls()
- keyTable = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k",
- "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z","backspace","num_0", "num_1", "num_2", "num_3", "num_4", "num_5",
- "num_6", "num_7", "num_8", "num_9", "num_mul", "num_add", "num_sub", "num_div", "num_dec","space","[", "]", ";", ",", "-", ".", "/", "#", "\\", "="}
- for id, key in ipairs(keyTable) do
- if getKeyState(key) then
- if not KeyStates[id] then
- KeyStates = {}
- KeyStates[id] = true
- if key == "num_0" then return "0"
- elseif key == "num_1" then return "1"
- elseif key == "num_2" then return "2"
- elseif key == "num_3" then return "3"
- elseif key == "num_4" then return "4"
- elseif key == "num_5" then return "5"
- elseif key == "num_6" then return "6"
- elseif key == "num_7" then return "7"
- elseif key == "num_8" then return "8"
- elseif key == "num_9" then return "9"
- elseif key == "num_add" then return "+"
- elseif key == "num_sub" then return "-"
- elseif key == "num_div" then return "/"
- elseif key == "num_mul" then return "*"
- elseif key == "num_dec" then return ","
- elseif key == "space" then return " "
- else
- if not (getKeyState("lshift") or getKeyState("rshift")) then
- return key
- else
- return string.upper(key)
- end
- end
- else
- return ""
- end
- end
- end
- KeyStates = {}
- return ""
- end
- function dxWindowSetMovable(window,bool)
- if not window then return false end
- return setElementData(window,"movable",bool)
- end
- function drawingGUI()
- for id, dxGUIElement in ipairs (getElementsByType("dxWindow")) do
- if getElementData(dxGUIElement,"movable") then
- if elementBeingMoved == dxGUIElement then
- if isCursorShowing() then
- local cx,cy = getCursorPosition()
- cx = cx*sx
- cy = cy*sy
- setElementData(dxGUIElement,"x", cx - movedElementOffset[1])
- setElementData(dxGUIElement,"y", cy - movedElementOffset[2])
- end
- end
- end
- dxDrawImage( getElementData(dxGUIElement,"x"), getElementData(dxGUIElement,"y"), getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"height"), "images/window.png",0,0,0,getElementData(dxGUIElement,"backgroundColor"))
- dxDrawImageSection ( getElementData(dxGUIElement,"x"), getElementData(dxGUIElement,"y"), getElementData(dxGUIElement,"width"), 30,0,0,800,(600/getElementData(dxGUIElement,"height"))*30,"images/window.png",0,0,0,getElementData(dxGUIElement,"titleBackgroundColor"))
- dxDrawText(getElementData(dxGUIElement,"text"),getElementData(dxGUIElement,"x"),getElementData(dxGUIElement,"y"),getElementData(dxGUIElement,"x")+getElementData(dxGUIElement,"width"),getElementData(dxGUIElement,"y")+30,tocolor(255,255,255,255),1.3 * (15/dxGetFontHeight(1,getElementData(dxGUIElement,"font"))),getElementData(dxGUIElement,"font"),"center","center")
- end
- for id, dxGUIElement in ipairs (getElementsByType("dxCheckBox")) do
- local x = 0
- local y = 0
- if getElementData(dxGUIElement,"parent") then
- x = getElementData(getElementParent(dxGUIElement),"x")
- y = getElementData(getElementParent(dxGUIElement),"y")
- end
- if getElementData(dxGUIElement,"state") == "normal" then
- if getElementData(dxGUIElement,"check") then
- dxDrawImage( getElementData(dxGUIElement,"x")+x, getElementData(dxGUIElement,"y")+y,20,20, "images/checkboxcheck.png")
- else
- dxDrawImage( getElementData(dxGUIElement,"x")+x, getElementData(dxGUIElement,"y")+y, 20,20, "images/checkbox.png")
- end
- else
- if getElementData(dxGUIElement,"check") then
- dxDrawImage( getElementData(dxGUIElement,"x")+x, getElementData(dxGUIElement,"y")+y, 20,20, "images/checkboxcheck_hover.png")
- else
- dxDrawImage( getElementData(dxGUIElement,"x")+x, getElementData(dxGUIElement,"y")+y, 20,20, "images/checkbox_hover.png")
- end
- end
- dxDrawText(getElementData(dxGUIElement,"text"),getElementData(dxGUIElement,"x")+x+25, getElementData(dxGUIElement,"y")+y,0,getElementData(dxGUIElement,"y")+y+20,tocolor(255,255,255,255),1.5*(15/dxGetFontHeight(1,getElementData(dxGUIElement,"font"))),getElementData(dxGUIElement,"font"),"left","center")
- end
- for id, dxGUIElement in ipairs (getElementsByType("dxButton")) do
- local x = 0
- local y = 0
- if getElementData(dxGUIElement,"parent") then
- x = getElementData(getElementParent(dxGUIElement),"x")
- y = getElementData(getElementParent(dxGUIElement),"y")
- end
- if getElementData(dxGUIElement,"state") == "normal" then
- dxDrawImage( getElementData(dxGUIElement,"x")+x, getElementData(dxGUIElement,"y")+y, getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"height"), getElementData(dxGUIElement,"normalpath"))
- elseif getElementData(dxGUIElement,"state") == "hovered" then
- dxDrawImage( getElementData(dxGUIElement,"x")+x, getElementData(dxGUIElement,"y")+y, getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"height"), getElementData(dxGUIElement,"hoveredpath"))
- elseif getElementData(dxGUIElement,"state") == "clicked" then
- dxDrawImage( getElementData(dxGUIElement,"x")+x, getElementData(dxGUIElement,"y")+y, getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"height"), getElementData(dxGUIElement,"clickedpath"))
- end
- dxDrawText(getElementData(dxGUIElement,"text"),getElementData(dxGUIElement,"x")+x, getElementData(dxGUIElement,"y")+y,getElementData(dxGUIElement,"x")+x+getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"y")+y+getElementData(dxGUIElement,"height"),tocolor(255,255,255,255),1.5*(15/dxGetFontHeight(1,getElementData(dxGUIElement,"font"))),getElementData(dxGUIElement,"font"),"center","center")
- end
- for id, dxGUIElement in ipairs (getElementsByType("dxEdit")) do
- local x = 0
- local y = 0
- local text = getElementData(dxGUIElement,"text")
- if getElementData(dxGUIElement,"masked") then
- text = string.gsub(text,".","*")
- end
- if getElementData(dxGUIElement,"parent") then
- x = getElementData(getElementParent(dxGUIElement),"x")
- y = getElementData(getElementParent(dxGUIElement),"y")
- end
- if getElementData(dxGUIElement,"state") == "normal" then
- dxDrawImage( getElementData(dxGUIElement,"x")+x, getElementData(dxGUIElement,"y")+y, getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"height"), "images/edit.png")
- else
- dxDrawImage( getElementData(dxGUIElement,"x")+x, getElementData(dxGUIElement,"y")+y, getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"height"), "images/edit_hover.png")
- end
- if dxGetTextWidth(text,getElementData(dxGUIElement,"height")/15) <= getElementData(dxGUIElement,"width") then
- dxDrawText(text,getElementData(dxGUIElement,"x")+x+5, getElementData(dxGUIElement,"y")+y,getElementData(dxGUIElement,"x")+x+getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"y")+y+getElementData(dxGUIElement,"height"),tocolor(0,0,0,255),getElementData(dxGUIElement,"height")/( dxGetFontHeight(1,getElementData(dxGUIElement,"font")) ),getElementData(dxGUIElement,"font"),"left","center",true)
- else
- dxDrawText(text,getElementData(dxGUIElement,"x")+x+5, getElementData(dxGUIElement,"y")+y,getElementData(dxGUIElement,"x")+x+getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"y")+y+getElementData(dxGUIElement,"height"),tocolor(0,0,0,255),getElementData(dxGUIElement,"height")/dxGetFontHeight(1,getElementData(dxGUIElement,"font")),getElementData(dxGUIElement,"font"),"right","center",true)
- end
- end
- for id, dxGUIElement in ipairs (getElementsByType("dxMemo")) do
- local x = 0
- local y = 0
- if getElementData(dxGUIElement,"parent") then
- x = getElementData(getElementParent(dxGUIElement),"x")
- y = getElementData(getElementParent(dxGUIElement),"y")
- end
- if getElementData(dxGUIElement,"state") == "normal" then
- dxDrawImage( getElementData(dxGUIElement,"x")+x, getElementData(dxGUIElement,"y")+y, getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"height"), "images/memo.png")
- else
- dxDrawImage( getElementData(dxGUIElement,"x")+x, getElementData(dxGUIElement,"y")+y, getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"height"), "images/memo_hover.png")
- end
- --Since I haven't got bottom aligning of a huge text working, I disabled it. It would only show last line of text and that is useful anyways. Because of that, dxMemos are NOT editable.
- --if ((dxGetTextWidth(getElementData(dxGUIElement,"text"),1.5)/getElementData(dxGUIElement,"width"))*22.5) <= getElementData(dxGUIElement,"height") then --This calculation isn't perfect too, but there isn't better way.
- dxDrawText(getElementData(dxGUIElement,"text"),getElementData(dxGUIElement,"x")+x+5, getElementData(dxGUIElement,"y")+y,getElementData(dxGUIElement,"x")+x+getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"y")+y+getElementData(dxGUIElement,"height"),tocolor(0,0,0,255),1.5*(15/dxGetFontHeight(1,getElementData(dxGUIElement,"font"))),getElementData(dxGUIElement,"font"),"left","top",true,true)
- --else
- -- dxDrawText(getElementData(dxGUIElement,"text"),getElementData(dxGUIElement,"x")+x+5, getElementData(dxGUIElement,"y")+y ,getElementData(dxGUIElement,"x")+x+getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"y")+y+getElementData(dxGUIElement,"height"),tocolor(0,0,0,255),1.5*(15/dxGetFontHeight(1,getElementData(dxGUIElement,"font"))),getElementData(dxGUIElement,"font"),"left","bottom",true,true)
- --end
- end
- for id, dxGUIElement in ipairs (getElementsByType("dxStaticImage")) do
- local x = 0
- local y = 0
- if getElementData(dxGUIElement,"parent") then
- x = getElementData(getElementParent(dxGUIElement),"x")
- y = getElementData(getElementParent(dxGUIElement),"y")
- end
- dxDrawImage( getElementData(dxGUIElement,"x")+x, getElementData(dxGUIElement,"y")+y, getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"height"), getElementData(dxGUIElement,"filepath"))
- end
- for id, dxGUIElement in ipairs (getElementsByType("dxLabel")) do
- local x = 0
- local y = 0
- if getElementData(dxGUIElement,"parent") then
- x = getElementData(getElementParent(dxGUIElement),"x")
- y = getElementData(getElementParent(dxGUIElement),"y")
- end
- if not getElementData(dxGUIElement,"colorcoded") then
- dxDrawText(getElementData(dxGUIElement,"text"),getElementData(dxGUIElement,"x")+x+5, getElementData(dxGUIElement,"y")+y,getElementData(dxGUIElement,"x")+x+getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"y")+y+getElementData(dxGUIElement,"height"),tocolor(255,255,255,255),getElementData(dxGUIElement,"height")/dxGetFontHeight(1,getElementData(dxGUIElement,"font")),getElementData(dxGUIElement,"font"),"left","top",true,false)
- else
- dxDrawColoredText(getElementData(dxGUIElement,"text"),getElementData(dxGUIElement,"x")+x+5, getElementData(dxGUIElement,"y")+y,getElementData(dxGUIElement,"x")+x+getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"y")+y+getElementData(dxGUIElement,"height"),tocolor(255,255,255,255),getElementData(dxGUIElement,"height")/dxGetFontHeight(1,getElementData(dxGUIElement,"font")),getElementData(dxGUIElement,"font"),"left","top",true,false)
- end
- end
- for id, dxGUIElement in ipairs (getElementsByType("dxScrollBar")) do
- local x = 0
- local y = 0
- if getElementData(dxGUIElement,"parent") then
- x = getElementData(getElementParent(dxGUIElement),"x")
- y = getElementData(getElementParent(dxGUIElement),"y")
- end
- if not getElementData(dxGUIElement,"horizontal") then
- dxDrawRectangle(getElementData(dxGUIElement,"x")+x+5-1, getElementData(dxGUIElement,"y")+y,getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"height")+2,tocolor(50,50,50,130))
- dxDrawRectangle(getElementData(dxGUIElement,"x")+x+5, getElementData(dxGUIElement,"y")+y + ((getElementData(dxGUIElement,"height")/2)*getElementData(dxGUIElement,"scroll")),getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"height")/2,tocolor(155,155,155,200))
- else
- dxDrawRectangle(getElementData(dxGUIElement,"x")+x+5, getElementData(dxGUIElement,"y")+y,getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"height"),tocolor(50,50,50,130))
- dxDrawRectangle(getElementData(dxGUIElement,"x")+x+5+ ((getElementData(dxGUIElement,"width")/2)*getElementData(dxGUIElement,"scroll")), getElementData(dxGUIElement,"y")+y ,getElementData(dxGUIElement,"width")/2, getElementData(dxGUIElement,"height"),tocolor(155,155,155,200))
- end
- end
- for id, dxGUIElement in ipairs (getElementsByType("dxGridList")) do
- local x = 0
- local y = 0
- if getElementData(dxGUIElement,"parent") then
- x = getElementData(getElementParent(dxGUIElement),"x")
- y = getElementData(getElementParent(dxGUIElement),"y")
- end
- dxDrawImage( getElementData(dxGUIElement,"x")+x, getElementData(dxGUIElement,"y")+y, getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"height"), "images/grid.png")
- local no = #getElementChildren( dxGUIElement )
- for id, item in ipairs (getElementChildren( dxGUIElement )) do
- local delta = 0
- if getElementData(dxGUIElement,"scrollbar") then
- local delta = getElementData(getElementData(dxGUIElement,"scrollbar"),"scroll")*no*1.5*15
- end
- delta = delta/2
- if (((id)*1.5*15)-delta) <= (getElementData(dxGUIElement,"height")+22.5) and (((id)*1.5*15)-delta) >= 0 then
- setElementData(item,"shown",true)
- if getElementData(item,"state") == "hovered" then dxDrawRectangle(getElementData(dxGUIElement,"x")+x,3+ getElementData(dxGUIElement,"y")+y + math.max(((id-1)*1.5*15)-delta,0),getElementData(dxGUIElement,"width")-3,getItemShowingHeight(item),tocolor(255,255,255,100)) end
- if getElementData(item,"state") == "clicked" then dxDrawRectangle(getElementData(dxGUIElement,"x")+x,3+ getElementData(dxGUIElement,"y")+y + math.max(((id-1)*1.5*15)-delta,0),getElementData(dxGUIElement,"width")-3,getItemShowingHeight(item),tocolor(0,0,0,100)) for id, el in ipairs(getElementChildren(getElementParent(item))) do setElementData(el,"clicked",nil) end setElementData(item,"clicked",true) end
- if getElementData(item,"clicked") then dxDrawRectangle(getElementData(dxGUIElement,"x")+x,3+ getElementData(dxGUIElement,"y")+y + math.max(((id-1)*1.5*15)-delta,0),getElementData(dxGUIElement,"width")-3,getItemShowingHeight(item),tocolor(0,0,255,100)) end
- if getElementData(item,"colored") then
- dxDrawColoredText(getElementData(item,"text"),getElementData(dxGUIElement,"x")+x+3,3+ getElementData(dxGUIElement,"y")+y + math.max(((id-1)*1.5*15)-delta,0),getElementData(dxGUIElement,"width")+getElementData(dxGUIElement,"x")+x-3,getElementData(dxGUIElement,"y")+y + math.min(getElementData(dxGUIElement,"height"),((id)*1.5*15)-delta)-3,tocolor(255,255,255,255),1.3,"default","left", getItemAlign(math.max(((id-1)*1.5*15)-delta,0)) ,true)
- else
- dxDrawText(getElementData(item,"text"),getElementData(dxGUIElement,"x")+x+3,3+ getElementData(dxGUIElement,"y")+y + math.max(((id-1)*1.5*15)-delta,0),getElementData(dxGUIElement,"width")+getElementData(dxGUIElement,"x")+x-3,getElementData(dxGUIElement,"y")+y + math.min(getElementData(dxGUIElement,"height"),((id)*1.5*15)-delta)-3,tocolor(255,255,255,255),1.3,"default","left", getItemAlign(math.max(((id-1)*1.5*15)-delta,0)) ,true)
- end
- setElementData(item,"width",getElementData(dxGUIElement,"width"))
- setElementData(item,"height",15*1.5)
- setElementData(item,"x",getElementData(dxGUIElement,"x")+x)
- setElementData(item,"y",3+ getElementData(dxGUIElement,"y")+y + math.max(((id-1)*1.5*15)-delta,0))
- else
- setElementData(item,"shown",false)
- end
- end
- for id, dxGUIElement in ipairs (getElementsByType("dxProgressBar")) do
- local x = 0
- local y = 0
- if getElementData(dxGUIElement,"parent") then
- x = getElementData(getElementParent(dxGUIElement),"x")
- y = getElementData(getElementParent(dxGUIElement),"y")
- end
- dxDrawImage( getElementData(dxGUIElement,"x")+x, getElementData(dxGUIElement,"y")+y, getElementData(dxGUIElement,"width"), getElementData(dxGUIElement,"height"), "images/progress.png")
- dxDrawRectangle(getElementData(dxGUIElement,"x")+x+5, getElementData(dxGUIElement,"y")+y+5, ((getElementData(dxGUIElement,"width")-10)*((getElementData(dxGUIElement,"progress")/100))),getElementData(dxGUIElement,"height")-10,tocolor(0,255,0,155))
- end
- end
- end
- function getItemAlign(value)
- if value == 0 then return "bottom" else return "top" end
- end
- function getItemShowingHeight(item)
- local y = getElementData(item,"y")
- local gx,gy = dxGetPosition(getElementParent(item))
- local delta = getElementData(getElementParent(item),"height") - (y-gy)
- return math.min(delta,22.5)
- end
- function dxGridListAddRow(gridlist,text)
- if gridlist and text then
- local element = createElement("dxGridListItem")
- setElementParent(element,gridlist)
- setElementData(element,"text",text)
- if (#(getElementChildren(gridlist))*15*1.5) >= getElementData(gridlist,"height") and not getElementData(gridlist,"scrollbar")then
- setElementData(gridlist,"width",getElementData(gridlist,"width")-20)
- local x,y = dxGetPosition(gridlist)
- local x1,y1 = dxGetPosition(getElementParent(gridlist))
- x = x- x1
- y = y - y1
- local scrollbar = dxCreateScrollBar(x+getElementData(gridlist,"width")-5,y,20,getElementData(gridlist,"height"),false,false,getElementParent(gridlist))
- setElementData(gridlist,"scrollbar",scrollbar)
- end
- return element
- else
- outputDebugString("ERROR: expected arguments are missing (dxGridListAddRow)")
- return false
- end
- end
- function dxGetPosition(element,relative)
- if not element then return false end
- local x = getElementData(element,"x")
- local y = getElementData(element,"y")
- local px = getElementData(getElementParent(element),"x")
- local py = getElementData(getElementParent(element),"y")
- if not relative then
- return x + px, y + py
- else
- return x/px, y/py
- end
- end
- function dxSetPosition(element,fx,fy,relative)
- if not element then return false end
- local x = getElementData(element,"x")
- local y = getElementData(element,"y")
- local px = getElementData(getElementParent(element),"x")
- local py = getElementData(getElementParent(element),"y")
- if not relative then
- setElementData(element,"x",fx)
- setElementData(element,"y",fy)
- else
- setElementData(element,"x",fx*px)
- setElementData(element,"y",fy*py)
- end
- end
- function dxSetSize(element,fx,fy,relative)
- if not element then return false end
- local px = getElementData(getElementParent(element),"width")
- local py = getElementData(getElementParent(element),"height")
- if not relative then
- setElementData(element,"width",fx)
- return setElementData(element,"height",fy)
- else
- setElementData(element,"height",fx*px)
- return setElementData(element,"width",fy*py)
- end
- end
- function dxGetSize(element,relative)
- if not element then return false end
- local px = getElementData(getElementParent(element),"width")
- local py = getElementData(getElementParent(element),"height")
- if not relative then
- return getElementData(element,"width"),getElementData(element,"height")
- else
- return (getElementData(element,"height"))/py, (getElementData(element,"width"))/py
- end
- end
- function dxEditSetMaxLength (edit,length)
- if not edit then return false end
- return setElementData(edit,"maxlength",length)
- end
- function dxProgressBarSetProgress(progressbar,progress)
- if not progressbar then return false end
- return setElementData(progressbar,"progress",progress)
- end
- function dxProgressBarGetProgress(progressbar)
- if not progressbar then return false end
- return getElementData(progressbar,"progress")
- end
- function dxSetFont(element,font)
- return setElementData(element,"font",font)
- end
- function dxGetFont(element)
- return getElementData(element,"font")
- end
- addEventHandler("onClientRender",getRootElement(),
- function()
- if not attachedScrollBar then return end
- local cx, cy = getCursorPosition()
- if not cx or not cy then return end
- cx = cx * sx
- cy = cy * sy
- local x = 0
- local y = 0
- if getElementData(attachedScrollBar,"parent") then
- x = getElementData(getElementParent(attachedScrollBar),"x")
- y = getElementData(getElementParent(attachedScrollBar),"y")
- end
- if getElementData(attachedScrollBar,"horizontal") then
- x = x + getElementData(attachedScrollBar,"x")
- cx = cx - x - (getElementData(attachedScrollBar,"attachOffset") or 0 )
- local scroll = cx / (getElementData(attachedScrollBar,"width")/2)
- scroll = math.max(0,scroll)
- scroll = math.min(1,scroll)
- setElementData(attachedScrollBar,"scroll",scroll)
- else
- y = y + getElementData(attachedScrollBar,"y")
- cy = cy - y - (getElementData(attachedScrollBar,"attachOffset") or 0 )
- local scroll = cy / (getElementData(attachedScrollBar,"height")/2)
- scroll = math.max(0,scroll)
- scroll = math.min(1,scroll)
- setElementData(attachedScrollBar,"scroll",scroll)
- end
- end
- )
- function GUIstates()
- if not isCursorShowing() then return end
- local x,y = getCursorPosition()
- x = x * sx
- y = y * sy
- for id,element_r in ipairs(getElementChildren(dxRootElement)) do
- for id, element in ipairs(getElementChildren(element_r)) do
- if getElementType(element) == "dxGridList" then
- for id, element in ipairs(getElementChildren(element)) do
- if getElementType(element) == "dxGridListItem" and getElementData(element,"shown") then
- local g_height = getElementData(element,"height") or 0
- local g_width = getElementData(element,"width") or 0
- local px = getElementData(element,"x")
- local py = getElementData(element,"y")
- if x >= px and x <= (px+g_width) and y >= py and y <= (py + g_height) then
- if getKeyState("mouse1") then
- setElementData(element,"state","clicked",sync)
- else
- setElementData(element,"state","hovered",sync)
- end
- else
- setElementData(element,"state","normal",sync)
- end
- end
- end
- else
- local g_height = getElementData(element,"height") or 0
- local g_width = getElementData(element,"width") or 0
- local px, py = dxGetPosition(element)
- if x >= px and x <= (px+g_width) and y >= py and y <= (py + g_height) then
- if getKeyState("mouse1") then
- setElementData(element,"state","clicked",sync)
- else
- if getElementData(element,"state") == "normal" then
- triggerEvent("onClientDXMouseEnter",element)
- end
- setElementData(element,"state","hovered",sync)
- end
- else
- if getElementData(element,"state") == "hovered" then
- triggerEvent("onClientDXMouseLeave",element)
- end
- setElementData(element,"state","normal",sync)
- end
- end
- end
- end
- end
- function movingGUI(button,state,x,y)
- attachedScrollBar = nil
- for id, element in ipairs (getElementsByType("dxEdit")) do
- setElementData(element,"input",nil)
- end
- if button == "left" and state == "down" then
- for id, element in ipairs(getElementChildren(dxRootElement)) do
- local width = getElementData(element,"width") or 0
- local height = getElementData(element,"height") or 0
- if x >= getElementData(element,"x") and x <= (getElementData(element,"x")+width) and y >= getElementData(element,"y") and y <= (getElementData(element,"y") + 30) then
- elementBeingMoved = element
- movedElementOffset = { x - getElementData(element,"x"), y - getElementData(element,"y")}
- end
- end
- for id, element in ipairs(getElementsByType("dxScrollBar")) do
- local g_height = getElementData(element,"height") or 0
- local g_width = getElementData(element,"width") or 0
- local px, py = dxGetPosition(element)
- if x >= px and x <= (px+g_width) and y >= py and y <= (py + g_height) then
- if getElementType(element) == "dxScrollBar" then
- triggerEvent("onClientDXClick",element)
- attachedScrollBar = element
- end
- end
- end
- else
- elementBeingMoved = nil
- for id,element_r in ipairs(getElementChildren(dxRootElement)) do
- for id, element in ipairs(getElementChildren(element_r)) do
- local g_height = getElementData(element,"height") or 0
- local g_width = getElementData(element,"width") or 0
- local px, py = dxGetPosition(element)
- if x >= px and x <= (px+g_width) and y >= py and y <= (py + g_height) then
- if state == "up" and button =="left" then
- triggerEvent("onClientDXClick",element)
- end
- end
- end
- end
- end
- end
- function dxDrawColoredText(str, ax, ay, bx, by, color, scale, font,left,top)
- left = "left"
- if not top then top = "top" end
- --This function isn't mine, I found it on community, but unfortunately I don't remember the author's name. Credits go to him, though it is easy to make it by yourself
- local pat = "(.-)#(%x%x%x%x%x%x)"
- local s, e, cap, col = str:find(pat, 1)
- local last = 1
- while s do
- if cap == "" and col then color = tocolor(tonumber("0x"..col:sub(1, 2)), tonumber("0x"..col:sub(3, 4)), tonumber("0x"..col:sub(5, 6)), 255) end
- if s ~= 1 or cap ~= "" then
- local w = dxGetTextWidth(cap, scale, font)
- dxDrawText(cap, ax, ay, ax + w, by, color, scale, font,left,top,true)
- ax = ax + w
- color = tocolor(tonumber("0x"..col:sub(1, 2)), tonumber("0x"..col:sub(3, 4)), tonumber("0x"..col:sub(5, 6)), 255)
- end
- last = e + 1
- s, e, cap, col = str:find(pat, last)
- end
- if last <= #str then
- cap = str:sub(last)
- local w = dxGetTextWidth(cap, scale, font)
- dxDrawText(cap, ax, ay, ax + w, by, color, scale, font,left,top,true)
- end
- end
- function dxGetText(element)
- if not element then return false end
- return getElementData(element,"text")
- end
- function dxSetText(element,text)
- if not element then return false end
- return setElementData(element,"text",text)
- end
- addEvent("onClientDXClick",true)
- addEvent("onClientDXMouseEnter",true)
- addEvent("onClientDXMouseLeave",true)
- addEventHandler("onClientClick",getRootElement(),movingGUI)
- addEventHandler("onClientRender",getRootElement(),drawingGUI)
- addEventHandler("onClientRender",getRootElement(),GUIstates)
Advertisement
Add Comment
Please, Sign In to add comment