コード例 #1
0
// static
already_AddRefed<IDBDatabase>
IDBDatabase::Create(nsIScriptContext* aScriptContext,
                    nsPIDOMWindow* aOwner,
                    already_AddRefed<DatabaseInfo> aDatabaseInfo,
                    const nsACString& aASCIIOrigin,
                    FileManager* aFileManager)
{
  NS_ASSERTION(NS_IsMainThread(), "Wrong thread!");
  NS_ASSERTION(!aASCIIOrigin.IsEmpty(), "Empty origin!");

  nsRefPtr<DatabaseInfo> databaseInfo(aDatabaseInfo);
  NS_ASSERTION(databaseInfo, "Null pointer!");

  nsRefPtr<IDBDatabase> db(new IDBDatabase());

  db->mScriptContext = aScriptContext;
  db->mOwner = aOwner;

  db->mDatabaseId = databaseInfo->id;
  db->mName = databaseInfo->name;
  db->mFilePath = databaseInfo->filePath;
  databaseInfo.swap(db->mDatabaseInfo);
  db->mASCIIOrigin = aASCIIOrigin;
  db->mFileManager = aFileManager;

  IndexedDatabaseManager* mgr = IndexedDatabaseManager::Get();
  NS_ASSERTION(mgr, "This should never be null!");

  if (!mgr->RegisterDatabase(db)) {
    // Either out of memory or shutting down.
    return nsnull;
  }

  return db.forget();
}
コード例 #2
0
void MainWindow::saveDatabase()
{
    if (!database()->isReadOnly() && database()->isModified())
    {
        Output output(Output::Pgn);
        output.output(database()->filename(), *database());
    }
    emit databaseChanged(databaseInfo());
}
コード例 #3
0
ファイル: qgsgrassnewmapset.cpp プロジェクト: nbozon/QGIS
void QgsGrassNewMapset::databaseChanged()
{
    QgsDebugMsg( "entered." );
    // TODO: reset next tabs
    //
    QSettings settings;
    settings.setValue( "/GRASS/lastGisdbase", mDatabaseLineEdit->text() );

    button( QWizard::NextButton )->setEnabled( false );
    setError( mDatabaseErrorLabel, "" );

    QString database = mDatabaseLineEdit->text().trimmed();

    if ( database.length() == 0 )
    {
        setError( mDatabaseErrorLabel, tr( "Enter path to GRASS database" ) );
        return;
    }

    QFileInfo databaseInfo( mDatabaseLineEdit->text() );

    if ( !databaseInfo.exists() )
    {
        setError( mDatabaseErrorLabel, tr( "The directory doesn't exist!" ) );
        return;
    }

    // Check if at least one writable location exists or
    // database is writable
    bool locationExists = false;
    QDir d( mDatabaseLineEdit->text() );
    for ( unsigned int i = 0; i < d.count(); i++ )
    {
        if ( d[i] == "." || d[i] == ".." )
            continue;

        QString windName = mDatabaseLineEdit->text() + "/" + d[i] + "/PERMANENT/DEFAULT_WIND";
        QString locationName = mDatabaseLineEdit->text() + "/" + d[i];
        QFileInfo locationInfo( locationName );

        if ( QFile::exists( windName ) && locationInfo.isWritable() )
        {
            locationExists = true;
            break;
        }
    }

    if ( locationExists || databaseInfo.isWritable() )
    {
        button( QWizard::NextButton )->setEnabled( true );
    }
    else
    {
        setError( mDatabaseErrorLabel, tr( "No writable locations, the database is not writable!" ) );
    }
}
コード例 #4
0
bool QgsGrassNewMapset::gisdbaseExists()
{
  QFileInfo databaseInfo( gisdbase() );
  return databaseInfo.exists();
}