2021-06-11 19:24:52 +02:00
// MassBuilderSaveTool
2022-01-30 11:36:56 +01:00
// Copyright (C) 2021-2022 Guillaume Jacquemin
2021-06-11 19:24:52 +02:00
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// 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 <https://www.gnu.org/licenses/>.
# include "SaveTool.h"
# include <Corrade/version.h>
# include <Magnum/version.h>
# include <Magnum/versionIntegration.h>
# include <Magnum/ImGuiIntegration/Integration.h>
# include <zipconf.h>
# include "../FontAwesome/IconsFontAwesome5.h"
# include "../FontAwesome/IconsFontAwesome5Brands.h"
extern const ImVec2 center_pivot ;
void SaveTool : : drawAbout ( ) {
ImGui : : SetNextWindowPos ( ImVec2 { Vector2 { windowSize ( ) / 2.0f } } , ImGuiCond_Always , center_pivot ) ;
ImGui : : SetNextWindowSize ( { windowSize ( ) . x ( ) * 0.8f , windowSize ( ) . y ( ) * 0.75f } , ImGuiCond_Always ) ;
ImGui : : OpenPopup ( " About##AboutPopup " ) ;
if ( ! ImGui : : BeginPopupModal ( " About##AboutPopup " , & _aboutPopup ,
ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoCollapse ) )
{
return ;
}
if ( ImGui : : BeginTable ( " ##TitleTable " , 3 ) ) {
ImGui : : TableSetupColumn ( " ##Empty1 " , ImGuiTableColumnFlags_WidthStretch ) ;
ImGui : : TableSetupColumn ( " ##Button " , ImGuiTableColumnFlags_WidthFixed ) ;
ImGui : : TableSetupColumn ( " ##Empty2 " , ImGuiTableColumnFlags_WidthStretch ) ;
ImGui : : TableNextRow ( ) ;
ImGui : : TableSetColumnIndex ( 1 ) ;
2021-07-13 18:46:21 +02:00
ImGui : : TextUnformatted ( SDL_GetWindowTitle ( window ( ) ) ) ;
2021-06-11 19:24:52 +02:00
ImGui : : EndTable ( ) ;
}
ImGui : : Dummy ( { 0.0f , ImGui : : GetFontSize ( ) } ) ;
ImGui : : TextWrapped ( " This application, made for the M.A.S.S. Builder community by Guillaume Jacquemin (aka William JCM), "
" is a rewrite of the wxWidgets-powered M.A.S.S. Builder Save Tool (formerly known as wxMASSManager). " ) ;
ImGui : : AlignTextToFramePadding ( ) ;
2021-07-13 19:00:27 +02:00
const char * repo = " https://williamjcm.ovh/git/williamjcm/MassBuilderSaveTool " ;
ImGui : : Text ( ICON_FA_GIT_ALT " %s " , repo ) ;
2021-06-11 19:24:52 +02:00
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Copy to clipboard " ) ) {
ImGui : : SetClipboardText ( repo ) ;
}
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Open in browser " ) ) {
openUri ( repo ) ;
}
ImGui : : Separator ( ) ;
if ( ImGui : : CollapsingHeader ( " Licence " ) ) {
ImGui : : TextWrapped ( " This application is made available under the terms of the GNU General Public License, version 3, the full text of which is available below: " ) ;
if ( ImGui : : BeginChild ( " ##GPL " , { 0.0f , windowSize ( ) . y ( ) * 0.3f } , true ) ) {
static const auto licence = _rs . get ( " COPYING " ) ;
ImGui : : PushFont ( ImGui : : GetIO ( ) . Fonts - > Fonts [ 1 ] ) ;
ImGui : : TextUnformatted ( licence . c_str ( ) ) ;
ImGui : : PopFont ( ) ;
}
ImGui : : EndChild ( ) ;
}
if ( ImGui : : CollapsingHeader ( " Third-party components " ) ) {
ImGui : : TextWrapped ( " This application uses the following third-party components: " ) ;
ImGui : : PushStyleVar ( ImGuiStyleVar_IndentSpacing , 0.0f ) ;
if ( ImGui : : TreeNodeEx ( " Corrade " , ImGuiTreeNodeFlags_SpanAvailWidth ) ) {
ImGui : : Text ( " Version used: %s " , CORRADE_VERSION_STRING ) ;
ImGui : : AlignTextToFramePadding ( ) ;
const char * corrade_website = " https://magnum.graphics/corrade " ;
ImGui : : Text ( ICON_FA_GLOBE " %s " , corrade_website ) ;
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Copy to clipboard " ) ) {
ImGui : : SetClipboardText ( corrade_website ) ;
}
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Open in browser " ) ) {
openUri ( corrade_website ) ;
}
ImGui : : TextUnformatted ( " Licence: MIT " ) ;
static const auto corrade_licence = _rs . get ( " COPYING.Corrade " ) ;
if ( ImGui : : BeginChild ( " ##CorradeLicence " , { 0.0f , windowSize ( ) . y ( ) * 0.3f } , true ) ) {
ImGui : : PushFont ( ImGui : : GetIO ( ) . Fonts - > Fonts [ 1 ] ) ;
ImGui : : TextUnformatted ( corrade_licence . c_str ( ) ) ;
ImGui : : PopFont ( ) ;
}
ImGui : : EndChild ( ) ;
ImGui : : TreePop ( ) ;
}
if ( ImGui : : TreeNodeEx ( " Magnum and integration libraries " , ImGuiTreeNodeFlags_SpanAvailWidth ) ) {
ImGui : : TextUnformatted ( " Versions used: " ) ;
ImGui : : BulletText ( " Magnum: %s " , MAGNUM_VERSION_STRING ) ;
ImGui : : BulletText ( " Integration: %s " , MAGNUMINTEGRATION_VERSION_STRING ) ;
ImGui : : AlignTextToFramePadding ( ) ;
const char * magnum_website = " https://magnum.graphics " ;
ImGui : : Text ( ICON_FA_GLOBE " %s " , magnum_website ) ;
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Copy to clipboard " ) ) {
ImGui : : SetClipboardText ( magnum_website ) ;
}
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Open in browser " ) ) {
openUri ( magnum_website ) ;
}
ImGui : : TextUnformatted ( " Licence: MIT " ) ;
static const auto magnum_licence = _rs . get ( " COPYING.Magnum " ) ;
if ( ImGui : : BeginChild ( " ##MagnumLicence " , { 0.0f , windowSize ( ) . y ( ) * 0.3f } , true ) ) {
ImGui : : PushFont ( ImGui : : GetIO ( ) . Fonts - > Fonts [ 1 ] ) ;
ImGui : : TextUnformatted ( magnum_licence . c_str ( ) ) ;
ImGui : : PopFont ( ) ;
}
ImGui : : EndChild ( ) ;
ImGui : : TreePop ( ) ;
}
if ( ImGui : : TreeNodeEx ( " Dear ImGui " , ImGuiTreeNodeFlags_SpanAvailWidth ) ) {
ImGui : : Text ( " Version used: %s " , IMGUI_VERSION ) ;
ImGui : : AlignTextToFramePadding ( ) ;
const char * imgui_repo = " https://github.com/ocornut/imgui " ;
ImGui : : Text ( ICON_FA_GITHUB " %s " , imgui_repo ) ;
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Copy to clipboard " ) ) {
ImGui : : SetClipboardText ( imgui_repo ) ;
}
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Open in browser " ) ) {
openUri ( imgui_repo ) ;
}
ImGui : : TextUnformatted ( " Licence: MIT " ) ;
static const auto imgui_licence = _rs . get ( " LICENSE.ImGui " ) ;
if ( ImGui : : BeginChild ( " ##ImGuiLicence " , { 0.0f , windowSize ( ) . y ( ) * 0.3f } , true ) ) {
ImGui : : PushFont ( ImGui : : GetIO ( ) . Fonts - > Fonts [ 1 ] ) ;
ImGui : : TextUnformatted ( imgui_licence . c_str ( ) ) ;
ImGui : : PopFont ( ) ;
}
ImGui : : EndChild ( ) ;
ImGui : : TreePop ( ) ;
}
if ( ImGui : : TreeNodeEx ( " Simple DirectMedia Layer (SDL) 2 " , ImGuiTreeNodeFlags_SpanAvailWidth ) ) {
ImGui : : Text ( " Version used: %i.%i.%i " , SDL_MAJOR_VERSION , SDL_MINOR_VERSION , SDL_PATCHLEVEL ) ;
ImGui : : AlignTextToFramePadding ( ) ;
const char * sdl_website = " https://www.libsdl.org/ " ;
ImGui : : Text ( ICON_FA_GLOBE " %s " , sdl_website ) ;
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Copy to clipboard " ) ) {
ImGui : : SetClipboardText ( sdl_website ) ;
}
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Open in browser " ) ) {
openUri ( sdl_website ) ;
}
ImGui : : TextUnformatted ( " Licence: zlib " ) ;
static const auto sdl_licence = _rs . get ( " LICENSE.SDL " ) ;
if ( ImGui : : BeginChild ( " ##SDLLicence " , { 0.0f , windowSize ( ) . y ( ) * 0.3f } , true ) ) {
ImGui : : PushFont ( ImGui : : GetIO ( ) . Fonts - > Fonts [ 1 ] ) ;
ImGui : : TextUnformatted ( sdl_licence . c_str ( ) ) ;
ImGui : : PopFont ( ) ;
}
ImGui : : EndChild ( ) ;
ImGui : : TreePop ( ) ;
}
if ( ImGui : : TreeNodeEx ( " libzip " , ImGuiTreeNodeFlags_SpanAvailWidth ) ) {
ImGui : : Text ( " Version used: %s " , LIBZIP_VERSION ) ;
ImGui : : AlignTextToFramePadding ( ) ;
const char * libzip_website = " https://libzip.org/ " ;
ImGui : : Text ( ICON_FA_GLOBE " %s " , libzip_website ) ;
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Copy to clipboard " ) ) {
ImGui : : SetClipboardText ( libzip_website ) ;
}
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Open in browser " ) ) {
openUri ( libzip_website ) ;
}
ImGui : : TextUnformatted ( " Licence: 3-clause BSD " ) ;
static const auto libzip_licence = _rs . get ( " LICENSE.libzip " ) ;
if ( ImGui : : BeginChild ( " ##libzipLicence " , { 0.0f , windowSize ( ) . y ( ) * 0.3f } , true ) ) {
ImGui : : PushFont ( ImGui : : GetIO ( ) . Fonts - > Fonts [ 1 ] ) ;
ImGui : : TextUnformatted ( libzip_licence . c_str ( ) ) ;
ImGui : : PopFont ( ) ;
}
ImGui : : EndChild ( ) ;
ImGui : : TreePop ( ) ;
}
if ( ImGui : : TreeNodeEx ( " Entropia File System Watcher (efsw) " , ImGuiTreeNodeFlags_SpanAvailWidth ) ) {
ImGui : : AlignTextToFramePadding ( ) ;
const char * efsw_repo = " https://github.com/SpartanJ/efsw " ;
ImGui : : Text ( ICON_FA_GITHUB " %s " , efsw_repo ) ;
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Copy to clipboard " ) ) {
ImGui : : SetClipboardText ( efsw_repo ) ;
}
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Open in browser " ) ) {
openUri ( efsw_repo ) ;
}
ImGui : : TextUnformatted ( " Licence: MIT " ) ;
static const auto efsw_licence = _rs . get ( " LICENSE.efsw " ) ;
if ( ImGui : : BeginChild ( " ##efswLicence " , { 0.0f , windowSize ( ) . y ( ) * 0.3f } , true ) ) {
ImGui : : PushFont ( ImGui : : GetIO ( ) . Fonts - > Fonts [ 1 ] ) ;
ImGui : : TextUnformatted ( efsw_licence . c_str ( ) ) ;
ImGui : : PopFont ( ) ;
}
ImGui : : EndChild ( ) ;
ImGui : : TreePop ( ) ;
}
2021-07-28 14:27:44 +02:00
if ( ImGui : : TreeNodeEx ( " C++ Requests (cpr) " , ImGuiTreeNodeFlags_SpanAvailWidth ) ) {
ImGui : : AlignTextToFramePadding ( ) ;
const char * cpr_website = " https://whoshuu.github.io/cpr/ " ;
ImGui : : Text ( ICON_FA_GLOBE " %s " , cpr_website ) ;
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Copy to clipboard " ) ) {
ImGui : : SetClipboardText ( cpr_website ) ;
}
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Open in browser " ) ) {
openUri ( cpr_website ) ;
}
ImGui : : TextUnformatted ( " Licence: MIT " ) ;
static const auto cpr_licence = _rs . get ( " LICENSE.cpr " ) ;
if ( ImGui : : BeginChild ( " ##cprLicence " , { 0.0f , windowSize ( ) . y ( ) * 0.3f } , true ) ) {
ImGui : : PushFont ( ImGui : : GetIO ( ) . Fonts - > Fonts [ 1 ] ) ;
ImGui : : TextUnformatted ( cpr_licence . c_str ( ) ) ;
ImGui : : PopFont ( ) ;
}
ImGui : : EndChild ( ) ;
ImGui : : TreePop ( ) ;
}
if ( ImGui : : TreeNodeEx ( " JSON for Modern C++ (aka json.hpp) " , ImGuiTreeNodeFlags_SpanAvailWidth ) ) {
ImGui : : AlignTextToFramePadding ( ) ;
const char * json_website = " https://json.nlohmann.me/ " ;
ImGui : : Text ( ICON_FA_GLOBE " %s " , json_website ) ;
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Copy to clipboard " ) ) {
ImGui : : SetClipboardText ( json_website ) ;
}
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Open in browser " ) ) {
openUri ( json_website ) ;
}
ImGui : : TextUnformatted ( " Licence: MIT " ) ;
static const auto json_licence = _rs . get ( " LICENSE.json " ) ;
if ( ImGui : : BeginChild ( " ##jsonLicence " , { 0.0f , windowSize ( ) . y ( ) * 0.3f } , true ) ) {
ImGui : : PushFont ( ImGui : : GetIO ( ) . Fonts - > Fonts [ 1 ] ) ;
ImGui : : TextUnformatted ( json_licence . c_str ( ) ) ;
ImGui : : PopFont ( ) ;
}
ImGui : : EndChild ( ) ;
ImGui : : TreePop ( ) ;
}
2021-06-11 19:24:52 +02:00
if ( ImGui : : TreeNodeEx ( " Font Awesome " , ImGuiTreeNodeFlags_SpanAvailWidth ) ) {
ImGui : : TextUnformatted ( " Version used: 5.15.3 " ) ;
ImGui : : AlignTextToFramePadding ( ) ;
const char * fa_website = " https://fontawesome.com/ " ;
ImGui : : Text ( ICON_FA_GLOBE " %s " , fa_website ) ;
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Copy to clipboard " ) ) {
ImGui : : SetClipboardText ( fa_website ) ;
}
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Open in browser " ) ) {
openUri ( fa_website ) ;
}
ImGui : : TextUnformatted ( " Licence: SIL Open Font License 1.1 " ) ;
ImGui : : TreePop ( ) ;
}
if ( ImGui : : TreeNodeEx ( " IconFontCppHeaders " , ImGuiTreeNodeFlags_SpanAvailWidth ) ) {
ImGui : : AlignTextToFramePadding ( ) ;
const char * icon_repo = " https://github.com/juliettef/IconFontCppHeaders " ;
ImGui : : Text ( ICON_FA_GITHUB " %s " , icon_repo ) ;
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Copy to clipboard " ) ) {
ImGui : : SetClipboardText ( icon_repo ) ;
}
ImGui : : SameLine ( ) ;
if ( ImGui : : Button ( " Open in browser " ) ) {
openUri ( icon_repo ) ;
}
ImGui : : TextUnformatted ( " Licence: zlib " ) ;
ImGui : : TreePop ( ) ;
}
ImGui : : PopStyleVar ( ) ;
}
ImGui : : EndPopup ( ) ;
}