예제 #1
0
        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);
        }
예제 #2
0
        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);
            });
        }
예제 #3
0
        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>();
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }