Sunday, 25 August 2013

Qt 4.7 on X1000

Today I wanted to take a look at the recently released Qt 4.7 framework for AmigaOS4 on the X1000.


So what is Qt? Qt is an application framework that is used by programmers to write applications for the modern platforms of today, like Windows, Mac OS X and Linux, amongst others.

You can find more information about Qt on Wikipedia entry here if you want to learn more about Qt.

Qt framework has been used for some well known applications such as Google Earth, Skype, VLC Media Player, and VirtualBox, amongst others.

This presents some exciting application porting possibilities into the future on AmigaOS with the availability of the Qt framework.

Qt is a free download and is available on www.os4depot.net. A number of programs have already been ported to AmigaOS and I will cover some of the applications released so far.

Note 7/10: QT Quickfix7 has been released to patch QT to the latest version with many bug fixes. It is available to download from here. I have written a separate blog entry how to install the quickfix here. Please note that you need to install Qt 4.7 as below first, before applying the quickfix.

Please note that some Qt applications (not all) requires 3D acceleration and as such requires the Dual graphic card setup on the X1000 in order to use it (or the Wazp3d acceleration) - for hardware support you need a Radeon 9250 graphics card which has hardware 3D support. I detailed how to set this up in an earlier blog posting I wrote here.

The main Qt archive is a very large 400MB download compressed, and expands to over 1GB of content once extracted. This is because it included the SDK (Software Development Kit) to develop Qt applications, as well as the binary files needed for the Qt framework.

The original Qt archive is a gzipped tar archive. This means you need to first extract the tar archive, and then extract that to the destination temporary folder for installation, as below.


Once this tar file is extracted (I did to WORK:Temp folder), you should get the Qt4.7 folder below:


The Qt4.7 installer is a fairly routine installation...


Note that you need to make a change to your s:User-Startup folder before you reboot after the install. When you see the screen below, DO NOT REBOOT YET.


Instead, open up your favourite editor and open s:User-Startup and scroll down to the end of the file. The line you need to add to the User-Startup is dir sobjs: >NIL: which needs to be inserted as highlighted below and then saved:


After this has been done, you can now reboot. If you don't insert this line you will get an error on reboot.

After the reboot, I opened up work:Qt-4.7 folder. I created an Apps folder here to store Qt applications I download. This should keep things clean when upgrading Qt in the future.


Note the SubDock.Docky icon. If you drag this into the AmiDock on your Workbench, you will get a new Sub dock (which I renamed to QT Apps). You can then put your favourite Qt applications there for easy access when needed. I show this below:


Ok, so let's take a look at some of the demo programs included in the Qt archive. As you can see below, there are quite a few to try out:


First up is QTextEdit, a Rich Text format text editor program. When I first ran it, I immediately saw a problem with the Menu bar over lapping the application AmigaOS title bar, as shown below:


I found this affected all the demo programs I tried. After some research, it turns out a setting needs to be modified in Qt Prefs in order to fix this. So, first close QTextEdit.

In the System:Prefs folder, there is now a Qt Prefs icon which, when run, appears as below:


You need to click on the Painting tab, and select the "Native Paint Engine" option, as shown below:


When I clicked Save and then re-ran QTextEdit, the application now appeared correctly:


So next I tried a few other simple demo programs included...

Books



Spreadsheet


Qt Demo Browser



I know it is a demo web browser, but I decided to try out YouTube anyway in HTML 5 mode, and found the browser is not HTML5 compliant.


Having explored a few of the demo programs, I was keen to try out some of the many released Qt ports on AmigaOS4. First I tried a program called qMetro.

Essentially this program is a route planner for train trips in various cities around the world. Initially it comes with Moscow and London, with Moscow the default map (Click to expand):


Keen to try out the optional Tokyo subway map (as I travel to Tokyo quite often), I downloaded the Tokyo map from their website:



After downloading the map, I then needed to extract it to the maps folder underneath the qMetro folder, as below:


I could then open the Tokyo map from the qMetro application as shown below:



Now I can see the Tokyo subway map as below:


I select Shirokane Takanawa as my starting point, and Akihabara (my favourite place in Tokyo) as the destination. It then plots the route for me as shown below:


Very useful. It shows me the transfer stations and trains, but doesn't explain the Mita to Ningyocho train line name! I guess this needs some more refinement but I do like the idea!

Next up I quickly took a look a Edyuk, an IDE for programmers to code in (I am not a programmer so I just show that it works!):


I noted that it took a long time to launch Edyuk the first time, building up some cache files, etc.

Next I tried out Gottet, a simple Tetris clone. It should be noted that this version of Qt does not have sound support, so games are completely silent at the moment...


This wasn't so interesting for me, so I tried Tanglet, a word game which I played for quite a while as it was quite a bit of fun trying to work out all the different words in the 4x4 letter grid puzzle....



Initially I was just looking left, right, up and down for words...


Then I realised you could do tricky combinations of nearby letters to form words:




I had a lot of fun playing this game, even with no sound effects! I found 57 words in total. I thought that was pretty good until I discovered there was actually 208 words in the puzzle I was playing...

I then tried Simsu, a Sudoku clone. Since I am terrible at Sudoku I just show below that it works!


The last game I tried was Tetzle, which take a picture and breaks it up into jigsaw pieces which you have to rearrange back into the original picture:



Hopefully this gives you a taster of some of the Qt applications already available for AmigaOS4 and encourages you to try them (and others) out for yourself!

I am sure there will be a lot more released for AmigaOS4 using the Qt framework over the next few months and beyond, and I am looking forward to trying them all out!

I want to take this opportunity to thank the developers who ported Qt, and those who are porting applications to AmigaOS using the new Qt framework. It is terrific to have even more applications to try out on the X1000! There is plenty more to look forward to in 2013!

7 comments:

  1. Thanks, I installed QT yesterday and found the same two issues you describe here. The first one was solved by copying the qt:lib contents to sobjs:qt and add an assign here. It seems assign add only works within a partition ? But I think your workaround is the better one. The other one with "native paint engine" I will try out when I'm at home. Thanks !

    ReplyDelete
  2. So, you have to edit user-startup, even though the installer adds text to it???
    Sounds like the installer was badly written. :(

    ReplyDelete
  3. Why did you choose 4.7? 4.8 should have been much easier with QPA adoption, let alone Qt5.

    Either way, nice work! :)

    ReplyDelete
  4. Congratulations, Alfkil!
    Another milestone for the AmigaOS4 supremacy. :-)
    Way to go!

    ReplyDelete
  5. Hello!
    A couple of questions:
    - There will be the opportunity to customize the look and feel of the GUI? Perhaps making it similar to the native ...
    - It 'also a version for AROS?

    In any case, congratulations for the great work!

    ReplyDelete
  6. Thanks for the tip about user-startup, this caught me out when I installed, assumed the installer script would take care of everything. Thanks!

    ReplyDelete