diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 0000000..9dc16ff
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1,8 @@
+# This is a comment.
+# Each line is a file pattern followed by one or more owners.
+
+# These owners will be the default owners for everything in
+# the repo. Unless a later match takes precedence,
+# @global-owner1 and @global-owner2 will be requested for
+# review when someone opens a pull request.
+* @RyanLua
diff --git a/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
similarity index 100%
rename from CODE_OF_CONDUCT.md
rename to .github/CODE_OF_CONDUCT.md
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
index 8f09c22..8088a49 100644
--- a/.github/FUNDING.yml
+++ b/.github/FUNDING.yml
@@ -1,6 +1,6 @@
# These are supported funding model platforms
-github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
+github: RyanLua # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
diff --git a/.github/GOVERNANCE.md b/.github/GOVERNANCE.md
new file mode 100644
index 0000000..70a7b5e
--- /dev/null
+++ b/.github/GOVERNANCE.md
@@ -0,0 +1,29 @@
+# Governance Guidelines
+
+This document outlines the governance guidelines for this GitHub repository, which is owned by a single person with full power over its development and management.
+
+## Owner Responsibilities
+The owner is responsible for maintaining the module's code and ensuring that it operates effectively and efficiently. The owner also has the authority to make decisions regarding the module's development and management.
+
+## Contributions
+Contributions are welcome, but the owner reserves the right to accept or reject any contributions. The owner will review any contributions in a timely manner and provide feedback to the contributor. The owner may also make changes to the contribution as necessary. Learn more at [CONTRIBUTING.md](.github/CONTRIBUTING.md)
+
+## Code of Conduct
+
+All contributors and users are expected to adhere to the following code of conduct:
+
+* Be respectful and considerate of others.
+* Refrain from any form of harassment or discrimination.
+* Contribute positively and constructively to discussions and development.
+* Maintain confidentiality of any sensitive information related to the module.
+
+The owner reserves the right to remove any contributor or user who violates the code of conduct. Learn more at [CODE_OF_CONDUCT.md](.github/CODE_OF_CONDUCT.md)
+
+## Decision Making
+As the sole owner, the owner has full decision-making power over the module's development and management. The owner may seek input and advice from contributors and users, but the final decision rests with the owner.
+
+## Changes to Governance Guidelines
+The owner may update these governance guidelines as necessary to ensure the effective and efficient operation. Any changes will be communicated to contributors and users in a timely manner.
+
+## Conclusion
+By contributing to or using this repository, you agree to adhere to these governance guidelines. If you have any questions or concerns, please contact the module owner.
diff --git a/SECURITY.md b/.github/SECURITY.md
similarity index 100%
rename from SECURITY.md
rename to .github/SECURITY.md
diff --git a/.github/SUPPORT.md b/.github/SUPPORT.md
new file mode 100644
index 0000000..b78c419
--- /dev/null
+++ b/.github/SUPPORT.md
@@ -0,0 +1,11 @@
+# Support
+
+We support from both the developers and the community.
+
+## Reporting Issues
+
+If you have found a bug or have a feature request, please [open an issue](https://github.com/RyanLua/Signs/issues/new/choose). Your issue will be reviewed as soon as possible.
+
+## Contributing
+
+If you would like to contribute, read [Contributing](/.github/CONTRIBUTING.md) for more information.
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
new file mode 100644
index 0000000..38b0f9b
--- /dev/null
+++ b/.github/pull_request_template.md
@@ -0,0 +1,36 @@
+---
+name: Pull request
+about: Pull request template
+title: "[PR] Pull request title"
+labels: enhancement
+assignees: ''
+
+---
+
+## Description
+
+Please provide a brief description of the changes being made in this pull request.
+
+## Related Issues
+
+Please list any related issues or pull requests that are being resolved or addressed by this pull request.
+
+## Changes Made
+
+Please describe the changes that were made in this pull request. Be as detailed as possible.
+
+## Checklist
+
+Please check off the following items before submitting your pull request:
+
+- [ ] I have tested these changes thoroughly.
+- [ ] I have reviewed my code for any potential errors or issues.
+- [ ] I have followed the code style guidelines for this project.
+
+## Additional Notes
+
+Please provide any additional information or notes that may be helpful in reviewing this pull request.
+
+## Code of Conduct
+
+By submitting this issue, you agree to follow our [Code of Conduct](.github/CODE_OF_CONDUCT.md)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..aa39173
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,51 @@
+name: CI
+
+on:
+ # Trigger the workflow on push or pull request,
+ # but only for the main branch
+ push:
+ branches:
+ - main
+ # Replace pull_request with pull_request_target if you
+ # plan to use this action with forks, see the Limitations section
+ pull_request:
+ branches:
+ - main
+
+# Down scope as necessary via https://docs.github.com/en/actions/security-guides/automatic-token-authentication#modifying-the-permissions-for-the-github_token
+permissions:
+ checks: write
+ contents: write
+
+jobs:
+ run-linter:
+ name: Run linter
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Check out Git repository
+ uses: actions/checkout@v3
+
+ - name: Install aftman
+ uses: ok-nick/setup-aftman@v0.3.0
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+
+ - name: Run selene
+ run: |
+ selene ./src
+
+ run-styler:
+ name: Run styler
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Check out Git repository
+ uses: actions/checkout@v3
+
+ - name: Run stylua
+ uses: JohnnyMorganz/stylua-action@v3
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ version: latest
+ args: --check ./src
\ No newline at end of file
diff --git a/.github/workflows/stylua.yml b/.github/workflows/stylua.yml
deleted file mode 100644
index 18a6a3e..0000000
--- a/.github/workflows/stylua.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-# This is a basic workflow to help you get started with Actions
-
-name: CI
-
-# Controls when the workflow will run
-on:
- # Triggers the workflow on push or pull request events but only for the "main" branch
- push:
- branches: [ "main" ]
- pull_request:
- branches: [ "main" ]
-
- # Allows you to run this workflow manually from the Actions tab
- workflow_dispatch:
-
-# A workflow run is made up of one or more jobs that can run sequentially or in parallel
-jobs:
- # This workflow contains a single job called "build"
- build:
- # The type of runner that the job will run on
- runs-on: ubuntu-latest
-
- # Steps represent a sequence of tasks that will be executed as part of the job
- steps:
- # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- - uses: actions/checkout@v3
-
- # Runs a single command using the runners shell
- - name: Run a one-line script
- run: echo Hello, world!
-
- # Runs a set of commands using the runners shell
- - name: Run a multi-line script
- run: |
- echo Add other actions to build,
- echo test, and deploy your project.
diff --git a/CITATION.cff b/CITATION.cff
new file mode 100644
index 0000000..1e168ea
--- /dev/null
+++ b/CITATION.cff
@@ -0,0 +1,26 @@
+cff-version: 1.2.0
+message: To disclose Signs source, please use this metadata.
+title: Signs
+abstract: Signs is an easy-to-use, intuitive text tool plugin for creating signs, text, and labels.
+authors:
+ - family-names: Luu
+ given-names: Ryan
+ orcid: https://orcid.org/0009-0004-0813-879X
+version: 3.2.0
+date-released: "2023-4-11"
+keywords:
+ - plugin
+ - editor
+ - widget
+ - lua
+ - tool
+ - roblox
+ - roblox-studio
+ - lua-plugin
+ - robloxdev
+ - luau
+ - roblox-lua
+ - roblox-plugin
+ - roblox-studio-plugin
+license: "GPL-3.0"
+repository-code: "https://github.com/RyanLua/Signs"
diff --git a/README.md b/README.md
index 6b462a4..277b113 100644
--- a/README.md
+++ b/README.md
@@ -6,9 +6,9 @@
-[](https://github.com/RyanLua/Signs/releases)
-[](https://create.roblox.com/marketplace/asset/6994955669)
-[](LICENSE.txt)
+[](https://github.com/RyanLua/Signs/releases)
+[](https://create.roblox.com/marketplace/asset/6994955669)
+[](LICENSE.txt)
@@ -16,9 +16,20 @@
> Signs is an easy-to-use, intuitive text tool plugin for creating signs, text, and labels.
-## Installation
+## Support Signs 💖
+
+[](https://create.roblox.com/marketplace/asset/6994955669)
+
+**Signs needs your support.** Help support this free and open-source plugin by purchasing [Signs from the Creator Marketplace for 100 Robux](https://create.roblox.com/marketplace/asset/6994955669), the price of $0.24. I'm not forcing you to buy Signs by paywalling features to the Creator Markeplace or bombarding you with notices to pay for Signs in the plugin. I'm just asking if you like Signs and enjoy Signs along with my other projects, please donate less an a quater towards the development Signs.
+
+*If you donate I would like to thank you for supporting my free and open-source software for others to analyze, learn from, and use. I'm make these as a hobby and knowing someone supports my work and loves using it really makes me happy.*
+
+###### [Support us with just the small amount of 24 cents.](https://create.roblox.com/marketplace/asset/6994955669)
+
+## Installation 🧰
[](https://github.com/RyanLua/Signs/releases)
+[](https://create.roblox.com/marketplace/asset/13085904556)
[](https://create.roblox.com/marketplace/asset/6994955669)
[](https://create.roblox.com/marketplace/asset/13085904556)
@@ -42,7 +53,15 @@ To install from **GitHub**, first, download the latest `.rbxm` plugin file of Si
- [**Signs**](https://github.com/RyanLua/Signs/releases)
-## Features
+### ToolBlocks
+
+Installing from [**ToolBlocks**](https://toolblocks.gg/) allows you to access the full paid version of Signs for free but **no automatic updates** due to limitations and a slightly more complex installation.
+
+To install from **ToolBlocks**, first, download the latest `Signs.zip` file and extract to get the `Signs.rbxmx` file inside. Download from the below link. Once you have the file, go to `%localappdata%\Roblox\Plugins` and insert `Signs.rbxm` into that folder.
+
+- [**Signs**](https://toolblocks.gg/a/signs.5OcnvIkyvqpA3sdJoI6F)
+
+## Features ⭐
Signs offers **many features and benefits**. Not just over other plugins but TextLabels itself. Such features include:
@@ -115,10 +134,10 @@ Below is a list of features that are available in Signs and Signs Free. The list
| Bold & Italic Typefaces | ☑️ | ☑️ |
| Background Color, Transparency | ☑️ | ☑️ |
| Size & Aspect Ratio | ☑️ | ☑️ |
+| Horizontal & Vertical Alignment | ☑️ | ☑️ |
| Character Limit | 1024 (1 KiB) | 16384 (6 KiB) |
| Font Faces | 36 | 117 |
| Stroke Color, Transparency, Thickness, Join1 | Basic | All |
-| Horizontal & Vertical Alignment | 🔲 | ☑️ |
| Always On Top | 🔲 | ☑️ |
| Light Influence | 🔲 | ☑️ |
| Auto Localize2 | 🔲 | ☑️ |
@@ -132,7 +151,7 @@ Below is a list of features that are available in Signs and Signs Free. The list
-## Frequently Asked Questions
+## Frequently Asked Questions 🤔
Wasn't Signs formerly **closed-source**? Why is it **open-sourced** now?
@@ -173,7 +192,7 @@ I'm enjoying and **want to support Signs**. How can I **support Signs**?
I have a **question that isn't answered** here. What do I do?
> If you have a **question that isn't answered** here, you can **[start a discussion](https://github.com/RyanLua/Signs/discussions/new/choose)** and ask your question. If your question is **asked frequently enough** by different people, it will be added to this FAQ.
-## Contributing
+## Contributing 🙏
We worked hard to make this **open-source plugin**, so please **contribute at your will**. Go ahead and [fork this repository](https://github.com/RyanLua/Signs/fork), and maybe we will merge to ours someday.
@@ -181,6 +200,6 @@ If you **have a contribution** you want to make, please [open a new pull request
If you see a **bug or want a feature**, please [open an issue](https://github.com/RyanLua/Signs/issues/new/choose). Make sure to check our [Trello board](https://trello.com/b/OVQpLwYq/signs-plugin-roadmap) before you submit an issue.
-## License
+## License 📃
Signs is **licensed under** the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html). See [LICENSE.txt](LICENSE.txt) for details.
diff --git a/aftman.toml b/aftman.toml
index 138124a..74ee2f3 100644
--- a/aftman.toml
+++ b/aftman.toml
@@ -3,4 +3,6 @@
# To add a new tool, add an entry to this table.
[tools]
-rojo = "rojo-rbx/rojo@7.2.1"
\ No newline at end of file
+rojo = "rojo-rbx/rojo@7.3.0"
+selene = "Kampfkarren/selene@0.25.0"
+stylua = "JohnnyMorganz/StyLua@0.18.0"
\ No newline at end of file
diff --git a/docs/_config.yml b/docs/_config.yml
new file mode 100644
index 0000000..961f1b5
--- /dev/null
+++ b/docs/_config.yml
@@ -0,0 +1,2 @@
+title: Signs
+description: Signs is an easy-to-use, intuitive text tool plugin for creating signs, text, and labels.
diff --git a/docs/index.md b/docs/index.md
new file mode 100644
index 0000000..e26a8bd
--- /dev/null
+++ b/docs/index.md
@@ -0,0 +1,160 @@
+
+

+
+
+---
+
+> Signs is an easy-to-use, intuitive text tool plugin for creating signs, text, and labels.
+
+## Features
+
+Signs offers **many features and benefits**. Not just over other plugins but TextLabels itself. Such features include:
+
+### Open-Sourced
+
+
+
+Signs is **open source and free**. Change and modify the plugin to meet what you want. Look out for some bugs and fix them, and we might even add your code to the official plugin. You should know what you're installing and running on your computer.
+
+
+
+
+
+
+### High Customization
+
+
+
+Edit the outline of your text, the background, and even the sign itself. Change the colors of each of these properties along with transparency. Manipulate how light interacts with your sign and if it is always rendered on top.
+
+
+
+
+
+
+### UI Stroke
+
+
+
+Change the stroke of the font in customize in ways that the text stroke property can't. Edit the outline join and thickness as well as normal text stroke properties like color and transparency.
+
+
+
+
+
+
+### Automatic Dark & Light Themes
+
+
+
+The plugin's theme will automatically update when using Signs to match Roblox Studio's. No restarting of Roblox Studio or Signs is needed due to Signs being able to detect and change its theme when Roblox Studio's theme changes.
+
+
+
+
+
+
+### Live Preview
+
+
+
+Edit signs and view changes in a preview showing exactly how your sign will look. Each and every change you make in the editor is updated to the preview. View signs before they are inserted.
+
+
+
+
+
+
+### Features List
+
+Below is a list of features that are available in Signs and Signs Free. The list is split into two tables, one for Signs and one for Signs Free.
+
+| Feature | Signs Free | Signs
+| :--- | :---: | :---: |
+| Live Preview | ☑️ | ☑️ |
+| Automatic Dark & Light Themes | ☑️ | ☑️ |
+| Text Size, Color, Transparency, Rotation | ☑️ | ☑️ |
+| Text Wrapped & Scaling | ☑️ | ☑️ |
+| Line Height | ☑️ | ☑️ |
+| Bold & Italic Typefaces | ☑️ | ☑️ |
+| Background Color, Transparency | ☑️ | ☑️ |
+| Size & Aspect Ratio | ☑️ | ☑️ |
+| Horizontal & Vertical Alignment | ☑️ | ☑️ |
+| Character Limit | 1024 (1 KiB) | 16384 (6 KiB) |
+| Font Faces | 36 | 117 |
+| Stroke Color, Transparency, Thickness, Join1 | Basic | All |
+| Always On Top | 🔲 | ☑️ |
+| Light Influence | 🔲 | ☑️ |
+| Auto Localize2 | 🔲 | ☑️ |
+| Beta Updates3 | 🔲 | ☑️ |
+
+
+
+1 Stroke customization is limited to only Color and Transparency for Basic.
+2 Autolocalized is enabled by default and can't be disabled through the editor.
+3 Early access to experiential updates. Signs Free version will still recieve updates.
+
+
+
+## Installation
+
+Signs is available on the **Creator Marketplace for 100 Robux** or from **GitHub for free**. Signs Free is available on the **Creator Marketplace for free**.
+
+### Creator Marketplace (Recommended)
+
+Installing from the [**Creator Marketplace**](https://create.roblox.com/docs/production/publishing/creator-marketplace) is recommended to install **Signs** or **Signs Free** and allows for **automatic updates** from Roblox and **easier installation**.
+
+To install from the **Creator Marketplace**, click the below link for the plugin version you want to install. Once at the page, click **Get Plugin** to install the plugin into **Roblox Studio**.
+
+- [**Signs** (100 Robux)](https://create.roblox.com/marketplace/asset/6994955669)
+
+- [**Signs Free** (Free)](https://create.roblox.com/marketplace/asset/13085904556)
+
+### GitHub
+
+Installing from [**GitHub**](https://github.com/about) allows you to access the full paid version of Signs for free but **no automatic updates** due to limitations and a slightly more complex installation.
+
+To install from **GitHub**, first, download the latest `.rbxm` plugin file of Signs from the below link. Once you have the file, go to `%localappdata%\Roblox\Plugins` and insert `Signs.rbxm` into that folder.
+
+- [**Signs**](https://github.com/RyanLua/Signs/releases)
+
+## Frequently Asked Questions
+
+Wasn't Signs formerly **closed-source**? Why is it **open-sourced** now?
+
+> Signs was **closed-sourced** for much of its **v1.0.0** development, but starting in **v2.0.0**, Signs was changed to being **open-sourced**. Learn more at [v2.0.0](https://github.com/RyanLua/Signs/releases/tag/v2.0.0).
+
+Is Signs **harmful or malicious**? I've **found a security vulnerability**. What do I do?
+
+> Signs is **completely safe** and open-sourced to allow anyone to check for potentially harmful or malicious code. Security vulnerabilities are taken seriously, **to report a security vulnerability** fill out a [draft security advisory](https://github.com/RyanLua/Signs/security/advisories/new), and a collaborator will try to fix this vulnerability as fast as possible.
+
+How do I **install Signs**? What can I do if I have **issues installing**?
+
+> You can **install Signs** by following the [installation steps](https://github.com/RyanLua/Signs#installation). They are two currently supported ways to install Signs, either [from the Creator Marketplace](https://create.roblox.com/marketplace/asset/6994955669) or [from GitHub](https://github.com/RyanLua/Signs/releases). If you **still can't install**, open a [issue](https://github.com/RyanLua/Signs/issues/new/choose) from this GitHub repository.
+
+Can I get **Signs for free**? What if I **can't afford Signs**?
+
+> You can **get Signs for free** following the [GitHub installation steps](README.md#github). Additionally **if you want automatic updates** you can get Signs Free [from the Creator Marketplace](https://create.roblox.com/marketplace/asset/13085904556).
+
+I've **found a bug or want to request a feature**. How do I report it?
+
+> That's great! You can **report bugs or request features** by [opening an issue](https://github.com/RyanLua/Signs/issues/new/choose). Your issue will be reviewed by maintainers and considered.
+
+You **stole my plugin/code**. What do I do if there **copyrighted or stolen content** in this plugin?
+
+> There is **no known copyrighted or stolen content** in Signs, but just in case you find unknowingly stolen or copyrighted content**, please get in touch with us on [Twitter (@RaenLua)](https://twitter.com/RaenLua)** before filing a DMCA takedown notice with GitHub.
+
+Can I **republish Signs**? What if I want to **make a plugin similar** to Signs?
+
+> Yes, you can **republish Signs**, but you will be required to follow the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0.en.html), which Signs is licensed under. You can **make a plugin similar to Signs** which will **not be required** to follow the same license as Signs as long as the code is **not copied** from Signs. See [License](README.md#license) for more.
+
+I want to **contribute** to Signs. How can I contribute?
+
+> You can **contribute** to Signs by **[forking this repository](https://github.com/RyanLua/Signs/fork)** and **[making a pull request](https://github.com/RyanLua/Signs/compare)**. Learn more at [Contributing](README.md#contributing).
+
+I'm enjoying and **want to support Signs**. How can I **support Signs**?
+
+> We love to hear you're enjoying Signs. You can **support Signs** by **starring this [repository](https://github.com/RyanLua/Signs)** or **rating us on the [Creator Marketplace](https://create.roblox.com/marketplace/asset/6994955669)**. If you want to support us financially, you can **sponsor us on [GitHub](https://github.com/RyanLua/Signs)** or **buy Signs on the [Creator Marketplace](https://create.roblox.com/marketplace/asset/6994955669)** if you haven't so already.
+
+I have a **question that isn't answered** here. What do I do?
+> If you have a **question that isn't answered** here, you can **[start a discussion](https://github.com/RyanLua/Signs/discussions/new/choose)** and ask your question. If your question is **asked frequently enough** by different people, it will be added to this FAQ.
diff --git a/src/Signs/COPYING.server.lua b/src/Signs/COPYING.server.lua
index 6d45959..d97b5cf 100644
--- a/src/Signs/COPYING.server.lua
+++ b/src/Signs/COPYING.server.lua
@@ -7,4 +7,4 @@ This program is free software: you can redistribute it and/or modify it under th
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see .
-]]
\ No newline at end of file
+]]
diff --git a/src/Signs/PluginGui/GuiObjectPart.lua b/src/Signs/PluginGui/GuiObjectPart.lua
index 2bdbb32..7a915ea 100644
--- a/src/Signs/PluginGui/GuiObjectPart.lua
+++ b/src/Signs/PluginGui/GuiObjectPart.lua
@@ -24,6 +24,12 @@ function GuiObjectPart.new(
local self = {}
setmetatable(self, GuiObjectPart)
+ local recording = ChangeHistoryService:TryBeginRecording("NewSignPart", "Create a new SignPart")
+
+ if not recording then
+ error("Could not begin recording data model changes")
+ end
+
local camera = workspace.CurrentCamera or Instance.new("Camera")
local partSizeX = label.AbsoluteSize.X / 50
@@ -40,10 +46,11 @@ function GuiObjectPart.new(
local surfaceGui = Instance.new("SurfaceGui")
surfaceGui.SizingMode = Enum.SurfaceGuiSizingMode.PixelsPerStud
- surfaceGui.PixelsPerStud = 100
+ surfaceGui.PixelsPerStud = 50
surfaceGui.LightInfluence = lightInfluence or 0
surfaceGui.AlwaysOnTop = alwaysOnTop or false
surfaceGui.AutoLocalize = autoLocalize or true
+ surfaceGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
surfaceGui.Parent = part
local guiObject = label:Clone()
@@ -53,15 +60,22 @@ function GuiObjectPart.new(
guiObject.UIStroke:Destroy()
end
end
+ if guiObject.Rotation % 90 ~= 0 then
+ local canvas = Instance.new("CanvasGroup")
+ canvas.BackgroundTransparency = 1
+ canvas.Size = UDim2.new(1, 0, 1, 0)
+ canvas.Parent = surfaceGui
+ guiObject.Parent = canvas
+ end
Selection:Set({ part })
- ChangeHistoryService:SetWaypoint("Insert new SignPart")
-
self._part = part
self._surfaceGui = surfaceGui
self._guiObject = guiObject
+ ChangeHistoryService:FinishRecording(recording, Enum.FinishRecordingOperation.Commit)
+
return self
end
diff --git a/src/Signs/PluginGui/init.lua b/src/Signs/PluginGui/init.lua
index e6249fa..8b7672c 100644
--- a/src/Signs/PluginGui/init.lua
+++ b/src/Signs/PluginGui/init.lua
@@ -209,7 +209,6 @@ function PluginGui:newPluginGui(widgetGui)
CustomTextLabel:UpdateLineHeight(newValue)
end)
-
-- Horizontal alignment choice
local yChoice = LabeledMultiChoice.new(
"YChoice", -- name suffix of gui object
diff --git a/src/Signs/PluginInfo/PluginToolbar.lua b/src/Signs/PluginInfo/PluginToolbar.lua
index 207a03b..134968e 100644
--- a/src/Signs/PluginInfo/PluginToolbar.lua
+++ b/src/Signs/PluginInfo/PluginToolbar.lua
@@ -22,7 +22,10 @@ end
-- Creates a new button on the given toolbar
function PluginToolbar:CreateToolbar(name)
- assert(typeof(name) == "string", "Incorrect parameter type for param 'name' (expected string, got " .. typeof(name) .. ")")
+ assert(
+ typeof(name) == "string",
+ "Incorrect parameter type for param 'name' (expected string, got " .. typeof(name) .. ")"
+ )
assert(#name > 0, "Cannot have zero-length toolbar name.")
return PluginToolbars:FindFirstChild(name) or CreateNewToolbar(name)
end
@@ -34,4 +37,4 @@ function PluginToolbar:SetPlugin(reference: Plugin)
return self
end
-return PluginToolbar
\ No newline at end of file
+return PluginToolbar
diff --git a/src/Signs/PluginInfo/init.client.lua b/src/Signs/PluginInfo/init.client.lua
index 14d42e1..1601b13 100644
--- a/src/Signs/PluginInfo/init.client.lua
+++ b/src/Signs/PluginInfo/init.client.lua
@@ -27,8 +27,9 @@ button.ClickableWhenViewportHidden = true
-- Create new widget GUI and name it
local widget = plugin:CreateDockWidgetPluginGui("Signs", widgetInfo)
-widget.Title = "Signs 3.1.0"
+widget.Title = "Signs 3.2.0"
widget.Name = "Signs"
+widget.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
-- Initialize PluginGui or DevelopmentGui
local AddOns = require(script.Parent.PluginGui)
diff --git a/src/Signs/StudioWidgets/CollapsibleItem.lua b/src/Signs/StudioWidgets/CollapsibleItem.lua
index 5d8cbfa..1d74a10 100644
--- a/src/Signs/StudioWidgets/CollapsibleItem.lua
+++ b/src/Signs/StudioWidgets/CollapsibleItem.lua
@@ -163,9 +163,7 @@ function ItemClass:_UpdateVisualState()
end
-- Use the help icon. This will open the url in the wiki when clicked
-function ItemClass:UseHelp(url: string)
-
-end
+function ItemClass:UseHelp(url: string) end
-- Use the CollapsibleItem as a toggleable frame
function ItemClass:UseCollapsible()
diff --git a/src/Signs/StudioWidgets/CustomTextLabel.lua b/src/Signs/StudioWidgets/CustomTextLabel.lua
index fb0683a..2034a00 100644
--- a/src/Signs/StudioWidgets/CustomTextLabel.lua
+++ b/src/Signs/StudioWidgets/CustomTextLabel.lua
@@ -16,18 +16,30 @@ function CustomTextLabelClass.new(nameSuffix, height)
setmetatable(self, CustomTextLabelClass)
local background = GuiUtilities.MakeFixedHeightFrame("TextLabel " .. nameSuffix, height)
+ background.BorderMode = Enum.BorderMode.Inset
background.Size = UDim2.new(1, 0, 0, height)
background.BackgroundTransparency = 1
self._background = background
- local frame = Instance.new("Frame")
+ local canvas = Instance.new("CanvasGroup")
+ canvas.Name = "CanvasGroup"
+ canvas.Parent = background
+ canvas.BorderSizePixel = 0
+ canvas.Size = UDim2.new(0, height, 0, height)
+ canvas.AnchorPoint = Vector2.new(0.5, 0.5)
+ canvas.Position = UDim2.new(0.5, 0, 0.5, 0)
+ self._canvas = canvas
+
+ local frame = Instance.new("ImageLabel")
frame.BorderSizePixel = 1
+ frame.Image = "rbxasset://textures/9SliceEditor/GridPattern.png"
+ frame.ScaleType = Enum.ScaleType.Tile
+ frame.TileSize = UDim2.new(0, 20, 0, 20)
frame.Size = UDim2.new(0, height, 0, height)
frame.AnchorPoint = Vector2.new(0.5, 0.5)
frame.Position = UDim2.new(0.5, 0, 0.5, 0)
- frame.Parent = background
+ frame.Parent = canvas
GuiUtilities.syncGuiElementShadowColor(frame)
- GuiUtilities.syncGuiElementScrollBarBackgroundColor(frame)
self._frame = frame
local aspectRatio = Instance.new("UIAspectRatioConstraint")
@@ -192,4 +204,4 @@ end
return CustomTextLabelClass
--- To fix the above you can
\ No newline at end of file
+-- To fix the above you can
diff --git a/src/Signs/StudioWidgets/HorizontalTabBar.lua b/src/Signs/StudioWidgets/HorizontalTabBar.lua
index 1805831..d1b2795 100644
--- a/src/Signs/StudioWidgets/HorizontalTabBar.lua
+++ b/src/Signs/StudioWidgets/HorizontalTabBar.lua
@@ -77,13 +77,13 @@ end
function HorizontalTabClass:_SetupMouseClickHandling()
self._tabButton.InputBegan:Connect(function()
- self._hovered = true
- self:_updateCheckboxVisual()
+ self._hovered = true
+ self:_updateCheckboxVisual()
end)
self._tabButton.InputEnded:Connect(function()
- self._hovered = false
- self:_updateCheckboxVisual()
+ self._hovered = false
+ self:_updateCheckboxVisual()
end)
self._tabButton.MouseButton1Down:Connect(function()
diff --git a/src/Signs/StudioWidgets/NOTICE.server.lua b/src/Signs/StudioWidgets/NOTICE.server.lua
index b8ff2f8..245095e 100644
--- a/src/Signs/StudioWidgets/NOTICE.server.lua
+++ b/src/Signs/StudioWidgets/NOTICE.server.lua
@@ -24,4 +24,4 @@ Changes to Studio Widgets include minor and major modifications to it's files wh
d. Removal of unused files
- Removal of unused files such as a extra unimplemented library.
e. and other minor changes
-]]
\ No newline at end of file
+]]
diff --git a/src/SignsFree/COPYING.server.lua b/src/SignsFree/COPYING.server.lua
index 6d45959..d97b5cf 100644
--- a/src/SignsFree/COPYING.server.lua
+++ b/src/SignsFree/COPYING.server.lua
@@ -7,4 +7,4 @@ This program is free software: you can redistribute it and/or modify it under th
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see .
-]]
\ No newline at end of file
+]]
diff --git a/src/SignsFree/PluginGui/GuiObjectPart.lua b/src/SignsFree/PluginGui/GuiObjectPart.lua
index 2bdbb32..7a915ea 100644
--- a/src/SignsFree/PluginGui/GuiObjectPart.lua
+++ b/src/SignsFree/PluginGui/GuiObjectPart.lua
@@ -24,6 +24,12 @@ function GuiObjectPart.new(
local self = {}
setmetatable(self, GuiObjectPart)
+ local recording = ChangeHistoryService:TryBeginRecording("NewSignPart", "Create a new SignPart")
+
+ if not recording then
+ error("Could not begin recording data model changes")
+ end
+
local camera = workspace.CurrentCamera or Instance.new("Camera")
local partSizeX = label.AbsoluteSize.X / 50
@@ -40,10 +46,11 @@ function GuiObjectPart.new(
local surfaceGui = Instance.new("SurfaceGui")
surfaceGui.SizingMode = Enum.SurfaceGuiSizingMode.PixelsPerStud
- surfaceGui.PixelsPerStud = 100
+ surfaceGui.PixelsPerStud = 50
surfaceGui.LightInfluence = lightInfluence or 0
surfaceGui.AlwaysOnTop = alwaysOnTop or false
surfaceGui.AutoLocalize = autoLocalize or true
+ surfaceGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
surfaceGui.Parent = part
local guiObject = label:Clone()
@@ -53,15 +60,22 @@ function GuiObjectPart.new(
guiObject.UIStroke:Destroy()
end
end
+ if guiObject.Rotation % 90 ~= 0 then
+ local canvas = Instance.new("CanvasGroup")
+ canvas.BackgroundTransparency = 1
+ canvas.Size = UDim2.new(1, 0, 1, 0)
+ canvas.Parent = surfaceGui
+ guiObject.Parent = canvas
+ end
Selection:Set({ part })
- ChangeHistoryService:SetWaypoint("Insert new SignPart")
-
self._part = part
self._surfaceGui = surfaceGui
self._guiObject = guiObject
+ ChangeHistoryService:FinishRecording(recording, Enum.FinishRecordingOperation.Commit)
+
return self
end
diff --git a/src/SignsFree/PluginGui/init.lua b/src/SignsFree/PluginGui/init.lua
index 30339de..23d04b7 100644
--- a/src/SignsFree/PluginGui/init.lua
+++ b/src/SignsFree/PluginGui/init.lua
@@ -208,7 +208,6 @@ function PluginGui:newPluginGui(widgetGui)
CustomTextLabel:UpdateLineHeight(newValue)
end)
-
-- Horizontal alignment choice
local yChoice = LabeledMultiChoice.new(
"YChoice", -- name suffix of gui object
@@ -403,83 +402,15 @@ function PluginGui:newPluginGui(widgetGui)
CustomTextLabel:UpdateBackgroundColor3(newValue)
end)
- -- Other collapse
- local surfaceCollapse = CollapsibleTitledSection.new(
- "SurfaceCollapse", -- name suffix of the gui object
- "Other", -- the text displayed beside the collapsible arrow
- true, -- have the content frame auto-update its size?
- true, -- minimizable?
- true -- minimized by default?
- )
- createFrame:AddChild(surfaceCollapse:GetSectionFrame())
-
- -- Light influence slider
- local influenceSlider = LabeledSlider.new(
- "InfluenceSlider", -- name suffix of gui object
- "Light Influence", -- title text of the multi choice
- 5, -- how many intervals to split the slider into
- 1, -- the starting value of the slider
- 0.1 -- the multiplier for the slider
- )
- influenceSlider:GetFrame().Parent = surfaceCollapse:GetContentsFrame()
-
- -- Always on top checkbox
- local topCheckbox = LabeledCheckbox.new(
- "TopCheckbox", -- name suffix of gui object
- "Always On Top", -- text beside the checkbox
- false, -- initial value
- false -- initially disabled?
- )
- topCheckbox:GetFrame().Parent = surfaceCollapse:GetContentsFrame()
-
- -- Auto localize checkbox
- local localizeCheckbox = LabeledCheckbox.new(
- "LocalizeCheckbox", -- name suffix of gui object
- "Auto Localize", -- text beside the checkbox
- true, -- initial value
- false -- initially disabled?
- )
- localizeCheckbox:GetFrame().Parent = surfaceCollapse:GetContentsFrame()
-
-- Insert sign button
insertButton:GetButton().MouseButton1Click:Connect(function()
local label = CustomTextLabel:GetLabel()
- local influence = ((influenceSlider:GetValue() - 1) / 4)
- local top = topCheckbox:GetValue()
- local localize = localizeCheckbox:GetValue()
+ local influence = 1
+ local top = false
+ local localize = true
local size = CustomTextLabel:GetLabel().AbsoluteSize
GuiObjectPart.new(label, localize, influence, top, size)
end)
-
- -- -- Edit tab
-
- -- local editScrollFrame = VerticalScrollingFrameScrollingFrame.new("EditScrollFrame")
-
- -- local editFrame = VerticallyScalingListFrame.new( -- Scrolling frame
- -- "EditFrame" -- name suffix of gui object
- -- )
-
- -- local editButton = CustomTextButton.new(
- -- "EditButton", -- name of the gui object
- -- "Edit" -- the text displayed on the button
- -- )
- -- local editObject = editButton:GetButton()
- -- editObject.Size = UDim2.new(1, -5, 0, 50)
- -- editObject.Parent = editScrollFrame:GetContentsFrame()
-
- -- local hint = GuiUtilities.MakeFrameWithSubSectionLabel("Hint", "Selected is not a SignsPart.")
- -- editFrame:AddChild(hint)
-
- -- tabBar:AddTab("EditScrollFrame", "Edit")
- -- editFrame:GetFrame().Parent = editScrollFrame:GetContentsFrame() -- scroll content will be the VerticallyScalingListFrame
- -- editScrollFrame:GetSectionFrame().Parent = tabBar:GetFrame() -- set the section parent
-
- -- editButton:GetButton().MouseButton1Click:Connect(function()
- -- local Selection = game:GetService("Selection")
-
- -- Selection:Get()
- -- HighlightEditable:highlight()
- -- end)
end
-- Destorys the plugin gui so a new one can be created
diff --git a/src/SignsFree/PluginInfo/PluginToolbar.lua b/src/SignsFree/PluginInfo/PluginToolbar.lua
index 207a03b..134968e 100644
--- a/src/SignsFree/PluginInfo/PluginToolbar.lua
+++ b/src/SignsFree/PluginInfo/PluginToolbar.lua
@@ -22,7 +22,10 @@ end
-- Creates a new button on the given toolbar
function PluginToolbar:CreateToolbar(name)
- assert(typeof(name) == "string", "Incorrect parameter type for param 'name' (expected string, got " .. typeof(name) .. ")")
+ assert(
+ typeof(name) == "string",
+ "Incorrect parameter type for param 'name' (expected string, got " .. typeof(name) .. ")"
+ )
assert(#name > 0, "Cannot have zero-length toolbar name.")
return PluginToolbars:FindFirstChild(name) or CreateNewToolbar(name)
end
@@ -34,4 +37,4 @@ function PluginToolbar:SetPlugin(reference: Plugin)
return self
end
-return PluginToolbar
\ No newline at end of file
+return PluginToolbar
diff --git a/src/SignsFree/PluginInfo/init.client.lua b/src/SignsFree/PluginInfo/init.client.lua
index 40c8aca..7598e5f 100644
--- a/src/SignsFree/PluginInfo/init.client.lua
+++ b/src/SignsFree/PluginInfo/init.client.lua
@@ -27,7 +27,7 @@ button.ClickableWhenViewportHidden = true
-- Create new widget GUI and name it
local widget = plugin:CreateDockWidgetPluginGui("Signs", widgetInfo)
-widget.Title = "Signs Free 3.1.0"
+widget.Title = "Signs Free 3.2.0"
widget.Name = "SignsFree"
-- Initialize PluginGui or DevelopmentGui