Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* -----------------------------------------------------------------------------------
- @: Derma Component
- --- */
- local Component = EXPADV.AddComponent( "derma", true )
- Component.Author = "Szymekk"
- Component.Description = "Adds derma objects."
- EXPADV.ClientOperators()
- local Panels = {}
- function Component:OnShutDown( Context )
- for _,a in pairs(Panels) do
- for k,v in pairs(a) do
- v:Remove()
- end
- Panels[_] = { }
- end
- end
- function Component:OnCoreReload( )
- for _,a in pairs(Panels) do
- for k,v in pairs(a) do
- Panel:Remove()
- end
- Panels[_] = { }
- end
- end
- Component:AddInlineFunction("isDermaEnabled", "", "b", "Context.entity.EnableDerma")
- /* -----------------------------------------------------------------------------------
- @: Panel
- --- */
- local PanelClass = Component:AddClass( "panel", "dp" )
- local function CreatePanel( Context, Trace, Name, Object )
- if not Context.entity.EnableDerma then
- -- Context:Throw( Trace, "derma panel", "Derma isn't enabled" )
- -- return nil
- end
- Panels[Context] = Panels[Context] or { }
- if Object == nil then
- Panels[Context][#Panels[Context]+1] = vgui.Create( Name )
- else
- Panels[Context][#Panels[Context]+1] = vgui.Create( Name, Object )
- end
- return Panels[Context][#Panels[Context]]
- end
- Component:AddPreparedFunction("setPos", "dp:v2", "", "@value 1:SetPos(@value 2.x, @value 2.y)")
- Component:AddPreparedFunction("setSize", "dp:v2", "", "@value 1:SetSize(@value 2.x, @value 2.y)")
- Component:AddPreparedFunction("setText", "dp:s", "", "@value 1:SetText(@value 2)")
- Component:AddInlineFunction("getPos", "dp:", "v2", "Vector2(@value 1:GetPos())")
- Component:AddInlineFunction("getSize", "dp:", "v2", "Vector2(@value 1:GetSize())")
- Component:AddInlineFunction("getText", "dp:", "s", "@value 1:GetText()")
- Component:AddPreparedFunction("center", "dp:", "", "@value 1:Center()")
- Component:AddPreparedFunction("onPaint", "dp:d", "", [[@value 1.Paint = function() Context:Execute( "paint", @value 2 ) end]])
- PanelClass:AddPreparedOperator( "=", "n,dp", "", "Context.Memory[@value 1] = @value 2" )
- /* -----------------------------------------------------------------------------------
- @: Frame
- --- */
- local FrameClass = Component:AddClass( "frame", "df" )
- FrameClass:ExtendClass( "dp" )
- Component:AddInlineOperator( "panel", "df", "dp", "@value 1" )
- FrameClass:AddPreparedOperator( "=", "n,df", "", "Context.Memory[@value 1] = @value 2" )
- Component:AddVMFunction( "frame", "", "df", function(Context, Trace) return CreatePanel(Context, Trace, "DFrame") end )
- Component:AddPreparedFunction("setVisible", "df:b", "", "@value 1:SetVisible(@value 2)")
- Component:AddPreparedFunction("setDraggable", "df:b", "", "@value 1:SetDraggable(@value 2)")
- Component:AddPreparedFunction("setSizable", "df:b", "", "@value 1:SetSizable(@value 2)")
- Component:AddPreparedFunction("setBackgroundBlur", "df:b", "", "@value 1:SetBackgroundBlur(@value 2)")
- Component:AddPreparedFunction("setTitle", "df:s", "", "@value 1:SetTitle(@value 2)")
- Component:AddPreparedFunction("makePopup", "df:", "", "@value 1:MakePopup()")
- /* -----------------------------------------------------------------------------------
- @: Label
- --- */
- local LabelClass = Component:AddClass( "label", "dl" )
- LabelClass:ExtendClass( "dp" )
- LabelClass:AddPreparedOperator( "=", "n,dl", "", "Context.Memory[@value 1] = @value 2" )
- Component:AddInlineOperator( "panel", "dl", "dp", "@value 1" )
- Component:AddVMFunction( "label", "dp", "dl", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DLabel", Panel) end )
- Component:AddVMFunction( "label", "df", "dl", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DLabel", Panel) end )
- Component:AddVMFunction( "label", "", "dl", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DLabel") end )
- Component:AddPreparedFunction( "setTextColor", "dl:c", "", "@value 1:SetTextColor(@value 2)")
- Component:AddInlineFunction( "getTextColor", "dl:", "c", "@value 1:GetTextColor()")
- /* -----------------------------------------------------------------------------------
- @: Button
- --- */
- local ButtonClass = Component:AddClass( "button", "db" )
- ButtonClass:ExtendClass( "dp" )
- ButtonClass:AddPreparedOperator( "=", "n,db", "", "Context.Memory[@value 1] = @value 2" )
- Component:AddInlineOperator( "panel", "db", "dp", "@value 1" )
- Component:AddVMFunction( "button", "dp", "db", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DButton", Panel) end )
- Component:AddVMFunction( "button", "df", "db", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DButton", Panel) end )
- Component:AddPreparedFunction("onClick", "db:d", "", [[
- @value 1.DoClick = function() Context:Execute( "button", @value 2 ) end
- ]])
- /* -----------------------------------------------------------------------------------
- @: Text Entry
- --- */
- local TextEntryClass = Component:AddClass( "textentry", "dte" )
- TextEntryClass:ExtendClass( "dp" )
- TextEntryClass:AddPreparedOperator( "=", "n,dte", "", "Context.Memory[@value 1] = @value 2" )
- Component:AddInlineOperator( "panel", "dte", "dp", "@value 1" )
- Component:AddVMFunction( "textentry", "dp", "dte", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DTextEntry", Panel) end )
- Component:AddVMFunction( "textentry", "df", "dte", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DTextEntry", Panel) end )
- Component:AddPreparedFunction("onTextChanged", "dte:d", "", [[@value 1.OnTextChanged = function() Context:Execute( "textentry", @value 2 ) end]])
- /* -----------------------------------------------------------------------------------
- @: Check Box
- --- */
- local CheckBoxClass = Component:AddClass( "checkbox", "dcb" )
- CheckBoxClass:ExtendClass( "dp" )
- CheckBoxClass:AddPreparedOperator( "=", "n,dcb", "", "Context.Memory[@value 1] = @value 2" )
- Component:AddInlineOperator( "panel", "dcb", "dp", "@value 1" )
- Component:AddVMFunction( "checkbox", "dp", "dcb", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DCheckBoxLabel", Panel) end )
- Component:AddVMFunction( "checkbox", "df", "dcb", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DCheckBoxLabel", Panel) end )
- Component:AddPreparedFunction("setChecked", "dcb:b", "", "@value 1:SetChecked( @value 2 )")
- Component:AddInlineFunction("getChecked", "dcb:", "b", "@value 1:GetChecked( )")
- Component:AddPreparedFunction("onChange", "dcb:d", "", [[@value 1.OnChange = function() Context:Execute( "checkbox", @value 2 ) end]])
- /* -----------------------------------------------------------------------------------
- @: Panel List
- --- */
- local PanelListClass = Component:AddClass( "panellist", "dpl" )
- PanelListClass:ExtendClass( "dp" )
- PanelListClass:AddPreparedOperator( "=", "n,dpl", "", "Context.Memory[@value 1] = @value 2" )
- Component:AddVMFunction( "panellist", "dp", "dpl", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DPanelList", Panel) end )
- Component:AddVMFunction( "panellist", "df", "dpl", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DPanelList", Panel) end )
- Component:AddPreparedFunction("addItem", "dpl:dp", "", "@value 1:AddItem( @value 2 )")
- /* -----------------------------------------------------------------------------------
- @: Num Slider
- --- */
- local NumSliderClass = Component:AddClass( "numslider", "dns" )
- NumSliderClass:ExtendClass( "dp" )
- NumSliderClass:AddPreparedOperator( "=", "n,dns", "", "Context.Memory[@value 1] = @value 2" )
- Component:AddVMFunction( "numslider", "dp", "dns", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DNumSlider", Panel) end )
- Component:AddVMFunction( "numslider", "df", "dns", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DNumSlider", Panel) end )
- Component:AddPreparedFunction("setMin", "dns:n", "", "@value 1:SetMin(@value 2)")
- Component:AddPreparedFunction("setMax", "dns:n", "", "@value 1:SetMax(@value 2)")
- Component:AddPreparedFunction("setValue", "dns:n", "", "@value 1:SetValue(@value 2)")
- Component:AddInlineFunction("getValue", "dns:", "n", "@value 1:GetValue()")
- Component:AddPreparedFunction("onChange", "dns:d", "", [[@value 1.ValueChanged = function() Context:Execute( "numslider", @value 2 ) end]])
- /* -----------------------------------------------------------------------------------
- @: Menu
- --- */
- local MenuClass = Component:AddClass( "menu", "dm" )
- MenuClass:ExtendClass( "dp" )
- MenuClass:AddPreparedOperator( "=", "n,dm", "", "Context.Memory[@value 1] = @value 2" )
- Component:AddVMFunction( "menu", "", "dm", function(Context, Trace) return CreatePanel(Context, Trace, "DMenu") end )
- Component:AddPreparedFunction("addOption", "dm:s", "", "@value 1:AddOption(@value 2)")
- Component:AddPreparedFunction("addOption", "dm:s,d", "", [[@value 1:AddOption(@value 2, function() Context:Execute( "numslider", @value 3 ) end)]])
- Component:AddInlineFunction("addSubMenu", "dm:s", "dm", "@value 1:AddSubMenu(@value 2)")
- Component:AddInlineFunction("addSubMenu", "dm:s,d", "dm", [[@value 1:AddSubMenu(@value 2, function() Context:Execute( "numslider", @value 3 ) end)]])
- Component:AddPreparedFunction("addSpacer", "dm:", "", "@value 1:AddSpacer()")
- Component:AddPreparedFunction("open", "dm:", "", "@value 1:Open()")
- /* -----------------------------------------------------------------------------------
- @: Menu Bar
- --- */
- local MenuBarClass = Component:AddClass( "menubar", "dmb" )
- MenuBarClass:ExtendClass( "dp" )
- MenuBarClass:AddPreparedOperator( "=", "n,dmb", "", "Context.Memory[@value 1] = @value 2" )
- Component:AddVMFunction( "menubar", "dp", "dmb", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DMenuBar", Panel) end )
- Component:AddVMFunction( "menubar", "df", "dmb", function(Context, Trace, Panel) return CreatePanel(Context, Trace, "DMenuBar", Panel) end )
- Component:AddInlineFunction("addMenu", "dmb:s", "dm", "@value 1:AddMenu(@value 2)")
- /* -----------------------------------------------------------------------------------
- @: Events
- --- */
- EXPADV.ClientEvents()
- Component:AddEvent("enableDerma", "", "")
- Component:AddEvent("disableDerma", "", "")
- local function DisableDerma( Entity )
- Entity.EnableDerma = false
- for _,a in pairs(Panels) do
- for k,v in pairs(a) do
- v:Remove()
- end
- Panels[_] = { }
- end
- Entity:CallEvent( "disableDerma" )
- end
- local function EnableDerma( Entity )
- Entity.EnableDerma = true
- Entity:CallEvent( "enableDerma" )
- end
- function Component:OnOpenContextMenu( Entity, Menu, Trace, Option )
- if Entity.EnableDerma then
- Menu:AddOption( "Disable Derma GUI", function( )
- DisableDerma( Entity )
- end )
- else
- Menu:AddOption( "Enable Derma GUI", function( )
- EnableDerma( Entity )
- end )
- end
- end
- if CLIENT then
- concommand.Add( "expadv_killderma", function( Player )
- for _,a in pairs(Panels) do
- for k,v in pairs(a) do
- v:Remove()
- end
- Panels[_] = { }
- end
- end )
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement