Ejemplo n.º 1
0
 public async Task TestAsync()
 {
     using (var dict = new StarDict(@"E:\Downloads\dict\stardict-freedict-eng-nld-2.4.2\dictd_www.freedict.de_eng-nld"))
     {
         await dict.Init();
     }
 }
Ejemplo n.º 2
0
 private async void ButtonBase_OnClick(object sender, RoutedEventArgs e)
 {
     using (var dict = new StarDict(@"E:\Downloads\dict\stardict-freedict-eng-nld-2.4.2\dictd_www.freedict.de_eng-nld"))
     {
         await dict.Init();
     }
 }
Ejemplo n.º 3
0
        private async void OpenFolder_OnClick(object sender, RoutedEventArgs e)
        {
            var picker = new FolderPicker
            {
                CommitButtonText = "Select",
                ViewMode         = PickerViewMode.List
            };

            picker.FileTypeFilter.Add(".idx");
            picker.FileTypeFilter.Add(".dz");
            picker.FileTypeFilter.Add(".ifo");
            picker.SettingsIdentifier = "FolderPicker";
            var folder = await picker.PickSingleFolderAsync();

            StorageApplicationPermissions.FutureAccessList.AddOrReplace("PickedFolderToken", folder);
            var abstractFolder = new PCLStorage.WinRTFolder(folder);

            using (var dict = new StarDict(abstractFolder, @"dictd_www.freedict.de_eng-nld"))
            {
                await dict.Init();
            }
        }
Ejemplo n.º 4
0
        public static void UpdateDatabase(SQLiteConnection connection, SQLiteTransaction transaction)
        {
            var folder =
                Path.Combine(
                    new[] { typeof(StarDictDictionaries).GetAssemblyPath() }.Concat(
                        typeof(StarDictDictionaries).Namespace.Split('.').Skip(1)).ToArray());

            foreach (var dictionaryFolder in Directory.EnumerateDirectories(Path.Combine(folder, "Dictionaries")))
            {
                var infoFile = Directory.EnumerateFiles(dictionaryFolder).FirstOrDefault(_ => _.EndsWith(".ifo"));
                if (infoFile == null)
                {
                    continue;
                }

                var dict = StarDict.TryOpen(infoFile.Substring(0, infoFile.Length - 4));

                foreach (var result in dict.Search(string.Empty))
                {
                    Console.WriteLine(result);
                }
            }

            /*
             *  const string sql = @"INSERT OR REPLACE INTO dictionary
             * (
             * rowid,
             * simplified,
             * traditional,
             * pinyin,
             * definition,
             * classifier,
             * hsk_level,
             * part_of_speech,
             * frequency,
             * concept,
             * topic,
             * parent_topic,
             * notes
             * )
             * SELECT
             * old.rowid,
             * COALESCE(old.simplified, new.simplified),
             * COALESCE(old.traditional, new.traditional),
             * COALESCE(old.pinyin, new.pinyin),
             * COALESCE(old.definition, new.definition),
             * old.classifier,
             * old.hsk_level,
             * COALESCE(old.part_of_speech, new.part_of_speech),
             * old.frequency,
             * COALESCE(old.concept, new.concept),
             * COALESCE(old.topic, new.topic),
             * COALESCE(old.parent_topic, new.parent_topic),
             * COALESCE(old.notes, new.notes)
             * FROM (SELECT @simplified AS simplified, @traditional AS traditional, @pinyin AS pinyin, @definition AS definition, @part_of_speech as part_of_speech, @concept as concept, @topic as topic, @parent_topic as parent_topic, @notes as notes) AS new
             * LEFT JOIN (SELECT * FROM dictionary WHERE simplified=@simplified and simplified not null and pinyin=@pinyin)
             * AS old ON new.simplified = old.simplified and new.pinyin = old.pinyin";
             *
             *  var insert = new SQLiteCommand(sql, connection, transaction);
             *  insert.Prepare();
             *
             *  var defs = new Dictionary<string, Entry>();
             *  foreach (var line in lines)
             *  {
             *      if (line.StartsWith("#")) continue;
             *      var tokens = line.Split('\t');
             *
             *      var simplified = tokens[1];
             *      var pinyin = PinyinUtil.ConvertAccentedUnspacedToNumbered(tokens[3]);
             *      var key = simplified + pinyin;
             *      Entry entry;
             *      if (!defs.TryGetValue(key, out entry))
             *      {
             *          entry = defs[key] = new Entry();
             *      }
             *
             *      entry.Simplified = entry.Simplified ?? simplified;
             *      entry.Traditional = entry.Traditional ?? tokens[2];
             *      entry.Pinyin = entry.Pinyin ?? pinyin;
             *      var definition = GetOrDefault(tokens, 4);
             *      if (!string.IsNullOrWhiteSpace(definition))
             *      {
             *          if (!string.IsNullOrWhiteSpace(entry.Definition))
             *          {
             *              entry.Definition += ", " + definition;
             *          }
             *          else
             *          {
             *              entry.Definition = definition.ToSentenceCase();
             *          }
             *      }
             *
             *      entry.PartOfSpeech = GetOrDefault(tokens, 5);
             *      entry.Concept = GetOrDefault(tokens, 7);
             *      entry.Topic = GetOrDefault(tokens, 9);
             *      entry.ParentTopic = GetOrDefault(tokens, 11);
             *      entry.Notes = GetOrDefault(tokens, 14);
             *  }
             *
             *  foreach (var entry in defs.Values)
             *  {
             *      var p = insert.Parameters;
             *      p.Clear();
             *      p.AddIfSet("simplified", entry.Simplified);
             *      p.AddIfSet("traditional", entry.Traditional);
             *      p.AddIfSet("pinyin", entry.Pinyin);
             *      p.AddIfSet("definition", entry.Definition);
             *
             *      // TODO: Encode PoS information in an int instead of a string.
             *      p.AddIfSet("part_of_speech", entry.PartOfSpeech);
             *      p.AddIfSet("concept", entry.Concept);
             *      p.AddIfSet("topic", entry.Topic);
             *      p.AddIfSet("parent_topic", entry.ParentTopic);
             *      p.AddIfSet("notes", entry.Notes);
             ++modifiedRows;
             *      insert.ExecuteNonQuery();
             *  }
             *
             * }*/
        }