示例#1
0
        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();
        }
示例#2
0
        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());
            }
        }