示例#1
0
  PythonTerminalEdit::PythonTerminalEdit(QWidget *parent) : QTextEdit(parent), 
      m_current(0), m_cursorPos(0), m_indent(0)
  {
    // Load the saved commands
    QSettings settings;
    int size = settings.beginReadArray("pythonCommands");
    for (int i = 0; i < size; ++i) {
      settings.setArrayIndex(i);
      m_commandStack.append( settings.value("command").toString() );
    }
    settings.endArray();
 
    // set the font
    QFont font;
    font.setFamily(QString::fromUtf8("Courier New"));
    setFont(font);
         
    printPrompt();

//    connect(this, SIGNAL(cursorPositionChanged()), this, SLOT(setTextCursorToEnd()));
  }
示例#2
0
void LinuxDeviceConfigurations::load()
{
    QSettings *settings = Core::ICore::instance()->settings();
    settings->beginGroup(SettingsGroup);
    m_nextId = settings->value(IdCounterKey, 1).toULongLong();
    m_defaultSshKeyFilePath = settings->value(DefaultKeyFilePathKey,
        LinuxDeviceConfiguration::defaultPrivateKeyFilePath()).toString();
    int count = settings->beginReadArray(ConfigListKey);
    for (int i = 0; i < count; ++i) {
        settings->setArrayIndex(i);
        LinuxDeviceConfiguration::Ptr devConf
            = LinuxDeviceConfiguration::create(*settings, m_nextId);
        m_devConfigs << devConf;
    }
    settings->endArray();
    settings->endGroup();
    ensureDefaultExists(LinuxDeviceConfiguration::Maemo5OsType);
    ensureDefaultExists(LinuxDeviceConfiguration::HarmattanOsType);
    ensureDefaultExists(LinuxDeviceConfiguration::MeeGoOsType);
    ensureDefaultExists(LinuxDeviceConfiguration::GenericLinuxOsType);
}
void WebBrowser::onConfig()
{
    bool ok;
    QString text = QInputDialog::getText(this, tr("Cambiar Pagina de Inicio"),
                                         tr("Página actual: ")+homepage_, QLineEdit::Normal,
                                         address_->text(), &ok);
    if (ok && !text.isEmpty()) {
        if(!text.startsWith("http://")
                && !text.startsWith("https://")
                && text.length()!=0)
            homepage_="http://"+text;
        else
            homepage_=text;
    }


    QSettings* settings = new QSettings("/home/nad/config.web.ini",QSettings::IniFormat);
    settings->beginWriteArray("Config");
    settings->setValue("homepage",homepage_);
    settings->endArray();
}
示例#4
0
void LibraryModel::DeleteGenerator(const QModelIndex& index) {
  if (index.parent() != ItemToIndex(smart_playlist_node_)) return;

  // Remove the item from the tree
  smart_playlist_node_->DeleteNotify(index.row());

  QSettings s;
  s.beginGroup(kSmartPlaylistsSettingsGroup);

  // Rewrite all the items to the settings
  s.beginWriteArray(backend_->songs_table(),
                    smart_playlist_node_->children.count());
  int i = 0;
  for (LibraryItem* item : smart_playlist_node_->children) {
    s.setArrayIndex(i++);
    s.setValue("name", item->display_text);
    s.setValue("type", item->key);
    s.setValue("data", item->smart_playlist_data);
  }
  s.endArray();
}
示例#5
0
void CSharesListDialog::saveSettings(QSettings &sett, const QVector<QSharedPointer<SShare> > &shares)
{
	sett.beginGroup(ShareSettingsKeys::blockPrefix);
	sett.remove("");
	sett.endGroup();

	sett.beginWriteArray(ShareSettingsKeys::blockPrefix);
	QVector<QSharedPointer<SShare> >::ConstIterator it = shares.constBegin();
	for(int i = 0; it != shares.constEnd(); ++i, ++it)
	{
		sett.setArrayIndex(i);
		sett.setValue(ShareSettingsKeys::name, (*it)->name);
		sett.setValue(ShareSettingsKeys::ip, (*it)->ip);
		sett.setValue(ShareSettingsKeys::path, (*it)->path);
		sett.setValue(ShareSettingsKeys::username, (*it)->username);
		sett.setValue(ShareSettingsKeys::password, (*it)->password);
		sett.setValue(ShareSettingsKeys::type, (int) (*it)->type);
	}
	sett.endArray();
	sett.sync();
}
示例#6
0
void DeviceSerial::deviceCfgLoad( QSettings &pDataStream )
{
	DeviceSerial		*DevCur;

	while( !mDeviceList.isEmpty() )
	{
		DevCur = mDeviceList.takeFirst();

		delDevice( DevCur );
	}

	pDataStream.beginGroup( "serial" );

	int		DevCnt = pDataStream.beginReadArray( "devices" );

	for( int i = 0 ; i < DevCnt ; i++ )
	{
		pDataStream.setArrayIndex( i );

		if( ( DevCur = newDevice() ) == 0 )
		{
			continue;
		}

		DevCur->setName( pDataStream.value( "name", DevCur->name() ).toString() );

		DevCur->setUuid( pDataStream.value( "uuid", DevCur->uuid() ).value<QUuid>() );

		DevCur->cfgLoad( pDataStream );

		if( pDataStream.value( "enabled", false ).toBool() )
		{
			DevCur->setEnabled( true );
		}
	}

	pDataStream.endArray();

	pDataStream.endGroup();
}
示例#7
0
void RenderDialog::accept()
{
	if (QFileInfo(absoluteFilePath()).exists())
	{
		QMessageBox::StandardButton b = QMessageBox::question(this,
			tr("File already exists"),
			tr("Do you want to overwrite %1?")
				.arg(QFileInfo(absoluteFilePath()).fileName()),
			QMessageBox::Yes | QMessageBox::No,
			QMessageBox::NoButton );
		if (b == QMessageBox::No)
			return;
	}

	QSettings settings;
	size = m_sizeComboBox->currentText();
	preset = m_qualityComboBox->currentText();

	m_sizeComboBox->removeItem(m_sizeComboBox->currentIndex());

	settings.beginWriteArray("renderdialog/sizes");
	settings.setArrayIndex(0);
	settings.setValue("dim", size);

	int cnt = 10;
	for (int i = 0; i < cnt; ++i)
	{
		QString text(m_sizeComboBox->itemText(i));
		if (text.isEmpty())
			break;
		settings.setArrayIndex(i+1);
		settings.setValue("dim", text);
	}
	settings.endArray();
	settings.setValue("renderdialog/last_size", size);
	settings.setValue("renderdialog/last_quality", preset);

	QDialog::accept();
}
示例#8
0
					void GlooxProtocol::RestoreAccounts ()
					{
						QSettings settings (QSettings::IniFormat, QSettings::UserScope,
								QCoreApplication::organizationName (),
								QCoreApplication::applicationName () + "_Azoth_Xoox_Accounts");
						int size = settings.beginReadArray ("Accounts");
						for (int i = 0; i < size; ++i)
						{
							settings.setArrayIndex (i);
							QByteArray data = settings.value ("SerializedData").toByteArray ();
							GlooxAccount *acc = GlooxAccount::Deserialize (data, this);
							if (!acc)
							{
								qWarning () << Q_FUNC_INFO
										<< "unserializable acount"
										<< i;
								continue;
							}
							Accounts_ << acc;
						}
						settings.endArray ();
					}
