コード例 #1
0
        // Кнопка "Ок"
        private void OkButton_Click(object sender, EventArgs e)
        {
            // [Общие]
            Properties.Settings.Default.data_source   = DataSourceComboBox.SelectedIndex;
            Properties.Settings.Default.min_accuracy  = Convert.ToInt32(MinAccuracyNumericUpDown.Value);
            Properties.Settings.Default.max_data      = Convert.ToInt32(MaxDataNumericUpDown.Value);
            Properties.Settings.Default.tray_minimize = SysTrayCheckBox.Checked;
            Properties.Settings.Default.disable_exit  = DisableExitCheckBox.Checked;
            // Общие: язык интерфейса
            int    culture_index     = 0;
            string selected_language = string.Empty;

            CultureInfo[] CulturesList = CultureInfo.GetCultures(CultureTypes.NeutralCultures);
            foreach (CultureInfo CultureItem in CulturesList)
            {
                try
                {
                    ResourceSet CultureResource = MainForm.Translate.GetResourceSet(CultureItem, true, false);
                    if (CultureResource != null)
                    {
                        culture_index = culture_index + 1;
                        if (LanguageComboBox.SelectedIndex == culture_index)
                        {
                            selected_language = CultureItem.ToString();
                        }
                    }
                }
                catch
                {
                }
            }
            if (Properties.Settings.Default.language != selected_language)
            {
                Properties.Settings.Default.language = selected_language;
                MainForm.Culture = (selected_language.Length > 0) ? CultureInfo.CreateSpecificCulture(selected_language) : CultureInfo.CurrentCulture;
                MainForm Parent = (MainForm)Owner;
                Parent.reloadForm();
            }

            // [COM порт]
            Properties.Settings.Default.com_port  = (SelectPortRadioButton.Checked ? ComPortComboBox.SelectedItem.ToString() : ComPortTextBox.Text);
            Properties.Settings.Default.baud_rate = (BaudRateRadioButton.Checked ? Int32.Parse(BaudRateComboBox.SelectedItem.ToString()) : Int32.Parse(BaudRateTextBox.Text));
            Properties.Settings.Default.data_bits = Int32.Parse(DataBitsComboBox.SelectedItem.ToString());
            Properties.Settings.Default.stop_bits = StopBitsComboBox.SelectedIndex;
            Properties.Settings.Default.parity    = ParityComboBox.SelectedIndex;

            // [HTTP запрос]
            Properties.Settings.Default.http_url           = HttpUrlTextBox.Text;
            Properties.Settings.Default.http_method        = (HttpGetRadioButton.Checked ? 0 : 1);
            Properties.Settings.Default.http_data          = HttpDataTextBox.Text;
            Properties.Settings.Default.http_useragent     = HttpUserAgentTextBox.Text;
            Properties.Settings.Default.http_interval      = Int32.Parse(IntervalTextBox.Text);
            Properties.Settings.Default.http_response      = HttpResponseMethodComboBox.SelectedIndex;
            Properties.Settings.Default.http_accuracy      = HttpAccuracyCheckBox.Checked;
            Properties.Settings.Default.http_accuracy_exp  = HttpAccuracyTextBox.Text;
            Properties.Settings.Default.http_radiation     = HttpRadiationCheckBox.Checked;
            Properties.Settings.Default.http_radiation_exp = HttpRadiationTextBox.Text;
            Properties.Settings.Default.http_unit          = HttpUnitTextBox.Text;

            // [Автозагрузка]
            RegistryKey reg_key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);

            if (AutostartCheckBox.Checked)
            {
                string reg_value = "\"" + Application.ExecutablePath + "\"";
                reg_value += (MinimizeCheckBox.Checked) ? " /minimize" : "";
                reg_value += (MaximizeCheckBox.Checked) ? " /maximize" : "";
                reg_value += (AutoconnectCheckBox.Checked) ? " /connect" : "";
                reg_key.SetValue(System.Reflection.Assembly.GetExecutingAssembly().GetName().Name, reg_value);
            }
            else
            {
                if (reg_key.GetValue(System.Reflection.Assembly.GetExecutingAssembly().GetName().Name) != null)
                {
                    reg_key.DeleteValue(System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);
                }
            }

            // [Допуски]
            Properties.Settings.Default.warning_level = Convert.ToSingle(WarningLvlNumericUpDown.Value);
            Properties.Settings.Default.danger_level  = Convert.ToSingle(DangerLvlNumericUpDown.Value);

            // [Уведомления]
            Properties.Settings.Default.voice_notify = VoiceNotifyCheckBox.Checked;
            Properties.Settings.Default.tray_notify  = TrayNotifyCheckBox.Checked;

            // Сохраняем
            Properties.Settings.Default.Save();
            this.Close();
        }
