Warning, file /sdk/kde-dev-scripts/kf5/convert-kintspinbox.pl was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 #!/usr/bin/perl -w 0002 0003 # Laurent Montel <montel@kde.org> (2014) 0004 # KIntSpinbox -> QSpinBox 0005 # find -iname "*.cpp"|xargs kde-dev-scripts/kf5/convert-kintspinbox.pl 0006 0007 use strict; 0008 use File::Basename; 0009 use lib dirname($0); 0010 use functionUtilkde; 0011 0012 foreach my $file (@ARGV) { 0013 my %varname = (); 0014 0015 my $modified; 0016 open(my $FILE, "<", $file) or warn "We can't open file $file:$!\n"; 0017 my @l = map { 0018 my $orig = $_; 0019 my $regexp = qr/ 0020 ^(\s*) # (1) Indentation, possibly "Classname *" (the ? means non-greedy) 0021 (.*?) # (2) Possibly "Classname *" (the ? means non-greedy) 0022 (\w+) # (3) variable name 0023 \s*=\s* # assignment 0024 new\s+KIntSpinBox\s*\((.*)\) # (4) new KIntSpinBox(...,...,...,...); 0025 (.*)$ # (5) afterreg 0026 /x; # /x Enables extended whitespace mode 0027 if (my ($indent, $left, $var, $argument, $afterreg) = $_ =~ $regexp) { 0028 warn "KIntSpinBox found $var $argument\n"; 0029 #KIntSpinBox(int lower, int upper, int singleStep, int value, QWidget *parent, int base = 10); 0030 0031 $varname{$var} = 1; 0032 0033 my ($lower, $upper, $singleStep, $value, $parent, $base, $after); 0034 my $constructor_regexp = qr/ 0035 ^([^,]*)\s* # lower 0036 ,\s*([^,]*)\s* # upper 0037 ,\s([^,]*) # singleStep 0038 ,\s([^,]*) # value 0039 ,\s([^,]*) # widget 0040 (?:,\s([^,]*))? # base 0041 (.*)$ # after 0042 /x; 0043 if ( ($lower, $upper, $singleStep, $value, $parent, $base, $after) = $argument =~ $constructor_regexp ) { 0044 $_ = $indent . $left . $var . " = new QSpinBox($parent);" . $after . "\n"; 0045 0046 $_ .= $indent . $var . "->setMaximum($upper);" . $after . "\n"; 0047 $_ .= $indent . $var . "->setMinimum($lower);" . $after . "\n"; 0048 $_ .= $indent . $var . "->setSingleStep($singleStep);" . $after . "\n"; 0049 $_ .= $indent . $var . "->setValue($value);" . $after . "\n"; 0050 if ($base) { 0051 $_ .= $indent . $var . "->setDisplayIntegerBase($base);" . $after . "\n"; 0052 } 0053 } 0054 } 0055 my $regexpRange = qr/ 0056 ^(\s*) # (1) Indentation, possibly "Classname *" (the ? means non-greedy) 0057 (\w+) # (2) variable name 0058 \->setRange\s*\((.*)\) # (3) argument 0059 (.*)$ # (4) afterreg 0060 /x; # /x Enables extended whitespace mode 0061 if (my ($indent, $var, $argument, $afterreg) = $_ =~ $regexpRange) { 0062 warn "found setRange \'$var\'\n"; 0063 if ( defined $varname{$var} ) { 0064 my $argument_regexp = qr/ 0065 ^([^,]*)\s* # mini 0066 ,\s*([^,]*)\s* # maxi 0067 ,\s([^,]*) # singleStep 0068 (.*)$ # after 0069 /x; 0070 if (my ($minimum, $maximum, $singleStep) = $argument =~ $argument_regexp) { 0071 $_ = $indent . "$var->setRange($minimum, $maximum);\n"; 0072 $_ .= $indent . "$var->setSingleStep($singleStep);\n"; 0073 } 0074 } 0075 } 0076 0077 s/\bKIntSpinBox\b/QSpinBox/g; 0078 s/\<KIntSpinBox\b\>/\<QSpinBox>/ if (/#include/); 0079 s/\<kintspinbox.h\>/\<QSpinBox>/ if (/#include/); 0080 0081 s!KIntSpinBox!QSpinBox!; 0082 $modified ||= $orig ne $_; 0083 $_; 0084 } <$FILE>; 0085 0086 if ($modified) { 0087 open (my $OUT, ">", $file); 0088 print $OUT @l; 0089 close ($OUT); 0090 warn "$file: Verify maximum value. KIntSpinBox defined maximum as 32767, but QSpinBox define it as 99.\n"; 0091 } 0092 } 0093 0094 functionUtilkde::diffFile( "@ARGV" );