void WareSrcWidgetCollection::onCloseWareTabRequested(int Index) { if (WareSrcWidget* Ware = qobject_cast<WareSrcWidget*>(mp_TabWidget->widget(Index))) { int Choice = QMessageBox::Discard; if (Ware->isWareModified()) { QMessageBox MsgBox; MsgBox.setText(tr("Documents have been modified.")); MsgBox.setInformativeText(tr("Do you want to save changes?")); MsgBox.setStandardButtons(QMessageBox::SaveAll | QMessageBox::Discard | QMessageBox::Cancel); MsgBox.setDefaultButton(QMessageBox::SaveAll); Choice = MsgBox.exec(); } switch (Choice) { case QMessageBox::SaveAll: Ware->saveAllFileTabs(); case QMessageBox::Discard: Ware->closeAllFileTabs(); closeWareTab(Ware); break; case QMessageBox::Cancel: default: break; } } }
void WareSrcWidgetCollection::deleteWare(const QString& WarePath) { if (QMessageBox::warning(QApplication::activeWindow(), tr("Delete ware"), tr("Are you sure you want to delete \"%1\" and all its content?").arg(WarePath), QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Cancel) == QMessageBox::Cancel) return; QMap<QString, WareSrcWidget*>::iterator it = m_WareSrcWidgetByPath.find(WarePath); if (it != m_WareSrcWidgetByPath.end()) closeWareTab(it.value()); if (!openfluid::tools::Filesystem::removeDirectory(WarePath.toStdString())) QMessageBox::critical(0, tr("Delete ware"), tr("Unable to remove the directory \"%1\"").arg(WarePath)); }
bool WareSrcWidgetCollection::closeAllWidgets() { if (isProcessRunning()) { QMessageBox::warning(nullptr,tr("Process running"), tr("Closing tab is not allowed while a configure or build process is running."), QMessageBox::Close,QMessageBox::Close); return false; } int Choice = QMessageBox::Discard; if (isModified()) { QMessageBox MsgBox; MsgBox.setText(tr("Documents have been modified.")); MsgBox.setInformativeText(tr("Do you want to save changes?")); MsgBox.setStandardButtons(QMessageBox::SaveAll | QMessageBox::Discard | QMessageBox::Cancel); MsgBox.setDefaultButton(QMessageBox::SaveAll); Choice = MsgBox.exec(); } switch (Choice) { case QMessageBox::SaveAll: for(WareSrcWidget* Ware : m_WareSrcWidgetByPath.values()) Ware->saveAllFileTabs(); /* fall through */ case QMessageBox::Discard: for(WareSrcWidget* Ware : m_WareSrcWidgetByPath.values()) { Ware->closeAllFileTabs(); closeWareTab(Ware); } return true; break; case QMessageBox::Cancel: default: return false; break; } }
void WareSrcWidgetCollection::onCloseWareTabRequested(int Index) { if (WareSrcWidget* Ware = qobject_cast<WareSrcWidget*>(mp_TabWidget->widget(Index))) { // check if a process is not running if (Ware->isWareProcessRunning()) { QMessageBox::warning(Ware,tr("Process running"), tr("Closing tab is not allowed while a configure or build process is running."), QMessageBox::Close,QMessageBox::Close); return; } int Choice = QMessageBox::Discard; if (Ware->isWareModified()) { Choice = QMessageBox::information(Ware,tr("Modified documents"), tr("Documents have been modified.\n\n" "Do you want to save changes?"), QMessageBox::SaveAll | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::SaveAll); } switch (Choice) { case QMessageBox::SaveAll: Ware->saveAllFileTabs(); /* fall through */ case QMessageBox::Discard: Ware->closeAllFileTabs(); closeWareTab(Ware); break; case QMessageBox::Cancel: /* fall through */ default: break; } } }