KDevelop API Documentation

parts/distpart/distpart_widget.cpp

Go to the documentation of this file.
00001 #include "distpart_widget.h" 00002 00003 #include <kparts/part.h> 00004 #include <klibloader.h> 00005 #include <kurl.h> 00006 #include <kdebug.h> 00007 #include <kprocess.h> 00008 #include <kfiledialog.h> 00009 #include <kio/netaccess.h> 00010 #include <klocale.h> 00011 #include "kdevproject.h" 00012 #include "domutil.h" 00013 00014 #include <kdevcore.h> 00015 #include <qgroupbox.h> 00016 #include <qlayout.h> 00017 #include <qnetwork.h> 00018 #include <qurloperator.h> 00019 #include <qmessagebox.h> 00020 #include "distpart_part.h" 00021 #include <qdir.h> 00022 #include <qfile.h> 00023 #include <qregexp.h> 00024 #include <qstringlist.h> 00025 #include <qtabwidget.h> 00026 #include "kdevmakefrontend.h" 00027 00028 #include <qerrormessage.h> 00029 00030 DistpartDialog::DistpartDialog(DistpartPart *part) 00031 : distpart_ui(0, "distpart widget") { 00032 m_part = part; 00033 00034 plug_box = new QTabWidget( tab_2, "plug_box" ); 00035 tabLayout_2->addWidget( plug_box, 9, 2 ); 00036 00037 connect(customProjectCheckBox, SIGNAL(toggled(bool) ), 00038 this, SLOT(slotcustomProjectCheckBoxChanged())); 00039 connect(uploadCustomCheckBox, SIGNAL(toggled(bool)), 00040 this, SLOT(slotuploadCustomCheckBoxChanged())); 00041 00042 connect(okayPushButton, SIGNAL(clicked()), 00043 this, SLOT(slotokayPushButtonPressed())); 00044 connect(cancelPushButton, SIGNAL(clicked()), 00045 this, SLOT(slotcancelPushButtonPressed())); 00046 /* connect(help_PushButton, SIGNAL(clicked()), 00047 this, SLOT(slothelp_PushButtonPressed()));*/ 00048 connect(createSrcArchPushButton, SIGNAL(clicked()), 00049 this, SLOT(slotcreateSrcArchPushButtonPressed())); 00050 connect(resetSrcPushButton, SIGNAL(clicked()), 00051 this, SLOT(slotresetSrcPushButtonPressed())); 00052 00053 connect(genHTMLPushButton, SIGNAL(clicked()), 00054 this, SLOT(slotgenHTMLPushButtonPressed())); 00055 connect(resetHTMLPushButton, SIGNAL(clicked()), 00056 this, SLOT(slotresetHTMLPushButtonPressed())); 00057 connect(uploadSubmitPushButton, SIGNAL(clicked()), 00058 this, SLOT(slotuploadSubmitPushButtonPressed())); 00059 connect(uploadResetPushButton, SIGNAL(clicked()), 00060 this, SLOT(slotuploadResetPushButtonPressed())); 00061 connect(uploadAddFileToolButton, SIGNAL(clicked()), 00062 this, SLOT(slotuploadAddFileToolButtonPressed())); 00063 connect(uploadRemoveToolButton, SIGNAL(clicked()), 00064 this, SLOT(slotuploadRemoveToolButtonPressed())); 00065 00066 loadSettings(); 00067 00068 00069 localOptionsGroupBox->setEnabled(false); 00070 devPackageCheckBox->setEnabled(false); 00071 docsPackageCheckBox->setEnabled(false); 00072 appIconCheckBox->setEnabled(false); 00073 uploadftpkdeorgCheckBox->setEnabled(false); 00074 uploadAppsKDEcomCheckBox->setEnabled(false); 00075 } 00076 00077 00078 DistpartDialog::~DistpartDialog() { 00079 // delete plug_box; 00080 } 00081 00082 // QPushButton* okayPushButton; 00083 00084 void DistpartDialog::slotokayPushButtonPressed() { 00085 storeSettings(); 00086 accept(); 00087 } 00088 // QPushButton* cancelPushButton; 00089 00090 void DistpartDialog::slotcancelPushButtonPressed() { 00091 reject(); 00092 } 00093 // QPushButton* help_PushButton; 00094 00095 /*void DistpartDialog::slothelp_PushButtonPressed() { 00096 QMessageBox::about(this,i18n("Distpart Help"),i18n("In order to build a RPM package :\n\t1) Create a source archive\n\t2) Generate a SPEC File\n\t3) Build the package")); 00097 }*/ 00098 00099 // QPushButton* createSrcArchPushButton; 00100 void DistpartDialog::slotcreateSrcArchPushButtonPressed() { 00101 QString dist = (getcustomProjectCheckBoxState() && getbzipCheckBoxState()) ? "make dist-bzip2" : "make dist"; 00102 00103 QString filename = getappNameFormatLineEditText() + 00104 "-" + 00105 getversionLineEditText() + 00106 ((getcustomProjectCheckBoxState() && getbzipCheckBoxState()) ? ".tar.bz2" : ".tar.gz"); 00107 QString command = "cd " + dir + " && " + dist; 00108 if (getcustomProjectCheckBoxState()) 00109 command += " && mv " + filename + " " + getSourceName(); 00110 m_part->makeFrontend()->queueCommand(dir,command); 00111 } 00112 00113 // QPushButton* resetSrcPushButton; 00114 void DistpartDialog::slotresetSrcPushButtonPressed() {} 00115 00116 00117 00118 // QPushButton* genHTMLPushButton; 00119 void DistpartDialog::slotgenHTMLPushButtonPressed() {} 00120 00121 // QPushButton* resetHTMLPushButton; 00122 void DistpartDialog::slotresetHTMLPushButtonPressed() {} 00123 00124 // QToolButton* uploadAddFileToolButton; 00125 void DistpartDialog::slotuploadAddFileToolButtonPressed() { 00126 uploadFileListBox->insertStringList(KFileDialog::getOpenFileNames()); 00127 } 00128 00129 // QToolButton* uploadRemoveToolButton; 00130 void DistpartDialog::slotuploadRemoveToolButtonPressed() { 00131 for(unsigned int i=0; i<uploadFileListBox->count(); i++) 00132 if (uploadFileListBox->isSelected(i)) uploadFileListBox->removeItem(i); 00133 } 00134 00135 // QPushButton* uploadSubmitPushButton; 00136 void DistpartDialog::slotuploadSubmitPushButtonPressed() { 00137 00138 if(getuploadftpkdeorgCheckBoxState() || getuploadAppsKDEcomCheckBoxState()) 00139 kdDebug() << "Implement ftp.kde.org & apps.kde.com ftp transfer" << endl; 00140 else { 00141 for(unsigned int i=0; i<uploadFileListBox->count(); i++) 00142 KIO::NetAccess::copy("file:"+ uploadFileListBox->text(i),getuploadURLLineEditText() + uploadFileListBox->text(i).replace(QRegExp("[^/]*/"),"")); 00143 } 00144 } 00145 00146 // QPushButton* uploadResetPushButton; 00147 void DistpartDialog::slotuploadResetPushButtonPressed() { 00148 uploadFileListBox->clear(); 00149 } 00150 00151 // Connect Slots to the following widgets and add 00152 // accessors and mutators 00153 00154 00155 // QCheckBox* customProjectCheckBox; 00156 void DistpartDialog::slotcustomProjectCheckBoxChanged() { 00157 kdDebug () << "New State" << customProjectCheckBox->isChecked() << endl; 00158 sourceOptionsGroupBox->setEnabled(customProjectCheckBox->isChecked()); 00159 } 00160 00161 bool DistpartDialog::getcustomProjectCheckBoxState() { 00162 return customProjectCheckBox->isChecked(); 00163 } 00164 00165 void DistpartDialog::setcustomProjectCheckBoxState(bool state) { 00166 customProjectCheckBox->setChecked(state); 00167 } 00168 00169 // QCheckBox* uploadCustomCheckBox; 00170 void DistpartDialog::slotuploadCustomCheckBoxChanged() { 00171 uploadURLLineEdit->setEnabled(uploadCustomCheckBox->isChecked()); 00172 } 00173 00174 bool DistpartDialog::getuploadCustomCheckBoxState() { 00175 return uploadCustomCheckBox->isChecked(); 00176 } 00177 00178 void DistpartDialog::setuploadCustomCheckBoxState(bool state) { 00179 uploadCustomCheckBox->setChecked(state); 00180 } 00181 00182 // Add accessors and mutators for the following 00183 00184 // QCheckBox* bzipCheckBox; 00185 bool DistpartDialog::getbzipCheckBoxState() { 00186 return bzipCheckBox->isChecked(); 00187 } 00188 00189 void DistpartDialog::setbzipCheckBoxState(bool state) { 00190 bzipCheckBox->setChecked(state); 00191 } 00192 00193 // QCheckBox* appIconCheckBox; 00194 bool DistpartDialog::getappIconCheckBoxState() { 00195 return appIconCheckBox->isChecked(); 00196 } 00197 00198 void DistpartDialog::setappIconCheckBoxState(bool state) { 00199 appIconCheckBox->setChecked(state); 00200 } 00201 00202 // QCheckBox* genHTMLCheckBox; 00203 bool DistpartDialog::getgenHTMLCheckBoxState() { 00204 return genHTMLCheckBox->isChecked(); 00205 } 00206 00207 void DistpartDialog::setgenHTMLCheckBoxState(bool state) { 00208 genHTMLCheckBox->setChecked(state); 00209 } 00210 00211 // QCheckBox* useRPMInfoCheckBox; 00212 bool DistpartDialog::getuseRPMInfoCheckBoxState() { 00213 return useRPMInfoCheckBox->isChecked(); 00214 } 00215 00216 void DistpartDialog::setuseRPMInfoCheckBoxState(bool state) { 00217 useRPMInfoCheckBox->setChecked(state); 00218 } 00219 00220 // QCheckBox* uploadAppsKDEcomCheckBox; 00221 bool DistpartDialog::getuploadAppsKDEcomCheckBoxState() { 00222 return uploadAppsKDEcomCheckBox->isChecked(); 00223 } 00224 00225 void DistpartDialog::setuploadAppsKDEcomCheckBoxState(bool state) { 00226 uploadAppsKDEcomCheckBox->setChecked(state); 00227 } 00228 00229 // QCheckBox* uploadftpkdeorgCheckBox; 00230 bool DistpartDialog::getuploadftpkdeorgCheckBoxState() { 00231 return uploadftpkdeorgCheckBox->isChecked(); 00232 } 00233 00234 void DistpartDialog::setuploadftpkdeorgCheckBoxState(bool state) { 00235 uploadftpkdeorgCheckBox->setChecked(state); 00236 } 00237 00238 // QCheckBox* devPackageCheckBox; 00239 bool DistpartDialog::getdevPackageCheckBoxState() { 00240 return devPackageCheckBox->isChecked(); 00241 } 00242 00243 void DistpartDialog::setdevPackageCheckBoxState(bool state) { 00244 devPackageCheckBox->setChecked(state); 00245 } 00246 00247 // QCheckBox* docsPackageCheckBox; 00248 bool DistpartDialog::getdocsPackageCheckBoxState() { 00249 return docsPackageCheckBox->isChecked(); 00250 } 00251 00252 void DistpartDialog::setdocsPackageCheckBoxState(bool state) { 00253 docsPackageCheckBox->setChecked(state); 00254 } 00255 00256 // QLineEdit* archNameFormatLineEdit; 00257 QString DistpartDialog::getarchNameFormatLineEditText() { 00258 return archNameFormatLineEdit->text(); 00259 } 00260 00261 void DistpartDialog::setarchNameFormatLineEditText(QString text) { 00262 archNameFormatLineEdit->setText(text); 00263 } 00264 00265 // QLineEdit* appNameLineEdit; 00266 QString DistpartDialog::getappNameFormatLineEditText() { 00267 return appNameLineEdit->text(); 00268 } 00269 00270 void DistpartDialog::setappNameFormatLineEditText(QString text) { 00271 appNameLineEdit->setText(text); 00272 } 00273 00274 // QLineEdit* summaryLineEdit; 00275 QString DistpartDialog::getsummaryLineEditText() { 00276 return summaryLineEdit->text(); 00277 } 00278 00279 void DistpartDialog::setsummaryLineEditText(QString text) { 00280 summaryLineEdit->setText(text); 00281 } 00282 00283 // QLineEdit* groupLineEdit; 00284 QString DistpartDialog::getgroupLineEditText() { 00285 return groupLineEdit->text(); 00286 } 00287 00288 void DistpartDialog::setgroupLineEditText(QString text) { 00289 groupLineEdit->setText(text); 00290 } 00291 00292 // QLineEdit* releaseLineEdit; 00293 QString DistpartDialog::getreleaseLineEditText() { 00294 return releaseLineEdit->text(); 00295 } 00296 00297 void DistpartDialog::setreleaseLineEditText(QString text) { 00298 releaseLineEdit->setText(text); 00299 } 00300 00301 // QLineEdit* VersionLineEdit; 00302 QString DistpartDialog::getversionLineEditText() { 00303 return versionLineEdit->text(); 00304 } 00305 00306 void DistpartDialog::setversionLineEditText(QString text) { 00307 versionLineEdit->setText( text ); 00308 } 00309 00310 // QLineEdit* VendorLineEdit; 00311 QString DistpartDialog::getvendorLineEditText() { 00312 return vendorLineEdit->text(); 00313 } 00314 00315 void DistpartDialog::setvendorLineEditText(QString text) { 00316 vendorLineEdit->setText(text); 00317 } 00318 00319 // QLineEdit* LicenseLineEdit; 00320 QString DistpartDialog::getlicenseLineEditText() { 00321 return licenseLineEdit->text(); 00322 } 00323 00324 void DistpartDialog::setlicenseLineEditText(QString text) { 00325 licenseLineEdit->setText(text); 00326 } 00327 00328 // QLineEdit* uploadURLLineEdit; 00329 QString DistpartDialog::getuploadURLLineEditText() { 00330 return uploadURLLineEdit->text(); 00331 } 00332 00333 void DistpartDialog::setuploadURLLineEditText(QString text) { 00334 uploadURLLineEdit->setText(text); 00335 } 00336 00337 // QLineEdit* PackagerLineEdit; 00338 QString DistpartDialog::getpackagerLineEditText() { 00339 return packagerLineEdit->text(); 00340 } 00341 00342 void DistpartDialog::setpackagerLineEditText(QString text) { 00343 packagerLineEdit->setText(text); 00344 } 00345 00346 // QComboBox* archComboBox; 00347 QString DistpartDialog::getarchComboBoxText() { 00348 return archComboBox->currentText(); 00349 } 00350 00351 int DistpartDialog::getarchComboBoxItem() { 00352 return archComboBox->currentItem(); 00353 } 00354 00355 void DistpartDialog::setarchComboBoxItem(int item) { 00356 archComboBox->setCurrentItem( item ); 00357 } 00358 00359 // QListBox* uploadFileListBox; 00360 QString DistpartDialog::getuploadFileListBoxText() { 00361 return uploadFileListBox->currentText(); 00362 } 00363 00364 int DistpartDialog::getuploadFileListBoxItem() { 00365 return uploadFileListBox->currentItem(); 00366 } 00367 00368 void DistpartDialog::setuploadFileListBoxItem(int item) { 00369 uploadFileListBox->setCurrentItem( item); 00370 } 00371 00372 // QListBox* srcDistFileListBox; 00373 QString DistpartDialog::getsrcDistFileListBoxText() { 00374 return srcDistFileListBox->currentText (); 00375 } 00376 00377 int DistpartDialog::getsrcDistFileListBoxItem() { 00378 return srcDistFileListBox->currentItem (); 00379 } 00380 00381 void DistpartDialog::setsrcDistFileListBoxItem(int item) { 00382 srcDistFileListBox->setCurrentItem( item ); 00383 } 00384 00385 // QMultiLineEdit* projectDescriptionMultilineEdit; 00386 QString DistpartDialog::getprojectDescriptionMultilineEditText() { 00387 return projectDescriptionMultilineEdit->text(); 00388 } 00389 00390 void DistpartDialog::setprojectDescriptionMultilineEditText(QString text) { 00391 projectDescriptionMultilineEdit->setText(text); 00392 } 00393 00394 QString DistpartDialog::getprojectChangelogMultilineEditText() { 00395 return projectChangelogMultilineEdit->text(); 00396 } 00397 00398 void DistpartDialog::setprojectChangelogMultilineEditText(QString text) { 00399 projectChangelogMultilineEdit->setText(text); 00400 } 00401 00402 QString DistpartDialog::getSourceName() { 00403 QString name = (getcustomProjectCheckBoxState()) ? getarchNameFormatLineEditText() : QString("%n-%v"); 00404 name += (getcustomProjectCheckBoxState() && getbzipCheckBoxState()) ? ".tar.bz2" : ".tar.gz"; 00405 return name.replace(QRegExp("%n"),getappNameFormatLineEditText()) 00406 .replace(QRegExp("%v"),getversionLineEditText()) 00407 .replace(QRegExp("%d"),QDate::currentDate().toString("yyyyMMdd")); 00408 } 00409 00410 void DistpartDialog::loadSettings() { 00411 QDomDocument &dom = *m_part->projectDom(); 00412 dir = m_part->project()->projectDirectory(); 00413 QDir projectdir(dir); 00414 srcDistFileListBox->insertStringList(projectdir.entryList()); 00415 00416 // First Tab 00417 setcustomProjectCheckBoxState(DomUtil::readBoolEntry(dom,"/dist/custom",false)); 00418 slotcustomProjectCheckBoxChanged(); 00419 setbzipCheckBoxState(DomUtil::readBoolEntry(dom,"/dist/bzip",false)); 00420 setarchNameFormatLineEditText(DomUtil::readEntry(dom,"/dist/archname")); 00421 00422 00423 // Second Tab 00424 setappNameFormatLineEditText(DomUtil::readEntry(dom,"/dist/appname",DomUtil::readEntry(dom,"/general/projectname"))); 00425 setversionLineEditText(DomUtil::readEntry(dom,"/dist/version",DomUtil::readEntry(dom,"/general/version"))); 00426 setreleaseLineEditText(DomUtil::readEntry(dom,"/dist/release")); 00427 setvendorLineEditText(DomUtil::readEntry(dom,"/dist/vendor")); 00428 setlicenseLineEditText(DomUtil::readEntry(dom,"/dist/licence")); 00429 setsummaryLineEditText(DomUtil::readEntry(dom,"/dist/summary")); 00430 setgroupLineEditText(DomUtil::readEntry(dom,"/dist/group")); 00431 setpackagerLineEditText(DomUtil::readEntry(dom,"/dist/packager")); 00432 setprojectDescriptionMultilineEditText(DomUtil::readEntry(dom,"/dist/description",DomUtil::readEntry(dom,"/general/description"))); 00433 setprojectChangelogMultilineEditText(DomUtil::readEntry(dom,"/dist/changelog")); 00434 setdevPackageCheckBoxState(DomUtil::readBoolEntry(dom,"/dist/devpackage")); 00435 setdocsPackageCheckBoxState(DomUtil::readBoolEntry(dom,"/dist/docspackage")); 00436 setappIconCheckBoxState(DomUtil::readBoolEntry(dom,"/dist/appicon")); 00437 setarchComboBoxItem(DomUtil::readIntEntry(dom,"/dist/arch")); 00438 00439 // Third Tab 00440 setgenHTMLCheckBoxState(DomUtil::readBoolEntry(dom,"/dist/genHTML")); 00441 setuseRPMInfoCheckBoxState(DomUtil::readBoolEntry(dom,"/dist/useRPM")); 00442 setuploadftpkdeorgCheckBoxState(DomUtil::readBoolEntry(dom,"/dist/ftpkde")); 00443 setuploadAppsKDEcomCheckBoxState(DomUtil::readBoolEntry(dom,"/dist/appskde")); 00444 setuploadCustomCheckBoxState(DomUtil::readBoolEntry(dom,"/dist/custom")); 00445 slotuploadCustomCheckBoxChanged(); 00446 setuploadURLLineEditText(DomUtil::readEntry(dom,"/dist/url")); 00447 } 00448 00449 void DistpartDialog::storeSettings() { 00450 QDomDocument &dom = *m_part->projectDom(); 00451 00452 // First Tab 00453 DomUtil::writeBoolEntry(dom,"/dist/custom",getcustomProjectCheckBoxState()); 00454 DomUtil::writeBoolEntry(dom,"/dist/bzip",getbzipCheckBoxState()); 00455 DomUtil::writeEntry(dom,"/dist/archname",getarchNameFormatLineEditText()); 00456 00457 // Second Tab 00458 DomUtil::writeEntry(dom,"/dist/appname",getappNameFormatLineEditText()); 00459 DomUtil::writeEntry(dom,"/dist/version",getversionLineEditText()); 00460 DomUtil::writeEntry(dom,"/dist/release",getreleaseLineEditText()); 00461 DomUtil::writeEntry(dom,"/dist/vendor",getvendorLineEditText()); 00462 DomUtil::writeEntry(dom,"/dist/licence",getlicenseLineEditText()); 00463 DomUtil::writeEntry(dom,"/dist/summary",getsummaryLineEditText()); 00464 DomUtil::writeEntry(dom,"/dist/group",getgroupLineEditText()); 00465 DomUtil::writeEntry(dom,"/dist/packager",getpackagerLineEditText()); 00466 DomUtil::writeEntry(dom,"/dist/description",getprojectDescriptionMultilineEditText()); 00467 DomUtil::writeEntry(dom,"/dist/changelog",getprojectChangelogMultilineEditText()); 00468 DomUtil::writeBoolEntry(dom,"/dist/devpackage",getdevPackageCheckBoxState()); 00469 DomUtil::writeBoolEntry(dom,"/dist/docspackage",getdocsPackageCheckBoxState()); 00470 DomUtil::writeBoolEntry(dom,"/dist/appicon",getappIconCheckBoxState()); 00471 DomUtil::writeIntEntry(dom,"/dist/arch",getarchComboBoxItem()); 00472 00473 // Third Tab 00474 DomUtil::writeBoolEntry(dom,"/dist/genHTML",getgenHTMLCheckBoxState()); 00475 DomUtil::writeBoolEntry(dom,"/dist/useRPM",getuseRPMInfoCheckBoxState()); 00476 DomUtil::writeBoolEntry(dom,"/dist/ftpkde",getuploadftpkdeorgCheckBoxState()); 00477 DomUtil::writeBoolEntry(dom,"/dist/appskde",getuploadAppsKDEcomCheckBoxState()); 00478 DomUtil::writeBoolEntry(dom,"/dist/custom",getuploadCustomCheckBoxState()); 00479 DomUtil::writeEntry(dom,"/dist/url",getuploadURLLineEditText()); 00480 } 00481 00482 00483 #include "distpart_widget.moc"
KDE Logo
This file is part of the documentation for KDevelop Version 3.0.4.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Oct 6 17:39:10 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003