示例#9
0
void AccountManager::save() const
{
    QSettings settings;
    
    settings.remove("accounts/list/");
    
    if(!m_accounts.isEmpty()) {
        settings.beginWriteArray("accounts/list/", m_accounts.size());
    
        int i=0;
    
        for(auto a: m_accounts) {
            settings.setArrayIndex(i++);
            settings.setValue("id", a->id());
            settings.setValue("type", a->type());
        }
    
        settings.endArray();
    }
    
    settings.sync();
}
示例#10
0
void MainWindow::readSettings() {
  QSettings settings;
  settings.beginGroup("WorkFilterModelCollection");
  const int count = settings.beginReadArray("filters");
  for (int i = 0; i < count; i++) {
    settings.setArrayIndex(i);
    QString label("filtered");
    if (settings.contains("label"))
      label = settings.value("label").toString();
    addFilterTab(settings.value("expression").toString(), label);
  }
  settings.endArray();
  settings.endGroup();

  /*
  settings.beginGroup("MainWindow");
  if (settings.contains("geometry")) {
    restoreGeometry(settings.value("geometry").toByteArray());
  }
  settings.endGroup();
  */
}
示例#11
0
void GraphItemModel::readSettings(QSettings& settings)
{
    settings.beginGroup("NodeModel");
    int size = settings.beginReadArray("nodes");
    Node* tmp=NULL;
     for (int i = 0; i < size; ++i) {
         settings.setArrayIndex(i);
         tmp=new Node(NULL);
         tmp->setStringManager(m_stringManager);
         tmp->setId(settings.value("id").toString());
         tmp->setText(settings.value("text").toString());
         //tmp->getColorTheme()->readSetting(settings);
         m_list->append(tmp);
     }
     settings.endArray();
     settings.endGroup();


    /*if(m_list->size()==0)
    {
        Node* tmp=new Node(NULL);
        tmp->setColor(Qt::blue);
        tmp->setStringManager(m_stringManager);
        tmp->setText(tr("Male"));
        addItems(tmp);

        tmp=new Node(NULL);
        tmp->setColor(Qt::red);
        tmp->setText(tr("Female"));
        tmp->setStringManager(m_stringManager);
        addItems(tmp);

        tmp=new Node(NULL);
        tmp->setColor(Qt::green);
        tmp->setText(tr("Place"));
        tmp->setStringManager(m_stringManager);
        addItems(tmp);
    }*/
}
示例#12
0
void SyntroDB::restoreWindowState()
{
	QSettings *settings = SyntroUtils::getSettings();

	settings->beginGroup("Window");
	restoreGeometry(settings->value("Geometry").toByteArray());
	restoreState(settings->value("State").toByteArray());

	int count = settings->beginReadArray("Grid");
	for (int i = 0; i < count && i < m_rxStreamTable->columnCount(); i++) {
		settings->setArrayIndex(i);
		int width = settings->value("columnWidth").toInt();

		if (width > 0)
			m_rxStreamTable->setColumnWidth(i, width);
	}
	settings->endArray();

	settings->endGroup();
	
	delete settings;
}
示例#13
0
void PresetManager::saveSpecialSet(const presetElementVec &preset, bool usesTimeAxis) const
{
    // This preset is stored in the APM Planner ini file and loaded / stored on every
    // access. This guarantees that a saved set is immediate loadable from another analysis window.
    QSettings graphSettings;
    graphSettings.beginGroup("LOGANALYSIS");
    graphSettings.remove("");   // removes all entries from this group

    graphSettings.beginWriteArray("GRAPH_ELEMENTS");
    for(int i = 0; i < preset.size(); ++i)
    {
        graphSettings.setArrayIndex(i);
        graphSettings.setValue("NAME", preset.at(i).m_graph);
        graphSettings.setValue("COLOR/RED", preset.at(i).m_color.red());
        graphSettings.setValue("COLOR/GREEN", preset.at(i).m_color.green());
        graphSettings.setValue("COLOR/BLUE", preset.at(i).m_color.blue());
        if(preset.at(i).m_manualRange)
        {   // only store scaling if set to manual
            graphSettings.setValue("Y_AXIS_MIN", preset.at(i).m_range.lower);
            graphSettings.setValue("Y_AXIS_MAX", preset.at(i).m_range.upper);
        }
        else if(preset.at(i).m_group.size() > 0)
        {   // store group name if grouped
            graphSettings.setValue("GROUP", preset.at(i).m_group);
        }
    }
    graphSettings.endArray();

    graphSettings.beginGroup("GRAPH_SETTINGS");
    graphSettings.setValue("TIME_AXIS", usesTimeAxis);
    graphSettings.endGroup();

    graphSettings.endGroup();   // "LOGANALYSIS"

    graphSettings.sync();
    QLOG_DEBUG() << "PresetManager::saveSpecialSet - Special View saved.";

}
示例#14
0
QtVersionManager::QtVersionManager()
    : m_emptyVersion(new QtVersion)
{
    QSettings *s = Core::ICore::instance()->settings();
    m_defaultVersion = s->value(defaultQtVersionKey, 0).toInt();

    m_idcount = 1;
    int size = s->beginReadArray(QtVersionsSectionName);
    for (int i = 0; i < size; ++i) {
        s->setArrayIndex(i);
        // Find the right id
        // Either something saved or something generated
        // Note: This code assumes that either all ids are read from the settings
        // or generated on the fly.
        int id = s->value("Id", -1).toInt();
        if (id == -1)
            id = getUniqueId();
        else if (id > m_idcount)
            m_idcount = id;
        QtVersion *version = new QtVersion(s->value("Name").toString(),
                                           s->value("Path").toString(),
                                           id,
                                           s->value("IsSystemVersion", false).toBool());
        version->setMingwDirectory(s->value("MingwDirectory").toString());
        version->setPrependPath(s->value("PrependPath").toString());
        version->setMsvcVersion(s->value("msvcVersion").toString());
        m_versions.append(version);
    }
    s->endArray();
    updateUniqueIdToIndexMap();

    ++m_idcount;
    addNewVersionsFromInstaller();
    updateSystemVersion();

    writeVersionsIntoSettings();
    updateDocumentation();
}
void StManagerStudyListComp::updateRecentExams ( const TableRow *row, const QString &prefix )
{
  ResultSet resultSet;
  loadRecentExams( resultSet, prefix );

  StudyFilter::filterDuplicates( &resultSet, row );

  resultSet.push_back( *row ); 
  if ( resultSet.size() > RECENT_EXAMS_NUMBER ) {
    resultSet.erase( resultSet.begin() );
  }

  QSettings settings;
  settings.beginWriteArray( prefix );
  
  for ( unsigned i = 0; i < resultSet.size(); i++ )
  {
    settings.setArrayIndex( i );
    updateRecentRow ( &resultSet[i], settings );  
  }

  settings.endArray();
}
示例#16
0
			void RegexpMatcherManager::RestoreSettings ()
			{
				QSettings settings (Proxy::Instance ()->GetOrganizationName (),
						Proxy::Instance ()->GetApplicationName () + "_Aggregator");
				int size = settings.beginReadArray ("RegexpMatcher");
				for (int i = 0; i < size; ++i)
				{
					settings.setArrayIndex (i);
					QByteArray data = settings.value ("Item").toByteArray ();
					RegexpItem item;
					try
					{
						item.Deserialize (data);
					}
					catch (const std::runtime_error& e)
					{
						qWarning () << Q_FUNC_INFO << e.what ();
						continue;
					}
					Items_.push_back (item);
				}
				settings.endArray ();
			}
void laborOptimizerPlan::read_details(QSettings &s){
    qDeleteAll(plan_details);
    plan_details.clear();

    int count = s.beginReadArray("jobs");
    for(int i=0; i<count; i++){
        PlanDetail *d = new PlanDetail();
        s.setArrayIndex(i);
        d->labor_id = s.value("labor_id").toInt();
        QString role_name = s.value("role_name").toString();
        d->role_name = role_name;
        if(role_name=="")
            d->use_skill = true;
        else
            d->use_skill = false;
        d->priority = s.value("priority").toFloat();
        d->ratio = s.value("max_laborers").toFloat();
        d->group_ratio = 0.0;
        plan_details.append(d);
    }

    s.endArray();
}
示例#18
0
void LibraryModel::UpdateGenerator(const QModelIndex& index, GeneratorPtr gen) {
  if (index.parent() != ItemToIndex(smart_playlist_node_)) return;
  LibraryItem* item = IndexToItem(index);
  if (!item) return;

  // Update the config
  QSettings s;
  s.beginGroup(kSmartPlaylistsSettingsGroup);

  // Count the existing items
  const int count = s.beginReadArray(backend_->songs_table());
  s.endArray();

  s.beginWriteArray(backend_->songs_table(), count);
  SaveGenerator(&s, index.row(), gen);

  // Update the text of the item
  item->display_text = gen->name();
  item->sort_text = item->display_text;
  item->key = gen->type();
  item->smart_playlist_data = gen->Save();
  item->ChangedNotify();
}
示例#19
0
void
PitchBendSequenceDialog::savePreset(int preset)
{
    /* A preset is stored in one element in an array.  There is a
       different array for each controller or pitchbend.  */
    QSettings settings;
    settings.beginGroup(PitchBendSequenceConfigGroup);
    settings.beginWriteArray(m_control.getName().data());
    settings.setArrayIndex(preset);
    settings.setValue("pre_bend_value", m_prebendValue->value());
    settings.setValue("pre_bend_duration_value", m_prebendDuration->value());
    settings.setValue("sequence_ramp_duration", m_sequenceRampDuration->value());
    settings.setValue("sequence_ramp_end_value", m_sequenceEndValue->value());
    settings.setValue("vibrato_start_amplitude", m_vibratoStartAmplitude->value());
    settings.setValue("vibrato_end_amplitude", m_vibratoEndAmplitude->value());
    settings.setValue("vibrato_frequency", m_vibratoFrequency->value());
    settings.setValue("step_count", m_resolution->value());
    settings.setValue("step_size", m_stepSize->value());
    settings.setValue("ramp_mode", getRampMode());
    settings.setValue("step_size_calculation", getStepSizeCalculation());
    settings.endArray();
    settings.endGroup();
}
示例#20
0
	void SingleAccAuth::SaveQueue () const
	{
		QSettings settings (QCoreApplication::organizationName (),
				QCoreApplication::applicationName () + "_Scroblibre");
		settings.beginGroup ("Queues");
		settings.beginGroup (BaseURL_.toString ());
		settings.beginGroup (Login_);

		auto save = [&settings] (const SubmitInfo& info) -> void
		{
			settings.setValue ("Artist", info.Info_.Artist_);
			settings.setValue ("Album", info.Info_.Album_);
			settings.setValue ("Title", info.Info_.Title_);
			settings.setValue ("TS", info.TS_);
			settings.setValue ("Length", info.Info_.Length_);
			settings.setValue ("Track", info.Info_.TrackNumber_);
		};

		settings.remove ("LastSubmit");
		settings.beginGroup ("LastSubmit");
		if (LastSubmit_.IsValid ())
			save (LastSubmit_);
		settings.endGroup ();

		settings.beginWriteArray ("Items");
		for (auto i = 0; i < Queue_.size (); ++i)
		{
			settings.setArrayIndex (i);
			save (Queue_.at (i));
		}
		settings.endArray ();

		settings.endGroup ();
		settings.endGroup ();
		settings.endGroup ();
	}
示例#21
0
void RecentFiles::retrieveFromStorage( QSettings& settings )
{
    LOG(logDEBUG) << "RecentFiles::retrieveFromStorage";

    recentFiles_.clear();

    if ( settings.contains( "RecentFiles/version" ) ) {
        // Unserialise the "new style" stored history
        settings.beginGroup( "RecentFiles" );
        if ( settings.value( "version" ) == RECENTFILES_VERSION ) {
            int size = settings.beginReadArray( "filesHistory" );
            for (int i = 0; i < size; ++i) {
                settings.setArrayIndex(i);
                QString search = settings.value( "name" ).toString();
                recentFiles_.append( search );
            }
            settings.endArray();
        }
        else {
            LOG(logERROR) << "Unknown version of highlighterSet, ignoring it...";
        }
        settings.endGroup();
    }
}
示例#22
0
文件: gui.cpp 项目: Cache22/Launchy
Gui::Gui(QWidget* parent) 
	: QWidget(parent)
{
	setupUi(this);
	QSettings* settings = *gwinshellInstance->settings;
	if (settings == NULL) return;

	
	// Read in the array of websites from options
	table->setSortingEnabled(false);
	int count = settings->beginReadArray("winshell/cmds");
	table->setRowCount(count);
	for(int i = 0; i < count; ++i) {
		settings->setArrayIndex(i);
		table->setItem(i, 0, new QTableWidgetItem(settings->value("name").toString()));
		table->setItem(i, 1, new QTableWidgetItem(settings->value("file").toString()));
		table->setItem(i, 2, new QTableWidgetItem(settings->value("args").toString()));
	}
	settings->endArray();
	table->setSortingEnabled(true);

	connect(tableNew, SIGNAL(clicked(bool)), this, SLOT(newRow(void)));
	connect(tableRemove, SIGNAL(clicked(bool)), this, SLOT(remRow(void)));
}
示例#23
0
void MidiTimelineNode::loadSettings( QSettings &pSettings )
{
	pSettings.beginGroup( "timeline" );

	mTimelineControl->cfgLoad( pSettings );

	pSettings.endGroup();

	pSettings.beginGroup( "time" );

	mKF->cfgLoad( pSettings );

	pSettings.endGroup();

	mEvents.clear();

	int		EvtCnt = pSettings.beginReadArray( "events" );

	mEvents.reserve( EvtCnt );

	fugio::MidiEvent	ME = { 0, 0 };

	for( int i = 0 ; i < EvtCnt ; i++ )
	{
		pSettings.setArrayIndex( i );

		ME.timestamp = pSettings.value( "t" ).toUInt();
		ME.message   = pSettings.value( "m" ).toUInt();

		mEvents << ME;
	}

	pSettings.endArray();

	mKF->setTimeMax( qreal( ME.timestamp ) / 1000.0 );
}
示例#24
0
void MainWindow::loadSettings(QString settingsName)
{
    QSettings *s = new QSettings(tr(APPLICATION_COMPANY), tr(APPLICATION_NAME), this);

    s->beginGroup(settingsName);

    s->beginGroup(tr("MasterController"));
    master->setName(s->value(tr("name"), tr("Master")).toString());
    master->setVisible(s->value(tr("visible"), tr("true")).toBool());
    s->endGroup();

    int size = s->beginReadArray(tr("LightControllers"));

    for(int i = 0; i < controllers.size(); i++){
        LightController *lc = controllers.at(i);
        for(int j = 0; j < size; j++){
            s->setArrayIndex(j);
            if(s->value(tr("id"), tr("")).toString() == lc->id()){
                lc->loadSettings(s);
            }
        }
    }

    s->endArray();

    presetController->loadSettings(s);

    audio->loadSettings(s);

    s->endGroup();

    GLOBAL_settingsChanged = false;

    s->sync();

}
示例#25
0
table_model::table_model(QObject *parent) :
    QAbstractTableModel(parent)
{
    QSettings settings;
    int size = settings.beginReadArray("friends");
    for (int i = 0; i < size; ++i)
    {
        settings.setArrayIndex(i);
        friend_t p;
        p.player.setPattern(settings.value("name").toString());
        p.clan.setPattern(settings.value("clan").toString());
        friends.append(p);
    }
    settings.endArray();
    if(!size)
    {
        friend_t ruclan;
        ruclan.player.setPattern("*");
        ruclan.clan.setPattern(".ru!");

        friends.append(ruclan);
    }

}
void PropertiesManager::createTimeDerivativeProperties(TimeDerivativeTextItem *td)
{
    //move up down
    root->actionMove_Up->setEnabled(true);
    root->actionMove_Down->setEnabled(true);
    root->actionDeleteItems->setEnabled(true);

    QLabel *label = new QLabel("<b>Edit Time Derivative</b>");
    addRow(label);
    QComboBox *var = new QComboBox();
    for (int i=0; i< root->al->StateVariableList.size(); i++)
    {
        var->addItem(root->al->StateVariableList[i]->getName());
        if (td->getVariable() != NULL){
            if (root->al->StateVariableList[i]->getName().compare(td->getVariable()->getName()) == 0)
            {
                var->setCurrentIndex(i);
            }
        }
        else
            var->setCurrentIndex(-1);
    }
    connect(var, SIGNAL(currentIndexChanged(QString)), td, SLOT(setVariable(QString)));
    addRow(tr("&Variable:"),var);

    QLineEdit *maths = new QLineEdit();
    maths->installEventFilter(&eventFilterObject);
    maths->setText(td->getMaths()->equation);
    connect(maths, SIGNAL(textEdited(QString)), td, SLOT(setMaths(QString)));
    addRow(tr("&Maths:"),maths);
    addWidget(new QLabel(tr("<i>in physiological units</i>")));

    QStringList errs;
    td->time_derivative->maths->validateMathInLine(root->al.data(), &errs);

    // sort out errors
    QSettings settings;
    int num_errs = settings.beginReadArray("warnings");
    settings.endArray();

    if (num_errs != 0) {

        // show errors by changing lineedit colour
        QPalette p = maths->palette();
        p.setColor( QPalette::Normal, QPalette::Base, QColor(255, 200, 200) );
        maths->setPalette(p);

        // clear errors
        settings.remove("warnings");

    }
    if (num_errs == 0) {

        // show no errors by changing lineedit colour
        QPalette p = maths->palette();
        p.setColor( QPalette::Normal, QPalette::Base, QColor(255, 255, 255) );
        maths->setPalette(p);

        // clear errors
        settings.remove("warnings");
    }
}
示例#27
0
文件: main.cpp 项目: dyfet/coastal-qt
Main::Main(const char *prefix) :
CoastalMain()
{
    ui.setupUi((QMainWindow *)this);
    ui.statusbar->showMessage(tr("loading..."));

    program_name = "Coastal Search";
    program_about = "Coastal File Search Utility";

    QWidget *toolbar = extendToolbar(ui.toolBar);
    tb.setupUi(toolbar);

    ind = NULL;

    if(prefix)
        QDir::setCurrent(prefix);

    dir.setPath(QDir::currentPath());
    history.append(dir.path());

    QSettings settings;
    resize(settings.value("size", QSize(760, 540)).toSize());

    if(settings.value("case", false).toBool())
        casefilter = true;

    if(settings.value("text", false).toBool())
        CoastalView::setSensitive();

    if(types) {
        ui.filterTypes->setText(types);
        ui.filterTypes->setEnabled(false);
    }
    else {
        QString filter = settings.value("filter", ".txt;.log").toString();
        ui.filterTypes->setText(filter);

        int paths = settings.beginReadArray("paths");
    //  qDebug() << "SIZE " << paths << endl;
        for(int path = 0; path < paths; ++path) {
            settings.setArrayIndex(path);
            QString temp = settings.value("path").toString();
    //      qDebug() << "STR " << path << " VALUE " << temp << endl;
            if(temp == dir.path())
                continue;
            history.append(temp);
        }
        settings.endArray();
    }

    ui.indexView->setContextMenuPolicy(Qt::CustomContextMenu);
    connect(ui.indexView, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(open(const QPoint&)));

    connect(ui.actionQuit, SIGNAL(triggered()), qApp, SLOT(quit()));
    connect(ui.actionAbout, SIGNAL(triggered()), this, SLOT(about()));
    connect(ui.actionClear, SIGNAL(triggered()), this, SLOT(clear()));
    connect(ui.actionSearch, SIGNAL(triggered()), this, SLOT(reload()));
    connect(ui.actionOptions, SIGNAL(triggered()), this, SLOT(options()));
    connect(ui.actionSupport, SIGNAL(triggered()), this, SLOT(support()));
    connect(ui.pathButton, SIGNAL(clicked()), this, SLOT(changeDir()));
    connect(ui.pathBox, SIGNAL(currentIndexChanged(int)), this, SLOT(selectDir(int)));

    connect(tb.searchText, SIGNAL(returnPressed()), this, SLOT(reload()));
    connect(ui.searchName, SIGNAL(returnPressed()), this, SLOT(reload()));
    connect(ui.filterTypes, SIGNAL(returnPressed()), this, SLOT(reload()));

    connect(ui.tabs, SIGNAL(tabCloseRequested(int)), this, SLOT(close(int)));
    connect(ui.indexView, SIGNAL(activated(const QModelIndex&)), this, SLOT(open(const QModelIndex&)));

    setContextMenuPolicy(Qt::CustomContextMenu);
    connect(this, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(menu(const QPoint&)));

    connect(ui.actionView, SIGNAL(triggered()), this, SLOT(view()));
    connect(ui.actionOpen, SIGNAL(triggered()), this, SLOT(open()));

    // adding history triggers selectDir...
    ui.pathBox->addItems(history);

    clear();
}
/**
 * This method is an extension of the constructor. It was implemented to reduce the amount of code duplicated between the constuctors.
 */
