Differences

This shows you the differences between two versions of the page.

Link to this comparison view

dev:cases_that_we_know_require_hand_coding [2018/02/07 16:07]
dev:cases_that_we_know_require_hand_coding [2022/05/06 16:07] (current)
Line 1: Line 1:
 +=====Cases we know require hand coding=====
 +    * QComboBox::text() becomes itemText(), but I'm sure the word "text" appears umpty scadillion times, and I'm immediately relegating these cases to hand correction
 +    * QRegExp no longer has search() and searchRev(), which have been replaced with 
 +indexIn() and lastIndexIn() in QT4.
 +
 +We seem to use only search(), but there is also QString::search() among 
 +possible others.  I find four files with QRegExp, but seven files 
 +with "search(" and there is no easy common thread among the four files, and I 
 +can devise no sensible way to weed out the search() calls that pertain to 
 +QRegExp but not QString or whatever else.
 +
 +Since there are only four affected files, it makes the most sense to just go 
 +change this by hand after we start working with post-converted files.
 +
 +src/document/io/LilyPondExporter.cpp:1200: error: ‘class QRegExp’ has no 
 +member named ‘search’
 +src/gui/application/StartupTester.cpp:121: error: ‘class QRegExp’ has no 
 +member named ‘search’
 +src/gui/application/StartupTester.cpp:157: error: ‘class QRegExp’ has no 
 +member named ‘search’
 +src/gui/studio/DeviceEditorDialog.cpp:346: error: ‘class QRegExp’ has no 
 +member named ‘search’
 +
 +    * OK, the guide is here:
 +
 +[[http://doc.trolltech.com/4.3/qstring-qt3.html]]
 +
 +If you read up on the individual methods in the QT3-compatibility library, it 
 +shows you what to switch to what in the port (so we could make the switches 
 +ourselves to avoid using the hack library.)  For instance, QString::lower() 
 +has become QString::toLower(), and so on.
 +
 +I picked a few of these at random, and if these can be automated, I don't have 
 +enough experience with batch text manipulation to pull it off.  For every 
 +term that needs to be replaced, there are at least twice as many occurrences 
 +of that term as there are errors about QString not having that 
 +member.  "latin1" for instance.  What else is using "latin1" and are all the 
 +other classes switching from "latin1" to "toLatin1" like QString is?  Maybe, 
 +maybe not.
 +
 +I'm moving on to the next one.
 +
 +    * We have another QString problem that might could be mechanized by somebody who 
 +actually knows Perl.
 +
 +In RoseXmlHandler and probably elsewhere, we make frequent use of this idiom:
 +
 +        QString transposeStr = atts.value("defaultTranspose");
 +        if (transposeStr) {
 +            track->setTranspose(transposeStr.toInt());
 +        }
 +
 +This depends on transposeStr being null if nothing was returned, 
 +but "Comparisons between QStrings and NULL in order to determine whether 
 +strings are empty are no longer allowed. Use isEmpty() instead."
 +
 +So all we need to do to this code snippet to make it work is rewrite it 
 +thusly:
 +
 +        QString transposeStr = atts.value("defaultTranspose");
 +        if (!transposeStr.isEmpty()) {
 +            track->setTranspose(transposeStr.toInt());
 +        }
 +
 +It might be easier to just fix these by hand than to try to whip up scripty 
 +magic.  Especially for me.
  
 
 
Recent changes RSS feed Creative Commons License Valid XHTML 1.0 Valid CSS Driven by DokuWiki