Cache::~Cache() { QString error; write_file(directory() + "/cache-info", &error, recent().join("\n").toAscii()); if (!error.isEmpty()) { qFatal("Unable to save cache: %s", qPrintable(error)); } foreach (QString name, recent()) { if (!data().contains(name)) continue; qDebug() << "Saving cached data:" << name; QVariantMap map = data()[name].toMap(); QString error; bool ok; QJson::Serializer serializer; write_file(directory() + '/' + name.replace('/', '-'), &error, serializer.serialize(map, &ok)); if (!error.isEmpty()) { qWarning() << "Error while saving cache: " + error;; continue; } if (!ok) { error = INVALID_JSON + serializer.errorMessage(); qWarning() << "Error while saving cache: " + error; continue; } } }
void Cache::remove(QString name) { if (recent().length() <= size()) return; recent().removeOne(name); data().remove(name); if (QFile(directory() + '/' + name.replace('/', '-')).exists()) { QFile::remove(directory() + '/' + name.replace('/', '-')); } }
QVariant Cache::load(QString name, QString *error) { error->clear(); // If the name is in the cache, if (recent().contains(name)) { QVariantMap result; recent().removeOne(name); recent().prepend(name); // If the data is not loaded, if (!data().contains(name)) { // Load the data QByteArray array = read_file(directory() + '/' + name.replace('/', '-'), error); if (!error->isEmpty()) return QVariant(); bool ok; QJson::Parser parser; result = parser.parse(array, &ok).toMap(); if (!ok) { *error = INVALID_JSON + parser.errorString(); return QVariant(); } this->data()[name] = result; } else { result = this->data()[name].toMap(); } //qDebug() << "Saved:" << result["time"].toDateTime(); //qDebug() << "Now:" << QDateTime::currentDateTime(); //qDebug() << "Data exists in cache:" << name; // If the data is current, if (maxTime() == 0 || result["time"].toDateTime().msecsTo(QDateTime::currentDateTime()) < maxTime()) { // Return the data return result["data"]; } else { // Otherwise, // Return no data, with error "Outdated data" *error = OUTDATED_DATA; return result["data"]; } } else { // Otherwise, //qDebug() << "Data not in cache:" << name; // Return no data, with error "No data in cache" *error = NO_DATA; return QVariant(); } }
//AC.template.verifiedRecord void MainWidget::init_word() { QAxWidget word("Word.Application"); word.setProperty("Visible", false);//隐式的打开一个word应用程序 QAxObject * documents = word.querySubObject("Documents"); //获取所有工作文档 documents->dynamicCall("Add (void)");//创建一个word文档 QAxObject * document = word.querySubObject("ActiveDocument"); //获取当前激活的文档 QAxObject *selection = word.querySubObject("Selection"); //写入文件内容 QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间 QString str = time.toString("yyyy-MM-dd hh:mm:ss ddd"); //设置显示格式 selection->dynamicCall("TypeText(const QString&)","hello"+str); //设置保存 QVariant newFileName("e:/test.doc"); //存放位置和名称 QVariant fileFormat(1); //文件格式 QVariant LockComments(false); QVariant Password(""); //设置打开密码 QVariant recent(true); QVariant writePassword(""); QVariant ReadOnlyRecommended(false); document->querySubObject("SaveAs(const QVariant&, const QVariant&,const QVariant&, const QVariant&, const QVariant&, const QVariant&,const QVariant&)", newFileName, fileFormat, LockComments, Password, recent, writePassword, ReadOnlyRecommended); document->dynamicCall("Close (boolean)", true); //关闭文档 word.dynamicCall("Quit (void)");//退出 }
void ConvoDlg::SaveAs() { const std::string strXmlRoot("taz/"); QFileDialog::Option fileopt = QFileDialog::Option(0); if(m_pSett && !m_pSett->value("main/native_dialogs", 1).toBool()) fileopt = QFileDialog::DontUseNativeDialog; QString strDirLast = ""; if(m_pSett) strDirLast = m_pSett->value("monteconvo/last_dir", ".").toString(); QString _strFile = QFileDialog::getSaveFileName(this, "Save Convolution Configuration", strDirLast, "Takin files (*.taz *.TAZ)", nullptr, fileopt); if(_strFile == "") return; m_strLastFile = _strFile.toStdString(); std::string strDir = tl::get_dir(m_strLastFile); if(tl::get_fileext(m_strLastFile,1) != "taz") m_strLastFile += ".taz"; Save(); if(m_pSett) { m_pSett->setValue("monteconvo/last_dir", QString(strDir.c_str())); RecentFiles recent(m_pSett, "monteconvo/recent"); recent.AddFile(m_strLastFile.c_str()); recent.SaveList(); recent.FillMenu(m_pMenuRecent, m_pMapperRecent); } }
KNetAttach::KNetAttach( QWidget* parent ) : QWizard( parent ), Ui_KNetAttach() { setupUi( this ); connect(_recent, &QAbstractButton::toggled, _recentConnectionName, &QWidget::setEnabled); connect(_connectionName, &QLineEdit::textChanged, this, &KNetAttach::updateParametersPageStatus); connect(_user, &QLineEdit::textChanged, this, &KNetAttach::updateParametersPageStatus); connect(_host, &QLineEdit::textChanged, this, &KNetAttach::updateParametersPageStatus); connect(_path, &QLineEdit::textChanged, this, &KNetAttach::updateParametersPageStatus); connect(_useEncryption, &QAbstractButton::toggled, this, &KNetAttach::updatePort); connect(_createIcon, &QAbstractButton::toggled, this, &KNetAttach::updateFinishButtonText); connect( this, &QWizard::helpRequested, this, &KNetAttach::slotHelpClicked ); connect( this, &QWizard::currentIdChanged, this, &KNetAttach::slotPageChanged ); setWindowIcon(QIcon::fromTheme("knetattach")); setOption(HaveHelpButton, true); //setResizeMode(Fixed); FIXME: make the wizard fixed-geometry button(FinishButton)->setEnabled(false); KConfig crecent( "krecentconnections", KConfig::NoGlobals ); KConfigGroup recent(&crecent, "General"); QStringList idx = recent.readEntry("Index",QStringList()); if (idx.isEmpty()) { _recent->setEnabled(false); if (_recent->isChecked()) { _webfolder->setChecked(true); } } else { _recent->setEnabled(true); _recentConnectionName->addItems(idx); } _encoding->clear(); _encoding->addItems(KCharsets::charsets()->descriptiveEncodingNames()); const int codecForLocaleIdx = _encoding->findText(QTextCodec::codecForLocale()->name(), Qt::MatchContains); _encoding->setCurrentIndex(codecForLocaleIdx != -1 ? codecForLocaleIdx : 0); }
void Cache::save(QString name, QString* error, QVariant data) { error->clear(); // If the name is not in the cache, if (!recent().contains(name)) { // Remove the oldest item if (recent().size() >= size()) remove(recent().last()); recent().prepend(name); } // Add a timestamp QVariantMap map; map["time"] = QDateTime::currentDateTime(); map["data"] = data; // Save the data to the internal cache this->data()[name] = map; recent().removeOne(name); recent().prepend(name); // Write only on quitting... }
void ConvoDlg::Load(const QString& _strFile) { const std::string strXmlRoot("taz/"); if(_strFile == "") return; std::string strFile = _strFile.toStdString(); if(!tl::file_exists(strFile.c_str())) return; // add the location of the convo file as a possible global path std::string strGlobDir = tl::get_dir(strFile); clear_global_paths(); if(strGlobDir != "") add_global_path(strGlobDir); tl::Prop<std::string> xml; if(!xml.Load(strFile, tl::PropType::XML)) { QMessageBox::critical(this, "Error", "Could not load convolution file."); return; } Load(xml, strXmlRoot); m_strLastFile = strFile; std::string strDir = tl::get_dir(m_strLastFile); setWindowTitle((s_strTitle + " - ").c_str() + _strFile); if(m_pSett) { m_pSett->setValue("monteconvo/last_dir", QString(strDir.c_str())); RecentFiles recent(m_pSett, "monteconvo/recent"); recent.AddFile(m_strLastFile.c_str()); recent.SaveList(); recent.FillMenu(m_pMenuRecent, m_pMapperRecent); } }
CPS2emu::CPS2emu(QWidget *parent) : QMainWindow(parent), ui(new Ui::CPS2emu) { ui->setupUi(this); i = 0; romcnv = false; running = false; //1 second timer startTimer(1000); //Load Stored Settings... QSettings cps2Config("cps2emu","cps2gui"); path = cps2Config.value("recentFile").toString(); //If recentFile exists, RUN goes enabled QFileInfo recent(path); if (recent.exists()){ ui->romButton->setText(recent.fileName()); ui->runButton->setEnabled(true); } }
QDateTime Cache::lastUpdated(QString name, QString *error) { // If the name is in the cache, if (recent().contains(name)) { QVariantMap result; // If the data is not loaded, if (!data().contains(name)) { // Load the data QByteArray array = read_file(directory() + '/' + name.replace('/', '-'), error); if (!error->isEmpty()) return QDateTime::currentDateTime(); bool ok; QJson::Parser parser; result = parser.parse(array, &ok).toMap(); if (!ok) { *error = INVALID_JSON + parser.errorString(); return QDateTime::currentDateTime(); } this->data()[name] = result; } else { result = this->data()[name].toMap(); } //qDebug() << "Saved:" << result["time"].toDateTime(); //qDebug() << "Now:" << QDateTime::currentDateTime(); return result["time"].toDateTime(); } else { // Otherwise, // Return no data, with error "No data in cache" *error = NO_DATA; return QDateTime::currentDateTime(); } }
bool KNetAttach::validateCurrentPage() { if (currentPage() == _folderType){ _host->setFocus(); _connectionName->setFocus(); if (_webfolder->isChecked()) { setInformationText("WebFolder"); updateForProtocol("WebFolder"); _port->setValue(80); } else if (_fish->isChecked()) { setInformationText("Fish"); updateForProtocol("Fish"); _port->setValue(22); } else if (_ftp->isChecked()) { setInformationText("FTP"); updateForProtocol("FTP"); _port->setValue(21); if (_path->text().isEmpty()) { _path->setText("/"); } } else if (_smb->isChecked()) { setInformationText("SMB"); updateForProtocol("SMB"); } else { //if (_recent->isChecked()) { KConfig recent( "krecentconnections", KConfig::NoGlobals ); if (!recent.hasGroup(_recentConnectionName->currentText())) { KConfigGroup group = recent.group("General"); QStringList idx = group.readEntry("Index",QStringList()); if (idx.isEmpty()) { _recent->setEnabled(false); if (_recent->isChecked()) { _webfolder->setChecked(true); } } else { _recent->setEnabled(true); _recentConnectionName->addItems(idx); } return false; } KConfigGroup group = recent.group(_recentConnectionName->currentText()); _type = group.readEntry("Type"); setInformationText(_type); if (!updateForProtocol(_type)) { // FIXME: handle error } KUrl u(group.readEntry("URL")); _host->setText(u.host()); _user->setText(u.user()); _path->setText(u.path()); if (group.hasKey("Port")) { _port->setValue(group.readEntry("Port",0)); } else { _port->setValue(u.port()); } _connectionName->setText(_recentConnectionName->currentText()); _createIcon->setChecked(false); } updateParametersPageStatus(); }else{ button(BackButton)->setEnabled(false); button(FinishButton)->setEnabled(false); KUrl url; if (_type == "WebFolder") { if (_useEncryption->isChecked()) { url.setProtocol("webdavs"); } else { url.setProtocol("webdav"); } url.setPort(_port->value()); } else if (_type == "Fish") { KConfig config("kio_fishrc"); KConfigGroup cg(&config, _host->text().trimmed()); cg.writeEntry("Charset", KCharsets::charsets()->encodingForName(_encoding->currentText())); url.setProtocol(_protocolText->currentText()); url.setPort(_port->value()); } else if (_type == "FTP") { url.setProtocol("ftp"); url.setPort(_port->value()); KConfig config("kio_ftprc"); KConfigGroup cg(&config, _host->text().trimmed()); cg.writeEntry("Charset", KCharsets::charsets()->encodingForName(_encoding->currentText())); config.sync(); } else if (_type == "SMB") { url.setProtocol("smb"); } else { // recent } url.setHost(_host->text().trimmed()); url.setUser(_user->text().trimmed()); QString path = _path->text().trimmed(); #ifndef Q_WS_WIN // could a relative path really be made absolute by simply prepending a '/' ? if (!path.startsWith('/')) { path = QString("/") + path; } #endif url.setPath(path); _folderParameters->setEnabled(false); bool success = doConnectionTest(url); _folderParameters->setEnabled(true); if (!success) { KMessageBox::sorry(this, i18n("Unable to connect to server. Please check your settings and try again.")); button(BackButton)->setEnabled(true); return false; } KRun::runUrl(url, "inode/directory", this); QString name = _connectionName->text().trimmed(); if (_createIcon->isChecked()) { KGlobal::dirs()->addResourceType("remote_entries", "data", "remoteview"); QString path = KGlobal::dirs()->saveLocation("remote_entries"); path += name + ".desktop"; KConfig _desktopFile( path, KConfig::SimpleConfig ); KConfigGroup desktopFile(&_desktopFile, "Desktop Entry"); desktopFile.writeEntry("Icon", "folder-remote"); desktopFile.writeEntry("Name", name); desktopFile.writeEntry("Type", "Link"); desktopFile.writeEntry("URL", url.prettyUrl()); desktopFile.writeEntry("Charset", url.fileEncoding()); desktopFile.sync(); org::kde::KDirNotify::emitFilesAdded( QUrl("remote:/") ); } if (!name.isEmpty()) { KConfig _recent("krecentconnections", KConfig::NoGlobals); KConfigGroup recent(&_recent, "General"); QStringList idx = recent.readEntry("Index",QStringList()); _recent.deleteGroup(name); // erase anything stale if (idx.contains(name)) { idx.removeAll(name); idx.prepend(name); recent.writeEntry("Index", idx); } else { QString last; if (!idx.isEmpty()) { last = idx.last(); idx.pop_back(); } idx.prepend(name); _recent.deleteGroup(last); recent.writeEntry("Index", idx); } recent = KConfigGroup(&_recent,name); recent.writeEntry("URL", url.prettyUrl()); if (_type == "WebFolder" || _type == "Fish" || _type == "FTP") { recent.writeEntry("Port", _port->value()); } recent.writeEntry("Type", _type); recent.sync(); } } return true; }
void ApiWrap::gotStickerSet(uint64 setId, const MTPmessages_StickerSet &result) { _stickerSetRequests.remove(setId); if (result.type() != mtpc_messages_stickerSet) return; const MTPDmessages_stickerSet &d(result.c_messages_stickerSet()); if (d.vset.type() != mtpc_stickerSet) return; const MTPDstickerSet &s(d.vset.c_stickerSet()); StickerSets &sets(cRefStickerSets()); StickerSets::iterator it = sets.find(setId); if (it == sets.cend()) return; it->access = s.vaccess_hash.v; it->hash = s.vhash.v; it->shortName = qs(s.vshort_name); it->title = stickerSetTitle(s); it->flags = s.vflags.v; const QVector<MTPDocument> &d_docs(d.vdocuments.c_vector().v); StickerSets::iterator custom = sets.find(CustomStickerSetId); StickerPack pack; pack.reserve(d_docs.size()); for (int32 i = 0, l = d_docs.size(); i != l; ++i) { DocumentData *doc = App::feedDocument(d_docs.at(i)); if (!doc || !doc->sticker()) continue; pack.push_back(doc); if (custom != sets.cend()) { int32 index = custom->stickers.indexOf(doc); if (index >= 0) { custom->stickers.removeAt(index); } } } if (custom != sets.cend() && custom->stickers.isEmpty()) { sets.erase(custom); custom = sets.end(); } bool writeRecent = false; RecentStickerPack &recent(cGetRecentStickers()); for (RecentStickerPack::iterator i = recent.begin(); i != recent.cend();) { if (it->stickers.indexOf(i->first) >= 0 && pack.indexOf(i->first) < 0) { i = recent.erase(i); writeRecent = true; } else { ++i; } } if (pack.isEmpty()) { int32 removeIndex = cStickerSetsOrder().indexOf(setId); if (removeIndex >= 0) cRefStickerSetsOrder().removeAt(removeIndex); sets.erase(it); } else { it->stickers = pack; } if (writeRecent) { Local::writeUserSettings(); } Local::writeStickers(); if (App::main()) emit App::main()->stickersUpdated(); }
void ApiWrap::gotStickerSet(uint64 setId, const MTPmessages_StickerSet &result) { _stickerSetRequests.remove(setId); if (result.type() != mtpc_messages_stickerSet) return; const MTPDmessages_stickerSet &d(result.c_messages_stickerSet()); if (d.vset.type() != mtpc_stickerSet) return; const MTPDstickerSet &s(d.vset.c_stickerSet()); StickerSets &sets(cRefStickerSets()); StickerSets::iterator it = sets.find(setId); if (it == sets.cend()) return; it->access = s.vaccess_hash.v; it->hash = s.vhash.v; it->shortName = qs(s.vshort_name); QString title = qs(s.vtitle); if ((it->flags & MTPDstickerSet_flag_official) && !title.compare(qstr("Great Minds"), Qt::CaseInsensitive)) { title = lang(lng_stickers_default_set); } it->title = title; it->flags = s.vflags.v; const QVector<MTPDocument> &d_docs(d.vdocuments.c_vector().v); StickerSets::iterator custom = sets.find(CustomStickerSetId); QSet<DocumentData*> found; int32 wasCount = -1; for (int32 i = 0, l = d_docs.size(); i != l; ++i) { DocumentData *doc = App::feedDocument(d_docs.at(i)); if (!doc || !doc->sticker) continue; if (wasCount < 0) wasCount = it->stickers.size(); if (it->stickers.indexOf(doc) < 0) { it->stickers.push_back(doc); } else { found.insert(doc); } if (custom != sets.cend()) { int32 index = custom->stickers.indexOf(doc); if (index >= 0) { custom->stickers.removeAt(index); } } } if (custom != sets.cend() && custom->stickers.isEmpty()) { sets.erase(custom); custom = sets.end(); } bool writeRecent = false; RecentStickerPack &recent(cGetRecentStickers()); if (wasCount < 0) { // no stickers received for (RecentStickerPack::iterator i = recent.begin(); i != recent.cend();) { if (it->stickers.indexOf(i->first) >= 0) { i = recent.erase(i); writeRecent = true; } else { ++i; } } cRefStickerSetsOrder().removeOne(setId); sets.erase(it); } else { for (int32 j = 0, l = wasCount; j < l;) { if (found.contains(it->stickers.at(j))) { ++j; } else { for (RecentStickerPack::iterator i = recent.begin(); i != recent.cend();) { if (it->stickers.at(j) == i->first) { i = recent.erase(i); writeRecent = true; } else { ++i; } } it->stickers.removeAt(j); --l; } } if (it->stickers.isEmpty()) { cRefStickerSetsOrder().removeOne(setId); sets.erase(it); } } if (writeRecent) { Local::writeUserSettings(); } Local::writeStickers(); if (App::main()) emit App::main()->stickersUpdated(); }
TazDlg::TazDlg(QWidget* pParent) : QMainWindow(pParent), m_settings("tobis_stuff", "takin"), m_pSettingsDlg(new SettingsDlg(this, &m_settings)), m_pStatusMsg(new QLabel(this)), m_pCoordQStatusMsg(new QLabel(this)), m_pCoordCursorStatusMsg(new QLabel(this)), m_sceneRecip(this), m_dlgRecipParam(this, &m_settings), m_dlgRealParam(this, &m_settings), m_pGotoDlg(new GotoDlg(this, &m_settings)) { //log_debug("In ", __func__, "."); const bool bSmallqVisible = 0; const bool bBZVisible = 1; const bool bWSVisible = 1; this->setupUi(this); this->setWindowTitle(s_strTitle.c_str()); this->setFont(g_fontGen); this->setWindowIcon(load_icon("res/icons/takin.svg")); btnAtoms->setEnabled(g_bHasScatlens); if(m_settings.contains("main/geo")) { QByteArray geo = m_settings.value("main/geo").toByteArray(); restoreGeometry(geo); } /*if(m_settings.contains("main/width") && m_settings.contains("main/height")) { int iW = m_settings.value("main/width").toInt(); int iH = m_settings.value("main/height").toInt(); resize(iW, iH); }*/ m_pStatusMsg->setFrameStyle(QFrame::Panel | QFrame::Sunken); m_pCoordQStatusMsg->setFrameStyle(QFrame::Panel | QFrame::Sunken); m_pCoordCursorStatusMsg->setFrameStyle(QFrame::Panel | QFrame::Sunken); for(QLabel* pLabel : {m_pStatusMsg/*, m_pCoordQStatusMsg, m_pCoordCursorStatusMsg*/}) pLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Preferred); QStatusBar *pStatusBar = new QStatusBar(this); pStatusBar->addWidget(m_pStatusMsg, 1); pStatusBar->addPermanentWidget(m_pCoordQStatusMsg, 0); pStatusBar->addPermanentWidget(m_pCoordCursorStatusMsg, 0); m_pCoordQStatusMsg->setMinimumWidth(350); m_pCoordQStatusMsg->setAlignment(Qt::AlignCenter); m_pCoordCursorStatusMsg->setMinimumWidth(325); m_pCoordCursorStatusMsg->setAlignment(Qt::AlignCenter); this->setStatusBar(pStatusBar); // -------------------------------------------------------------------------------- m_vecEdits_real = { editA, editB, editC, editAlpha, editBeta, editGamma }; m_vecEdits_recip = { editARecip, editBRecip, editCRecip, editAlphaRecip, editBetaRecip, editGammaRecip }; m_vecEdits_plane = { editScatX0, editScatX1, editScatX2, editScatY0, editScatY1, editScatY2, editRealX0, editRealX1, editRealX2, editRealY0, editRealY1, editRealY2, }; m_vecEdits_monoana = { editMonoD, editAnaD }; //m_vecSpinBoxesSample = { spinRotPhi, spinRotTheta, spinRotPsi }; m_vecCheckBoxesSenses = { checkSenseM, checkSenseS, checkSenseA }; m_vecEditNames_real = { "sample/a", "sample/b", "sample/c", "sample/alpha", "sample/beta", "sample/gamma" }; m_vecEditNames_recip = { "sample/a_recip", "sample/b_recip", "sample/c_recip", "sample/alpha_recip", "sample/beta_recip", "sample/gamma_recip" }; m_vecEditNames_plane = { "plane/x0", "plane/x1", "plane/x2", "plane/y0", "plane/y1", "plane/y2", "plane/real_x0", "plane/real_x1", "plane/real_x2", "plane/real_y0", "plane/real_y1", "plane/real_y2", }; m_vecEditNames_monoana = { "tas/mono_d", "tas/ana_d" }; m_vecSpinBoxNamesSample = {"sample/phi", "sample/theta", "sample/psi"}; m_vecCheckBoxNamesSenses = {"tas/sense_m", "tas/sense_s", "tas/sense_a"}; // recip m_pviewRecip = new ScatteringTriangleView(groupRecip); groupRecip->addTab(m_pviewRecip, "Reciprocal Lattice"); m_pviewProjRecip = new ProjLatticeView(groupRecip); groupRecip->addTab(m_pviewProjRecip, "Projection"); m_pviewRecip->setScene(&m_sceneRecip); m_pviewProjRecip->setScene(&m_sceneProjRecip); if(m_settings.contains("main/recip_tab")) groupRecip->setCurrentIndex(m_settings.value("main/recip_tab").value<int>()); // real m_pviewRealLattice = new LatticeView(groupReal); groupReal->addTab(m_pviewRealLattice, "Real Lattice"); m_pviewReal = new TasLayoutView(groupReal); groupReal->addTab(m_pviewReal, "TAS Instrument"); m_pviewTof = new TofLayoutView(groupReal); groupReal->addTab(m_pviewTof, "TOF Instrument"); m_pviewRealLattice->setScene(&m_sceneRealLattice); m_pviewReal->setScene(&m_sceneReal); m_pviewTof->setScene(&m_sceneTof); if(m_settings.contains("main/real_tab")) groupReal->setCurrentIndex(m_settings.value("main/real_tab").value<int>()); QObject::connect(m_pSettingsDlg, SIGNAL(SettingsChanged()), this, SLOT(SettingsChanged())); QObject::connect(&m_sceneReal, SIGNAL(nodeEvent(bool)), this, SLOT(RealNodeEvent(bool))); QObject::connect(&m_sceneRecip, SIGNAL(nodeEvent(bool)), this, SLOT(RecipNodeEvent(bool))); QObject::connect(&m_sceneTof, SIGNAL(nodeEvent(bool)), this, SLOT(TofNodeEvent(bool))); // TAS QObject::connect(&m_sceneRecip, SIGNAL(triangleChanged(const TriangleOptions&)), &m_sceneReal, SLOT(triangleChanged(const TriangleOptions&))); QObject::connect(&m_sceneReal, SIGNAL(tasChanged(const TriangleOptions&)), &m_sceneRecip, SLOT(tasChanged(const TriangleOptions&))); QObject::connect(&m_sceneRecip, SIGNAL(paramsChanged(const RecipParams&)), &m_sceneReal, SLOT(recipParamsChanged(const RecipParams&))); // TOF QObject::connect(&m_sceneRecip, SIGNAL(triangleChanged(const TriangleOptions&)), &m_sceneTof, SLOT(triangleChanged(const TriangleOptions&))); QObject::connect(&m_sceneTof, SIGNAL(tasChanged(const TriangleOptions&)), &m_sceneRecip, SLOT(tasChanged(const TriangleOptions&))); QObject::connect(&m_sceneRecip, SIGNAL(paramsChanged(const RecipParams&)), &m_sceneTof, SLOT(recipParamsChanged(const RecipParams&))); // connections between instruments QObject::connect(&m_sceneTof, SIGNAL(tasChanged(const TriangleOptions&)), &m_sceneReal, SLOT(triangleChanged(const TriangleOptions&))); QObject::connect(&m_sceneReal, SIGNAL(tasChanged(const TriangleOptions&)), &m_sceneTof, SLOT(triangleChanged(const TriangleOptions&))); // scale factor if(m_pviewRecip) QObject::connect(m_pviewRecip, SIGNAL(scaleChanged(t_real_glob)), &m_sceneRecip, SLOT(scaleChanged(t_real_glob))); if(m_pviewProjRecip) QObject::connect(m_pviewProjRecip, SIGNAL(scaleChanged(t_real_glob)), &m_sceneProjRecip, SLOT(scaleChanged(t_real_glob))); if(m_pviewRealLattice) QObject::connect(m_pviewRealLattice, SIGNAL(scaleChanged(t_real_glob)), &m_sceneRealLattice, SLOT(scaleChanged(t_real_glob))); if(m_pviewReal) QObject::connect(m_pviewReal, SIGNAL(scaleChanged(t_real_glob)), &m_sceneReal, SLOT(scaleChanged(t_real_glob))); if(m_pviewTof) QObject::connect(m_pviewTof, SIGNAL(scaleChanged(t_real_glob)), &m_sceneTof, SLOT(scaleChanged(t_real_glob))); // parameter dialogs QObject::connect(&m_sceneRecip, SIGNAL(paramsChanged(const RecipParams&)), &m_dlgRecipParam, SLOT(paramsChanged(const RecipParams&))); QObject::connect(&m_sceneReal, SIGNAL(paramsChanged(const RealParams&)), &m_dlgRealParam, SLOT(paramsChanged(const RealParams&))); // cursor position QObject::connect(&m_sceneRecip, SIGNAL(coordsChanged(t_real_glob, t_real_glob, t_real_glob, bool, t_real_glob, t_real_glob, t_real_glob)), this, SLOT(RecipCoordsChanged(t_real_glob, t_real_glob, t_real_glob, bool, t_real_glob, t_real_glob, t_real_glob))); QObject::connect(&m_sceneProjRecip, SIGNAL(coordsChanged(t_real_glob, t_real_glob, t_real_glob, bool, t_real_glob, t_real_glob, t_real_glob)), this, SLOT(RecipCoordsChanged(t_real_glob, t_real_glob, t_real_glob, bool, t_real_glob, t_real_glob, t_real_glob))); QObject::connect(&m_sceneRealLattice, SIGNAL(coordsChanged(t_real_glob, t_real_glob, t_real_glob, bool, t_real_glob, t_real_glob, t_real_glob)), this, SLOT(RealCoordsChanged(t_real_glob, t_real_glob, t_real_glob, bool, t_real_glob, t_real_glob, t_real_glob))); QObject::connect(&m_sceneRecip, SIGNAL(spurionInfo(const tl::ElasticSpurion&, const std::vector<tl::InelasticSpurion<t_real_glob>>&, const std::vector<tl::InelasticSpurion<t_real_glob>>&)), this, SLOT(spurionInfo(const tl::ElasticSpurion&, const std::vector<tl::InelasticSpurion<t_real_glob>>&, const std::vector<tl::InelasticSpurion<t_real_glob>>&))); QObject::connect(m_pGotoDlg, SIGNAL(vars_changed(const CrystalOptions&, const TriangleOptions&)), this, SLOT(VarsChanged(const CrystalOptions&, const TriangleOptions&))); QObject::connect(&m_sceneRecip, SIGNAL(paramsChanged(const RecipParams&)), m_pGotoDlg, SLOT(RecipParamsChanged(const RecipParams&))); QObject::connect(&m_sceneRecip, SIGNAL(paramsChanged(const RecipParams&)), this, SLOT(recipParamsChanged(const RecipParams&))); for(QLineEdit* pEdit : m_vecEdits_monoana) QObject::connect(pEdit, SIGNAL(textEdited(const QString&)), this, SLOT(UpdateDs())); for(QLineEdit* pEdit : m_vecEdits_real) { QObject::connect(pEdit, SIGNAL(textEdited(const QString&)), this, SLOT(CheckCrystalType())); QObject::connect(pEdit, SIGNAL(textEdited(const QString&)), this, SLOT(CalcPeaks())); } for(QLineEdit* pEdit : m_vecEdits_plane) { QObject::connect(pEdit, SIGNAL(textEdited(const QString&)), this, SLOT(CalcPeaks())); } //for(QDoubleSpinBox* pSpin : m_vecSpinBoxesSample) // QObject::connect(pSpin, SIGNAL(valueChanged(t_real)), this, SLOT(CalcPeaks())); for(QLineEdit* pEdit : m_vecEdits_recip) { QObject::connect(pEdit, SIGNAL(textEdited(const QString&)), this, SLOT(CheckCrystalType())); QObject::connect(pEdit, SIGNAL(textEdited(const QString&)), this, SLOT(CalcPeaksRecip())); } QObject::connect(checkSenseM, SIGNAL(stateChanged(int)), this, SLOT(UpdateMonoSense())); QObject::connect(checkSenseS, SIGNAL(stateChanged(int)), this, SLOT(UpdateSampleSense())); QObject::connect(checkSenseA, SIGNAL(stateChanged(int)), this, SLOT(UpdateAnaSense())); QObject::connect(editSpaceGroupsFilter, SIGNAL(textEdited(const QString&)), this, SLOT(RepopulateSpaceGroups())); QObject::connect(comboSpaceGroups, SIGNAL(currentIndexChanged(int)), this, SLOT(SetCrystalType())); QObject::connect(comboSpaceGroups, SIGNAL(currentIndexChanged(int)), this, SLOT(CalcPeaks())); QObject::connect(checkPowder, SIGNAL(stateChanged(int)), this, SLOT(CalcPeaks())); QObject::connect(btnAtoms, SIGNAL(clicked(bool)), this, SLOT(ShowAtomsDlg())); // -------------------------------------------------------------------------------- // file menu QMenu *pMenuFile = new QMenu("File", this); QAction *pNew = new QAction("New", this); pNew->setIcon(load_icon("res/icons/document-new.svg")); pMenuFile->addAction(pNew); pMenuFile->addSeparator(); QAction *pLoad = new QAction("Load...", this); pLoad->setIcon(load_icon("res/icons/document-open.svg")); pMenuFile->addAction(pLoad); m_pMenuRecent = new QMenu("Recently Loaded", this); tl::RecentFiles recent(&m_settings, "main/recent"); m_pMapperRecent = new QSignalMapper(m_pMenuRecent); QObject::connect(m_pMapperRecent, SIGNAL(mapped(const QString&)), this, SLOT(LoadFile(const QString&))); recent.FillMenu(m_pMenuRecent, m_pMapperRecent); pMenuFile->addMenu(m_pMenuRecent); QAction *pSave = new QAction("Save", this); pSave->setIcon(load_icon("res/icons/document-save.svg")); pMenuFile->addAction(pSave); QAction *pSaveAs = new QAction("Save as...", this); pSaveAs->setIcon(load_icon("res/icons/document-save-as.svg")); pMenuFile->addAction(pSaveAs); pMenuFile->addSeparator(); QAction *pImport = new QAction("Import...", this); pImport->setIcon(load_icon("res/icons/drive-harddisk.svg")); pMenuFile->addAction(pImport); m_pMenuRecentImport = new QMenu("Recently Imported", this); tl::RecentFiles recentimport(&m_settings, "main/recent_import"); m_pMapperRecentImport = new QSignalMapper(m_pMenuRecentImport); QObject::connect(m_pMapperRecentImport, SIGNAL(mapped(const QString&)), this, SLOT(ImportFile(const QString&))); recentimport.FillMenu(m_pMenuRecentImport, m_pMapperRecentImport); pMenuFile->addMenu(m_pMenuRecentImport); pMenuFile->addSeparator(); QAction *pSettings = new QAction("Settings...", this); pSettings->setIcon(load_icon("res/icons/preferences-system.svg")); pMenuFile->addAction(pSettings); pMenuFile->addSeparator(); QAction *pExit = new QAction("Exit", this); pExit->setIcon(load_icon("res/icons/system-log-out.svg")); pMenuFile->addAction(pExit); // -------------------------------------------------------------------------------- // recip menu m_pMenuViewRecip = new QMenu("Reciprocal Space", this); m_pGoto = new QAction("Go to Position...", this); m_pGoto->setIcon(load_icon("res/icons/goto.svg")); m_pMenuViewRecip->addAction(m_pGoto); QAction *pRecipParams = new QAction("Information...", this); m_pMenuViewRecip->addAction(pRecipParams); m_pMenuViewRecip->addSeparator(); m_pSmallq = new QAction("Show Reduced Scattering Vector q", this); m_pSmallq->setIcon(load_icon("res/icons/q.svg")); m_pSmallq->setCheckable(1); m_pSmallq->setChecked(bSmallqVisible); m_pMenuViewRecip->addAction(m_pSmallq); m_pSnapSmallq = new QAction("Snap G to Bragg Peak", this); m_pSnapSmallq->setCheckable(1); m_pSnapSmallq->setChecked(m_sceneRecip.getSnapq()); m_pMenuViewRecip->addAction(m_pSnapSmallq); QAction *pKeepAbsKiKf = new QAction("Keep |ki| and |kf| Fixed", this); pKeepAbsKiKf->setCheckable(1); pKeepAbsKiKf->setChecked(m_sceneRecip.getKeepAbsKiKf()); m_pMenuViewRecip->addAction(pKeepAbsKiKf); m_pBZ = new QAction("Show First Brillouin Zone", this); m_pBZ->setIcon(load_icon("res/icons/brillouin.svg")); m_pBZ->setCheckable(1); m_pBZ->setChecked(bBZVisible); m_pMenuViewRecip->addAction(m_pBZ); QMenu *pMenuEwald = new QMenu("Ewald Sphere", this); QActionGroup *pGroupEwald = new QActionGroup(this); m_pEwaldSphereNone = new QAction("Disabled", this); m_pEwaldSphereKi = new QAction("Around ki", this); m_pEwaldSphereKf = new QAction("Around kf", this); for(QAction* pAct : {m_pEwaldSphereNone, m_pEwaldSphereKi, m_pEwaldSphereKf}) { pAct->setCheckable(1); pGroupEwald->addAction(pAct); } m_pEwaldSphereKf->setChecked(1); pMenuEwald->addActions(pGroupEwald->actions()); m_pMenuViewRecip->addMenu(pMenuEwald); m_pMenuViewRecip->addSeparator(); QMenu *pMenuProj = new QMenu("Projection", this); pMenuProj->setTearOffEnabled(1); QActionGroup *pGroupProj = new QActionGroup(this); m_pProjGnom = new QAction("Gnomonic", this); m_pProjStereo = new QAction("Stereographic", this); m_pProjPara = new QAction("Parallel", this); m_pProjPersp = new QAction("Perspectivic", this); for(QAction *pAct : {m_pProjGnom, m_pProjStereo, m_pProjPara, m_pProjPersp}) { pAct->setCheckable(1); pGroupProj->addAction(pAct); } m_pProjStereo->setChecked(1); pMenuProj->addActions(pGroupProj->actions()); m_pMenuViewRecip->addMenu(pMenuProj); #if !defined NO_3D QAction *pView3D = new QAction("3D View...", this); //pView3D->setIcon(QIcon::fromTheme("applications-graphics")); m_pMenuViewRecip->addAction(pView3D); #endif m_pMenuViewRecip->addSeparator(); QAction *pRecipExport = new QAction("Export Lattice Graphics...", this); pRecipExport->setIcon(load_icon("res/icons/image-x-generic.svg")); m_pMenuViewRecip->addAction(pRecipExport); QAction *pProjExport = new QAction("Export Projection Graphics...", this); pProjExport->setIcon(load_icon("res/icons/image-x-generic.svg")); m_pMenuViewRecip->addAction(pProjExport); #ifdef USE_GIL QAction *pBZExport = new QAction("Export Brillouin Zone Image...", this); pBZExport->setIcon(load_icon("res/icons/image-x-generic.svg")); m_pMenuViewRecip->addAction(pBZExport); #endif // -------------------------------------------------------------------------------- // real menu m_pMenuViewReal = new QMenu("Real Space", this); m_pMenuViewReal->addAction(m_pGoto); QAction *pRealParams = new QAction("Information...", this); m_pMenuViewReal->addAction(pRealParams); m_pMenuViewReal->addSeparator(); m_pShowRealQDir = new QAction("Show Q Direction", this); m_pShowRealQDir->setCheckable(1); m_pShowRealQDir->setChecked(m_sceneReal.GetTasLayout()->GetRealQVisible()); m_pMenuViewReal->addAction(m_pShowRealQDir); m_pWS = new QAction("Show Wigner-Seitz Cell", this); m_pWS->setIcon(load_icon("res/icons/brillouin.svg")); m_pWS->setCheckable(1); m_pWS->setChecked(bWSVisible); m_pMenuViewReal->addAction(m_pWS); m_pMenuViewReal->addSeparator(); #if !defined NO_3D QAction *pView3DReal = new QAction("3D View...", this); //pView3DReal->setIcon(QIcon::fromTheme("applications-graphics")); m_pMenuViewReal->addAction(pView3DReal); m_pMenuViewReal->addSeparator(); #endif QAction *pRealLatticeExport = new QAction("Export Lattice Graphics...", this); pRealLatticeExport->setIcon(load_icon("res/icons/image-x-generic.svg")); m_pMenuViewReal->addAction(pRealLatticeExport); QAction *pRealExport = new QAction("Export TAS Layout...", this); pRealExport->setIcon(load_icon("res/icons/image-x-generic.svg")); m_pMenuViewReal->addAction(pRealExport); QAction *pTofExport = new QAction("Export TOF Layout...", this); pTofExport->setIcon(load_icon("res/icons/image-x-generic.svg")); m_pMenuViewReal->addAction(pTofExport); #ifdef USE_GIL QAction *pWSExport = new QAction("Export Wigner-Seitz Cell Image...", this); pWSExport->setIcon(load_icon("res/icons/image-x-generic.svg")); m_pMenuViewReal->addAction(pWSExport); #endif QAction *pExportUC = new QAction("Export Unit Cell Model...", this); pExportUC->setIcon(load_icon("res/icons/image-x-generic.svg")); m_pMenuViewReal->addAction(pExportUC); // -------------------------------------------------------------------------------- // resolution menu QMenu *pMenuReso = new QMenu("Resolution", this); QAction *pResoParams = new QAction("Parameters...", this); pResoParams->setIcon(load_icon("res/icons/accessories-calculator.svg")); pMenuReso->addAction(pResoParams); pMenuReso->addSeparator(); QAction *pResoEllipses = new QAction("Ellipses...", this); pResoEllipses->setIcon(load_icon("res/icons/ellipses.svg")); pMenuReso->addAction(pResoEllipses); #if !defined NO_3D QAction *pResoEllipses3D = new QAction("3D Ellipsoids...", this); pMenuReso->addAction(pResoEllipses3D); #endif pMenuReso->addSeparator(); QAction *pResoConv = new QAction("Convolution...", this); pMenuReso->addAction(pResoConv); // -------------------------------------------------------------------------------- // calc menu QMenu *pMenuCalc = new QMenu("Calculation", this); QAction *pNeutronProps = new QAction("Neutron Properties...", this); pNeutronProps->setIcon(load_icon("res/icons/x-office-spreadsheet-template.svg")); pMenuCalc->addAction(pNeutronProps); pMenuCalc->addSeparator(); QAction *pPowder = new QAction("Powder Lines...", this); pPowder->setIcon(load_icon("res/icons/weather-snow.svg")); pMenuCalc->addAction(pPowder); QAction *pDW = new QAction("Scattering Factors...", this); pMenuCalc->addAction(pDW); QAction *pFormfactor = nullptr; if(g_bHasFormfacts && g_bHasScatlens) { pFormfactor = new QAction("Form Factors...", this); pMenuCalc->addAction(pFormfactor); } QAction *pSgList = new QAction("Space Group Types...", this); pMenuCalc->addAction(pSgList); QAction *pDisp = new QAction("Dispersions...", this); //pDisp->setIcon(load_icon("disp.svg")); pMenuCalc->addAction(pDisp); pMenuCalc->addSeparator(); QAction *pDynPlane = new QAction("Kinematic Plane...", this); pMenuCalc->addAction(pDynPlane); QAction *pSpuri = new QAction("Spurious Scattering...", this); pMenuCalc->addAction(pSpuri); #if !defined NO_NET // -------------------------------------------------------------------------------- // network menu QMenu *pMenuNet = new QMenu("Network", this); QAction *pConn = new QAction("Connect to Instrument...", this); pConn->setIcon(load_icon("res/icons/network-transmit-receive.svg")); pMenuNet->addAction(pConn); QAction *pDisconn = new QAction("Disconnect", this); pDisconn->setIcon(load_icon("res/icons/network-offline.svg")); pMenuNet->addAction(pDisconn); pMenuNet->addSeparator(); QAction *pNetScanMon = new QAction("Scan Monitor...", this); pMenuNet->addAction(pNetScanMon); QAction *pNetCache = new QAction("Network Cache...", this); pMenuNet->addAction(pNetCache); QAction *pNetRefresh = new QAction("Refresh", this); pNetRefresh->setIcon(load_icon("res/icons/view-refresh.svg")); pMenuNet->addSeparator(); pMenuNet->addAction(pNetRefresh); #endif // -------------------------------------------------------------------------------- // tools menu QMenu *pMenuTools = new QMenu("Tools", this); QAction *pScanViewer = new QAction("Scan Viewer...", this); pMenuTools->addAction(pScanViewer); // -------------------------------------------------------------------------------- // help menu QMenu *pMenuHelp = new QMenu("Help", this); QAction *pHelp = new QAction("Show Help...", this); pHelp->setIcon(load_icon("res/icons/help-browser.svg")); pMenuHelp->addAction(pHelp); QAction *pDevelDoc = new QAction("Show Developer Help...", this); if(find_resource("doc/devel/html/index.html", 0) == "") pDevelDoc->setEnabled(0); pDevelDoc->setIcon(load_icon("res/icons/help-browser.svg")); pMenuHelp->addAction(pDevelDoc); pMenuHelp->addSeparator(); QAction *pAboutQt = new QAction("About Qt...", this); //pAboutQt->setIcon(QIcon::fromTheme("help-about")); pMenuHelp->addAction(pAboutQt); //pMenuHelp->addSeparator(); QAction *pAbout = new QAction("About Takin...", this); pAbout->setIcon(load_icon("res/icons/dialog-information.svg")); pMenuHelp->addAction(pAbout); // -------------------------------------------------------------------------------- QMenuBar *pMenuBar = new QMenuBar(this); pMenuBar->addMenu(pMenuFile); pMenuBar->addMenu(m_pMenuViewRecip); pMenuBar->addMenu(m_pMenuViewReal); pMenuBar->addMenu(pMenuReso); pMenuBar->addMenu(pMenuCalc); pMenuBar->addMenu(pMenuTools); #if !defined NO_NET pMenuBar->addMenu(pMenuNet); #endif pMenuBar->addMenu(pMenuHelp); QObject::connect(pNew, SIGNAL(triggered()), this, SLOT(New())); QObject::connect(pLoad, SIGNAL(triggered()), this, SLOT(Load())); QObject::connect(pSave, SIGNAL(triggered()), this, SLOT(Save())); QObject::connect(pSaveAs, SIGNAL(triggered()), this, SLOT(SaveAs())); QObject::connect(pImport, SIGNAL(triggered()), this, SLOT(Import())); QObject::connect(pScanViewer, SIGNAL(triggered()), this, SLOT(ShowScanViewer())); QObject::connect(pSettings, SIGNAL(triggered()), this, SLOT(ShowSettingsDlg())); QObject::connect(pExit, SIGNAL(triggered()), this, SLOT(close())); QObject::connect(m_pSmallq, SIGNAL(toggled(bool)), this, SLOT(EnableSmallq(bool))); QObject::connect(m_pBZ, SIGNAL(toggled(bool)), this, SLOT(EnableBZ(bool))); QObject::connect(m_pWS, SIGNAL(toggled(bool)), this, SLOT(EnableWS(bool))); for(QAction* pAct : {m_pEwaldSphereNone, m_pEwaldSphereKi, m_pEwaldSphereKf}) QObject::connect(pAct, SIGNAL(triggered()), this, SLOT(ShowEwaldSphere())); QObject::connect(m_pShowRealQDir, SIGNAL(toggled(bool)), this, SLOT(EnableRealQDir(bool))); QObject::connect(m_pSnapSmallq, SIGNAL(toggled(bool)), &m_sceneRecip, SLOT(setSnapq(bool))); QObject::connect(pKeepAbsKiKf, SIGNAL(toggled(bool)), &m_sceneRecip, SLOT(setKeepAbsKiKf(bool))); QObject::connect(pRecipParams, SIGNAL(triggered()), this, SLOT(ShowRecipParams())); QObject::connect(pRealParams, SIGNAL(triggered()), this, SLOT(ShowRealParams())); for(QAction *pProj : {m_pProjGnom, m_pProjStereo, m_pProjPara, m_pProjPersp}) QObject::connect(pProj, SIGNAL(triggered()), this, SLOT(RecipProjChanged())); #if !defined NO_3D QObject::connect(pView3D, SIGNAL(triggered()), this, SLOT(Show3D())); QObject::connect(pView3DReal, SIGNAL(triggered()), this, SLOT(Show3DReal())); QObject::connect(pResoEllipses3D, SIGNAL(triggered()), this, SLOT(ShowResoEllipses3D())); #endif QObject::connect(pRecipExport, SIGNAL(triggered()), this, SLOT(ExportRecip())); QObject::connect(pProjExport, SIGNAL(triggered()), this, SLOT(ExportProj())); QObject::connect(pRealExport, SIGNAL(triggered()), this, SLOT(ExportReal())); QObject::connect(pTofExport, SIGNAL(triggered()), this, SLOT(ExportTof())); QObject::connect(pRealLatticeExport, SIGNAL(triggered()), this, SLOT(ExportRealLattice())); QObject::connect(pExportUC, SIGNAL(triggered()), this, SLOT(ExportUCModel())); #ifdef USE_GIL QObject::connect(pBZExport, SIGNAL(triggered()), this, SLOT(ExportBZImage())); QObject::connect(pWSExport, SIGNAL(triggered()), this, SLOT(ExportWSImage())); #endif QObject::connect(pResoParams, SIGNAL(triggered()), this, SLOT(ShowResoParams())); QObject::connect(pResoEllipses, SIGNAL(triggered()), this, SLOT(ShowResoEllipses())); QObject::connect(pResoConv, SIGNAL(triggered()), this, SLOT(ShowResoConv())); QObject::connect(pNeutronProps, SIGNAL(triggered()), this, SLOT(ShowNeutronDlg())); QObject::connect(m_pGoto, SIGNAL(triggered()), this, SLOT(ShowGotoDlg())); QObject::connect(pPowder, SIGNAL(triggered()), this, SLOT(ShowPowderDlg())); QObject::connect(pDisp, SIGNAL(triggered()), this, SLOT(ShowDispDlg())); QObject::connect(pSpuri, SIGNAL(triggered()), this, SLOT(ShowSpurions())); QObject::connect(pDW, SIGNAL(triggered()), this, SLOT(ShowDWDlg())); QObject::connect(pDynPlane, SIGNAL(triggered()), this, SLOT(ShowDynPlaneDlg())); #if !defined NO_NET QObject::connect(pConn, SIGNAL(triggered()), this, SLOT(ShowConnectDlg())); QObject::connect(pDisconn, SIGNAL(triggered()), this, SLOT(Disconnect())); QObject::connect(pNetRefresh, SIGNAL(triggered()), this, SLOT(NetRefresh())); QObject::connect(pNetCache, SIGNAL(triggered()), this, SLOT(ShowNetCache())); QObject::connect(pNetScanMon, SIGNAL(triggered()), this, SLOT(ShowNetScanMonitor())); #endif QObject::connect(pSgList, SIGNAL(triggered()), this, SLOT(ShowSgListDlg())); if(pFormfactor) QObject::connect(pFormfactor, SIGNAL(triggered()), this, SLOT(ShowFormfactorDlg())); QObject::connect(pHelp, SIGNAL(triggered()), this, SLOT(ShowHelp())); QObject::connect(pDevelDoc, SIGNAL(triggered()), this, SLOT(ShowDevelDoc())); QObject::connect(pAbout, SIGNAL(triggered()), this, SLOT(ShowAbout())); QObject::connect(pAboutQt, SIGNAL(triggered()), qApp, SLOT(aboutQt())); setMenuBar(pMenuBar); // -------------------------------------------------------------------------------- // -------------------------------------------------------------------------------- // context menus if(m_pviewRecip) m_pviewRecip->setContextMenuPolicy(Qt::CustomContextMenu); if(m_pviewProjRecip) m_pviewProjRecip->setContextMenuPolicy(Qt::CustomContextMenu); if(m_pviewRealLattice) m_pviewRealLattice->setContextMenuPolicy(Qt::CustomContextMenu); if(m_pviewReal) m_pviewReal->setContextMenuPolicy(Qt::CustomContextMenu); if(m_pviewTof) m_pviewTof->setContextMenuPolicy(Qt::CustomContextMenu); if(m_pviewRecip) QObject::connect(m_pviewRecip, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(RecipContextMenu(const QPoint&))); if(m_pviewProjRecip) QObject::connect(m_pviewProjRecip, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(RecipContextMenu(const QPoint&))); if(m_pviewRealLattice) QObject::connect(m_pviewRealLattice, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(RealContextMenu(const QPoint&))); if(m_pviewReal) QObject::connect(m_pviewReal, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(RealContextMenu(const QPoint&))); if(m_pviewTof) QObject::connect(m_pviewTof, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(RealContextMenu(const QPoint&))); // -------------------------------------------------------------------------------- // tool bars QToolBar *pFileTools = new QToolBar(this); pFileTools->setWindowTitle("File"); pFileTools->addAction(pNew); pFileTools->addAction(pLoad); pFileTools->addAction(pImport); pFileTools->addAction(pSave); pFileTools->addAction(pSaveAs); addToolBar(pFileTools); QToolBar *pRecipTools = new QToolBar(this); pRecipTools->setWindowTitle("Reciprocal Space"); pRecipTools->addAction(m_pGoto); pRecipTools->addAction(m_pSmallq); pRecipTools->addAction(m_pBZ); //pRecipTools->addAction(m_pEwaldSphere); addToolBar(pRecipTools); QToolBar *pResoTools = new QToolBar(this); pResoTools->setWindowTitle("Resolution"); pResoTools->addAction(pResoParams); pResoTools->addAction(pResoEllipses); addToolBar(pResoTools); QToolBar *pCalcTools = new QToolBar(this); pCalcTools->setWindowTitle("Calculation"); pCalcTools->addAction(pNeutronProps); pCalcTools->addAction(pPowder); addToolBar(pCalcTools); #if !defined NO_NET QToolBar *pNetTools = new QToolBar(this); pNetTools->setWindowTitle("Network"); pNetTools->addAction(pConn); pNetTools->addAction(pDisconn); pNetTools->addAction(pNetRefresh); addToolBar(pNetTools); #endif // -------------------------------------------------------------------------------- RepopulateSpaceGroups(); unsigned int iMaxPeaks = m_settings.value("main/max_peaks", 10).toUInt(); m_sceneRecip.GetTriangle()->SetMaxPeaks(iMaxPeaks); m_sceneRecip.GetTriangle()->SetPlaneDistTolerance(s_dPlaneDistTolerance); m_sceneProjRecip.GetLattice()->SetMaxPeaks(iMaxPeaks/2); m_sceneRealLattice.GetLattice()->SetMaxPeaks(iMaxPeaks); m_sceneRealLattice.GetLattice()->SetPlaneDistTolerance(s_dPlaneDistTolerance); #if !defined NO_3D if(m_pRecip3d) { m_pRecip3d->SetMaxPeaks((t_real)iMaxPeaks); m_pRecip3d->SetPlaneDistTolerance(s_dPlaneDistTolerance); } #endif m_bReady = 1; UpdateDs(); CalcPeaks(); m_sceneRecip.GetTriangle()->SetqVisible(bSmallqVisible); m_sceneRecip.GetTriangle()->SetBZVisible(bBZVisible); m_sceneRecip.GetTriangle()->SetEwaldSphereVisible(EWALD_KF); m_sceneRealLattice.GetLattice()->SetWSVisible(bWSVisible); m_sceneRecip.emitUpdate(); //m_sceneRecip.emitAllParams(); setAcceptDrops(1); }
int main(int argc, char *argv[]) { int ch, iflag, flags; struct passwd *pw; time_t interval; struct stat sb; ALIAS *cur; opterr = iflag = 0; interval = -1; while ((ch = getopt(argc, argv, "a:Iir:")) != -1) switch ((char)ch) { case 'a': /* alias */ if (!(cur = (ALIAS *)malloc((u_int)sizeof(ALIAS)))) break; cur->name = optarg; cur->next = names; names = cur; break; case 'I': /* backward compatible */ case 'i': /* init the database */ iflag = 1; break; case 'r': if (isdigit((unsigned char)*optarg)) { interval = atol(optarg) * SECSPERDAY; if (interval < 0) usage(); } else interval = 0; /* one time only */ break; default: usage(); } argc -= optind; argv += optind; if (argc != 1) { if (!iflag) usage(); if (!(pw = getpwuid(getuid()))) { syslog(LOG_ERR, "no such user uid %u.", getuid()); exit(1); } } else if (!(pw = getpwnam(*argv))) { syslog(LOG_ERR, "no such user %s.", *argv); exit(1); } if (chdir(pw->pw_dir)) { syslog(LOG_NOTICE, "no such directory %s.", pw->pw_dir); exit(1); } /* * dbopen(3) can not deal with a zero-length file w/o O_TRUNC. */ if (iflag == 1 || (stat(VDB, &sb) == 0 && sb.st_size == (off_t)0)) flags = O_CREAT|O_RDWR|O_TRUNC; else flags = O_CREAT|O_RDWR; db = dbopen(VDB, flags, S_IRUSR|S_IWUSR, DB_HASH, NULL); if (!db) { syslog(LOG_NOTICE, "%s: %m", VDB); exit(1); } if (interval != -1) setinterval(interval); if (iflag) { (void)(db->close)(db); exit(0); } if (!(cur = malloc((u_int)sizeof(ALIAS)))) exit(1); cur->name = pw->pw_name; cur->next = names; names = cur; readheaders(); if (!recent()) { setreply(); (void)(db->close)(db); sendmessage(pw->pw_name); } else (void)(db->close)(db); exit(0); /* NOTREACHED */ }
DevSettings::DevSettings(QWidget *p) : QSettings(p) { dlg = new QDialog(p, Qt::Dialog | Qt::WindowStaysOnTopHint); QVBoxLayout *box = new QVBoxLayout; QTabWidget *tab = new QTabWidget(dlg); QFrame *frame; QGridLayout *grid; // <General> frame = new QFrame; frame->setFrameShape(QFrame::Box); frame->setFrameShadow(QFrame::Sunken); grid = new QGridLayout; frame->setLayout(grid); tab->addTab(frame, tr("General") ); // </General> // <Compiler> frame = new QFrame; frame->setFrameShape(QFrame::Box); frame->setFrameShadow(QFrame::Sunken); grid = new QGridLayout; frame->setLayout(grid); tab->addTab(frame, tr("Compilation") ); // </Compiler> // <Editors> frame = new QFrame; frame->setFrameShape(QFrame::Box); frame->setFrameShadow(QFrame::Sunken); grid = new QGridLayout; frame->setLayout(grid); tab->addTab(frame, tr("Editors") ); // </Editors> // <Highlight> frame = new QFrame; frame->setFrameShape(QFrame::Box); frame->setFrameShadow(QFrame::Sunken); grid = new QGridLayout; frame->setLayout(grid); tab->addTab(frame, tr("Highlighting") ); // </Highlight> box->addWidget(tab); QHBoxLayout *but = new QHBoxLayout; b_Default = new QPushButton(QIcon(":/default.png"), tr("&Default")); but->addWidget(b_Default); b_Valid = new QPushButton(QIcon(":/ok.png"), tr("&Ok")); but->addWidget(b_Valid); b_Cancel = new QPushButton(QIcon(":/cancel.png"), tr("&Cancel")); but->addWidget(b_Cancel); box->addLayout(but); dlg->setLayout(box); m = new QMenu(tr("&Reopen..."), p); m->setIcon(QIcon(":/reopen.png")); aClear = new QAction(QIcon(":/clear.png"), tr("&Clear history"), this); connect(aClear , SIGNAL( triggered() ), this , SLOT ( clearRecents() ) ); recent(); if ( allKeys().isEmpty() ) { ;//dlg->exec(); } else { ; } }
void CPS2emu::on_romButton_clicked() { //Default location, load at constructor if(path == NULL){ path = ""; } QFileInfo recent(path); QString openPath = QFileDialog::getOpenFileName(this, "Select a ROM...", recent.dir().path(), "ROM files (*.zip)"); //After change path is recentPath if(openPath != NULL){ path = openPath; QFileInfo rom(path); //Check hi and nvram folders checkHiScore(); checkNVRAM(); //Check cache file if(checkCache()){ ui->runButton->setEnabled(true); ui->romButton->setText( rom.fileName() ); } else{ QMessageBox msgBox; QPushButton *createBt = msgBox.addButton(tr("Create"), QMessageBox::AcceptRole); msgBox.addButton(QMessageBox::Abort); msgBox.setWindowTitle("CPS2emu - cache"); msgBox.setText("Cache file not found!"); msgBox.setInformativeText("Create cache file now?"); msgBox.exec(); if(msgBox.clickedButton() == createBt){ cps2cache = new QProcess; //cps2cache->setTextModeEnabled(true); //cps2cache->setReadChannelMode(QProcess::MergedChannels); cps2cache->setWorkingDirectory(rom.dir().path()); cps2cache->start("/usr/bin/cps2romcnv ./" + rom.fileName()); //romcnv running... romcnv = true; //startTimer(300); ui->txt->setText("Caching ROM file... Please Wait!"); ui->romButton->setText( rom.fileName() + ", caching!"); //Disable buttons ui->runButton->setEnabled(false); ui->romButton->setEnabled(false); } else{ ui->romButton->setText( rom.fileName() + ", not cached!"); ui->runButton->setEnabled(false); } } } }