Exemplo n.º 1
0
        public HostEditer(List<Group> groups, Host host)
        {
            Host = host;

            InitializeComponent();

            this.Icon = Me.Amon.Hosts.Properties.Resources.Icon;

            int idx = 0;
            string key = host == null ? "" : host.Group;
            Group group;
            for (int i = 0; i < groups.Count; i += 1)
            {
                group = groups[i];
                CbGroup.Items.Add(group);
                if (key == group.Key)
                {
                    idx = i;
                }
            }

            if (host != null)
            {
                CbGroup.SelectedIndex = idx;
                TbIp.Text = host.IP;
                TbDomain.Text = host.Domain;
                TbMemo.Text = host.Comment;
                CbEnabled.Checked = host.Enabled;
            }
        }
Exemplo n.º 2
0
Arquivo: Main.cs Projeto: burstas/rmps
        private void DoReload(Group group)
        {
            if (!File.Exists(_HostsFile))
            {
                return;
            }

            StreamReader reader = File.OpenText(_HostsFile);
            if (reader == null)
            {
                return;
            }

            string line;
            int row = -1;
            bool inCmt = true;
            while (true)
            {
                line = reader.ReadLine();
                if (line == null)
                {
                    break;
                }

                row += 1;

                // 空行
                if (string.IsNullOrWhiteSpace(line))
                {
                    inCmt = false;
                    continue;
                }

                // 方案
                if (row == 0 && Solution.IsMatch(line))
                {
                    if (_Solution.FromString(line))
                    {
                        string key = _Solution.Text;
                        bool def = string.IsNullOrWhiteSpace(key) || !_SolutionMItems.ContainsKey(key);
                        MiSlnDef.Visible = def;
                        TiSlnDef.Visible = def;

                        if (_SelectedSlnMItem != null)
                        {
                            _SelectedSlnMItem.Checked = false;
                        }
                        if (_SelectedSlnTItem != null)
                        {
                            _SelectedSlnTItem.Checked = false;
                        }

                        if (def)
                        {
                            _SelectedSlnMItem = MiSlnDef;
                            _SelectedSlnTItem = TiSlnDef;
                        }
                        else
                        {
                            _SelectedSlnMItem = _SolutionMItems[key];
                            _SelectedSlnTItem = _SolutionTItems[key];
                        }
                        _SelectedSlnMItem.Checked = true;
                        _SelectedSlnTItem.Checked = true;
                    }
                    continue;
                }

                // 分组
                if (Group.IsMatch(line))
                {
                    var g = new Group();
                    if (g.FromString(line))
                    {
                        AppendGroup(g);
                        group = g;
                    }
                    continue;
                }

                // 注释
                if (inCmt && Regex.IsMatch(line, "^#[^.]*"))
                {
                    if (inCmt)
                    {
                        _Comment += Environment.NewLine;
                        _Comment += line.Substring(1);
                        continue;
                    }
                }

                // 配置
                if (Host.IsMatch(line))
                {
                    var h = new Host();
                    if (h.FromString(line))
                    {
                        h.Group = group.Key;

                        var item = new ListViewItem();
                        item.Text = h.IP;
                        item.Tag = h;
                        item.Group = LvItem.Groups[h.Group];
                        item.Checked = h.Enabled;
                        var sub = new ListViewItem.ListViewSubItem();
                        sub.Text = h.Domain;
                        item.SubItems.Add(sub);
                        sub = new ListViewItem.ListViewSubItem();
                        sub.Text = h.Comment;
                        item.SubItems.Add(sub);
                        LvItem.Items.Add(item);
                    }
                    continue;
                }

                inCmt = false;
            }
            reader.Close();
        }
Exemplo n.º 3
0
Arquivo: Main.cs Projeto: burstas/rmps
        private void CreateItem(Host host)
        {
            string group = CheckGroup(host.Group);

            ListViewItem item = new ListViewItem();
            item.Checked = host.Enabled;
            item.Group = LvItem.Groups[group];
            item.Text = host.IP;
            item.Tag = host;

            var sub = new ListViewItem.ListViewSubItem();
            sub.Text = host.Domain;
            item.SubItems.Add(sub);

            sub = new ListViewItem.ListViewSubItem();
            sub.Text = host.Comment;
            item.SubItems.Add(sub);

            LvItem.Items.Add(item);
            item.Selected = true;
            _SelectedHost = item;
        }
Exemplo n.º 4
0
Arquivo: Main.cs Projeto: burstas/rmps
 private void UpdateItemEnabled(ListViewItem item, Host host)
 {
     if (host.Enabled)
     {
         item.BackColor = _EnabledBackColor;
         item.ForeColor = host.Modified ? _ChangedColor : _EnabledForeColor;
     }
     else
     {
         item.BackColor = _DisabledBackColor;
         item.ForeColor = host.Modified ? _ChangedColor : _DisabledForeColor;
     }
 }
Exemplo n.º 5
0
Arquivo: Main.cs Projeto: burstas/rmps
        private void UpdateItem(ListViewItem item, Host host)
        {
            string group = CheckGroup(host.Group);

            item.Group = LvItem.Groups[group];
            item.Text = host.IP;
            item.SubItems[1].Text = host.Domain;
            item.SubItems[2].Text = host.Comment;
            item.ForeColor = host.Modified ? _ChangedColor : _DefaultColor;
        }
Exemplo n.º 6
0
        private void BtOk_Click(object sender, EventArgs e)
        {
            var group = CbGroup.Text;
            if (string.IsNullOrWhiteSpace(group))
            {
                MessageBox.Show("请输入或选择分组信息!");
                CbGroup.Focus();
                return;
            }

            string ip = TbIp.Text.Trim();
            if (string.IsNullOrWhiteSpace(ip))
            {
                MessageBox.Show("请输入一个有效的IP地址!");
                TbIp.Focus();
                return;
            }

            if (Regex.IsMatch(ip, "^\\d{1,3}([.]\\d{1,3}){3}$"))
            {
                if (!IsIPv4(ip))
                {
                    MessageBox.Show("请输入一个有效的IPv4地址!");
                    TbIp.Focus();
                    return;
                }
            }
            else if (Regex.IsMatch(ip, "^(:[0-9a-zA-Z]{0,2})+$"))
            {
                if (!IsIPv6(ip))
                {
                    MessageBox.Show("请输入一个有效的IPv6地址!");
                    TbIp.Focus();
                    return;
                }
            }
            else
            {
                MessageBox.Show("请输入一个有效的IP地址!");
                TbIp.Focus();
                return;
            }

            string domain = TbDomain.Text.Trim();
            if (!Regex.IsMatch(domain, "^[0-9a-zA-Z]+([.][0-9a-zA-Z-]+)*$"))
            {
                MessageBox.Show("请输入一个有效的域名!");
                TbDomain.Focus();
                return;
            }

            if (Host == null)
            {
                Host = new Host();
            }
            Host.Group = group == "<默认>" ? "" : group;
            Host.IP = ip;
            Host.Domain = domain;
            Host.Comment = TbMemo.Text;
            Host.Enabled = CbEnabled.Checked;

            DialogResult = System.Windows.Forms.DialogResult.OK;
            Close();
        }