local N do N={}local x=1 local o=x local function w(w,V,K,p,m)local E=false local r=Create(Icon("\073\109\097\103\101\066\117\116\116\111\110",w),{Name=K.."\066\117\116\116\111\110",Visible=Option.Modifiable and Option.Selectable,Position=UDim2.new(1,-(GUI_SIZE+2)*o+2,.25,-GUI_SIZE/2),Size=UDim2.new(0,GUI_SIZE,0,GUI_SIZE);Parent=headerFrame})local B=Create("\084\101\120\116\076\097\098\101\108",{Name=K.."\084\101\120\116",Text=K;Visible=false,BackgroundTransparency=1;TextXAlignment="\082\105\103\104\116";Font=FONT;FontSize=FONT_SIZE,Position=UDim2.new(0,0,0,0);Size=UDim2.new(1,-(GUI_SIZE+2)*x,1,0),Parent=headerFrame})r.MouseEnter:connect(function()if E then r.BackgroundTransparency=.9 end end)r.MouseLeave:connect(function()r.BackgroundTransparency=1 end)o=o+1 N[#N+1]={Obj=r;Cond=m}QuickButtons[#N+1]={Obj=r;Cond=m;Toggle=function(N)if N then E=true Icon(r,V)else E=false Icon(r,w)end end}return r end local function V(N)N.Parent=nil end;(w(ACTION_EDITQUICKACCESS,ACTION_EDITQUICKACCESS,"\079\112\116\105\111\110\115",true,function()return true end)).MouseButton1Click:connect(function() end);(w(ACTION_DELETE,ACTION_DELETE_OVER,"\068\101\108\101\116\101",true,function()return#Selection:Get()>0 end)).MouseButton1Click:connect(function()if not Option.Modifiable then return end local N=Selection:Get()for x=1,#N,1 do pcall(V,N[x])end Selection:Set({})end);(w(ACTION_PASTE,ACTION_PASTE_OVER,"\080\097\115\116\101",true,function()return#Selection:Get()>0 and#clipboard>0 end)).MouseButton1Click:connect(function()if not Option.Modifiable then return end local N=Selection.List[1]or workspace for x=1,#clipboard,1 do(clipboard[x]:Clone()).Parent=N end end);(w(ACTION_COPY,ACTION_COPY_OVER,"\067\111\112\121",true,function()return#Selection:Get()>0 end)).MouseButton1Click:connect(function()if not Option.Modifiable then return end clipboard={}local N=Selection.List for x=1,#N,1 do table.insert(clipboard,N[x]:Clone())end updateActions()end);(w(ACTION_CUT,ACTION_CUT_OVER,"\067\117\116",true,function()return#Selection:Get()>0 end)).MouseButton1Click:connect(function()if not Option.Modifiable then return end clipboard={}local N=Selection.List local x={}for o=1,#N,1 do local w=N[o]:Clone()if w then table.insert(clipboard,w)table.insert(x,N[o])end end for N=1,#x,1 do pcall(V,x[N])end updateActions()end)w(ACTION_FREEZE,ACTION_FREEZE,"\070\114\101\101\122\101",true,function()return true end)w(ACTION_ADDSTAR,ACTION_ADDSTAR_OVER,"\083\116\097\114",true,function()return#Selection:Get()>0 end)w(ACTION_STARRED,ACTION_STARRED,"\083\116\097\114\114\101\100",true,function()return true end)end


local actionButtons do
	actionButtons = {}

	local totalActions = 1
	local currentActions = totalActions
	local function makeButton(icon,over,name,vis,cond)
		local buttonEnabled = false
		
		local button = Create(Icon('ImageButton',icon),{
			Name = name .. "Button";
			Visible = Option.Modifiable and Option.Selectable;
			Position = UDim2.new(1,-(GUI_SIZE+2)*currentActions+2,0.25,-GUI_SIZE/2);
			Size = UDim2.new(0,GUI_SIZE,0,GUI_SIZE);
			Parent = headerFrame;
		})

		local tipText = Create('TextLabel',{
			Name = name .. "Text";
			Text = name;
			Visible = false;
			BackgroundTransparency = 1;
			TextXAlignment = 'Right';
			Font = FONT;
			FontSize = FONT_SIZE;
			Position = UDim2.new(0,0,0,0);
			Size = UDim2.new(1,-(GUI_SIZE+2)*totalActions,1,0);
			Parent = headerFrame;
		})

		
		button.MouseEnter:connect(function()
			if buttonEnabled then
				button.BackgroundTransparency = 0.9
			end
			--Icon(button,over)
			--tipText.Visible = true
		end)
		button.MouseLeave:connect(function()
			button.BackgroundTransparency = 1
			--Icon(button,icon)
			--tipText.Visible = false
		end)

		currentActions = currentActions + 1
		actionButtons[#actionButtons+1] = {Obj = button,Cond = cond}
		QuickButtons[#actionButtons+1] = {Obj = button,Cond = cond, Toggle = function(on)
			if on then
				buttonEnabled = true
				Icon(button,over)
			else
				buttonEnabled = false
				Icon(button,icon)
			end
		end}
		return button
	end

	--local clipboard = {}
	local function delete(o)
		o.Parent = nil
	end
	
	makeButton(ACTION_EDITQUICKACCESS,ACTION_EDITQUICKACCESS,"Options",true,function()return true end).MouseButton1Click:connect(function()
		
	end)
	

	-- DELETE
	makeButton(ACTION_DELETE,ACTION_DELETE_OVER,"Delete",true,function() return #Selection:Get() > 0 end).MouseButton1Click:connect(function()
		if not Option.Modifiable then return end
		local list = Selection:Get()
		for i = 1,#list do
			pcall(delete,list[i])
		end
		Selection:Set({})
	end)
	
	-- PASTE
	makeButton(ACTION_PASTE,ACTION_PASTE_OVER,"Paste",true,function() return #Selection:Get() > 0 and #clipboard > 0 end).MouseButton1Click:connect(function()
		if not Option.Modifiable then return end
		local parent = Selection.List[1] or workspace
		for i = 1,#clipboard do
			clipboard[i]:Clone().Parent = parent
		end
	end)
	
	-- COPY
	makeButton(ACTION_COPY,ACTION_COPY_OVER,"Copy",true,function() return #Selection:Get() > 0 end).MouseButton1Click:connect(function()
		if not Option.Modifiable then return end
		clipboard = {}
		local list = Selection.List
		for i = 1,#list do
			table.insert(clipboard,list[i]:Clone())
		end
		updateActions()
	end)
	
	-- CUT
	makeButton(ACTION_CUT,ACTION_CUT_OVER,"Cut",true,function() return #Selection:Get() > 0 end).MouseButton1Click:connect(function()
		if not Option.Modifiable then return end
		clipboard = {}
		local list = Selection.List
		local cut = {}
		for i = 1,#list do
			local obj = list[i]:Clone()
			if obj then
				table.insert(clipboard,obj)
				table.insert(cut,list[i])
			end
		end
		for i = 1,#cut do
			pcall(delete,cut[i])
		end
		updateActions()
	end)
	
	-- FREEZE
	makeButton(ACTION_FREEZE,ACTION_FREEZE,"Freeze",true,function() return true end)
	
	-- ADD/REMOVE STARRED
	makeButton(ACTION_ADDSTAR,ACTION_ADDSTAR_OVER,"Star",true,function() return #Selection:Get() > 0 end)
	
	-- STARRED
	makeButton(ACTION_STARRED,ACTION_STARRED,"Starred",true,function() return true end)


	-- SORT
	-- local actionSort = makeButton(ACTION_SORT,ACTION_SORT_OVER,"Sort")
end
