Skip to content

Latest commit

 

History

History
132 lines (106 loc) · 7.16 KB

README.md

File metadata and controls

132 lines (106 loc) · 7.16 KB

rblxguibanner|690x215

Hosts a wide variety of GUI Elements made for dockable widgets in order to improve GUI workflow and provide a uniform look and feel for plugins.
 

Overview

RBLXGUI is an open-source GUI library for plugins inspired by Studio Widgets.

Warning: RBLXGUI completely overhauls wigets. if you want something more visually customizable rather than the basic Studio aesthetic, this is probably not for you.

Please contribute!

This was a solo project and any help improving or keeping the library up to date would be greatly appreciated!

Getting Started

In order to install this library, drag the latest release into your plugin folder.

You can also clone the repo and build the project with rojo.

rojo build --output "C:\Users\[Username]\AppData\Local\Roblox\Plugins\[Plugin Name].rbxmx"

Another way to install the library is by using HttpService to pull the contents directly from this github project into module scripts. Make sure you have http service from Game Settings enabled in order for this to work.

--Modified to support nesting
local http = game:GetService("HttpService")
local req = http:GetAsync("https://api.github.com/repos/xa1on/rblxguilib/contents/src")
local jsonSrc = http:JSONDecode(req)

local targetFolder = Instance.new("Folder")
targetFolder.Name = "StudioWidgets"
targetFolder.Parent = game.Workspace

function loopdir(json, folder)
	for i = 1, #json do
		local file = json[i]
		if file.type == "file" then
			local name = file.name:sub(1, #file.name-4)
			local module = targetFolder:FindFirstChild(name) or Instance.new("ModuleScript")
			module.Name = name
			module.Source = http:GetAsync(file.download_url)
			module.Parent = folder
		elseif  file.type == "dir" then
			local dir = http:GetAsync(`https://api.github.com/repos/xa1on/rblxguilib/contents/{file.path}`)
			local dirJson = http:JSONDecode(dir)
			local dirFolder = Instance.new("Folder")
			dirFolder.Name = file.name
			dirFolder.Parent = folder
			loopdir(dirJson, dirFolder)
		end
	end
end

loopdir(jsonSrc, targetFolder)

(Credit to the StudioWidgets repo for the import code)

Files

Frames

Element Description
GUIFrame.lua Class for all frame elements
BackgroundFrame.lua Creates a frame that syncs its color to the current studio theme
ListFrame.lua A uniform frame that goes in ScrollingFrames used to house objects
Page.lua Creates a page tab in a widget's TitlebarMenu
PluginWidget.lua Creates a rblxgui widget
ScrollingFrame.lua A self-scaling ScrollingFrame
Section.lua A collapsible frame used to house objects
TitlebarMenu.lua Menu on widgets that contains it's pages and TitlebarButtons

Objects

Element Description
GUIObject.lua Class for all object elements
Button.lua Creates a Button
Checkbox.lua Toggleable checkbox object that returns true and false
ColorInput.lua Object used to input colors using RGB values or ColorPropmt
InputField.lua TextBox object with a filtered dropdown menu
InstanceInputFrame.lua InputField for adding selected workspace objects
KeybindInputFrame.lua InputField for keybinds
Labeled.lua Text object that acts as a label for other objects
ProgressBar.lua Bar that fills up to represent progress
Slider.lua Adjustable slider that returns number values
Textbox.lua Creates a TextLabel object
TitlebarButton.lua Creates a TitlebarMenu Tab that acts as a button
ViewButton.lua Creates a TitlebarButton that allows users to editing widgets, layouts, and themes

Prompts

Element Description
Prompt.lua Creates a widget that acts as a prompt window and class for all prompt elements
ColorPrompt.lua TextPrompt window that allows user to edit colors
InputPrompt.lua TextPrompt window with an InputField
TextPrompt.lua Prompt with text and buttons

Managers

File Description
EventManager.lua Manages plugin events
InputManager.lua Keyyboard/mouse input event manager for rblxgui elements
KeybindManager.lua Keybind Manager for KeybindInputObjects
LayoutManager.lua Layout manager for plugin widget/page layouts in studio
ThemeManager.lua Theme manager for rblxgui element colors

Misc

File Description
GUIElement.lua Class for all GUI Elements
GUIUtil.lua ModuleScript that contains utility functions that dont fit the other categories
PluginGlobalVariables.lua ModuleScript that consolidates all variables used globally in the library

Documentation

No documentation at the moment, but you should be able to see how everything works in the Example Script.

If anyone actually plans on using this, DM me on Twitter or Discord (@xa1on) if you have any further questions or if you just want to show off what you made.

Final Notes

A lot of my code may be a bit messy and unorganized but I hope you can bear with me since this is my first big project with lua and I feel like a grew a lot in the process of making this. In the future, I might plan on using Fusion to help make this library a bit better to work with.

License

Available under the Apache 2.0 license. See LICENSE for details.