Getting ready for Id 2.0 with wxWidgets #224
Replies: 24 comments 30 replies
-
I don't think sound support is a big deal. I agree that getting a good GUI up and running is the highest priority. Is there a way to convert the Windows .rc files into wxWidgets? This could save a lot of effort as I have built a number of screens for ManpWIN that can easily be adapted to ID. The details can be discussed offline. |
Beta Was this translation helpful? Give feedback.
-
BTW, for anyone unfamiliar with wxWidgets, but familiar with MFC, please see the video Porting from MFC to wxWidgets |
Beta Was this translation helpful? Give feedback.
-
I've added a few more wxWidgets-related issues to the 2.0 milestone. My expectation is that over time more and more of the existing screens will be converted to dialogs and tool windows and so-on in subsequent 2.x releases. The priority for 2.0 is to get the infrastructure in place to support things to be event-driven instead of polling the keyboard/mouse for input. Experience from past projects has taught me that the GUI can sink a lot of development effort and time if you're not careful, so I don't want to stack too much onto the 2.0 milestone. |
Beta Was this translation helpful? Give feedback.
-
Since 1.0 had a target release date of VCFMW 19 in September, 2024, I'm going to set the release date for 2.0 to VCFMW 20 in September, 2025 This will give me plenty of time to get more than just a bare bones wxWidgets version working and it's more likely that I'll have a good chunk of the UI moved to wxWidgets. |
Beta Was this translation helpful? Give feedback.
-
Bring it on. |
Beta Was this translation helpful? Give feedback.
-
Looks like I can implement a CGA text window completely with wxStyledTextCtrl, so yay! I won't end up writing a custom control after all, assuming a little experimenting validates this out. |
Beta Was this translation helpful? Give feedback.
-
Great news. Let me know how you go. |
Beta Was this translation helpful? Give feedback.
-
I've moved the completion date for the 2.0 milestone to November 2nd. Originally the idea was to complete it in time for VCFMW and give a talk on the progress made over the past year, but they don't allow repeat talk topics. So I've moved it out a little further to allow for more time than just the bare bones wxWidgets implementation. Beyond the bare minimum, I'd like to have the tool framework in place and everything migrated to using tools and responding to events instead of doing polling I/O. There is a way to keep limping along with the existing polling I/O and that's what will be implemented first. |
Beta Was this translation helpful? Give feedback.
-
Good call. |
Beta Was this translation helpful? Give feedback.
-
Inversion of control (switching from polling I/O to event-driven I/O) is a really big change, so I've approached the problem incrementally. I'm refactoring the existing code to bring the polling out of inner loops and higher up in the call chain. So far, I've worked through the following "standalone" engines:
This is how I'm going to incrementally transform the code so that ultimately at the level of It is also addressing the long-standing desire I've had to separate computation of fractal images from user interface. As I go, I'm moving any code that does keyboard polling to |
Beta Was this translation helpful? Give feedback.
-
This sounds liken a well thought out approach. |
Beta Was this translation helpful? Give feedback.
-
The work-in-progress on the I've added workflows to build the wxWidgets code, but these are currently failing on linux until I clean up the leftover Win32-isms in the code and make it truly cross-platform. I used the Win32 implementation as the starting point for the wxWidgets implementation. I should be able to clean up these builds in the next few days. Then any wxWidgets related changes will be tested by the continuous integration builds to make sure I'm keeping everything portable across platforms. The existing Win32/unix code is unchanged in the |
Beta Was this translation helpful? Give feedback.
-
Good work. It sounds like progress is steady. |
Beta Was this translation helpful? Give feedback.
-
I've been using co-pilot in MSVC++ 2022 and find it very helpful. What you are doing for text widows is easy in Windows, but I have no idea about how to do it in Linux. I guess this is where wxWidgets comes in. |
Beta Was this translation helpful? Give feedback.
-
All the continuous integration builds are now green. CI now builds all combinations of "default" and "wx" variants in Debug and Release configurations on Windows and linux. |
Beta Was this translation helpful? Give feedback.
-
How close are we to an Id release 2.0? |
Beta Was this translation helpful? Give feedback.
-
Well done. You have achieved a great deal. |
Beta Was this translation helpful? Give feedback.
-
OK, in master you will currently find a If you want to see what this looks like, run the following command from the source directory: The first time you configure the |
Beta Was this translation helpful? Give feedback.
-
I see what happened. There was a conflict in pulling down master with fpu087.cpp. So I simply created a new branch and ran cmake --preset wx. After a long time of downloading all sorts of stuff, I got an error message "Could not find the WiX candle executable". Sigh! |
Beta Was this translation helpful? Give feedback.
-
Getting closer... but getting build errors... Build started at 9:09 PM... |
Beta Was this translation helpful? Give feedback.
-
When I pulled down Master, there was a conflict with FPU087.cpp and it was only a comment. But I couldn't get it to resolve. This has been an ongoing problem for me when I try to merge. So I simply created another branch and everything looked okay. the CMake --preset wx worked fine and I was able to find the MS VC++ solution file okay. Everything looked okay until I did the build. |
Beta Was this translation helpful? Give feedback.
-
When I pull master down I get a conflict. The only way I can see to resolve it is to delete my whole repository and start again. I simply can't get my head around solving conflicts in GIT. |
Beta Was this translation helpful? Give feedback.
-
I'm still trying to log into Discord on my PC |
Beta Was this translation helpful? Give feedback.
-
Things have been a little slow lately and I've just been doing some mechanical code cleanups in my IDE. However, my September distractions are nearly over (going on a small trip this weekend) and I hope to get back on track to getting a full wxWidgets version working. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Sound support isn't going to make it into 1.1. I'm undecided if I'm going to try a 1.2 release with sound support or just push it to some later release (maybe not even 2.0).
Moving to wxWidgets is more important than sound support and I thought the sound support would be easy, but it's not. I think ultimately the sound support is going to require a secondary sound playback thread and things are just going to be too difficult if I introduce multi-threading in 1.1.
To get ready for the next push to wxWidgets, I've added a bunch of issues for migrating all the existing user interface to wxWidgets.
I've grouped them using issue the following labels:
I've only assigned the bare minimum to the 2.0 release right now.
The reason I'm starting this discussion is that once I've got the basics done for the wxWidgets port in 2.0, those other issues for each piece of UI can be worked on independently by other developers. I know it's not sexy fractal code, but it's stuff that's got to be done to bring the code forward.
For the text prompt screens, I have an idea of how to shim things over using the existing
FullScreenValues
inputs to full_screen_prompt. I will use the metadata in the structure to add wxWidgets to a dialog box programmatically. This won't be the greatest looking UI but it will be the simplest way to bridge things over.At some point the keyboard polling will have to be switched over to standard GUI event dispatching. Some thoughts on this are sketched out in #185.
In general this is the 'inversion of control' that happens when you switch from polling I/O (as is done currently with all the
if (driver_key_pressed())
, etc. stuff) to event-based control. The polling I/O will remain for a while until everything is switched over and Id more like a standard GUI program.-- Richard
Beta Was this translation helpful? Give feedback.
All reactions