jacobpalm / costa

The Costa Graphical User Interface for MS-DOS and compatible systems
https://costa.jacobpalm.dk/
MIT License
108 stars 7 forks source link

Icons do not display in DESLINKn.DAT 2 to 5 #38

Closed Axle-Ozz-i-sofT closed 1 year ago

Axle-Ozz-i-sofT commented 1 year ago

Hi :) I am experimenting with FreeDOS 1.3 as a VirtualBox client and really like the simplicity of the Costa GUI Launch.

I am using Costa V 1.75 (Have tried the older version as well).

Issue: I can't add icons/links to the 2, 3, 4 or 5th panel (desktop). [Add icon] creates the entry in the database table DESLINKn.DAT but the icon does not display. The *.DAT file shows the entries in a hex editor. If I replace DESLINK[2, 3, 4, 5].DAT with a copy of DESKLINK1.DAT the icons do display and I can add additional icons. If I remove most of the DESLINK[2, 3, 4, 5].DAT icons, the icons no longer display and I cannot see added icons, even though the .DAT file appears to show the icon entries.

I haven't had a chance to read the source to understand the database scheme as yet, so I can't see where the problem is at the moment.

I am just going to persist with the copy paste hack for the moment :)

Best regards Axle

P.S. I was setting up Costa with a profile or desk space so I can jump into VBDOS and FreeBASIC to try my hand at some DOS programming :) I'll no doubt use the source from Costa as a starting point to learn from :)

jacobpalm commented 1 year ago

Hi Axle,

Thank you for the very thorough description of the issue! By your description, I was able to quickly identify and fix the issue.

As it turns out, it was quite a simple fix. In older versions, I did not permit deletion of the last icon on a desktop. I changed this behavior to give the user more freedom, but I accidentally left in a piece of code in the function that loads icons from the DESKLNKx.DAT files:

IF LinkCount <= 1 THEN
    CLOSE #FileHandle
    REDIM DeskLink(0 TO 0) AS DeskLinkType
    EXIT SUB
END IF

Simply changing "<=" to "<" fixed the issue. While I was in the code, I also noticed that I didn't handle non-existing DESKLNKx.DAT files very well when switching pages, so I fixed that at the same time.

A new release, 1.7.3, has been made available with these fixes. Thank you very much for bringing it to my attention - I hope you'll enjoy Costa and that your journey with DOS and VBDOS will be as fun for you as it has been for my over the years :) Feel free to reach out any time if you want to discuss something or get some pointers, I'd be happy to help.

Axle-Ozz-i-sofT commented 1 year ago

Thank you @jacobpalm Off by ones ( a<b | a<=b ) are my worst enemy as I tend to code in C, FreeBASIC and Python at the same time and the array|list enumerations are different [0 to n-1] vs [0 to n] vs [1 to n] lol

I am hacking the FreeDOS 1.3 distro to pieces at the moment testing different applications to find my custom setup, so I will upgrade to Costa 1.3.7 when I do my clean install. (it's working fine with the hack at the moment.)

Questions... Prob 100 in my mind at the moment lol

The short list: Can I add an additional desktop beyond the 5, or is the five a hard coded limit? (You know I am about to copy paste a DESKLNK6.DAT and grit my teeth waiting for the crash lol)

What is the ICON format .BSV BSAVE. And do you know of a Win32 converter BMP|ICO 2 BSV app?

I have VBDOS installed but I am not familiar with VBAS so I have a learning curve ahead. I'll try some basic examples to get my head around it then I'll have a look at your Costa source as a GUI example. I will prob start up in C with Turbo, Watcom and DJGPP as it more native to me, and traditional BASIC and FreeBASIC is also native, then I will jump into VBDOS. Do you know of any simple C (Not C++) GUI toolkits for DOS?

And last, if you have any idea how to get the generic SB16 drivers to work in VitualBox? (This is likely impossible. I can get sound with some applications, but very few.)

I looked at most of the graphical Winows-ish like desktops available from the time (and recent), but not really what I wanted as they just go too far toward trying to be a win32 environment. Costa is is perfect, simple and convenient desktop launch pad that will be my best friend in a DOS environment :) Even File Maven 3 may take a close second place now lol

Costa in action (I will be doing some YT Videos on DOS programming soon, so Cost will be center piece). 1 (Small) 2 (Small) 3 (Small) 4 (Small) 5 (Small)