public static void saveSettings() { List <KeyValuePair <string, string> > lout = new List <KeyValuePair <string, string> >(); for (int i = 0; i < defsetting.Count; i++) { lout.Add(new KeyValuePair <string, string>(defsetting[i].Key, settings[defsetting[i].Key])); } ZDictionaryFileIO.writeFile(lout, Localization.Settings.Symbol_NameContent_Seperator, FILE_NAME); }
public void writeFile(string absolutePath, CultureInfo lang) { IOUtil.inLocalizedEnviroment(lang, () => { string sep = Localization.Settings.Symbol_NameContent_Seperator; string fname = Localization.FileKeywords.FileName_CardBoxInfo + "." + lang.Name + "." + SystemResources.Postfix_File; List <KeyValuePair <string, string> > odata = new List <KeyValuePair <string, string> >(); odata.Add(new KeyValuePair <string, string>(Localization.FileKeywords.CardBox_Title, title)); odata.Add(new KeyValuePair <string, string>(Localization.FileKeywords.CardBox_Creater, creator)); odata.Add(new KeyValuePair <string, string>(Localization.FileKeywords.CardBox_DateCreated, dateCreated)); odata.Add(new KeyValuePair <string, string>(Localization.FileKeywords.CardBox_Index, zu.OtherIfNull(BoxIndexingHandler.getIndexingText(indexing), getDefaults(lang.Name)[Localization.FileKeywords.CardBox_Index]))); string schapters = ""; for (int i = 0; i < chapters.Count; i++) { schapters += chapters[i] + sep; } odata.Add(new KeyValuePair <string, string>(Localization.FileKeywords.CardBox_ChapterNames, schapters)); string scategories = ""; foreach (string s in categories) { scategories += s + sep; } odata.Add(new KeyValuePair <string, string>(Localization.FileKeywords.CardBox_CategoryNames, scategories)); string skeywords = ""; foreach (string s in keywords) { skeywords += s + sep; } odata.Add(new KeyValuePair <string, string>(Localization.FileKeywords.CardBox_KeywordNames, skeywords)); odata.Add(new KeyValuePair <string, string>(Localization.FileKeywords.CardBox_Description, description)); //first deal with file's date, if the file is newly created. Else leave it to default handling if (dateCreated.Trim() == "" && !File.Exists(Path.Combine(absolutePath, fname))) { dateCreated = IOUtil.formatNow(); } //ensures there's a default for this language getDefaults(lang.Name); for (int i = 0; i < odata.Count; i++) {//add defaults to empy attributes KeyValuePair <string, string> p = odata[i]; if (langDefaults[lang.Name].ContainsKey(p.Key) && p.Value == "") { odata[i] = new KeyValuePair <string, string>(p.Key, langDefaults[lang.Name][p.Key]); } } ZDictionaryFileIO.writeFile(odata, sep, absolutePath, fname); }); }
static SettingsFileData() { defsetting = new List <KeyValuePair <string, string> >(); defsetting.Add(new KeyValuePair <string, string>(Localization.FileKeywords.Settings_CurrentLanguage, Thread.CurrentThread.CurrentUICulture.Name)); defsetting.Add(new KeyValuePair <string, string>(Localization.FileKeywords.Settings_UsersName, Localization.Settings.Defaults_UsersName)); defsetting.Add(new KeyValuePair <string, string>(Localization.FileKeywords.Settings_DefaultCardBoxIndex, DEFAULT_INDEXING)); defsetting.Add(new KeyValuePair <string, string>(Localization.FileKeywords.Settings_LastPath, "")); if (!File.Exists(FILE_NAME)) { ZDictionaryFileIO.writeFile(defsetting, Localization.Settings.Symbol_NameContent_Seperator, FILE_NAME); } settings = new Dictionary <string, string>(); List <KeyValuePair <string, string> > fsettings = ZDictionaryFileIO.readFile(Localization.Settings.Symbol_NameContent_Seperator, FILE_NAME); foreach (KeyValuePair <string, string> l in fsettings) { settings.Add(l.Key, l.Value); } bool fileChanged = false; foreach (KeyValuePair <string, string> l in defsetting) { if (!settings.ContainsKey(l.Key)) { settings.Add(l.Key, l.Value); fileChanged = true; } } if (!CardBoxFileData.isValidIndex(settings[Localization.FileKeywords.Settings_DefaultCardBoxIndex])) { settings[Localization.FileKeywords.Settings_DefaultCardBoxIndex] = DEFAULT_INDEXING; } if (fileChanged) { saveSettings(); } listeners = new Dictionary <string, onSettingChanged>(); }
public static CardFileData readFile(FileReadingOverseer overseer, string absolutePath) { string cfname = IOUtil.Delegated_GetApplicableFileWithFeedback(overseer, absolutePath); if (cfname == null) { return(null); } string flang = IOUtil.getFileLang(cfname); CultureInfo stack = Thread.CurrentThread.CurrentUICulture; Thread.CurrentThread.CurrentUICulture = new CultureInfo(flang); List <KeyValuePair <string, string> > fdata = ZDictionaryFileIO.readFile(Localization.Settings.Symbol_NameContent_Seperator, absolutePath, cfname); HashSet <string> missingfields = IOUtil.CheckFDataHaveAllDefaults(fdata, getDefaults(flang)); if (missingfields.Count > 0) { Thread.CurrentThread.CurrentUICulture = stack; Instruction i = overseer.onFileInvalid(Localization.Messages.FileIO_FieldMissing, missingfields.ToArray()); Thread.CurrentThread.CurrentUICulture = new CultureInfo(flang); return(null); // TODO: Process the instruction } CardFileData cfd = new CardFileData(); cfd.lang = flang; foreach (var entry in fdata) { string att = entry.Key; string val = entry.Value; if (att == Localization.FileKeywords.Card_Name) { cfd.name = val; } else if (att == Localization.FileKeywords.Card_Text) { cfd.text = val; } else if (att == Localization.FileKeywords.Card_Creater) { cfd.creater = val; } else if (att == Localization.FileKeywords.Card_DateCreated) { cfd.dateCreated = val; } else if (att == Localization.FileKeywords.Card_Category) { cfd.category = val; } else if (att == Localization.FileKeywords.Card_ChapterName) { cfd.chapterName = val; } else if (att == Localization.FileKeywords.Card_Keywords) { cfd.keywords = new HashSet <string>(); cfd.keywords.UnionWith(zusp.Split(val, Localization.Settings.Symbol_NameContent_Seperator).ToList()); } } cfd.path = absolutePath; Thread.CurrentThread.CurrentUICulture = stack; return(cfd); }
public static CardBoxFileData readFile(FileReadingOverseer overseer, string absolutePath) { string bfname = IOUtil.Delegated_GetApplicableFileWithFeedback(overseer, absolutePath); string flang = IOUtil.getFileLang(bfname); CultureInfo stack = Thread.CurrentThread.CurrentUICulture; Thread.CurrentThread.CurrentUICulture = new CultureInfo(flang); List <KeyValuePair <string, string> > fdata = ZDictionaryFileIO.readFile(Localization.Settings.Symbol_NameContent_Seperator, absolutePath, bfname); //construct a set of file attributes that we want to ensure they are there and cross them off so its linear time to number of lines HashSet <string> missingfields = IOUtil.CheckFDataHaveAllDefaults(fdata, getDefaults(flang)); if (missingfields.Count > 0) { Thread.CurrentThread.CurrentUICulture = stack; Instruction i = overseer.onFileInvalid(Localization.Messages.FileIO_FieldMissing, missingfields.ToArray()); Thread.CurrentThread.CurrentUICulture = new CultureInfo(flang); // TODO: Process the instruction } //now the file should have all nesscairy properties. CardBoxFileData cbd = new CardBoxFileData(); cbd.lang = flang; foreach (var entry in fdata) { string att = entry.Key; string val = entry.Value; if (att == Localization.FileKeywords.CardBox_Title) { cbd.title = val; } else if (att == Localization.FileKeywords.CardBox_Description) { cbd.description = val; } else if (att == Localization.FileKeywords.CardBox_Creater) { cbd.creator = val; } else if (att == Localization.FileKeywords.CardBox_DateCreated) { cbd.dateCreated = val; } else if (att == Localization.FileKeywords.CardBox_Index) { cbd.indexing = BoxIndexingHandler.getIndexingEnum(val); } else if (att == Localization.FileKeywords.CardBox_CategoryNames) { cbd.categories = new SortedSet <string>(); cbd.categories.UnionWith(zusp.Split(val, Localization.Settings.Symbol_NameContent_Seperator).ToList()); } else if (att == Localization.FileKeywords.CardBox_ChapterNames) { cbd.chapters = zusp.Split(val, Localization.Settings.Symbol_NameContent_Seperator).ToList(); } else if (att == Localization.FileKeywords.CardBox_KeywordNames) { cbd.keywords = new HashSet <string>(); cbd.keywords.UnionWith(zusp.Split(val, Localization.Settings.Symbol_NameContent_Seperator).ToList()); } } if (cbd.indexing == BoxIndexing.INVALID) { string flindex = Localization.FileKeywords.CardBox_Index; Thread.CurrentThread.CurrentUICulture = stack; Instruction i = overseer.onFileInvalid(Localization.Messages.FileIO_FieldValueNotValid, flindex); Thread.CurrentThread.CurrentUICulture = new CultureInfo(flang); } Thread.CurrentThread.CurrentCulture = stack; return(cbd); }