- Notifications
You must be signed in to change notification settings - Fork12
License
Neko-Box-Coder/ssGUI
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Important
Development for this project is currentlyon hold. There are no plans to resume development at the moment.
⚠️ This library is constantly changing & incomplete until v1.00 . However, feel free to star or bookmark this project.
- 🔌 Status of ssGUI
- ❓ What is ssGUI?
- ❓ Why Another GUI Framework?
- 📌 Cool Features
- 🧮 Quick Start
- 🛣️ Roadmap
- ❤️ Special Thanks
- 📜 Licenses
ssGUI is aimed to be an universal framework that can be used for bothgraphical intensive applications 🔥 andnormal GUI applications 🎹.
Only one GUI framework for games and normal GUI application with support to OpenGL window and (WIP)
native OS window.ssGUI supports multiple platforms: Windows, Linux and (WIP)
MacOS.Nothing is restricted ⛔, you can get the underlying system handle easily if you want.
ssGUI functions are verbose and easy to understand.
HTML Documentation provides step by step tutorial for getting started, (WIP)
with a number of mock up GUI examples to reference from.API is clearly documented with (WIP)
images to describe each properties.ssGUI uses the extensions and (Optional) event callbacks model. Only add the functionalities you need and you are good to go.
It by default uses native system libraries, no need to install any external packages or download binaries libraries.
You can just build ssGUI from source using CMake.
ssGUI uses C++ 11 standard (With the exception for MSVC), which makes it compatible with many project within the last decade.
ssGUI aims to be forward compatible in terms of souce compatibility, meaning no code change when migrating to newer ssGUI version.
Easy visualization on what the GUI, no longer need to recompile everytime you make a change.
- Wanted to create an application with the performance of C++
2. Realized there ain't any GUI framework I wanted at the time.
- They are either:
- Not fully open source license
- Convoluted framework
- Looks ugly
- Missing modern features like docking or automatic layout
- Terrible API
- Steep learning curve
Decided to reinvent the wheel just like any other programmers
2 years later, I still haven't created the application I wanted in the first place
Joke aside, I just wanted to have a GUI framework that can be:
- Spinned up within minutes with minimum / no configuration
- Uses C++ STL
- No restrictions on commercial use
- Simple, feature rich but not bloated
Which ssGUI has achieved most of them.
▶️ Button- 🔲 Checkbox
- 📷 Image
- 🪟 MainWindow
- 📑 Menu
- 🈶 Text
- ✏️ TextField
- 📦 GUIObject, Widget & Window (Base GUI Objcet)
- 🗄️ Composite GUI Objects
- 📄 Dropdown
- 🩻 ImageCanvas
- 🗃️ MenuItem
↕️ Scrollbar- 🛝 Slider
- ⏩ StandardButton
- 🖥 StandardWindow
- Add ssGUI to your project as submodule
git submodule add -b v0.94.01.a_release https://github.com/Neko-Box-Coder/ssGUI.git <folder name>
- Then initialize the submodules used by ssGUI
git submodule update --init --recursive
- Add ssGUI to your
CMakeLists.txt
by doingadd_subdirectory("${CMAKE_CURRENT_LIST_DIR}/directory/to/ssGUI")
- And link it by doing
target_link_libraries(example PUBLIC ssGUI)
(You can find this atssGUI/Example/ReadmeExampleV7
)
#include"ssGUI/HeaderGroups/StandardGroup.hpp"#include"ssGUI/Extensions/Layout.hpp"//Readme exampleusingnamespacessGUI::Enums;intmain(){ ssGUI::MainWindow mainWindow; mainWindow.SetRenderSize(glm::vec2(450,80)); mainWindow.AddExtension<ssGUI::Extensions::Layout>();auto* text = mainWindow.AddChild<ssGUI::Text>(); text->SetText("Click on the button to show the message");auto* button = mainWindow.AddChildWithWrapper<ssGUI::StandardButton>(AlignmentHorizontal::CENTER, AlignmentVertical::CENTER); button->SetSize(glm::vec2(50,30)); ssGUI::ssGUIManager guiManager; guiManager.AddRootGUIObject(&mainWindow); guiManager.AddPostGUIUpdateEventListener ( [&]() {if(button->GetButtonState() == ssGUI::Enums::ButtonState::CLICKED) text->SetText(L"(`oωo´)"); } ); guiManager.StartRunning();return0;}
- File Dialog support
- Tabs extension
- Color picker
Instance rendering- etc...
This project is under Apache-2.0 License.Licenses for resources used by testing and examples are stored as "Credits.txt" under the same folder.
GLM:
- The Happy Bunny License or MIT License
SFML:
- zlib/png license
- Components used by ssGUI:
- freetype is under the FreeType license or the GPL license
- stb_image and stb_image_write are public domain
- If you want to use other components, please visithttps://github.com/SFML/SFML/blob/master/license.md for their licenses
stb_image:
- MIT License or Public Domain
freetype:
- The FreeType License or GPLv2
clip:
- The clip license (Copyright (c) 2015-2022 David Capello)