bool eVisGenericEventBrowserGui::initBrowser()
{

  //setup gui
  setWindowTitle( tr( "Generic Event Browser" ) );

  connect( treeEventData, SIGNAL( itemDoubleClicked( QTreeWidgetItem *, int ) ), this, SLOT( launchExternalApplication( QTreeWidgetItem *, int ) ) );

  mHighlightSymbol.load( ":/evis/eVisHighlightSymbol.png" );
  mPointerSymbol.load( ":/evis/eVisPointerSymbol.png" );
  mCompassOffset = 0.0;

  //Flag to let us know if the browser fully loaded
  mBrowserInitialized = false;

  //Initialize some class variables
  mDefaultEventImagePathField = 0;
  mDefaultCompassBearingField = 0;
  mDefaultCompassOffsetField = 0;

  //initialize Display tab GUI elements
  pbtnNext->setEnabled( false );
  pbtnPrevious->setEnabled( false );


  //Set up Attribute display
  treeEventData->setColumnCount( 2 );
  QStringList treeHeaders;
  treeHeaders << tr( "Field" ) << tr( "Value" );
  treeEventData->setHeaderLabels( treeHeaders );

  //Initialize Options tab GUI elements
  cboxEventImagePathField->setEnabled( true );
  chkboxEventImagePathRelative->setChecked( false );

  chkboxDisplayCompassBearing->setChecked( false );
  cboxCompassBearingField->setEnabled( true );

  rbtnManualCompassOffset->setChecked( false );
  dsboxCompassOffset->setEnabled( true );
  dsboxCompassOffset->setValue( 0.0 );
  rbtnAttributeCompassOffset->setChecked( false );
  cboxCompassOffsetField->setEnabled( true );


  chkboxUseOnlyFilename->setChecked( false );

  QString myThemePath = QgsApplication::activeThemePath();
  pbtnResetEventImagePathData->setIcon( QIcon( QPixmap( myThemePath + "/mActionDraw.svg" ) ) );
  pbtnResetCompassBearingData->setIcon( QIcon( QPixmap( myThemePath + "/mActionDraw.svg" ) ) );
  pbtnResetCompassOffsetData->setIcon( QIcon( QPixmap( myThemePath + "/mActionDraw.svg" ) ) );
  pbtnResetBasePathData->setIcon( QIcon( QPixmap( myThemePath + "/mActionDraw.svg" ) ) );
  pbtnResetUseOnlyFilenameData->setIcon( QIcon( QPixmap( myThemePath + "/mActionDraw.svg" ) ) );
  pbtnResetApplyPathRulesToDocs->setIcon( QIcon( QPixmap( myThemePath + "/mActionDraw.svg" ) ) );

  chkboxSaveEventImagePathData->setChecked( false );
  chkboxSaveCompassBearingData->setChecked( false );
  chkboxSaveCompassOffsetData->setChecked( false );
  chkboxSaveBasePathData->setChecked( false );
  chkboxSaveUseOnlyFilenameData->setChecked( false );

  //Set up Configure External Application buttons
  pbtnAddFileType->setIcon( QIcon( QPixmap( myThemePath + "/mActionNewAttribute.png" ) ) );
  pbtnDeleteFileType->setIcon( QIcon( QPixmap( myThemePath + "/mActionDeleteAttribute.png" ) ) );

  //Check to for interface, not null when launched from plugin toolbar, otherwise expect map canvas
  if ( mInterface )
  {
    //check for active layer
    if ( mInterface->activeLayer() )
    {
      //verify that the active layer is a vector layer
      if ( QgsMapLayer::VectorLayer == mInterface->activeLayer()->type() )
      {
        mVectorLayer = ( QgsVectorLayer* )mInterface->activeLayer();
        mCanvas = mInterface->mapCanvas();
      }
      else
      {
        QMessageBox::warning( this, tr( "Warning" ), tr( "This tool only supports vector data" ) );
        return false;
      }
    }
    else
    {
      QMessageBox::warning( this, tr( "Warning" ), tr( "No active layers found" ) );
      return false;
    }
  }
  //check for map canvas, if map canvas is null, throw error
  else if ( mCanvas )
  {
    //check for active layer
    if ( mCanvas->currentLayer() )
    {
      //verify that the active layer is a vector layer
      if ( QgsMapLayer::VectorLayer == mCanvas->currentLayer()->type() )
      {
        mVectorLayer = ( QgsVectorLayer* )mCanvas->currentLayer();
      }
      else
      {
        QMessageBox::warning( this, tr( "Warning" ), tr( "This tool only supports vector data" ) );
        return false;
      }
    }
    else
    {
      QMessageBox::warning( this, tr( "Warning" ), tr( "No active layers found" ) );
      return false;
    }
  }
  else
  {
    QMessageBox::warning( this, tr( "Error" ), tr( "Unable to connect to either the map canvas or application interface" ) );
    return false;
  }

  //Connect rendering routine for highlighting symbols and load symbols
  connect( mCanvas, SIGNAL( renderComplete( QPainter * ) ), this, SLOT( renderSymbol( QPainter * ) ) );

  mDataProvider = mVectorLayer->dataProvider();

  /*
   * A list of the selected feature ids is made so that we can move forward and backward through
   * the list. The data providers only have the ability to get one feature at a time or
   * sequentially move forward through the selected features
   */
  if ( 0 == mVectorLayer->selectedFeatureCount() ) //if nothing is selected select everything
  {
    mVectorLayer->invertSelection();
    mFeatureIds = mVectorLayer->selectedFeaturesIds().toList();
  }
  else //use selected features
  {
    mFeatureIds = mVectorLayer->selectedFeaturesIds().toList();
  }

  if ( 0 == mFeatureIds.size() )
    return false;

  //get the first feature in the list so we can set the field in the pulldown menues
  QgsFeature* myFeature = featureAtId( mFeatureIds.at( mCurrentFeatureIndex ) );
  if ( !myFeature )
  {
    QMessageBox::warning( this, tr( "Error" ), tr( "An invalid feature was received during initialization" ) );
    return false;
  }

  QgsFields myFields = mDataProvider->fields();
  mIgnoreEvent = true; //Ignore indexChanged event when adding items to combo boxes
  for ( int x = 0; x < myFields.count(); x++ )
  {
    QString name = myFields.at( x ).name();
    cboxEventImagePathField->addItem( name );
    cboxCompassBearingField->addItem( name );
    cboxCompassOffsetField->addItem( name );
    if ( myFeature->attribute( x ).toString().contains( QRegExp( "(jpg|jpeg|tif|tiff|gif)", Qt::CaseInsensitive ) ) )
    {
      mDefaultEventImagePathField = x;
    }

    if ( name.contains( QRegExp( "(comp|bear)", Qt::CaseInsensitive ) ) )
    {
      mDefaultCompassBearingField = x;
    }

    if ( name.contains( QRegExp( "(offset|declination)", Qt::CaseInsensitive ) ) )
    {
      mDefaultCompassOffsetField = x;
    }
  }
  mIgnoreEvent = false;

  //Set Display tab gui items
  if ( mFeatureIds.size() > 1 )
  {
    pbtnNext->setEnabled( true );
  }

  setWindowTitle( tr( "Event Browser - Displaying records 01 of %1" ).arg( mFeatureIds.size(), 2, 10, QChar( '0' ) ) );

  //Set Options tab gui items
  initOptionsTab();

  //Load file associations into Configure External Applications tab gui items
  QSettings myQSettings;
  myQSettings.beginWriteArray( "/eVis/filetypeassociations" );
  int myTotalAssociations = myQSettings.childGroups().count();
  int myIterator = 0;
  while ( myIterator < myTotalAssociations )
  {
    myQSettings.setArrayIndex( myIterator );
    tableFileTypeAssociations->insertRow( tableFileTypeAssociations->rowCount() );
    tableFileTypeAssociations->setItem( myIterator, 0, new QTableWidgetItem( myQSettings.value( "extension", "" ).toString() ) );
    tableFileTypeAssociations->setItem( myIterator, 1, new QTableWidgetItem( myQSettings.value( "application", "" ).toString() ) );
    myIterator++;
  }
  myQSettings.endArray();

  mBrowserInitialized = true;

  return true;
}
void EnggDiffractionViewQtGUI::saveSettings() const {
  QSettings qs;
  qs.beginGroup(QString::fromStdString(g_settingsGroup));

  qs.setValue("user-params-RBNumber", m_ui.lineEdit_RBNumber->text());

  qs.setValue("user-params-current-vanadium-num",
              m_uiTabCalib.lineEdit_current_vanadium_num->text());
  qs.setValue("user-params-current-ceria-num",
              m_uiTabCalib.lineEdit_current_ceria_num->text());
  qs.setValue("current-calib-filename",
              m_uiTabCalib.lineEdit_current_calib_filename->text());

  qs.setValue("user-params-new-vanadium-num",
              m_uiTabCalib.MWRunFiles_new_vanadium_num->getText());
  qs.setValue("user-params-new-ceria-num",
              m_uiTabCalib.MWRunFiles_new_ceria_num->getText());

  qs.setValue("user-params-calib-cropped-group-checkbox",
              m_uiTabCalib.groupBox_calib_cropped->isChecked());

  qs.setValue("user-params-calib-cropped-spectrum-nos",
              m_uiTabCalib.lineEdit_cropped_spec_nos->text());

  qs.setValue("user-params-calib-cropped-customise-name",
              m_uiTabCalib.lineEdit_cropped_customise_bank_name->text());

  qs.setValue("user-param-calib-plot-data",
              m_uiTabCalib.checkBox_PlotData_Calib->isChecked());

  // user params - focusing
  qs.setValue("user-params-focus-runno",
              m_uiTabFocus.MWRunFiles_run_num->getText());

  qs.beginWriteArray("user-params-focus-bank_i");
  qs.setArrayIndex(0);
  qs.setValue("value", m_uiTabFocus.checkBox_focus_bank1->isChecked());
  qs.setArrayIndex(1);
  qs.setValue("value", m_uiTabFocus.checkBox_focus_bank2->isChecked());
  qs.endArray();

  qs.setValue("user-params-focus-cropped-runno",
              m_uiTabFocus.MWRunFiles_cropped_run_num->getText());
  qs.setValue("user-params-focus-cropped-spectrum-nos",
              m_uiTabFocus.lineEdit_cropped_spec_nos->text());

  qs.setValue("user-params-focus-texture-runno",
              m_uiTabFocus.MWRunFiles_texture_run_num->getText());
  qs.setValue("user-params-focus-texture-detector-grouping-file",
              m_uiTabFocus.lineEdit_texture_grouping_file->text());

  qs.setValue("user-params-focus-cropped-group-checkbox",
              m_uiTabFocus.groupBox_cropped->isChecked());

  qs.setValue("user-params-focus-texture-group-checkbox",
              m_uiTabFocus.groupBox_texture->isChecked());

  qs.setValue("user-params-focus-plot-focused-ws",
              m_uiTabFocus.checkBox_plot_focused_ws->isChecked());

  qs.setValue("user-params-focus-save-output-files",
              m_uiTabFocus.checkBox_plot_focused_ws->isChecked());

  qs.setValue("user-params-focus-plot-type",
              m_uiTabFocus.comboBox_PlotData->currentIndex());

  qs.setValue("user-params-multiple-runs-focus-mode",
              m_uiTabFocus.comboBox_Multi_Runs->currentIndex());

  // pre-processing (re-binning)
  qs.setValue("user-params-preproc-runno",
              m_uiTabPreproc.MWRunFiles_preproc_run_num->getText());

  qs.setValue("user-params-time-bin",
              m_uiTabPreproc.doubleSpinBox_time_bin->value());

  qs.setValue("user-params-nperiods", m_uiTabPreproc.spinBox_nperiods->value());

  qs.value("user-params-step-time",
           m_uiTabPreproc.doubleSpinBox_step_time->value());

  // TODO: this should become << >> operators on EnggDiffCalibSettings
  qs.setValue("input-dir-calib-files",
              QString::fromStdString(m_calibSettings.m_inputDirCalib));
  qs.setValue("input-dir-raw-files",
              QString::fromStdString(m_calibSettings.m_inputDirRaw));
  qs.setValue("pixel-calib-filename",
              QString::fromStdString(m_calibSettings.m_pixelCalibFilename));
  // 'advanced' block
  qs.setValue("force-recalc-overwrite", m_calibSettings.m_forceRecalcOverwrite);
  qs.setValue("template-gsas-prm",
              QString::fromStdString(m_calibSettings.m_templateGSAS_PRM));
  qs.setValue("rebin-calib", m_calibSettings.m_rebinCalibrate);

  // 'focusing' block
  qs.setValue("focus-dir", QString::fromStdString(m_focusDir));

  qs.setValue("selected-tab-index", m_ui.tabMain->currentIndex());

  qs.setValue("interface-win-geometry", saveGeometry());
  qs.endGroup();
}
void EnggDiffractionViewQtGUI::readSettings() {
  QSettings qs;
  qs.beginGroup(QString::fromStdString(g_settingsGroup));

  m_ui.lineEdit_RBNumber->setText(
      qs.value("user-params-RBNumber", "").toString());

  m_uiTabCalib.lineEdit_current_vanadium_num->setText(
      qs.value("user-params-current-vanadium-num", "").toString());
  m_uiTabCalib.lineEdit_current_ceria_num->setText(
      qs.value("user-params-current-ceria-num", "").toString());
  QString calibFname = qs.value("current-calib-filename", "").toString();
  m_uiTabCalib.lineEdit_current_calib_filename->setText(calibFname);

  m_uiTabCalib.MWRunFiles_new_vanadium_num->setUserInput(
      qs.value("user-params-new-vanadium-num", "").toString());
  m_uiTabCalib.MWRunFiles_new_ceria_num->setUserInput(
      qs.value("user-params-new-ceria-num", "").toString());

  m_uiTabCalib.groupBox_calib_cropped->setChecked(
      qs.value("user-params-calib-cropped-group-checkbox", false).toBool());

  m_uiTabCalib.comboBox_calib_cropped_bank_name->setCurrentIndex(0);

  m_uiTabCalib.lineEdit_cropped_spec_nos->setText(
      qs.value("user-params-calib-cropped-spectrum-nos", "").toString());

  m_uiTabCalib.lineEdit_cropped_customise_bank_name->setText(
      qs.value("user-params-calib-cropped-customise-name", "cropped")
          .toString());

  m_uiTabCalib.checkBox_PlotData_Calib->setChecked(
      qs.value("user-param-calib-plot-data", true).toBool());

  // user params - focusing
  m_uiTabFocus.MWRunFiles_run_num->setUserInput(
      qs.value("user-params-focus-runno", "").toString());

  qs.beginReadArray("user-params-focus-bank_i");
  qs.setArrayIndex(0);
  m_uiTabFocus.checkBox_focus_bank1->setChecked(
      qs.value("value", true).toBool());
  qs.setArrayIndex(1);
  m_uiTabFocus.checkBox_focus_bank2->setChecked(
      qs.value("value", true).toBool());
  qs.endArray();

  m_uiTabFocus.MWRunFiles_cropped_run_num->setUserInput(
      qs.value("user-params-focus-cropped-runno", "").toString());

  m_uiTabFocus.lineEdit_cropped_spec_nos->setText(
      qs.value("user-params-focus-cropped-spectrum-nos", "").toString());

  m_uiTabFocus.MWRunFiles_texture_run_num->setUserInput(
      qs.value("user-params-focus-texture-runno", "").toString());

  m_uiTabFocus.lineEdit_texture_grouping_file->setText(
      qs.value("user-params-focus-texture-detector-grouping-file", "")
          .toString());

  m_uiTabFocus.groupBox_cropped->setChecked(
      qs.value("user-params-focus-cropped-group-checkbox", false).toBool());

  m_uiTabFocus.groupBox_texture->setChecked(
      qs.value("user-params-focus-texture-group-checkbox", false).toBool());

  m_uiTabFocus.checkBox_plot_focused_ws->setChecked(
      qs.value("user-params-focus-plot-focused-ws", true).toBool());

  m_uiTabFocus.checkBox_save_output_files->setChecked(
      qs.value("user-params-focus-save-output-files", true).toBool());

  m_uiTabFocus.comboBox_PlotData->setCurrentIndex(
      qs.value("user-params-focus-plot-type", 0).toInt());

  m_uiTabFocus.comboBox_Multi_Runs->setCurrentIndex(
      qs.value("user-params-multiple-runs-focus-mode", 0).toInt());

  // pre-processing (re-binning)
  m_uiTabPreproc.MWRunFiles_preproc_run_num->setUserInput(
      qs.value("user-params-preproc-runno", "").toString());

  m_uiTabPreproc.doubleSpinBox_time_bin->setValue(
      qs.value("user-params-time-bin", 0.1).toDouble());

  m_uiTabPreproc.spinBox_nperiods->setValue(
      qs.value("user-params-nperiods", 2).toInt());

  m_uiTabPreproc.doubleSpinBox_step_time->setValue(
      qs.value("user-params-step-time", 1).toDouble());

  // settings
  QString lastPath =
      MantidQt::API::AlgorithmInputHistory::Instance().getPreviousDirectory();
  // TODO: as this is growing, it should become << >> operators on
  // EnggDiffCalibSettings
  m_calibSettings.m_inputDirCalib =
      qs.value("input-dir-calib-files", lastPath).toString().toStdString();

  m_calibSettings.m_inputDirRaw =
      qs.value("input-dir-raw-files", lastPath).toString().toStdString();

  const std::string fullCalib = guessDefaultFullCalibrationPath();
  m_calibSettings.m_pixelCalibFilename =
      qs.value("pixel-calib-filename", QString::fromStdString(fullCalib))
          .toString()
          .toStdString();

  // 'advanced' block
  m_calibSettings.m_forceRecalcOverwrite =
      qs.value("force-recalc-overwrite", false).toBool();

  const std::string templ = guessGSASTemplatePath();
  m_calibSettings.m_templateGSAS_PRM =
      qs.value("template-gsas-prm", QString::fromStdString(templ))
          .toString()
          .toStdString();

  m_calibSettings.m_rebinCalibrate =
      qs.value("rebin-calib", g_defaultRebinWidth).toFloat();

  // 'focusing' block
  m_focusDir = qs.value("focus-dir").toString().toStdString();

  m_ui.tabMain->setCurrentIndex(qs.value("selected-tab-index").toInt());

  restoreGeometry(qs.value("interface-win-geometry").toByteArray());
  qs.endGroup();
}