예제 #1
0
파일: optswx.cpp 프로젝트: Tyf0n/openbabel
int DynOptionswx::SetOptions(OpenBabel::OBConversion& Conv, OpenBabel::OBConversion::Option_type opttyp)
{
  //Now sets options directly in OBConversion
  int count=0;
  OMapType::iterator itr;
  for (itr = OptionMap.begin(); itr != OptionMap.end(); ++itr)
  {
    if(itr->first.empty()) continue; //just a caption or a line

    wxString oname = itr->first;
    wxString txt;

    wxCheckBox* pChk = dynamic_cast<wxCheckBox*> (itr->second);
    if(pChk)
    {
      if(!pChk->IsChecked())
      {
        // if a checkbox is not checked, ignore the subsidiary editboxes also
        while(!(++itr)->first.empty()&& itr->first[0]==_T(' '));
        --itr;
        continue;
      }
    }
    else
    {
      wxRadioButton* pRadio = dynamic_cast<wxRadioButton*> (itr->second);
      if(pRadio)
      {
        if(pRadio->GetValue())
          continue;
      }
      else
      {
        wxTextCtrl* pText = dynamic_cast<wxTextCtrl*> (itr->second);
        if(pText)
        {
          txt = pText->GetValue();
          if(txt.IsEmpty()) continue;
          oname = itr->first;
        }
      }
    }

    //Get the contents of subsequent editboxes
    OMapType::iterator itr2 = itr;
    while(++itr2!= OptionMap.end())
    {
      if((itr2->first).empty() || itr2->first[0]!=_T(' ')) //subsequent editboxes have the name preceded by a space
        break;
      txt = txt + _T(' ') + static_cast<wxTextCtrl*>(itr2->second)->GetValue();
      ++itr;
    }
    txt.Trim(true); txt.Trim(false);
    Conv.AddOption(oname.mb_str(), opttyp, txt.mb_str());
    ++count;

  }
  return count;
}
예제 #2
0
void ReadFileThread::run()
{
  // Check that the file can be read from disk
  if (!MoleculeFile::canOpen(m_moleculeFile->m_fileName, QFile::ReadOnly | QFile::Text)) {
    // Cannot read the file
    m_moleculeFile->m_error.append(QObject::tr("File %1 cannot be opened for reading.")
                                   .arg(m_moleculeFile->m_fileName));
    return;
  }

  // Construct the OpenBabel objects, set the file type
  OpenBabel::OBConversion conv;
  OpenBabel::OBFormat *inFormat;
  if (!m_moleculeFile->m_fileType.isEmpty() &&
      !conv.SetInFormat(m_moleculeFile->m_fileType.toAscii().data())) {
    // Input format not supported
    m_moleculeFile->m_error.append(
          QObject::tr("File type '%1' is not supported for reading.")
          .arg(m_moleculeFile->m_fileType));
    return;
  }
  else {
    inFormat = conv.FormatFromExt(m_moleculeFile->m_fileName.toAscii().data());
    if (!inFormat || !conv.SetInFormat(inFormat)) {
      // Input format not supported
      m_moleculeFile->m_error
          .append(QObject::tr("File type for file '%1' is not supported for reading.")
                  .arg(m_moleculeFile->m_fileName));
      return;
    }
  }

  // set any options
  if (!m_moleculeFile->m_fileOptions.isEmpty()) {
    foreach(const QString &option, m_moleculeFile
            ->m_fileOptions.split('\n', QString::SkipEmptyParts)) {
      conv.AddOption(option.toAscii().data(), OBConversion::INOPTIONS);
    }
  }