private IEnumerator <object> ReadPreferences() { txtIndexLocation.Text = Program.DatabasePath; { Future <string> f; yield return(DB.GetPreference("TextEditor.Name").Run(out f)); cbTextEditor.Text = f.Result ?? "SciTE"; yield return(DB.GetPreference("TextEditor.Location").Run(out f)); txtEditorLocation.Text = f.Result ?? @"C:\Program Files\SciTE\SciTE.exe"; } yield return(ReadHotkeyPreference("SearchFiles", hkSearchFiles)); { TagDatabase.Folder[] folders = null; var iter = new TaskEnumerator <TagDatabase.Folder>(DB.GetFolders()); yield return(iter.GetArray().Bind(() => folders)); Folders.Clear(); if (folders != null) { Folders.AddRange(folders); } RefreshFolderList(); } using (var iter = new TaskEnumerator <TagDatabase.Filter>(DB.GetFilters())) while (!iter.Disposed) { yield return(iter.Fetch()); foreach (var filter in iter) { Filters.Add(filter.Pattern); } } RefreshFileTypeList(); }
public static IEnumerator <object> RebuildIndexTask(bool saveOldData) { using (new ActiveWorker("Rebuilding index...")) { var conn = new SQLiteConnection(String.Format("Data Source={0}", DatabasePath + "_new")); conn.Open(); var cw = new ConnectionWrapper(Scheduler, conn); yield return(cw.ExecuteSQL("PRAGMA auto_vacuum=none")); long schemaVersion = GetEmbeddedSchemaVersion(); var fSchema = cw.ExecuteSQL(GetEmbeddedSchema()); yield return(fSchema); var trans = cw.CreateTransaction(); yield return(trans); if (saveOldData) { using (var iter = new TaskEnumerator <TagDatabase.Folder>(Database.GetFolders())) while (!iter.Disposed) { yield return(iter.Fetch()); foreach (TagDatabase.Folder item in iter) { yield return(cw.ExecuteSQL( "INSERT INTO Folders (Folders_Path, Folders_Excluded) VALUES (?, ?)", item.Path, item.Excluded )); } } } if (saveOldData) { using (var iter = new TaskEnumerator <TagDatabase.Filter>(Database.GetFilters())) while (!iter.Disposed) { yield return(iter.Fetch()); foreach (TagDatabase.Filter item in iter) { yield return(cw.ExecuteSQL( "INSERT INTO Filters (Filters_Pattern) VALUES (?)", item.Pattern )); } } } if (saveOldData) { using (var iter = Database.Connection.BuildQuery( "SELECT Preferences_Name, Preferences_Value FROM Preferences" ).Execute()) while (!iter.Disposed) { yield return(iter.Fetch()); foreach (IDataRecord item in iter) { yield return(cw.ExecuteSQL( "INSERT INTO Preferences (Preferences_Name, Preferences_Value) VALUES (?, ?)", item.GetValue(0), item.GetValue(1) )); } } } yield return(trans.Commit()); yield return(Database.Connection.Dispose()); yield return(RestartTask()); } }