Warning, file /sdk/kde-dev-scripts/kf5/convert-kfiledialog.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 # KFileDialog::getOpenFileName(...) => QFileDialog::getOpenFileName(...) 0005 # find -iname "*.cpp" -o -iname "*.h" |xargs kde-dev-scripts/kf5/convert-kfiledialog.pl 0006 # TODO need to improve it. 0007 use strict; 0008 use File::Basename; 0009 use lib dirname($0); 0010 use functionUtilkde; 0011 0012 sub defaultUrl 0013 { 0014 my ($starturl) = @_; 0015 $starturl = functionUtilkde::cleanSpace($starturl); 0016 warn "$starturl \n"; 0017 if ($starturl eq "KUrl()" || $starturl eq "QUrl()" || $starturl eq "") { 0018 return 1; 0019 } 0020 return 0; 0021 } 0022 0023 foreach my $file (@ARGV) { 0024 0025 my $modified; 0026 open(my $FILE, "<", $file) or warn "We can't open file $file:$!\n"; 0027 my %varname = (); 0028 my $needQFileDialog; 0029 my @l = map { 0030 my $orig = $_; 0031 0032 #const QString fileName = KFileDialog::getOpenFileName( KUrl(), QString(), d->wParent, i18n("Attach File" ) ); 0033 0034 my $regexp = qr/ 0035 ^(\s*) # (1) Indentation, possibly "Classname *" (the ? means non-greedy) 0036 (.*?) # (2) Possibly "Classname *" (the ? means non-greedy) 0037 (\w+) # (3) variable name 0038 \s*=\s* # assignment 0039 KFileDialog::getOpenFileName\s*\((.*)\) # (4) new KPushButton(...,...,...,...); 0040 (.*)$ # (5) afterreg 0041 /x; # /x Enables extended whitespace mode 0042 if (my ($indent, $left, $var, $argument, $afterreg) = $_ =~ $regexp) { 0043 warn "QFileDialog::getOpenFileName found\n"; 0044 my $constructor_regexp = qr/ 0045 ^([^,]*) # Url 0046 (?:,\s*([^,]*))? # filter 0047 (?:,\s*([^,]*))? # parent 0048 (?:,\s*([^,]*))? # caption 0049 (.*)$ # after 0050 /x; 0051 my ($url, $filter, $parent, $caption, $after); 0052 if ( ($url, $filter, $parent, $caption, $after) = $argument =~ $constructor_regexp ) { 0053 $_ = $indent . $left . $var . " = QFileDialog::getOpenFileName("; 0054 if (defined $parent) { 0055 $_ .= "$parent"; 0056 } else { 0057 $_ .= "0"; 0058 } 0059 if (defined $caption) { 0060 $_ .= ", $caption"; 0061 } else { 0062 $_ .= ", QString()"; 0063 } 0064 if (defined $url) { 0065 if ($url eq "KUrl()") { 0066 $_ .= ", QString()"; 0067 } else { 0068 $_ .= ", $url"; 0069 } 0070 } else { 0071 $_ .= ", QString()"; 0072 } 0073 if (defined $filter) { 0074 $_ .= ", $filter);\n"; 0075 } else { 0076 $_ .= "QString());\n"; 0077 } 0078 $needQFileDialog = 1; 0079 } 0080 } 0081 0082 0083 my $regexgetExistingDirectory = qr/ 0084 ^(\s*) # (1) Indentation 0085 (.*?) # (2) Possibly "Classname *" (the ? means non-greedy) 0086 (\w+) # (3) variable name 0087 \s*=\s* # assignment 0088 KFileDialog::getExistingDirectory\s*\((.*)\) # (4) KFileDialog::getExistingDirectory(...) 0089 (.*)$ # (5) afterreg 0090 /x; # /x Enables extended whitespace mode 0091 if (my ($indent, $left, $var, $argument, $afterreg) = $_ =~ $regexgetExistingDirectory) { 0092 warn "QFileDialog::getExistingDirectory found\n"; 0093 my $constructor_regexp = qr/ 0094 ^([^,]*) # (1) Url 0095 (?:,\s*([^,]*))? # (2) parent 0096 (?:,\s*([^,]*))? # (3) caption 0097 (.*)$ # (4) after 0098 /x; 0099 my ($url, $parent, $caption, $after); 0100 if ( ($url, $parent, $caption, $after) = $argument =~ $constructor_regexp ) { 0101 $_ = $indent . $left . $var . " = QFileDialog::getExistingDirectory("; 0102 if (defined $parent) { 0103 $_ .= "$parent"; 0104 } else { 0105 $_ .= "0"; 0106 } 0107 if (defined $caption) { 0108 $_ .= ", $caption"; 0109 } else { 0110 $_ .= ", QString()"; 0111 } 0112 if (defined $url) { 0113 $url =~ s, ,,g; 0114 if ($url eq "KUrl()" || $url eq "QUrl()" || $url eq "") { 0115 $_ .= ");\n"; 0116 } else { 0117 $_ .= ", $url);\n"; 0118 } 0119 } else { 0120 $_ .= ")\n"; 0121 } 0122 $needQFileDialog = 1; 0123 } 0124 } 0125 0126 my $regexgetSaveFileName = qr/ 0127 ^(\s*) # (1) Indentation 0128 (.*?) # (2) Possibly "Classname *" (the ? means non-greedy) 0129 (\w+) # (3) variable name 0130 \s*=\s* # assignment 0131 KFileDialog::getSaveFileName\s*\((.*)\) # (4) KFileDialog::getSaveFileName(...) 0132 (.*)$ # (5) afterreg 0133 /x; # /x Enables extended whitespace mode 0134 if (my ($indent, $left, $var, $argument, $afterreg) = $_ =~ $regexgetSaveFileName) { 0135 warn "QFileDialog::getSaveFileName found\n"; 0136 my $constructor_regexp = qr/ 0137 ^([^,]*) # (1) startUrl 0138 (?:,\s*([^,]*))? # (2) filter 0139 (?:,\s*([^,]*))? # (3) parent 0140 (?:,\s*([^,]*))? # (4) caption 0141 (?:,\s*([^,]*))? # (5) option 0142 (.*)$ # (6) after 0143 /x; 0144 my ($starturl, $filter, $parent, $caption, $option, $after); 0145 if ( ($starturl, $filter, $parent, $caption, $option, $after) = $argument =~ $constructor_regexp ) { 0146 $_ = $indent . $left . $var . " = QFileDialog::getSaveFileName("; 0147 if ((not defined $parent) and (not defined $caption) and (defaultUrl($starturl) eq "1") and (not defined $filter) and (not defined $option)) { 0148 $_ .= ");\n"; 0149 } else { 0150 #QWidget * parent = 0, const QString & caption = QString(), const QString & dir = QString(), const QString & filter = QString(), QString * selectedFilter = 0, Options options = 0 0151 if (defined $parent) { 0152 $_ .= "$parent"; 0153 } else { 0154 $_ .= "0"; 0155 } 0156 if (defined $caption) { 0157 $_ .= ", $caption"; 0158 } else { 0159 $_ .= ", QString()"; 0160 } 0161 if (defined $starturl) { 0162 $starturl = functionUtilkde::cleanSpace($starturl); 0163 if (defaultUrl($starturl) eq "1" ) { 0164 $_ .= ", QString()"; 0165 } else { 0166 $_ .= ", $starturl"; 0167 } 0168 } else { 0169 $_ .= ", QString()"; 0170 } 0171 if (defined $filter) { 0172 $_ .= ", $filter"; 0173 } else { 0174 $_ .= ", QString()"; 0175 } 0176 if (defined $option) { 0177 $option =~ s, ,,g; 0178 if ($option =~ /KFileDialog::ConfirmOverwrite/) { 0179 $_ .=");\n" 0180 } else { 0181 warn "$file : QFileDialog::getSaveFileName : fix me option \'$option\'\n"; 0182 $_ .= ", 0, $option);\n"; # TODO fix option 0183 } 0184 } else { 0185 $_ .= ");\n"; # TODO fix option 0186 } 0187 } 0188 $needQFileDialog = 1; 0189 } 0190 } 0191 0192 my $regexgetOpenUrl = qr/ 0193 ^(\s*) # (1) Indentation 0194 (.*?) # (2) Possibly "Classname *" (the ? means non-greedy) 0195 (\w+) # (3) variable name 0196 \s*=\s* # assignment 0197 KFileDialog::getOpenUrl\s*\((.*)\) # (4) KFileDialog::getOpenUrl(...) 0198 (.*)$ # (5) afterreg 0199 /x; # /x Enables extended whitespace mode 0200 if (my ($indent, $left, $var, $argument, $afterreg) = $_ =~ $regexgetOpenUrl) { 0201 warn "QFileDialog::getOpenUrl found\n"; 0202 my $constructor_regexp = qr/ 0203 ^([^,]*) # (1) Url 0204 (?:,\s*([^,]*))? # (2) filter 0205 (?:,\s*([^,]*))? # (3) parent 0206 (?:,\s*([^,]*))? # (4) caption 0207 (.*)$ # (5) after 0208 /x; 0209 my ($url, $filter, $parent, $caption, $after); 0210 if ( ($url, $filter, $parent, $caption, $after) = $argument =~ $constructor_regexp ) { 0211 $_ = $indent . $left . $var . " = QFileDialog::getOpenFileUrl("; 0212 if (defined $parent) { 0213 $_ .= "$parent"; 0214 } else { 0215 $_ .= "0"; 0216 } 0217 if (defined $caption) { 0218 $_ .= ", $caption"; 0219 } else { 0220 $_ .= ", QString()"; 0221 } 0222 if (defined $url) { 0223 $url =~ s, ,,g; 0224 if ($url eq "KUrl()" || $url eq "QUrl()" || $url eq "") { 0225 $_ .= "QString()"; 0226 } else { 0227 $_ .= ", $url"; 0228 } 0229 } 0230 0231 if (defined $filter) { 0232 $_ .= ", $filter);" . $after . "\n"; 0233 } else { 0234 $_ .= ");" . $after . "\n"; 0235 } 0236 $needQFileDialog = 1; 0237 } 0238 } 0239 0240 0241 $modified ||= $orig ne $_; 0242 $_; 0243 } <$FILE>; 0244 0245 if ($modified) { 0246 open (my $OUT, ">", $file); 0247 print $OUT @l; 0248 close ($OUT); 0249 if ($needQFileDialog) { 0250 functionUtilkde::addIncludeInFile($file, "QFileDialog"); 0251 #TODO remove KFileDialog when all KFileDialog is converted in files 0252 #functionUtilkde::removeIncludeInFile($file, "KFileDialog"); 0253 } 0254 } 0255 } 0256 0257 functionUtilkde::diffFile( "@ARGV" );