Geval 1: gb.qt4.ext, qb.gui.qt.webkit
Na updates van mijn OpenSUSE (van 42.3 naar 15.1) werken sommige applicaties die met Gambas3 gemaakt zijn, niet meer.
Het gecompileerde programma, met link op de desktop, lijkt te starten, maar sterft dan een stille dood.
Bij het openen van het project in Gambas3:
Sommige componenten worden gemist: gb.qt4.ext
Het probleem is waarschijnlijk dat er Qt4 specifieke componenten zijn gebruikt, en die zijn nu niet meer aanwezig of verkrijgbaar.
Test:
– project openen, ga verder en negeer de waarschuwingen van missende componenten.
– Project eigenschappen: vink gb.qt5
en gb.qt5.ext
aan
Of:
– gb.gui.qt (QT4/QT5 switcher component)
Daarna nog:
Cannot load class “Editor”: Unable to load class file
En:
– gb.gui.qt.webkit (QT4/QT5 WebKit switcher component)
Maar dat blijkt niet alles op te lossen… :
Unknown Control: Editor
Gelukkig had ik 1 nog niet ge-update toestel waarop ik de oude versie kon openen.
Inderdaad werd daar een gb.qt4.ext object “editor” gebruikt dat code in kleur weergaf. Bestaat dat niet in qt5?
Ik denk dat ik in de oude opstelling de waarschijnlijke probleemobjecten zoals qt4 Editor er uit moet schrijven en checken of het dan wel werkt…
Daar zag ik dan in de help dat Editor “deprecated” is sinds 3.8 – “use TextEditor control instead”.
Na de vervanging van die control, en het overschakelen op de algemene gb.gui.qt werkte de applicatie terug.
Geval 2: Dial, LCDNumber, TextEdit, ?
Applicatie omgezet (gambas2 code geïmporteerd in gambas3); geeft een foutmelding op Qt4.ext en werkt niet; de forms bestaan uit tekst met accolades in plaats van een echte form. Ik kan dus in gambas3 ook niets “corrigeren” want ik krijg de form niet open.
Ook hier heeft het te maken met gb.qt4.ext; en die zijn op het nieuwe systeem niet meer aanwezig.
Een tweede fout was
CComponent.Load.626
‘UserControl’ class is missing in gb.form component exported classes
[OK]
en
CComponent.Load.626
‘UserControl’ class is missing in gb.db.form component exported classes
[OK]
gb.qt4.ext
Deze bevat:
- Dial
- LCDNumber (vervangen door LCDLabel?)
- TextEdit
Converteren?
Dé vraag is : kan ik met een recente gambas versie, 3.14.3 bv, (en zonder die qt4 spullen in mijn systeem) dat programma repareren?
Of moet ik op het nieuwe systeem iets als libqt4-devel installeren?
Gelukkig heb ik hier nog een Gambas 3.9.2 op opensuse 42.3 die de oude qt bestanden heeft, en waarin ik het oude programma open krijg. Ik moet daar, veronderstel ik, dan de bovenstaande typische qt4.ext objecten gaan zoeken, die in de code vervangen, en dan opnieuw proberen in het nieuwe systeem … Vermoedelijk zal dat gaan werken als ik op het oude systeem in de IDE de qt4.ext kan uitschakelen in de project-eigenschappen.
(gb.qt4 en gb.qt4-ext af, gb.qt5 en gb.qt5-ext aan).