Archives for Applications

MUIIDE – the next mile stone

Posted by ALB42 on 7. Mรคrz 20184 Comments

Finally I got it working saving and loading also works now for events, as I described before I had to relocate the complete Eventhandler routine to make that possible (in an abstract way).
Now it’s also possible to add multiple Windows. (But only the first one is open by default), I have to think about how to solve it, but of course you can open the other Windows in the OnShow Event of the MainWindow. Or as I show in the Video on Button Press.
A little demonstration (featuring “awesome drawing skills” icon ๐Ÿ˜‰ ):

Notice to me, stop Delitracker before recording, or the mouse pointer whips with the Music ๐Ÿ˜‰
After that is finished I guess the next one will be properties which are other classes, like Menu or List at the ListView.
I also have some ideas how to deal with special Values (like the Window inital position, MUIV_Window_LeftEdge_Centered and so on) but this will need a little bit more thinking and of course much work ๐Ÿ˜› .

MUIIDE Menu loading / saving

Posted by ALB42 on 5. Mรคrz 2018No Comments

Back to topic, after this little Vampire excursion, I continued working on MUIIDE especially the loading and saving, atm. I just save/load a project file which is a simple XML very easy for Trees to handle in XML and also can save nearly every content. But of course with this it will be not possible to export the source code and reload it to add an additional item… especially if you changed the source. It will be very difficult to make that happen, of course Lazarus does this… but Lazarus is a code monster difficult to dig out how this is done and maybe thats even not transferable to my code. I’m not sure what to do here.
Loading and saving for the properties is already finished and working well, but at this position I noticed that I did the eventhandler keeping wrong this way I can not save them to the project file, seems need some more thinking.
After that is finished I will try to add class properties, like Menu (Window), List (on a ListView) and so on Also thinking about to make the project multi window compatible, so that it really can hold the complete application not just a window, then the root of my Tree should be application and not Window.

Vampire V2.7 with FPU

Posted by ALB42 on 2. Mรคrz 20188 Comments

The new Vampire firmware is released V2.7 which contains a Hardware FPU in the FPGA (some seldom 68881/68882 commands are still emulated, like the 68060/68040 also do) but nevertheless, thats very nice for my MUIMapparium (you remember the problem?). Of course I flashed directly the new version, first the bad news, it’s VERY unstable for me, it’s said it needs some soldering because there are some errors on the early Vampire cards which make the power supply to the FPGA bad… something like this and I’m affected with that … so it’s a little bit annoying to work with it because there are drawing errors on the screen and it crashes often. I reduced the screen resolution and ended all background program which made it much better. But nevertheless to really try it out I have to wait until someone fix my card. I can’t do that myself, most scary thing in the world a coder with a screwdriver let alone a soldering equipment :-P.
But this was not the topic of this post. I tried MUIMapparium FPU version on my new Vampire 2.7… good news it starts does not crash, bad news the map stays empty. The same Executable worked well with FEmu (I checked especially before I flashed the new one) on the old Gold 2 and still work in UAE. But the FPU calculation seems to work because the mouse pointer movement shows reasonable coordinates. I was a little bit surprised because even the GUI in the map window was gone. I checked the code ah yes there is a tiny floating point calculation, fine let’s see whats that. An my guess was right it is the floating point calculation, the Button size is calculated by the Font Size * 1.2 to have a little bit more space around it. After adding some debug output it seems that the floating point calculation works well but the rounding always return zero, so I wrote a little test program to test the rounding here the outputs of the testprogram in my setups:

Vampire 2.7 Amiga 1200/030/68882 UAE 68060 emul
a := 5 = 5
a * 1.0 = 5.000000000E+00
Round(a * 1.0) = 0
b := a * 1.3 =  6.499999523E+00
Round(b) = 0
Ceil(b) = 7
Floor(b) = 6
Floor(b) = 6
press enter
end
a := 5 = 5
a * 1.0 = 5.000000000E+00
Round(a * 1.0) = 5
b := a * 1.3 =  6.500000000E+00
Round(b) = 6
Ceil(b) = 7
Floor(b) = 6
Floor(b) = 6
press enter
end
a := 5 = 5
a * 1.0 = 5.000000000E+00
Round(a * 1.0) = 5
b := a * 1.3 =  6.500000000E+00
Round(b) = 6
Ceil(b) = 7
Floor(b) = 6
Floor(b) = 6
press enter
end

Na? who spots the difference. Funny that only Round() have this problem but ceil, trunc, floor not. This also explains why MUIMapparium shows no maps at all, if all is rounded to 0. Ok I have to wait until they fix that… yeah I could replace all Round(a) by Floor(a+0.5) but why should I do that, here is clearly something broken in the FPGA.
 
You want to try on your own computer – Exe for m68k with FPU: TestFPU and the source: TestFPU.pas

MoGit Source on GitHub

Posted by ALB42 on 1. Mรคrz 2018No Comments

I created a repository for MoGit on Github today. It was also the first time to really use MoGit in a real world situation and my first push using the MorphOS git client. Sadly there are some problems with the local certificates so I had to deactivate the certificate checking but besides this it worked nicely, MoGit and git. I was able to push to Github :-D.

MoGit 0.1 – the next day

Posted by ALB42 on 28. Februar 2018No Comments

