Dear Diary/Blog

Started by Dabzy, Oct 19, 2024, 11:04 AM

Previous topic - Next topic

Dabzy

Launchpad IDE

Launchpad Version Notes and thoughts:-

27-12-2024 : Version 1.0r2

So, all in all, I've had a think about where Launchpad was heading in regards to recent sad events, and, to be honest, it's been quite the journey which, well, I cannot waste. It's been in development for nearly a year, so after many a thought, I firgured out a plan, and as the plan goes will be added to here, but, I have a path with what I want to do and as such, rolling back the version number since development last time was LibSGD based, it was all it was angled at... I'm starting again with it, not again AGAIN obviously, but, reshaping it for a better word.

Managed to test Launchpad and the DX9Lib on a clean Win11 machine, and as I thought, I needed to make sure the graphics driver was up to date, and installed a DirectX redistributable package to get it working. This redistributable can be found in the $LaunchpadDir$/DX9redist folder. It was one of them "Lets dump the contents here somewhere!" extract efforts, but now I've put it in a nice convenient zip file. So yeah, it all works... Which is nice to see, but, I feel like I need a little break from all this, I've never stopped, and people you know... They think I do nowt when I'm off work!!! :D Little do they fooking know! ;) hehehe

Documented all of the DX9Lib commands, and aye, that was a thing! :D

Done a bit of a jiggle with DX9Lib, on the one, major "getter, setter and if" rename of the commands. Basically, Blitz of old did the "KeyDown()" thing, but since Mark started off the same with LibSGD, and then changed it to a more verbose offering, I was getting quite used to it, so, if the DX9 command has an 'Is' in it, as in "DX9_IsKeyDown()", you know it returns a boolean, if it has 'Get', as in "DX9_GetMouseX()", you know it's going to return a value of sorts, if you know what I mean. On the two, removed and added a few commands to the mix.

The bit I was actually dreading, squaring up the Launchpad-IDE forum thing, but, it had to be done, the whole process so far has been like emptying the wardrobe and drawers when a member of the family has gone... Bit weird I know, but, it sorta was.

Wrote my own online documentation system, looks and works like a sort of GITish one, it didnt take too long really, couple of days, any hurdles? Not really, I'm all right with HTML and PHP, CSS is my downfall really, but pulled through. I was looking at third party ones, but some of them, the price they charge... They are kidding, I mean, GIT charge just shy of $50 a year, lol, why aye, I'm bound to! :D And yeah, you can get free ones, free wiki's, I detest Wiki mark up... Have you seen it? If you ask me, it's an abomination! :P Anyway, I accepted the challange and I'm quite happy with it, maybe slightly cruder then others, but it works well within a browser and you can do the double tap F1 trick on a command in Launchpad and it will show the online version of the command help in a window, which is all I wanted, and that's what I've done. I have noticed one of the conversions at syntaxbomb is about this very thing! :D lol, and by the looks of it, mine is going to be slated when it gets out in the wild! ;) hehehe

Chopped, changed and chipped away many aspects of Launchpad, it's pretty much the sorted now, but stuff does work differently

Revamped one of my old pieces of code, my DX9Lib DirectX 9 2D renderer, pretty basic at the minute, but would like to expand it... Docs to write for that too.

First thing first, I've squared up LUI a bit more, it was something I was writing while LibSGD was still in development, I still need to write the docs for it though, but it seems to graft as intended. 

*** ROLL BACK ***

20-10-2024 : Version 1.7

