示例#1
0
        [STAThread] // вказує запускати програму в одному потоці
        static void Main()
        {
            OWLanguage language = (OWLanguage)Enum.Parse(typeof(OWLanguage), Properties.Settings.Default.Language);

            MemberInfo[] arrInfo    = language.GetType().GetMember(language.ToString());
            object[]     attributes = arrInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
            Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(((DescriptionAttribute)attributes[0]).Description);

            bool instance = false;

            using (new Mutex(true, "FeD_Lviv.Weather", out instance))
            {
                if (instance)
                {
                    Log.Info("Запуск програми");

                    Application.EnableVisualStyles();                     // підключення візуальних стилів
                    Application.SetCompatibleTextRenderingDefault(false); // задається значения по замовчуванню для властивості UseCompatibleTextRendering (для всіх компонентів, які мають дану властивість)

                    if (Properties.Settings.Default.IsFirst)
                    {
                        new SettingsDialog(null).ShowDialog();
                        if (language != (OWLanguage)Enum.Parse(typeof(OWLanguage), Properties.Settings.Default.Language))
                        {
                            language   = (OWLanguage)Enum.Parse(typeof(OWLanguage), Properties.Settings.Default.Language);
                            arrInfo    = language.GetType().GetMember(language.ToString());
                            attributes = arrInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false);
                            Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(((DescriptionAttribute)attributes[0]).Description);
                        }
                    }

                    Application.Run(new MainForm());

                    Log.Log(LogLevel.Info, "Вихід з програми");
                }
                else
                {
                    ErrorForm form = new ErrorForm(Global.OnlyInstance);
                    form.StartPosition = FormStartPosition.CenterScreen;
                    form.ShowDialog();
                }
            }
        }
        /// <summary>
        /// Метод повертає колекцію ("ключ-значення"/"населений пункт-код населеного пункта").
        /// </summary>
        /// <param name="language">Мова, на якій будуть видаватися назви населених пунктів.</param>
        /// <returns>Колекція, яка містить назви населених пунктів та їх коди для OpenWeatherMap.</returns>
        public static SortedList <string, int> GetCities(OWLanguage language)
        {
            XmlDocument doc = new XmlDocument();

            doc.LoadXml(Properties.Resources.cities);
            SortedList <string, int> list = new SortedList <string, int>();

            foreach (XmlNode x in doc.SelectNodes("/list/city"))
            {
                list.Add(x.Attributes[language.ToString()].Value, int.Parse(x.Attributes["id"].Value));
            }
            return(list);
        }