Working on a Installer script to installing FreePascal for Amiga using the official way. In the past I often used Installer scripts but never wrote one. It looks very close to LISP (brackets everywhere 😉 ) luckily the scripts are just saved as text. You can peek into other scripts, how to make some of the more difficult parts. For the basic structure I found a nice program in Aminet InstallerGen, it provides a nice MUI Gui to create the install steps, which also helps to understand the language.
The first version is finished now. You can select the installation type, minimal, typical, full and customized. On customized you can select the packages to install. (see image) Of course it also adds the needed entries for assign and path to the user-startup. The plan is to create some more such installers to install more packages, afterwards, like LCL, MUIClass or the FPU-enabled units.
For MorphOS and OS4 this should be easy to create from it. On AROS it will be a little bit different, there is no need to alter the user-startup, you only need to register it as a package.
Traveling is nice, but also nice to be back. As wrote in he travel blog entry I worked on the MUIIDE, especially on the Menu creating stuff, which is quiet difficult things, but prepares other stuff to come (like listview and lists). You can create now very easily Menus with Submenus with the IDE.
There seems to be a little bug, sometimes when I change a combobox active entry, the GUI does not follow it. I debugged it a little bit, and it seems like and updating problem, because after resizing the window everything seems to be normal. Needs some more investigation.
I’m currently on travel in Hong Kong, China and South Korea. I bought a PowerBook to take with me as my only Computer (+ mobile phone of course). The plan was to work a little bit on the free time on the MUIIDE and try MorphOS on the daily use.
Now some time is passed and it worked rather nicely. I had some problems in China to connect to the WLAN access point (it somehow worked but very slow). I switched to mobile phone 3G/4G WLAN sharing (iPhone) to MorphOS which works nicely. In South Korea and Hong Kong the WLAN in Hotel works flawlessly. Now it’s common that every Hotel room has it’s own WLAN access point in the room. If you often switch the Network it’s a little bit trouble, because sometimes the Network will go down when then WLAN disappears but will not come up again if it appears again (or an other known one). Even go to Network settings and force to the new WLAN does not help, but after a Restart of the Computer everything is fine.
Basically that’s the only problem I noticed, everything else works nicely. listing music with Digital Audio Player, Check emails via OWB or SimpleMail, Check my servers via SSH, Watch movies with MPlayer (via from USB Stick) writing code with Scribble, compile with FPC 😉 handle git with MoGit and git, surf Web with OWB (shows nicely chinese characters) and of course write this Article with image upload ;-). Overall not bad certainly daily use compatible for my usecases.
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 😛 .
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.
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.
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.
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 184.108.40.206 and scribble to view the diff (both pathes can be configured with the ini file in the archive). Have fun
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.
When an exception appears which is not covered by any try/except the program will just end (and print the exception to Debugout) which is not very nice. Again take some idea from LCL and catch all exceptions in the Event handler and show to user as nice MessageBox. But MUI certainly does not like it if you leave the Eventhandler in such a rude way 😉 (at least Zune on AROS) so after it the Eventhandler is dead because Zune thinks this is a circular calling. It’s not true but it’s prevents you to call that event again. Best thing here is to end the application an restart. Therefore I ask the user what to do, ignore the exception, knowing that this will have strange effects, or leave the program directly.
The ignore could be interesting if you have the chance to save your data before closing the program. Of course the writer of program can also override the Exception handling (via OnException Event in MuiApp, as used to from Delphi/LCL.