void StdCmdExport::activated(int iMsg) { if (Gui::Selection().countObjectsOfType(App::DocumentObject::getClassTypeId()) == 0) { QMessageBox::warning(Gui::getMainWindow(), QString::fromUtf8(QT_TR_NOOP("No selection")), QString::fromUtf8(QT_TR_NOOP("Please select first the objects you want to export."))); return; } // fill the list of registered endings QString formatList; std::map<std::string, std::string> FilterList = App::GetApplication().getExportFilters(); std::map<std::string, std::string>::const_iterator jt; for (jt=FilterList.begin(); jt != FilterList.end(); ++jt) { // ignore the project file format if (jt->first.find("(*.FCStd)") == std::string::npos) { formatList += QLatin1String(jt->first.c_str()); formatList += QLatin1String(";;"); } } QString selectedFilter; QString fileName = FileDialog::getSaveFileName(getMainWindow(), QObject::tr("Export file"), QString(), formatList, &selectedFilter); if (!fileName.isEmpty()) { SelectModule::Dict dict = SelectModule::exportHandler(fileName, selectedFilter); // export the files with the associated modules for (SelectModule::Dict::iterator it = dict.begin(); it != dict.end(); ++it) { getGuiApplication()->exportTo(it.key().toUtf8(), getActiveGuiDocument()->getDocument()->getName(), it.value().toAscii()); } } }
void StdCmdOpen::activated(int iMsg) { // fill the list of registered endings QString formatList; const char* supported = QT_TR_NOOP("Supported formats"); const char* allFiles = QT_TR_NOOP("All files (*.*)"); formatList = QObject::tr(supported); formatList += QLatin1String(" ("); std::vector<std::string> filetypes = App::GetApplication().getImportTypes(); std::vector<std::string>::iterator it; // Make sure FCStd is the very first fileformat it = std::find(filetypes.begin(), filetypes.end(), "FCStd"); if (it != filetypes.end()) { filetypes.erase(it); filetypes.insert(filetypes.begin(), "FCStd"); } for (it=filetypes.begin(); it != filetypes.end(); ++it) { formatList += QLatin1String(" *."); formatList += QLatin1String(it->c_str()); } formatList += QLatin1String(");;"); std::map<std::string, std::string> FilterList = App::GetApplication().getImportFilters(); std::map<std::string, std::string>::iterator jt; // Make sure the format name for FCStd is the very first in the list for (jt=FilterList.begin(); jt != FilterList.end(); ++jt) { if (jt->first.find("*.FCStd") != std::string::npos) { formatList += QLatin1String(jt->first.c_str()); formatList += QLatin1String(";;"); FilterList.erase(jt); break; } } for (jt=FilterList.begin(); jt != FilterList.end(); ++jt) { formatList += QLatin1String(jt->first.c_str()); formatList += QLatin1String(";;"); } formatList += QObject::tr(allFiles); QString selectedFilter; QStringList fileList = FileDialog::getOpenFileNames(getMainWindow(), QObject::tr("Open document"), QString(), formatList, &selectedFilter); // load the files with the associated modules SelectModule::Dict dict = SelectModule::importHandler(fileList, selectedFilter); for (SelectModule::Dict::iterator it = dict.begin(); it != dict.end(); ++it) { getGuiApplication()->open(it.key().toUtf8(), it.value().toAscii()); } }
void StdCmdImport::activated(int iMsg) { // fill the list of registered endings QString formatList; const char* supported = QT_TR_NOOP("Supported formats"); const char* allFiles = QT_TR_NOOP("All files (*.*)"); formatList = QObject::tr(supported); formatList += QLatin1String(" ("); std::vector<std::string> filetypes = App::GetApplication().getImportTypes(); std::vector<std::string>::const_iterator it; for (it=filetypes.begin(); it != filetypes.end(); ++it) { if (*it != "FCStd") { // ignore the project file format formatList += QLatin1String(" *."); formatList += QLatin1String(it->c_str()); } } formatList += QLatin1String(");;"); std::map<std::string, std::string> FilterList = App::GetApplication().getImportFilters(); std::map<std::string, std::string>::const_iterator jt; for (jt=FilterList.begin(); jt != FilterList.end(); ++jt) { // ignore the project file format if (jt->first.find("(*.FCStd)") == std::string::npos) { formatList += QLatin1String(jt->first.c_str()); formatList += QLatin1String(";;"); } } formatList += QObject::tr(allFiles); QString selectedFilter; QStringList fileList = FileDialog::getOpenFileNames(getMainWindow(), QObject::tr("Import file"), QString(), formatList, &selectedFilter); SelectModule::Dict dict = SelectModule::importHandler(fileList, selectedFilter); // load the files with the associated modules for (SelectModule::Dict::iterator it = dict.begin(); it != dict.end(); ++it) { getGuiApplication()->importFrom(it.key().toUtf8(), getActiveGuiDocument()->getDocument()->getName(), it.value().toAscii()); } std::list<Gui::MDIView*> views = getActiveGuiDocument()->getMDIViewsOfType(Gui::View3DInventor::getClassTypeId()); for (std::list<MDIView*>::iterator it = views.begin(); it != views.end(); ++it) { (*it)->viewAll(); } }
void DownloadItem::open() { QFileInfo info(m_output); QString selectedFilter; QStringList fileList; fileList << info.absoluteFilePath(); SelectModule::Dict dict = SelectModule::importHandler(fileList, selectedFilter); // load the files with the associated modules if (!dict.isEmpty()) { Gui::Document* doc = Gui::Application::Instance->activeDocument(); if (doc) { for (SelectModule::Dict::iterator it = dict.begin(); it != dict.end(); ++it) { Gui::Application::Instance->importFrom(it.key().toUtf8(), doc->getDocument()->getName(), it.value().toAscii()); } } else { for (SelectModule::Dict::iterator it = dict.begin(); it != dict.end(); ++it) { Gui::Application::Instance->open(it.key().toUtf8(), it.value().toAscii()); } } } else { QUrl url = QUrl::fromLocalFile(info.absolutePath()); QDesktopServices::openUrl(url); } }
SelectModule::SelectModule (const QString& type, const SelectModule::Dict& types, QWidget * parent) : QDialog(parent, Qt::WindowTitleHint) { setWindowTitle(tr("Select module")); groupBox = new QGroupBox(this); groupBox->setTitle(tr("Open %1 as").arg(type)); group = new QButtonGroup(this); gridLayout = new QGridLayout(this); gridLayout->setSpacing(6); gridLayout->setMargin(9); gridLayout1 = new QGridLayout(groupBox); gridLayout1->setSpacing(6); gridLayout1->setMargin(9); int index = 0; for (SelectModule::Dict::const_iterator it = types.begin(); it != types.end(); ++it) { QRadioButton* button = new QRadioButton(groupBox); QRegExp rx; QString filter = it.key(); QString module = it.value(); // ignore file types in (...) rx.setPattern(QLatin1String("\\s+\\([\\w\\*\\s\\.]+\\)$")); int pos = rx.indexIn(filter); if (pos != -1) { filter = filter.left(pos); } // ignore Gui suffix in module name rx.setPattern(QLatin1String("Gui$")); pos = rx.indexIn(module); if (pos != -1) { module = module.left(pos); } button->setText(QString::fromAscii("%1 (%2)").arg(filter).arg(module)); button->setObjectName(it.value()); gridLayout1->addWidget(button, index, 0, 1, 1); group->addButton(button, index); index++; } gridLayout->addWidget(groupBox, 0, 0, 1, 1); spacerItem = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); gridLayout->addItem(spacerItem, 1, 0, 1, 1); hboxLayout = new QHBoxLayout(); hboxLayout->setSpacing(6); hboxLayout->setMargin(0); spacerItem1 = new QSpacerItem(131, 31, QSizePolicy::Expanding, QSizePolicy::Minimum); hboxLayout->addItem(spacerItem1); okButton = new QPushButton(this); okButton->setObjectName(QString::fromUtf8("okButton")); okButton->setText(tr("Select")); okButton->setEnabled(false); hboxLayout->addWidget(okButton); gridLayout->addLayout(hboxLayout, 2, 0, 1, 1); // connections connect(okButton, SIGNAL(clicked()), this, SLOT(accept())); connect(group, SIGNAL(buttonClicked(int)), this, SLOT(onButtonClicked())); }