The implementation yesterday was so easy that I thought it would be nice to also see/check the changes before you commit them (with git this is all a little bit strange because you have to “stage/add” them) it was a little bit more difficult than I thought. The command line options are a little bit crazy sometimes not very logical. But it works now. Just open the MoGit with the parameter “check” (the log view you get without it or with “log” as first parameter, the second parameter should be the path to the repository to inspect)

Still quick and dirty ๐Ÿ˜‰ but for me thats already a big help. I guess the development will stop here and I will continue on the MUIIDE. But still if someone interested: MoGit 0.1.

MoGit – a git log viewer for MorphOS

Posted by ALB42 on 26. Februar 2018No Comments

I try to write natively my MUIClass on MorphOS these days. I will go on a travel for some days and will get my PowerBook with MorphOS with me to continue coding in the free time. That git is available for MorphOS makes it much easier to transfer the code to it (and track/commit and so on). But I’m very spoiled by Tortoise on Window and RabbitVCS on Linux to operate repositories (mostly svn but also some git) so I really miss some features here, most of all the easy checking of the log and see which files are changed and what was changed in the commit.
Today I wrote a little utility to help me with that, just showing the git log, and the changed files which you can double click, and the diff is shown in the Scribble (which has Highlighting for diff files, nice)
A little Demonstration:

Took me around two hours to write it ๐Ÿ˜‰ I really like my new MUIClass package (and FreePascal) the most of it I was reading git manual pages (omg so many options). So it’s just a quick and dirty program but if someone is interested: MoGit Download. It needs the current git release 2.16.2.6 and scribble to view the diff (both pathes can be configured with the ini file in the archive). Have fun

MUIClass nightly compilation and 64bit

Posted by ALB42 on 25. Februar 2018No Comments

Wrote a little Makefile and added the MUIClass compilation to the Jenkins build server. On every change in the repository it will recompile MUIClass for all available platforms. At the occasion I noticed that I did some errors for 64 bit (Integer – PtrInt) also corrected this. The Jenkins compilation create a little archive with the compiled units, IDE and examples. If you download them together with FPC release archive for your platform it should be directly usable. It also creates the documentation directly and as archive on the build server.

The exception handling I mentioned yesterday is improved. To satisfy MUI/Zune I put a try, except into every hook function before calling the Eventhandler, it makes sure the program returns from the hook to MUI/Zune. Of course the basic function is still the same, if the User decide to break the program, it will be terminated or if you connect the OnException event is assigned it gets triggered.

MUI IDE Source and Events

Posted by ALB42 on 22. Februar 20186 Comments

Working hard on the Event stuff for the MUI IDE. Hardest Part to find out how the Eventhandler parameter are via RTTI. In the end just some pointer calculation inside the RTTI structures.
The program already does some basic Source export. So it is somewhat usable! But I’m not sure if that is the final version or I will go the LCL way of some kind of hidden properties (for now the properties are written directly to the Source).

Some impression:

For sure is not finished, it has not saving/loading feature source name and editor name for editing the eventhandler are hard coded, and so on. But for now thats already very cool, at least I think so ๐Ÿ˜›

MUI GUI Editor

Posted by ALB42 on 16. Februar 20187 Comments

My MUIClass implementation is already rather advanced, the basic items are implemented, most of them are even tested and documentation. With this tools you can already write rather easily MUI GUIs but it would be even nicer to use a GUI to create it (especially because on some fields I’m not completely sure how this influence the final result). Already long time before I had some concepts for that in my Head but with the plain MUI classes and my little MUI knowledge thats just too difficult. Now with the MUIClasses and my increased knowledge when writing them ๐Ÿ˜‰ it is possible. The Basic functionality of adding Stuff and changing properties are already there, all completely abstract (via FreePascal RTTI), so I do not need to implement every field for it by hand.

A little demonstration:

For now I only added some basics (Button, String, Text, Group) But the rest is rather the same. There is still much thinking to do with the advanced classes like ListView and so on (how to connect the List to ListView) and EventHandlers but this should be solvable. Also the Source export is not implemented until now, because I’m not completely sure which way I choose.
Basically there are two ways. The first one is more or less like Lazarus does it: The properties you set in the IDE are written to a resource file and without seeing them in the final sourcecode they are streamed to the objects on creation. If I choose that way I would not use resources (because Amiga68k still have no support for it) but maybe an include with a xml/json text which describes the GUI. This way has also the advantage that it is easier to read it back later (if you reopen the file in the IDE again).

The second way would be like fpGUI does, the IDE produces the complete Source to set the properties in the Source code. (with some helper comments to find them back when you reopen it). Advantage much easier to implement on the Saving Side, Disadvantage the Loading part can be very tricky if the User changed the Sources somehow. Still to decide, but so many other problems before that appear so no worry. ๐Ÿ˜›

Easier MUI Drawing

Posted by ALB42 on 27. Januar 20185 Comments

Working on the DrawPanel, thats an MUI Area object which exports the usual Events you know from LCL objects, like OnPaint (here OnDrawObject), OnMouse____, OnKey____, such stuff. With this it is very easy to create a simple painting application:

(Notice my awesome drawing skills ๐Ÿ˜‰ )
With it, I developed a TDrawBuffer, which saves you the work of Allocating a Bitmap, create a layer and RastPort. I noticed I have this kind of code in many of my MUI applications, therefore it make sense to make a little handy class out of it. I could have some more functions. I tested the whole stuff on Amiga, AROS and MorphOS and it works fine on all of them, very nice.