Sadly, here is a version note I never saw coming, Mark Sibly, the author of LibSGD and Blitz3D, passed away at the beginning of the month, and probably with him, LibSGD. Programming for me has always been a joy, and I've used the tools he has created for over 20 years, and through them, met some wonder people online who like myself, enjoy the aspects of the subject, so it is with great sadness that there will be no more from such a great developer. At the time of writing, I have no idea where this will lead Launchpad, it's quite possible noone will see this entry, it's all immaterial really, as I'm just jotting away, but yeah, truly one of them end of era moments. Good night Mark, sleep tight :(

Bought a proper domain name for Launchpad, now using a forum instead of the wordpress setup of old.

Updated the docs for changes in LibSGD v0.16. (My head is starting to spin on that front, lol)

30-09-2024 : Version 1.4

Created a little splash window when Launchpad loads up, reason, none! Just for shitties and giggles! :P

Implemented a little "Testpad" area (Menu->Tools->Testpad), it's more so a programmers jot pad, but, you can run code from it, it never loses it contents, works just like the main project based text areas but with no bells and whistles, usual Windows keyboard short-cuts apply, such as CTRL+Z for undo, CTRL+X for cut etc etc. One thing to note, the building options are Check and Run, no debug, cos like... -d option innit! :/ Grrrrrrrr I hate that BlitzCC option, it just wants to hog the whole world!!! So if you need a message out of the test code when running, use 'Alert()' (If your asking, "is that a cop out Dabz? Yes... Yes it f[EASY TIGER]king is, now move along please, nothing else to see! ;) )

Tidied up autocomplete a bit more, basically trapping it when in comments, so when in a comment and you start typing that looks like it's going to resemble a keyword or whatever, it won't fire. Done this while adding the multi-line comment feature Mark implemented /* .. */, that also seems to work a treat too! \o/

09-08-2024 : Version 1.3 (Official v1.2 skipped due to being released 'unofficially', is that right? :D lol)

Since Blitz3Dv1.117, a new command has been added called 'Dialect', which will effect certain aspects of how code should be set out, see the 'Dialect' help document for more info, but bare in mind, new projects, new files and the Launchpad Utility File are set up with the "modern" option, because... a) I like it and b) further down the line I'll be writing a lexer for live auto-complete, and just supporting one style will be enough for me.

Added quick hint/help, hit F1 over a function identifier and it will show said function with a hint to it's parameter list in the status bar, hit F1 again on the same function identifier, and a full help document will show in the home tab, this was a big job really setting everything up, but basically, now the Blitz3D side and LibSGD side are now married together in regards to that. You'll note it is a bit basic, but wxHTMLWindow which I've had to use is just a basic HTML web page viewer, no bells and whistles, what you see is pretty much all you get, but it does the job! :) Please note, the documents shipped with Launchpad may not align with the current version of LibSGD, any updated to suit will be available as a seperate download, and will have to be extracted manually into the "doc" folder, though, the document version number will match the current LibSGD version... An an example... the document version 0.12 will match LibSGD version 0.12, just for a sanity check the current documents version is noted on the bottom of each help page, so if your active LibSGD is, say, 0.13, and the document is reporting 0.12, your docs are out of date so, go over to the Launchpad website/Blitz3D->Launchpad thread at the LibSGD forums and see if I've got to releasing the matching.

Tidied up error reporting by displaying the file and plonking the caret on the line where the error is, and general 'notifications' when building and doing other odds and ends.Some will note I've added a few little sound effects to notification message boxes. Especially a special one when there is a syntax error, I mean, Ziggy's Blide had a guitar being plucked, so why not Launchpad... Anyway, I put these in as I did originally have just a plain old wxMessage() dialog, but, Windows 11 system sounds are so depressing, like, it seems that it just cannot be arsed, so decided to sort my own message box! The error one has been kept it in for a laugh, I'm 46 you know! :D teehehehe Anyway, I'll probably add a few selectable sounds for them in the properties bit, but for now, if you get sick of it, just change the WAV file "noticesound1.wav" inside the config folder, but I'll be honest, I quite like it and it keeps on giving me a giggle still... Did I tell you [;)]... I'm 46 you know :)

Implemented a drop down list in the tool bar that contains identifiers of different types and functions. These are exclusive to the identifers in the source code that is currently been worked on in Launchpad. If you open one of these lists up, and click an item, the main text editor area will shoot the caret to the declarion line within the source code.

