Example #1
0
 public YomiCorrect(string src, Yomigana yomigana)
 {
     this.yomigana = yomigana;
     this.src      = src;
     InitializeComponent();
     label1.Text   = "[" + yomigana.GetLeadingChars(src) + "] " + src;
     textBox1.Text = yomigana.GetFirst(src).ToString();
 }
Example #2
0
        private void SetItems()
        {
            string[] backup = null;
            if (SelectedItems.Count > 0)
            {
                backup = new string[SelectedItems.Count];
                SelectedItems.CopyTo(backup, 0);
            }
            Items.Clear();
            var wherePhraseStr = (Super == null ? null : String.Join(" AND ", Super.WherePhrase));
            var values         = Controller.FetchColumnValueMultipleValue(BindedTag, wherePhraseStr).Select(_ => _.Key).OrderBy(_ => Yomigana.GetFirst(_)).ToArray();

            Items.Add("全て(" + values.Count() + ")");
            Items.AddRange(values);
            if (backup != null)
            {
                foreach (var str in backup)
                {
                    SelectedItems.Add(str);
                }
            }
        }
Example #3
0
        /// <summary>
        /// FilterViewを更新する。ごちゃごちゃしてるのでなんとかしたい
        /// </summary>
        /// <param name="o"></param>
        public void SetupContents(string textForSelected)
        {
            this.ContextMenuStrip = new System.Windows.Forms.ContextMenuStrip();
            this.ContextMenuStrip.Items.Add("読み修正", null, correctToolStripMenuItem_Click);

            ListViewItem selected = null;
            var          colid    = (int)this.Tag;
            var          col      = Controller.Columns[colid];

            try
            {
                IEnumerable <KeyValuePair <string, int> > cf = Controller.FetchColumnValueMultipleValue(col.Name, null);

                Dictionary <char, ListViewGroup> groups = new Dictionary <char, ListViewGroup>();
                groups.Add('\0', new ListViewGroup(" " + col.LocalText));

                int count_sum             = 0;
                List <ListViewItem> items = new List <ListViewItem>();

                foreach (var e in cf)
                {
                    string name           = e.Key;
                    var    count          = e.Value;
                    char   leading_letter = '\0';
                    string header         = "";
                    if (col.MappedTagField == "DATE")
                    {
                        int year = 0;
                        int.TryParse(name.Substring(0, Math.Min(4, name.Length)), out year);
                        leading_letter = (char)year;  // .Netのcharは16bitなので、yearの数値表現をそのままつっこめる 問題ないはず
                        header         = year.ToString();
                    }
                    else // tagDate以外のとき
                    {
                        leading_letter = yomigana.GetFirst(name);
                        header         = leading_letter == '\0' ? " その他" : leading_letter.ToString();
                    }
                    // 新しいグループを追加
                    if (!groups.ContainsKey(leading_letter))
                    {
                        groups.Add(leading_letter, new ListViewGroup(header));
                    }
                    var item = new ListViewItem(new string[] { name, "" + count });
                    item.ToolTipText = name + "\n" + count + "項目";
                    item.Group       = groups[leading_letter];
                    item.Tag         = name;
                    if (name == textForSelected)
                    {
                        selected = item;
                    }
                    items.Add(item);
                    count_sum += count;
                }
                var item_allFiles = new ListViewItem(new string[] { "すべて", count_sum.ToString() });
                item_allFiles.Group = groups['\0'];
                item_allFiles.Tag   = null;
                items.Add(item_allFiles);

                var grpList = groups.Select((_) => _.Value).OrderBy((_) => _.Header).ToArray();
                this.Invoke((MethodInvoker)(() =>
                {
                    Parent.Enabled = false;
                    BeginUpdate();
                    Items.Clear();
                    Groups.AddRange(grpList);
                    Items.AddRange(items.ToArray());
                    createFilterIndex(grpList);
                    EndUpdate();
                    if (selected != null)
                    {
                        selected.Selected = true;
                        selected.EnsureVisible();
                    }
                    Parent.Enabled = true;
                }));
            }
            catch (Exception e) { Logger.Log(e.ToString()); }
            yomigana.Flush();
        }