Advertisement
szymski

Untitled

Nov 15th, 2014
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 10.96 KB | None | 0 0
  1. /* -----------------------------------------------------------------------------------
  2.     @: Derma Component
  3.    --- */
  4.  
  5. local Component = EXPADV.AddComponent( "derma", true )
  6.  
  7. Component.Author = "Szymekk"
  8. Component.Description = "Adds derma objects."
  9.  
  10. EXPADV.ClientOperators()
  11.  
  12. local Panels = {}
  13.  
  14. function Component:OnShutDown( Context )
  15.     for _,a in pairs(Panels) do
  16.         for k,v in pairs(a) do
  17.             v:Remove()
  18.         end
  19.         Panels[_] = { }
  20.     end
  21. end
  22.  
  23. function Component:OnCoreReload( )
  24.     for _,a in pairs(Panels) do
  25.         for k,v in pairs(a) do
  26.             Panel:Remove()
  27.         end
  28.         Panels[_] = { }
  29.     end
  30. end
  31.  
  32. Component:AddInlineFunction("isDermaEnabled", "", "b", "Context.entity.EnableDerma")
  33.  
  34. /* -----------------------------------------------------------------------------------
  35.     @: Panel
  36. --- */
  37.  
  38. local PanelClass = Component:AddClass( "panel", "dp" )
  39.  
  40. local function CreatePanel( Context, Trace, Name, Object )
  41.     if not Context.entity.EnableDerma then
  42.     --  Context:Throw( Trace, "derma panel", "Derma isn't enabled" )
  43.     --  return nil
  44.     end
  45.     Panels[Context] = Panels[Context] or { }
  46.     if Object == nil then
  47.         Panels[Context][#Panels[Context]+1] = vgui.Create( Name )
  48.     else
  49.         Panels[Context][#Panels[Context]+1] = vgui.Create( Name, Object )
  50.     end
  51.     return Panels[Context][#Panels[Context]]
  52. end
  53.  
  54. Component:AddPreparedFunction("setPos", "dp:v2", "", "@value 1:SetPos(@value 2.x, @value 2.y)")
  55. Component:AddPreparedFunction("setSize", "dp:v2", "", "@value 1:SetSize(@value 2.x, @value 2.y)")
  56. Component:AddPreparedFunction("setText", "dp:s", "", "@value 1:SetText(@value 2)")
  57.  
  58. Component:AddInlineFunction("getPos", "dp:", "v2", "Vector2(@value 1:GetPos())")
  59. Component:AddInlineFunction("getSize", "dp:", "v2", "Vector2(@value 1:GetSize())")
  60. Component:AddInlineFunction("getText", "dp:", "s", "@value 1:GetText()")
  61.  
  62. Component:AddPreparedFunction("center", "dp:", "", "@value 1:Center()")
  63.  
  64. Component:AddPreparedFunction("onPaint", "dp:d", "", [[@value 1.Paint = function() Context:Execute( "paint", @value 2 ) end]])
  65.  
  66. PanelClass:AddPreparedOperator( "=", "n,dp", "", "Context.Memory[@value 1] = @value 2" )
  67.  
  68. /* -----------------------------------------------------------------------------------
  69.     @: Frame
  70. --- */
  71.  
  72. local FrameClass = Component:AddClass( "frame", "df" )
  73. FrameClass:ExtendClass( "dp" )
  74.  
  75. Component:AddInlineOperator( "panel", "df", "dp", "@value 1" )
  76.  
  77. FrameClass:AddPreparedOperator( "=", "n,df", "", "Context.Memory[@value 1] = @value 2" )
  78.  
  79. Component:AddVMFunction( "frame", "", "df", function(Context, Trace) return CreatePanel(Context, Trace, "DFrame") end )
  80.  
  81. Component:AddPreparedFunction("setVisible", "df:b", "", "@value 1:SetVisible(@value 2)")
  82. Component:AddPreparedFunction("setDraggable", "df:b", "", "@value 1:SetDraggable(@value 2)")
  83. Component:AddPreparedFunction("setSizable", "df:b", "", "@value 1:SetSizable(@value 2)")
  84. Component:AddPreparedFunction("setBackgroundBlur", "df:b", "", "@value 1:SetBackgroundBlur(@value 2)")
  85. Component:AddPreparedFunction("setTitle", "df:s", "", "@value 1:SetTitle(@value 2)")
  86. Component:AddPreparedFunction("makePopup", "df:", "", "@value 1:MakePopup()")
  87.  
  88. /* -----------------------------------------------------------------------------------
  89.     @: Label
  90. --- */
  91.  
  92. local LabelClass = Component:AddClass( "label", "dl" )
  93. LabelClass:ExtendClass( "dp" )
  94.  
  95. LabelClass:AddPreparedOperator( "=", "n,dl", "", "Context.Memory[@value 1] = @value 2" )
  96.  
  97. Component:AddInlineOperator( "panel", "dl", "dp", "@value 1" )
  98.  
  99. Component:AddVMFunction( "label", "dp", "dl", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DLabel", Panel) end )
  100. Component:AddVMFunction( "label", "df", "dl", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DLabel", Panel) end )
  101. Component:AddVMFunction( "label", "", "dl", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DLabel") end )
  102.  
  103. Component:AddPreparedFunction( "setTextColor", "dl:c", "", "@value 1:SetTextColor(@value 2)")
  104.  
  105. Component:AddInlineFunction( "getTextColor", "dl:", "c", "@value 1:GetTextColor()")
  106.  
  107. /* -----------------------------------------------------------------------------------
  108.     @: Button
  109. --- */
  110.  
  111. local ButtonClass = Component:AddClass( "button", "db" )
  112. ButtonClass:ExtendClass( "dp" )
  113.  
  114. ButtonClass:AddPreparedOperator( "=", "n,db", "", "Context.Memory[@value 1] = @value 2" )
  115.  
  116. Component:AddInlineOperator( "panel", "db", "dp", "@value 1" )
  117.  
  118. Component:AddVMFunction( "button", "dp", "db", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DButton", Panel) end )
  119. Component:AddVMFunction( "button", "df", "db", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DButton", Panel) end )
  120.  
  121. Component:AddPreparedFunction("onClick", "db:d", "", [[
  122.     @value 1.DoClick = function() Context:Execute( "button", @value 2 ) end
  123. ]])
  124.  
  125. /* -----------------------------------------------------------------------------------
  126.     @: Text Entry
  127. --- */
  128.  
  129. local TextEntryClass = Component:AddClass( "textentry", "dte" )
  130. TextEntryClass:ExtendClass( "dp" )
  131.  
  132. TextEntryClass:AddPreparedOperator( "=", "n,dte", "", "Context.Memory[@value 1] = @value 2" )
  133.  
  134. Component:AddInlineOperator( "panel", "dte", "dp", "@value 1" )
  135.  
  136. Component:AddVMFunction( "textentry", "dp", "dte", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DTextEntry", Panel) end )
  137. Component:AddVMFunction( "textentry", "df", "dte", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DTextEntry", Panel) end )
  138.  
  139. Component:AddPreparedFunction("onTextChanged", "dte:d", "", [[@value 1.OnTextChanged = function() Context:Execute( "textentry", @value 2 ) end]])
  140.  
  141. /* -----------------------------------------------------------------------------------
  142.     @: Check Box
  143. --- */
  144.  
  145. local CheckBoxClass = Component:AddClass( "checkbox", "dcb" )
  146. CheckBoxClass:ExtendClass( "dp" )
  147.  
  148. CheckBoxClass:AddPreparedOperator( "=", "n,dcb", "", "Context.Memory[@value 1] = @value 2" )
  149.  
  150. Component:AddInlineOperator( "panel", "dcb", "dp", "@value 1" )
  151.  
  152. Component:AddVMFunction( "checkbox", "dp", "dcb", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DCheckBoxLabel", Panel) end )
  153. Component:AddVMFunction( "checkbox", "df", "dcb", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DCheckBoxLabel", Panel) end )
  154.  
  155. Component:AddPreparedFunction("setChecked", "dcb:b", "", "@value 1:SetChecked( @value 2 )")
  156. Component:AddInlineFunction("getChecked", "dcb:", "b", "@value 1:GetChecked( )")
  157.  
  158. Component:AddPreparedFunction("onChange", "dcb:d", "", [[@value 1.OnChange = function() Context:Execute( "checkbox", @value 2 ) end]])
  159.  
  160. /* -----------------------------------------------------------------------------------
  161.     @: Panel List
  162. --- */
  163.  
  164. local PanelListClass = Component:AddClass( "panellist", "dpl" )
  165. PanelListClass:ExtendClass( "dp" )
  166.  
  167. PanelListClass:AddPreparedOperator( "=", "n,dpl", "", "Context.Memory[@value 1] = @value 2" )
  168.  
  169. Component:AddVMFunction( "panellist", "dp", "dpl", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DPanelList", Panel) end )
  170. Component:AddVMFunction( "panellist", "df", "dpl", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DPanelList", Panel) end )
  171.  
  172. Component:AddPreparedFunction("addItem", "dpl:dp", "", "@value 1:AddItem( @value 2 )")
  173.  
  174. /* -----------------------------------------------------------------------------------
  175.     @: Num Slider
  176. --- */
  177.  
  178. local NumSliderClass = Component:AddClass( "numslider", "dns" )
  179. NumSliderClass:ExtendClass( "dp" )
  180.  
  181. NumSliderClass:AddPreparedOperator( "=", "n,dns", "", "Context.Memory[@value 1] = @value 2" )
  182.  
  183. Component:AddVMFunction( "numslider", "dp", "dns", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DNumSlider", Panel) end )
  184. Component:AddVMFunction( "numslider", "df", "dns", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DNumSlider", Panel) end )
  185.  
  186. Component:AddPreparedFunction("setMin", "dns:n", "", "@value 1:SetMin(@value 2)")
  187. Component:AddPreparedFunction("setMax", "dns:n", "", "@value 1:SetMax(@value 2)")
  188. Component:AddPreparedFunction("setValue", "dns:n", "", "@value 1:SetValue(@value 2)")
  189. Component:AddInlineFunction("getValue", "dns:", "n", "@value 1:GetValue()")
  190. Component:AddPreparedFunction("onChange", "dns:d", "", [[@value 1.ValueChanged = function() Context:Execute( "numslider", @value 2 ) end]])
  191.  
  192. /* -----------------------------------------------------------------------------------
  193.     @: Menu
  194. --- */
  195.  
  196. local MenuClass = Component:AddClass( "menu", "dm" )
  197. MenuClass:ExtendClass( "dp" )
  198.  
  199. MenuClass:AddPreparedOperator( "=", "n,dm", "", "Context.Memory[@value 1] = @value 2" )
  200.  
  201. Component:AddVMFunction( "menu", "", "dm", function(Context, Trace) return CreatePanel(Context, Trace, "DMenu") end )
  202.  
  203. Component:AddPreparedFunction("addOption", "dm:s", "", "@value 1:AddOption(@value 2)")
  204. Component:AddPreparedFunction("addOption", "dm:s,d", "", [[@value 1:AddOption(@value 2, function() Context:Execute( "numslider", @value 3 ) end)]])
  205. Component:AddInlineFunction("addSubMenu", "dm:s", "dm", "@value 1:AddSubMenu(@value 2)")
  206. Component:AddInlineFunction("addSubMenu", "dm:s,d", "dm", [[@value 1:AddSubMenu(@value 2, function() Context:Execute( "numslider", @value 3 ) end)]])
  207. Component:AddPreparedFunction("addSpacer", "dm:", "", "@value 1:AddSpacer()")
  208. Component:AddPreparedFunction("open", "dm:", "", "@value 1:Open()")
  209.  
  210. /* -----------------------------------------------------------------------------------
  211.     @: Menu Bar
  212. --- */
  213.  
  214. local MenuBarClass = Component:AddClass( "menubar", "dmb" )
  215. MenuBarClass:ExtendClass( "dp" )
  216.  
  217. MenuBarClass:AddPreparedOperator( "=", "n,dmb", "", "Context.Memory[@value 1] = @value 2" )
  218.  
  219. Component:AddVMFunction( "menubar", "dp", "dmb", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DMenuBar", Panel) end )
  220. Component:AddVMFunction( "menubar", "df", "dmb", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DMenuBar", Panel) end )
  221.  
  222. Component:AddInlineFunction("addMenu", "dmb:s", "dm", "@value 1:AddMenu(@value 2)")
  223.  
  224. /* -----------------------------------------------------------------------------------
  225.     @: Events
  226. --- */
  227.  
  228. EXPADV.ClientEvents()
  229. Component:AddEvent("enableDerma", "", "")
  230. Component:AddEvent("disableDerma", "", "")
  231.  
  232. local function DisableDerma( Entity )
  233.     Entity.EnableDerma = false
  234.     for _,a in pairs(Panels) do
  235.         for k,v in pairs(a) do
  236.             v:Remove()
  237.         end
  238.         Panels[_] = { }
  239.     end
  240.     Entity:CallEvent( "disableDerma" )
  241. end
  242.  
  243. local function EnableDerma( Entity )
  244.     Entity.EnableDerma = true
  245.     Entity:CallEvent( "enableDerma" )
  246. end
  247.  
  248. function Component:OnOpenContextMenu( Entity, Menu, Trace, Option )
  249.     if Entity.EnableDerma then
  250.         Menu:AddOption( "Disable Derma GUI", function( )
  251.             DisableDerma( Entity )
  252.         end )
  253.     else
  254.         Menu:AddOption( "Enable Derma GUI", function( )
  255.             EnableDerma( Entity )
  256.         end )
  257.     end
  258. end
  259.  
  260. if CLIENT then
  261.     concommand.Add( "expadv_killderma", function( Player )
  262.         for _,a in pairs(Panels) do
  263.             for k,v in pairs(a) do
  264.                 v:Remove()
  265.             end
  266.             Panels[_] = { }
  267.         end
  268.     end )
  269. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement