// 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(); }
void MainWindow::saveDatabase() { if (!database()->isReadOnly() && database()->isModified()) { Output output(Output::Pgn); output.output(database()->filename(), *database()); } emit databaseChanged(databaseInfo()); }
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!" ) ); } }
bool QgsGrassNewMapset::gisdbaseExists() { QFileInfo databaseInfo( gisdbase() ); return databaseInfo.exists(); }