If say, you open the Menu->File->New Project dialog, which has a number of text boxes inside of it, once you go into a text box, place text in it, then click out of it (Be it another textbox or whatever), that's it, you cannot access that text box again via a click of the mouse. After further inspection, you can tab around the text boxs back to text boxs that have shut up shop once data is entered into them, and then type text in again, but, the caret doesnt follow if you get me, instead, the caret stays in the last text box that was focused, and dances about as if it was in the textbox where your entering data... It's another odd thing that has cropped up. Dunno whats happened there, I originally thought I was missing a event.Skip() statement somewhere, but I cannot see where. It's funny though, because trying to implement a fudge, there are a few events not hitting, like keyboard and mouse events. I've discussed it with a couple of peeps in the wxWidgets IRC channel, one of them said does wxEVT_COMMAND_TEXT_ENTER work when handling events... Which it does, further inspection shows the wxEVT_COMMAND_TEXT_UPDATED event is handled as expected as well. After trying everything, and sending them the whole lot to take a peek... They are none the wiser because, well, it should work within their reasonings. Their only recommendation is to upgrade, and use a new[ish] Bind() function for connecting events to handlers, this is the actual offical recommendation, ahem, DO NOT USE CONNECT().
Buggering hells bollocks!
So, with that, as it stands, lol, I've got it where if you hit the return key after adding stuff to the text box, or any text boxes in Launchpad, you can get back into them with the mouse, tabbing out or clicking another control will render it locked up unless you do the tabbing around the doors trick mentioned above! Eeeeee eh, never a dull day! :D In all seriousness... Moving it to a new version may just be the idea, if any porting path is under taken, I'll probably move the project over to C++, at least then, when needing help or looking for answers, it'll be easier to get it as I'm not based on a "library within a library" setup like I am now. It is what it is, not a show stopper, there is an answer, but I cannot see it, and neither can others who know wxWidgets inside out, cut a long story short... I haven't got a fooking clue what I've done to cause that effect! :) teehehehe

Well, I've been away from the keyboard for the last couple of months, I haven't been a well puppy, fell into a bit of ill health, and I ended up having to have an operation to fix me up, I got an abcess "downstairs", started the size of a pea, thought nothing of it really, phoned GP, usual GP bollocks "No appointments available this week, if you have concerns, visit A and E". Couple of days later, my, ahem, "bits" ended up the size of a massive turnip, I'm not jesting, it caused me absolutely agony... So after 17 days on two types of anti-biotics to drive an infection out, a trip or two to the hospital for ultrasound and CT scans, I eventually went into Sunderland Royal to go under the knife and thus, ended up with 2 holes in me, one at the bottom left of my pelvis (down by my gooch), which they removed a junk yard amount of crap that was left over after the infection, they also removed damaged material inside there too, and they put a drain in for a couple of days. The hole in the top of my pelvis which was another abcess was still infected and literally had to be chopped out, this is why I had so many scans, because they couldnt make out if it was an abcess, hernia or a little bit of both, so when cutting into that area, they had to be sure what was happening in there. I came out of hospital a couple of days later, and for weeks now, was assigned to the couch, with my remote and literally watched that much TV I ran out of things to watch, it's been absolutely cack. So with that, programming hasnt been a thing, but, I'm on the up now, at the time of writing nearly out the other side, it's still sore, the holes are filling up now nicely, but the best thing is, I'm moving about and can sit for a decent period... And it's about bloody time! :D

Default project is in there, basically, you open Launchpad and the current set project will load up automatically. Setting a project as the default can be found in the Menu->Project->Project Information... dialog.

Added the option of using a "LP_Utility.bb" include file in the project, basically, it contains all things like key mapping constants (e.g. KEY_ESCAPE), LibSGD constants (e.g. EVENT_MASK_CLOSE_CLICKED) and this will probably be a place I'll put a few "helper" functions in too... All will be exposed to autocomplete so no need to run about looking for values or writing a large chod of text. Just start writing the constant required or 'lpu' for others in there (@JamesB, I nicked one of your routines to test, as it is a handy thing, lol, hope you don't mind). The option of adding this is available when you create a new project.

