Ejemplo n.º 1
0
bool ColorSchemeManager::loadColorScheme( const QString &filePath )
{
  if ( !filePath.endsWith( QLatin1String( ".colorscheme" ) ) || !QFile::exists( filePath ) )
    return false;

  QFileInfo info( filePath );

  const QString &schemeName = info.baseName();

  ColorScheme *scheme = new ColorScheme();
  scheme->setName( schemeName );
  scheme->read( filePath );

  if ( scheme->name().isEmpty() )
  {
    qDebug() << "Color scheme in" << filePath << "does not have a valid name and was not loaded.";
    delete scheme;
    return false;
  }

  if ( !_colorSchemes.contains( schemeName ) )
  {
    _colorSchemes.insert( schemeName, scheme );
  }
  else
  {
    qDebug() << "color scheme with name" << schemeName << "has already been" <<
             "found, ignoring.";

    delete scheme;
  }

  return true;
}
Ejemplo n.º 2
0
bool ColorSchemeManager::loadKDE3ColorScheme( const QString &filePath )
{
  QFile file( filePath );
  if ( !filePath.endsWith( QLatin1String( ".schema" ) ) || !file.open( QIODevice::ReadOnly ) )
    return false;

  KDE3ColorSchemeReader reader( &file );
  ColorScheme *scheme = reader.read();
  scheme->setName( QFileInfo( file ).baseName() );
  file.close();

  if ( scheme->name().isEmpty() )
  {
    qDebug() << "color scheme name is not valid.";
    delete scheme;
    return false;
  }

  QFileInfo info( filePath );

  if ( !_colorSchemes.contains( info.baseName() ) )
    _colorSchemes.insert( scheme->name(), scheme );
  else
  {
    qDebug() << "color scheme with name" << scheme->name() << "has already been" <<
             "found, ignoring.";
    delete scheme;
  }

  return true;
}
Ejemplo n.º 3
0
void SettingsDialog::updateSchemeButton_clicked()
{
    int index;
    QString oldName = schemeComboBox->currentText();
    QString newName = schemeLineEdit->text();

    if (schemeComboBox->currentIndex() > 1) {		// Edit scheme
	if (newName != oldName) {
	    if (ColorScheme::lookupScheme(newName) == true)
		goto conflict;
	    index = schemeComboBox->currentIndex();
	    schemeComboBox->setItemText(index, newName);
	}
	for (int i = 0; i < globalSettings.colorSchemes.size(); i++) {
	    if (oldName == globalSettings.colorSchemes[i].name()) {
		globalSettings.colorSchemes[i].setName(newName);
		updateSchemeColors(&globalSettings.colorSchemes[i]);
		break;
	    }
	}
    }
    else if (schemeComboBox->currentIndex() == 1) {	// New Scheme
	if (ColorScheme::lookupScheme(newName) == true)
	    goto conflict;
	ColorScheme scheme;
	my.newScheme = newName;
	scheme.setName(newName);
	updateSchemeColors(&scheme);
	index = globalSettings.colorSchemes.size();
	globalSettings.colorSchemes.append(scheme);
	pmchart->newScheme(my.newScheme);
	schemeComboBox->blockSignals(true);
	schemeComboBox->addItem(newName);
	schemeComboBox->setCurrentIndex(index + 2);
	schemeComboBox->blockSignals(false);
    }
    else if (schemeComboBox->currentIndex() == 0) {	// Default
	updateSchemeColors(&globalSettings.defaultScheme);
    }
    globalSettings.colorSchemesModified = true;
    writeSettings();
    return;

conflict:
    QString msg = newName;
    msg.prepend("New scheme name \"");
    msg.append("\" conflicts with an existing name");
    QMessageBox::warning(this, pmProgname, msg);
}
Ejemplo n.º 4
0
void EditProfileDialog::showColorSchemeEditor(bool isNewScheme)
{    
    QModelIndexList selected = _ui->colorSchemeList->selectionModel()->selectedIndexes();

    QAbstractItemModel* model = _ui->colorSchemeList->model();
    const ColorScheme* colors = 0;
    if ( !selected.isEmpty() )
        colors = model->data(selected.first(),Qt::UserRole+1).value<const ColorScheme*>();
    else
        colors = ColorSchemeManager::instance()->defaultColorScheme();

    Q_ASSERT(colors);

    KDialog* dialog = new KDialog(this);

    if ( isNewScheme )
        dialog->setCaption(i18n("New Color Scheme"));
    else
        dialog->setCaption(i18n("Edit Color Scheme"));

    ColorSchemeEditor* editor = new ColorSchemeEditor;
    dialog->setMainWidget(editor);
    editor->setup(colors);

    if ( isNewScheme )
        editor->setDescription(i18n("New Color Scheme"));
        
    if ( dialog->exec() == QDialog::Accepted )
    {
        ColorScheme* newScheme = new ColorScheme(*editor->colorScheme());

        // if this is a new color scheme, pick a name based on the description
        if ( isNewScheme )
            newScheme->setName(newScheme->description());

        ColorSchemeManager::instance()->addColorScheme( newScheme );
        
        updateColorSchemeList(true);

        preview(Profile::ColorScheme,newScheme->name());
    }
}