From 16ce2bb119c8e6f6d1e48eaa40fb468adc736528 Mon Sep 17 00:00:00 2001 From: yum Date: Thu, 15 Dec 2022 20:54:19 -0800 Subject: Add GUI hello world Literally just the wxWidgets hello world. ~GUI is named that way to prevent Unity from generating .meta files. Build instructions in ~GUI/README.md. --- ~GUI/GUI/.gitignore | 5 ++ ~GUI/GUI/GUI.sln | 31 +++++++++ ~GUI/GUI/GUI/.gitignore | 3 + ~GUI/GUI/GUI/GUI.vcxproj | 139 +++++++++++++++++++++++++++++++++++++++ ~GUI/GUI/GUI/GUI.vcxproj.filters | 22 +++++++ ~GUI/GUI/GUI/GUI.vcxproj.user | 4 ++ ~GUI/GUI/GUI/main.cpp | 82 +++++++++++++++++++++++ ~GUI/Libraries/.gitignore | 3 + ~GUI/Libraries/fetch.sh | 14 ++++ ~GUI/README.md | 10 +++ 10 files changed, 313 insertions(+) create mode 100644 ~GUI/GUI/.gitignore create mode 100644 ~GUI/GUI/GUI.sln create mode 100644 ~GUI/GUI/GUI/.gitignore create mode 100644 ~GUI/GUI/GUI/GUI.vcxproj create mode 100644 ~GUI/GUI/GUI/GUI.vcxproj.filters create mode 100644 ~GUI/GUI/GUI/GUI.vcxproj.user create mode 100644 ~GUI/GUI/GUI/main.cpp create mode 100644 ~GUI/Libraries/.gitignore create mode 100644 ~GUI/Libraries/fetch.sh create mode 100644 ~GUI/README.md (limited to '~GUI') diff --git a/~GUI/GUI/.gitignore b/~GUI/GUI/.gitignore new file mode 100644 index 0000000..7082b1d --- /dev/null +++ b/~GUI/GUI/.gitignore @@ -0,0 +1,5 @@ +# Don't check in build artifacts +x64 +x86 +# Ignore visual studio cruft +.vs diff --git a/~GUI/GUI/GUI.sln b/~GUI/GUI/GUI.sln new file mode 100644 index 0000000..5ef5534 --- /dev/null +++ b/~GUI/GUI/GUI.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.4.33122.133 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GUI", "GUI\GUI.vcxproj", "{E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}.Debug|x64.ActiveCfg = Debug|x64 + {E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}.Debug|x64.Build.0 = Debug|x64 + {E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}.Debug|x86.ActiveCfg = Debug|Win32 + {E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}.Debug|x86.Build.0 = Debug|Win32 + {E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}.Release|x64.ActiveCfg = Release|x64 + {E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}.Release|x64.Build.0 = Release|x64 + {E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}.Release|x86.ActiveCfg = Release|Win32 + {E17AD8B1-0565-459B-B8D0-2024CC6C5CD4}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {FA0FE5DA-8B30-47E0-9715-792C7CA1D5F8} + EndGlobalSection +EndGlobal diff --git a/~GUI/GUI/GUI/.gitignore b/~GUI/GUI/GUI/.gitignore new file mode 100644 index 0000000..86c78ae --- /dev/null +++ b/~GUI/GUI/GUI/.gitignore @@ -0,0 +1,3 @@ +# Don't check in build artifacts +x64 +x86 diff --git a/~GUI/GUI/GUI/GUI.vcxproj b/~GUI/GUI/GUI/GUI.vcxproj new file mode 100644 index 0000000..a19fc5c --- /dev/null +++ b/~GUI/GUI/GUI/GUI.vcxproj @@ -0,0 +1,139 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 16.0 + Win32Proj + {e17ad8b1-0565-459b-b8d0-2024cc6c5cd4} + GUI + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Windows + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Windows + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/~GUI/GUI/GUI/GUI.vcxproj.filters b/~GUI/GUI/GUI/GUI.vcxproj.filters new file mode 100644 index 0000000..56d4d70 --- /dev/null +++ b/~GUI/GUI/GUI/GUI.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + \ No newline at end of file diff --git a/~GUI/GUI/GUI/GUI.vcxproj.user b/~GUI/GUI/GUI/GUI.vcxproj.user new file mode 100644 index 0000000..0f14913 --- /dev/null +++ b/~GUI/GUI/GUI/GUI.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/~GUI/GUI/GUI/main.cpp b/~GUI/GUI/GUI/main.cpp new file mode 100644 index 0000000..491b546 --- /dev/null +++ b/~GUI/GUI/GUI/main.cpp @@ -0,0 +1,82 @@ +// wxWidgets "Hello World" Program + +// For compilers that support precompilation, includes "wx/wx.h". +#include + +#ifndef WX_PRECOMP +#include +#endif + +class MyApp : public wxApp +{ +public: + virtual bool OnInit(); +}; + +class MyFrame : public wxFrame +{ +public: + MyFrame(); + +private: + void OnHello(wxCommandEvent& event); + void OnExit(wxCommandEvent& event); + void OnAbout(wxCommandEvent& event); +}; + +enum +{ + ID_Hello = 1 +}; + +wxIMPLEMENT_APP(MyApp); + +bool MyApp::OnInit() +{ + MyFrame* frame = new MyFrame(); + frame->Show(true); + return true; +} + +MyFrame::MyFrame() + : wxFrame(nullptr, wxID_ANY, "Hello World") +{ + wxMenu* menuFile = new wxMenu; + menuFile->Append(ID_Hello, "&Hello...\tCtrl-H", + "Help string shown in status bar for this menu item"); + menuFile->AppendSeparator(); + menuFile->Append(wxID_EXIT); + + wxMenu* menuHelp = new wxMenu; + menuHelp->Append(wxID_ABOUT); + + wxMenuBar* menuBar = new wxMenuBar; + menuBar->Append(menuFile, "&File"); + menuBar->Append(menuHelp, "&Help"); + + SetMenuBar(menuBar); + + CreateStatusBar(); + SetStatusText("Welcome to wxWidgets!"); + + Bind(wxEVT_MENU, &MyFrame::OnHello, this, ID_Hello); + Bind(wxEVT_MENU, &MyFrame::OnAbout, this, wxID_ABOUT); + Bind(wxEVT_MENU, &MyFrame::OnExit, this, wxID_EXIT); +} + +void MyFrame::OnExit(wxCommandEvent& event) +{ + Close(true); +} + +void MyFrame::OnAbout(wxCommandEvent& event) +{ + wxMessageBox("This is a wxWidgets Hello World example", + "About Hello World", wxOK | wxICON_INFORMATION); +} + +void MyFrame::OnHello(wxCommandEvent& event) +{ + wxLogMessage("Hello world from wxWidgets!"); +} + diff --git a/~GUI/Libraries/.gitignore b/~GUI/Libraries/.gitignore new file mode 100644 index 0000000..214bffb --- /dev/null +++ b/~GUI/Libraries/.gitignore @@ -0,0 +1,3 @@ +# Don't check in anything we fetch +wx + diff --git a/~GUI/Libraries/fetch.sh b/~GUI/Libraries/fetch.sh new file mode 100644 index 0000000..dcf096c --- /dev/null +++ b/~GUI/Libraries/fetch.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +set -o errexit +set -o xtrace + +WX_3_2_1_URL=https://github.com/wxWidgets/wxWidgets/releases/download/v3.2.1/wxWidgets-3.2.1.zip +WX_URL=$WX_3_2_1_URL + +mkdir wx +pushd wx >/dev/null +wget $WX_URL +unzip $(basename $WX_URL) +popd >/dev/null + diff --git a/~GUI/README.md b/~GUI/README.md new file mode 100644 index 0000000..5d60af3 --- /dev/null +++ b/~GUI/README.md @@ -0,0 +1,10 @@ +## Build instructions + +0. Open WSL. +1. Execute Libraries/fetch.sh. +2. Install Visual Studio 2022. +3. Open Libraries/wx/build/msw/wx_vc17.sln with Visual Studio 2022. +4. Build x64/Release. +5. Open GUI/GUI.sln with Visual Studio 2022. +6. Build x64/Release. + -- cgit v1.2.3