Dragging and dropping a Launchpad project file (.bbp) onto the Launchpad executable icon will now open said project in the IDE. This pretty much means you can associate Launchpad project files now within Windows Explorer by using the "Open with..." dialog. I was musing if I should of made this an automatic affair after first run, it's only a little reg hack, but decided against it, it would of made sense if Blitz3D used a installation process, but now it's in a zip, well, people can move it all about now, so, it doesn't make sense... I'll just leave that to the user.

A few hotkeys added: F5->Run, F6->Run with debug, F7->Check for errors.

Recent projects dialog is in, you can access it from the menu item known as File->Recent Projects.

Tidied up the autocomplete/intellisense setup a bit, working much better, I have actually changed this entry of the version history because it works so much better that the little niggle I was having with Scintilla reporting the caret/line position wrong, so much so, I "think" (<--- I've said it now, lol) I've eradicated the issue! \o/ yay

Customisation is in, where you can twiddle the knobs of the main text area, hopefully, I've got many bases covered in that regard, and yes, I did clone the look [sorta] from the MaxIDE editor options! :D lol Anyway, when this version gets released (Which will be 1.2), you'll find the dialog by clicking Menu->Edit->Edit Area Options..., Just to know, to activate some changes, the project will close then reopen, which means any undo/redo history is lost, so if your going to wiggle things, it's recommended you do it without a project loaded or just after opening a project.

Fan Daby F[BEEP]ing Dozy News: Debugging is in... Well, sorta, again, fudge needed, but... wxProcess absolutely detests the -d flag when calling BlitzCC and I had to think of another way, so, one made it an external operation instead of keeping it in app... But, it's debugging without the need to open Blitz3D... So who cares... It works! \o/ yay

Implemented UTF-8 support for the main editor texty texty area... This is why I changed the setup from an output window, it did accept UTF-8, and I could manually add, say, Chinese text to it, but when pulling messages from the running app via the text stream... Something got mangled along the way and you end up with gibberish, I think that "might" be because it's using BRL's streaming functions and they aren't UTF-8 it seems, I've tried converting them in various ways, even using String conversion members, which work if you tinker with them manually, but, again, when plugged into the messages coming from the process [app], they borked.

Now the debugger is playing nice since calling and running it from outside Launchpad, it means you can see messages from within the running app via DebugLog messages in the debugger, so, with that, there is no need for that little PrintLine command, which in turn, unshackles Launchpad built apps from the little PrintLine.DLL setup. \o/ yay I still wish the LibSGD runtime had a console output function like good old "Print", but it hasnt! :( Boooooooooooooooooo Maybe one day I'll put one in myself when official updates of the lib from Mark have calmed down, just because currently, it'll be just another thing to do every week! :D

02-05-2024 : Version 1.1

I didn't get the words out of my mouth and it broke... And it's arse backfired in Windows 11 when firing up 'BlitzCC' for a build and run, one of them works on previous, broke on tuther in regards to OS overhauls, but, all fixed... Hopefully!!! \o/

Fixed a load of mangled GUI in Win11, honestly, the GUI system in Win11 is awful, it looks terrible, designed terrible and it breaks so many GUI layouts, it's mental... Even MS's own stuff is broken I've now noticed after using it more... I thought I'd never say it, but, I wish I was developing on Windows 10, but since MS is stopping support, the move to Win11 now has to be done! :(

17-04-2024 : Version 1.0

Tis what it tis... Potential release to the masses, probably knackered somewhere and someone will use it for 5 seconds and hit a pain in the bumhole bug that I've missed! :D

Launchpad IDE © Michael Denathorn 2024
Blitz3D © Blitz Research Ltd 2024 [/i][/b]
Intel Core i5 6400 2.7GHz, NVIDIA GeForce GTX 1070 (8GB), 16Gig DDR4 RAM, 256GB SSD, 1TB HDD, Windows 10 64bit