コード例 #2
0
        // Окно настроек загружено
        private void SettingsForm_Load(object sender, EventArgs e)
        {
            int selected_index;

            this.Text         = MainForm.Translate.GetString("settings", MainForm.Culture);
            OkButton.Text     = MainForm.Translate.GetString("ok", MainForm.Culture);
            CancelButton.Text = MainForm.Translate.GetString("cancel", MainForm.Culture);

            // [Общее]
            tabGeneral.Text = MainForm.Translate.GetString("general", MainForm.Culture);
            // Общее: язык интерфейса
            LanguageLabel.Text    = MainForm.Translate.GetString("language", MainForm.Culture);
            LanguageComboBox.Left = LanguageLabel.Left + LanguageLabel.Width + 6;
            selected_index        = 0;
            LanguageComboBox.Items.Clear();
            LanguageComboBox.Items.Add(MainForm.Translate.GetString("autodetect", MainForm.Culture));
            CultureInfo[] CulturesList = CultureInfo.GetCultures(CultureTypes.NeutralCultures);
            foreach (CultureInfo CultureItem in CulturesList)
            {
                try
                {
                    ResourceSet CultureResource = MainForm.Translate.GetResourceSet(CultureItem, true, false);
                    if (CultureResource != null)
                    {
                        int index = LanguageComboBox.Items.Add(CultureItem.NativeName[0].ToString().ToUpper() + CultureItem.NativeName.Substring(1));
                        if (Properties.Settings.Default.language == CultureItem.ToString())
                        {
                            selected_index = index;
                        }
                    }
                }
                catch
                {
                }
            }
            LanguageComboBox.SelectedIndex = selected_index;
            // Общее: источник данных
            DataSourceLabel.Text    = MainForm.Translate.GetString("data_source", MainForm.Culture);
            DataSourceComboBox.Left = DataSourceLabel.Left + DataSourceLabel.Width + 6;
            DataSourceComboBox.Items.Clear();
            DataSourceComboBox.Items.Add(MainForm.Translate.GetString("com_port", MainForm.Culture));
            DataSourceComboBox.Items.Add(MainForm.Translate.GetString("http_request", MainForm.Culture));
            DataSourceComboBox.SelectedIndex = Properties.Settings.Default.data_source;
            // Общее: минимальная точность
            MinAccuracyLabel.Text          = MainForm.Translate.GetString("min_accuracy", MainForm.Culture);
            MinAccuracyNumericUpDown.Left  = MinAccuracyLabel.Left + MinAccuracyLabel.Width + 6;
            MinAccuracyNumericUpDown.Value = Properties.Settings.Default.min_accuracy;
            // Общее: размер буфера
            MaxDataLabel.Text          = MainForm.Translate.GetString("max_data", MainForm.Culture);
            MaxDataNumericUpDown.Left  = MaxDataLabel.Left + MaxDataLabel.Width + 6;
            MaxDataNumericUpDown.Value = Properties.Settings.Default.max_data;
            // Общее: сворачивать в системный трей
            SysTrayCheckBox.Text    = MainForm.Translate.GetString("tray_minimize", MainForm.Culture);
            SysTrayCheckBox.Checked = Properties.Settings.Default.tray_minimize;
            // Общее: отключить кнопку выхода
            DisableExitCheckBox.Text    = MainForm.Translate.GetString("disable_exit", MainForm.Culture);
            DisableExitCheckBox.Checked = Properties.Settings.Default.disable_exit;

            // [COM порт]
            tabCOMport.Text = MainForm.Translate.GetString("com_port", MainForm.Culture);
            // COM порт: выбор порта (combo box)
            SelectPortRadioButton.Text = MainForm.Translate.GetString("select_com_port", MainForm.Culture);
            ComPortComboBox.Left       = SelectPortRadioButton.Left + SelectPortRadioButton.Width + 6;
            selected_index             = -1;
            string[] ports = SerialPort.GetPortNames();
            ComPortComboBox.Items.Clear();
            foreach (var port in ports)
            {
                int index = ComPortComboBox.Items.Add(port);
                if (port == Properties.Settings.Default.com_port)
                {
                    selected_index = index;
                    SelectPortRadioButton.Checked = true;
                }
            }
            ComPortComboBox.SelectedIndex = (selected_index < 0 ? 0 : selected_index);
            SelectPortRadioButton_CheckedChanged(this, null);
            // COM порт: выбор порта (text box)
            ComPortCustomRadioButton.Left    = ComPortComboBox.Left + ComPortComboBox.Width + 6;
            ComPortCustomRadioButton.Text    = MainForm.Translate.GetString("com_port_custom", MainForm.Culture);
            ComPortTextBox.Left              = ComPortCustomRadioButton.Left + ComPortCustomRadioButton.Width + 6;
            ComPortTextBox.Text              = (selected_index < 0 ? Properties.Settings.Default.com_port : string.Empty);
            ComPortCustomRadioButton.Checked = (selected_index < 0);
            ComPortCustomRadioButton_CheckedChanged(this, null);
            // COM порт: скорость (combo box)
            BaudRateRadioButton.Text = MainForm.Translate.GetString("baud_rate", MainForm.Culture);
            BaudRateComboBox.Left    = BaudRateRadioButton.Left + BaudRateRadioButton.Width + 6;
            selected_index           = -1;
            string[] baud_rates = { "300", "600", "1200", "2400", "4800", "9600", "14400", "19200", "28800", "38400", "56000", "57600", "115200", "128000", "256000" };
            BaudRateComboBox.Items.Clear();
            foreach (var baud_rate in baud_rates)
            {
                int index = BaudRateComboBox.Items.Add(baud_rate);
                if (baud_rate == Properties.Settings.Default.baud_rate.ToString())
                {
                    selected_index = index;
                    BaudRateRadioButton.Checked = true;
                }
            }
            BaudRateComboBox.SelectedIndex = (selected_index < 0 ? 0 : selected_index);
            BaudRateRadioButton_CheckedChanged(this, null);
            // COM порт: скорость (text box)
            BaudRateCustomRadioButton.Left    = BaudRateComboBox.Left + BaudRateComboBox.Width + 6;
            BaudRateCustomRadioButton.Text    = MainForm.Translate.GetString("baud_rate_custom", MainForm.Culture);
            BaudRateTextBox.Left              = BaudRateCustomRadioButton.Left + BaudRateCustomRadioButton.Width + 6;
            BaudRateTextBox.Text              = (selected_index < 0 ? Properties.Settings.Default.baud_rate.ToString() : string.Empty);
            BaudRateCustomRadioButton.Checked = (selected_index < 0);
            BaudRateCustomRadioButton_CheckedChanged(this, null);
            // COM порт: биты данных
            DataBitsLabel.Text    = MainForm.Translate.GetString("data_bits", MainForm.Culture);
            DataBitsComboBox.Left = DataBitsLabel.Left + DataBitsLabel.Width + 6;
            selected_index        = -1;
            string[] data_bits = { "4", "5", "6", "7", "8" };
            DataBitsComboBox.Items.Clear();
            foreach (var data_bit in data_bits)
            {
                int index = DataBitsComboBox.Items.Add(data_bit);
                if (data_bit == Properties.Settings.Default.data_bits.ToString())
                {
                    selected_index = index;
                }
            }
            DataBitsComboBox.SelectedIndex = (selected_index < 0 ? 0 : selected_index);
            // COM порт: стоповые биты
            StopBitsLabel.Text    = MainForm.Translate.GetString("stop_bits", MainForm.Culture);
            StopBitsComboBox.Left = StopBitsLabel.Left + StopBitsLabel.Width + 6;
            selected_index        = -1;
            string[] stop_bits = { "1", "1.5", "2" };
            StopBitsComboBox.Items.Clear();
            foreach (var stop_bit in stop_bits)
            {
                int index = StopBitsComboBox.Items.Add(stop_bit);
                if (index == Properties.Settings.Default.stop_bits)
                {
                    selected_index = index;
                }
            }
            StopBitsComboBox.SelectedIndex = (selected_index < 0 ? 0 : selected_index);
            // COM порт: четность
            ParityLabel.Text    = MainForm.Translate.GetString("parity", MainForm.Culture);
            ParityComboBox.Left = ParityLabel.Left + ParityLabel.Width + 6;
            selected_index      = -1;
            string[] paritys =
            {
                MainForm.Translate.GetString("parity_even",  MainForm.Culture),
                MainForm.Translate.GetString("parity_odd",   MainForm.Culture),
                MainForm.Translate.GetString("parity_none",  MainForm.Culture),
                MainForm.Translate.GetString("parity_mark",  MainForm.Culture),
                MainForm.Translate.GetString("parity_space", MainForm.Culture)
            };
            ParityComboBox.Items.Clear();
            foreach (var parity in paritys)
            {
                int index = ParityComboBox.Items.Add(parity);
                if (index == Properties.Settings.Default.parity)
                {
                    selected_index = index;
                }
            }
            ParityComboBox.SelectedIndex = (selected_index < 0 ? 0 : selected_index);

            // [HTTP запрос]
            tabHTTP.Text = MainForm.Translate.GetString("http_request", MainForm.Culture);
            // HTTP запрос: параметры запроса
            HttpUrlLabel.Text           = MainForm.Translate.GetString("http_url", MainForm.Culture);
            HttpUrlTextBox.Left         = HttpUrlLabel.Left + HttpUrlLabel.Width + 6;
            HttpUrlTextBox.Text         = Properties.Settings.Default.http_url;
            HttpMethodPanel.Left        = HttpUrlTextBox.Left + HttpUrlTextBox.Width + 6;
            HttpMethodPanel.Width       = tabHTTP.Width - HttpMethodPanel.Left - 6;
            HttpGetRadioButton.Text     = MainForm.Translate.GetString("http_get", MainForm.Culture);
            HttpGetRadioButton.Checked  = (Properties.Settings.Default.http_method == 0);
            HttpPostRadioButton.Left    = HttpGetRadioButton.Left + HttpGetRadioButton.Width + 6;
            HttpPostRadioButton.Text    = MainForm.Translate.GetString("http_post", MainForm.Culture);
            HttpPostRadioButton.Checked = (Properties.Settings.Default.http_method == 1);
            HttpPostRadioButton_CheckedChanged(this, null);
            HttpDataLabel.Text        = MainForm.Translate.GetString("http_data", MainForm.Culture);
            HttpDataTextBox.Left      = HttpDataLabel.Left + HttpDataLabel.Width + 6;
            HttpDataTextBox.Text      = Properties.Settings.Default.http_data;
            HttpUserAgentLabel.Text   = MainForm.Translate.GetString("http_useragent", MainForm.Culture);
            HttpUserAgentTextBox.Left = HttpUserAgentLabel.Left + HttpUserAgentLabel.Width + 6;
            HttpUserAgentTextBox.Text = Properties.Settings.Default.http_useragent;
            IntervalLabel.Left        = HttpUserAgentTextBox.Left + HttpUserAgentTextBox.Width + 6;
            IntervalLabel.Text        = MainForm.Translate.GetString("http_interval", MainForm.Culture);
            IntervalTextBox.Left      = IntervalLabel.Left + IntervalLabel.Width + 6;
            IntervalTextBox.Text      = Properties.Settings.Default.http_interval.ToString();
            // HTTP запрос: обработка ответа
            HttpResponseGroupBox.Text       = MainForm.Translate.GetString("http_response", MainForm.Culture);
            HttpResponseMethodLabel.Text    = MainForm.Translate.GetString("http_method", MainForm.Culture);
            HttpResponseMethodComboBox.Left = HttpResponseMethodLabel.Left + HttpResponseMethodLabel.Width + 6;
            selected_index = -1;
            string[] methods = { "JSON", "XML", "RegExp" };
            HttpResponseMethodComboBox.Items.Clear();
            foreach (var method in methods)
            {
                int index = HttpResponseMethodComboBox.Items.Add(method);
                if (index == Properties.Settings.Default.http_response)
                {
                    selected_index = index;
                }
            }
            HttpResponseMethodComboBox.SelectedIndex = (selected_index < 0 ? 0 : selected_index);
            HttpExpressionsGroupBox.Text             = MainForm.Translate.GetString("http_expressions", MainForm.Culture);
            HttpAccuracyCheckBox.Text    = MainForm.Translate.GetString("http_accuracy", MainForm.Culture);
            HttpAccuracyCheckBox.Checked = Properties.Settings.Default.http_accuracy;
            HttpAccuracyCheckBox_CheckedChanged(this, null);
            HttpAccuracyTextBox.Left      = HttpAccuracyCheckBox.Left + HttpAccuracyCheckBox.Width + 6;
            HttpAccuracyTextBox.Text      = Properties.Settings.Default.http_accuracy_exp;
            HttpRadiationCheckBox.Text    = MainForm.Translate.GetString("http_radiation", MainForm.Culture);
            HttpRadiationCheckBox.Checked = Properties.Settings.Default.http_radiation;
            HttpRadiationCheckBox_CheckedChanged(this, null);
            HttpRadiationTextBox.Left = HttpRadiationCheckBox.Left + HttpRadiationCheckBox.Width + 6;
            HttpRadiationTextBox.Text = Properties.Settings.Default.http_radiation_exp;
            HttpUnitLabel.Left        = HttpRadiationTextBox.Left + HttpRadiationTextBox.Width + 6;
            HttpUnitLabel.Text        = MainForm.Translate.GetString("http_unit", MainForm.Culture);
            HttpUnitTextBox.Left      = HttpUnitLabel.Left + HttpUnitLabel.Width + 6;
            HttpUnitTextBox.Text      = Properties.Settings.Default.http_unit;

            // [Автозагрузка]
            tabAutostart.Text = MainForm.Translate.GetString("autostart", MainForm.Culture);
            // Автозагрузка: чекбоксы
            AutostartCheckBox.Text   = MainForm.Translate.GetString("run_windows", MainForm.Culture);
            MinimizeCheckBox.Text    = MainForm.Translate.GetString("run_minimized", MainForm.Culture);
            MaximizeCheckBox.Text    = MainForm.Translate.GetString("run_maximized", MainForm.Culture);
            AutoconnectCheckBox.Text = MainForm.Translate.GetString("run_connected", MainForm.Culture);
            // Автозагрузка: устанавливаем значения
            RegistryKey reg_key   = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", false);
            object      reg_value = reg_key.GetValue(System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);

            if (reg_value != null)
            {
                AutostartCheckBox.Checked   = true;
                MinimizeCheckBox.Checked    = (reg_value.ToString().IndexOf("/minimize") > -1) ? true : false;
                MaximizeCheckBox.Checked    = (reg_value.ToString().IndexOf("/maximize") > -1) ? true : false;
                AutoconnectCheckBox.Checked = (reg_value.ToString().IndexOf("/connect") > -1) ? true : false;
            }
            else
            {
                AutostartCheckBox.Checked   = false;
                MinimizeCheckBox.Checked    = false;
                MaximizeCheckBox.Checked    = false;
                AutoconnectCheckBox.Checked = false;
            }

            // [Допуски]
            tabLevels.Text = MainForm.Translate.GetString("levels", MainForm.Culture);
            // Допуски: повышеный уровень
            WarningLvlLabel.Text          = MainForm.Translate.GetString("lvl_warning", MainForm.Culture);
            WarningLvlNumericUpDown.Left  = WarningLvlLabel.Left + WarningLvlLabel.Width + 6;
            WarningLvlNumericUpDown.Value = Convert.ToDecimal(Properties.Settings.Default.warning_level);
            // Допуски: опасный уровень
            DangerLvlLabel.Text          = MainForm.Translate.GetString("lvl_danger", MainForm.Culture);
            DangerLvlNumericUpDown.Left  = DangerLvlLabel.Left + DangerLvlLabel.Width + 6;
            DangerLvlNumericUpDown.Value = Convert.ToDecimal(Properties.Settings.Default.danger_level);

            // [Уведомления]
            tabNotify.Text = MainForm.Translate.GetString("notifications", MainForm.Culture);
            // Уведомления: чекбоксы
            VoiceNotifyCheckBox.Text    = MainForm.Translate.GetString("notify_voice", MainForm.Culture);
            TrayNotifyCheckBox.Text     = MainForm.Translate.GetString("nitify_tray", MainForm.Culture);
            VoiceNotifyCheckBox.Checked = Properties.Settings.Default.voice_notify;
            TrayNotifyCheckBox.Checked  = Properties.Settings.Default.tray_notify;
        }