Warning, file /sdk/kde-dev-scripts/kf5/convert-kbuttongroup.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 # KButtonGroup -> QGroupBox + QButtonGroup 0005 # find -iname "*.cpp" -o -iname "*.h"|xargs kde-dev-scripts/kf5/convert-kbuttongroup.pl 0006 0007 use strict; 0008 use File::Basename; 0009 use lib dirname($0); 0010 use functionUtilkde; 0011 0012 foreach my $file (@ARGV) { 0013 0014 # Key = variable name of the parent QWidget 0015 # Value = variable name of the associated layout 0016 my %varname = (); 0017 0018 my $modified; 0019 my $buttonId=0; 0020 open(my $FILE, "<", $file) or warn "We can't open file $file:$!\n"; 0021 my @l = map { 0022 my $orig = $_; 0023 my $regexp = qr/ 0024 ^(\s*) # (1) Indentation 0025 (.*?) # (2) Possibly "Classname *" (the ? means non-greedy) 0026 (\w+) # (3) variable name 0027 \s*=\s* # assignment 0028 new\s+KButtonGroup # new 0029 /x; # /x Enables extended whitespace mode 0030 if (my ($indent, $left, $var) = $_ =~ $regexp) { 0031 s/KButtonGroup/QGroupBox/g; 0032 my $buttonGroupName = "$var" . "ButtonGroup"; 0033 $_ .= $indent . "QButtonGroup *$buttonGroupName = new QButtonGroup($var);\n"; 0034 $varname{$var} = ${buttonGroupName}; 0035 warn "BECAREFULL, verify that each button is added to ButtonGroup => $buttonGroupName->addButton(..., id);\n"; 0036 0037 } 0038 if ( /\s*connect\s*\(\s*(\w+),\s*SIGNAL\s*\(\s*clicked\s*\(\s*int\s*\)/ ) { 0039 if (defined $varname{$1} ) { 0040 my $newValue = $varname{$1}; 0041 s/$1/$newValue/; 0042 s/clicked/buttonClicked/; 0043 } 0044 } 0045 if ( /\s*connect\s*\(\s*(\w+),\s*SIGNAL\s*\(\s*released\s*\(\s*int\s*\)/ ) { 0046 if (defined $varname{$1} ) { 0047 my $newValue = $varname{$1}; 0048 s/$1/$newValue/; 0049 s/released/buttonReleased/; 0050 } 0051 } 0052 if ( /\s*connect\s*\(\s*(\w+),\s*SIGNAL\s*\(\s*pressed\s*\(\s*int\s*\)/ ) { 0053 if (defined $varname{$1} ) { 0054 my $newValue = $varname{$1}; 0055 s/$1/$newValue/; 0056 s/pressed/buttonPressed/; 0057 } 0058 } 0059 if ( /\s*connect\s*\(\s*(\w+),\s*SIGNAL\s*\(\s*changed\s*\(\s*int\s*\)/ ) { 0060 if (defined $varname{$1} ) { 0061 warn "$file: QButtonGroup doesn't have changed signal. Need to adapt it\n"; 0062 } 0063 } 0064 0065 if (/(\w+)\->selected\s*\(\)/) { 0066 if (defined $varname{$1} ) { 0067 my $newValue = $varname{$1}; 0068 s/$1/$newValue/; 0069 s/selected/checkedId/; 0070 } 0071 } 0072 if (/(\w+)\->setSelected\b/) { 0073 if (defined $varname{$1} ) { 0074 my $newValue = $varname{$1}; 0075 s/$1/$newValue/; 0076 s/setSelected/button/; 0077 s/;/->setChecked(true);/ 0078 } 0079 } 0080 #TODO add buttons 0081 s/#include <kbuttongroup\.h>/#include <QGroupBox>/; 0082 s/#include <KButtonGroup>/#include <QGroupBox>/; 0083 s/class KButtonGroup;//; 0084 s/KButtonGroup\s*\*/QGroupBox */; 0085 s/KButtonGroup\s*\*/QGroupBox */; 0086 0087 0088 $modified ||= $orig ne $_; 0089 $_; 0090 } <$FILE>; 0091 0092 if ($modified) { 0093 open (my $OUT, ">", $file); 0094 print $OUT @l; 0095 close ($OUT); 0096 functionUtilkde::addIncludeInFile($file, "QButtonGroup"); 0097 0098 } 0099 } 0100 0101 functionUtilkde::diffFile( "@ARGV" );