Implement GUI
This pull request introduces a new GUI mode for OpCore Simplify, providing a modern, cross-platform graphical interface alongside the existing CLI. The changes include a platform-adaptive icon system, modular GUI page structure, and macOS-inspired UI components and styling. The most important changes are grouped below:
1. GUI Mode Integration and Entry Point:
- Added logic to
OpCore-Simplify.pyto launch a new GUI mode by default, with an option to fall back to CLI using the--cliargument. Handles import errors gracefully and switches to CLI if GUI is unavailable.
2. Modular GUI Architecture:
- Created a
Scripts/guipackage with an__init__.pythat exposes the main GUI class (OpCoreGUI) and the icon system (Icons). - Introduced a
Scripts/gui/pagespackage with an__init__.pythat organizes and exposes all GUI page classes for easy import and modularity.
3. Platform-Adaptive Icon System:
- Implemented
Scripts/gui/icons.py, which provides a robust icon system using Unicode and system fonts, ensuring consistent appearance across Windows, macOS, and Linux. Includes utility methods for icon retrieval and formatting.
4. New GUI Pages with macOS-Inspired Styling:
- Added
Scripts/gui/pages/configuration_page.py, implementing a configuration page for hardware report selection and macOS version setup, featuring styled action cards and instructional content. - Added
Scripts/gui/pages/console_page.py, implementing a console log page with styled log area, clear/export actions, and helpful tips for users.
@lzhoang2801 do you maybe have an JSON hardware report that i can use for development. because i don't have an windows machine. so i can't really test the UI so good 😅
Here some screenshots
@lzhoang2801 do you maybe have an
JSONhardware report that i can use for development. because i don't have an windows machine. so i can't really test the UI so good 😅
Here https://github.com/lzhoang2801/OpCore-Simplify/discussions/23#discussioncomment-15054538
@lzhoang2801 can you maybe have a look at what i have currently?
Here some screenshots
Can you use qfluentwidgets? I like this style
I will update the code to use this style: https://qfluentwidgets.com
And remove CLI version, we only need console log
okay i will then also remove the CLI version. 👍
@lzhoang2801 this is what i currently have. it's not yet finished. but i just wanted to show you some results in between:
Here some screenshots
Woaaa
Woaaa
i think that's a good response? 😉
i try not to make any changes currently to the CLI working because i first want to have minimal chnages between the working of the CLI tool and the GUI. and after i have added all the functionallty in the GUI i will create a new PR to refactor and remove the CLI.
otherwise this PR will be getting to large? do you agree?
or what do you prefer?
Okay, but make sure you have clean code for the GUI version. I will help you ensure the script's operational flow is correct.
Okay, but make sure you have clean code for the GUI version. I will help you ensure the script's operational flow is correct.
off course. currently it's still a rough draft. i want to have the design and the workflow of the GUI first implement before refactoring the GUI and cleaning up the code.
but can you maybe explain the build fase a little more? because there we have as well the Wifi exstractor.
should this be a seperate fase by it self? or do you want that when you click the build EFI. it will show a dialog to do the wifi extraction? or? i'm just trying to figure out what is really going on with the build fase because i have seen a lot of things are happing there.
PS. i have send a message on telegram to you? maybe it's a little easier to communicate there.
Okay, contact me via @lzhoang2601
@lzhoang2801 😉
Added now a Settings Page :)