public void AttachBorder(LabelingBorders border)
        {
            if (border == null)
            {
                throw new ArgumentNullException("border", "'border' cannot be null");
            }

            List <int> prevIndices = new List <int>();

            foreach (int prevIndex in this.SelectedIndices)
            {
                prevIndices.Add(prevIndex);
            }
            _border = border;
            Items.Clear();
            int index = 0;

            foreach (var text in _border.GetLabelNames(true))
            {
                Items.Add(text);
                if (prevIndices.Contains(index))
                {
                    SelectedIndices.Add(index);
                }
                index++;
            }
        }
Ejemplo n.º 2
0
        public static LabelingBorders Deserialize(XmlReader reader)
        {
            LabelingBorders ret = new LabelingBorders();

            ret.ReadXml(reader);
            return(ret);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 指定されたパスのファイルからSequenceDataを作成します。拡張子は自動的に付加されます。
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public static SequenceData RetrieveState(string path)
        {
            SequenceData ret = new SequenceData();

            if (!File.Exists(path + DefaultExtensionForHeader))
            {
                string ext = Path.GetExtension(path);
                if (ext == DefaultExtensionForHeader || ext == DefaultExtensionForValues || ext == DefaultExtensionForBorder)
                {
                    path = Path.Combine(Path.GetDirectoryName(path), Path.GetFileNameWithoutExtension(path));
                    if (!File.Exists(path + DefaultExtensionForHeader))
                    {
                        return(null);
                    }
                }
                else
                {
                    return(null);
                }
            }
            string titlePath    = string.Format("{0}{1}", path, DefaultExtensionForHeader);
            string sequencePath = string.Format("{0}{1}", path, DefaultExtensionForValues);
            string borderPath   = string.Format("{0}{1}", path, DefaultExtensionForBorder);

            using (FileStream titleStream = new FileStream(titlePath, FileMode.Open)) {
                ret.RetrieveDataHeader(titleStream);
            }
            ret.Values        = TimeSeriesValues.Deserialize(sequencePath);
            ret.Borders       = LabelingBorders.Deserialize(borderPath);
            ret.IsDataChanged = false;
            return(ret);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// ラベル系列からデータを作成します
        /// </summary>
        /// <param name="labelSequence">ラベル系列</param>
        /// <param name="title">このデータに与えるタイトル</param>
        /// <param name="colorPalette">ラベル名からラベルの色を生成するディクショナリ</param>
        /// <returns></returns>
        public static SequenceData FromLabelSequence(ICSLabelSequence labelSequence, string title, IDictionary <string, Color> colorPalette)
        {
            if (labelSequence == null)
            {
                throw new ArgumentNullException("labelSequence", "'labelSequence' cannot be null");
            }
            TimeSeriesValues newSeqeunce = new TimeSeriesValues(title);
            LabelingBorders  newBorder   = new LabelingBorders();

            foreach (var label in labelSequence.EnumerateLabels())
            {
                newSeqeunce[label.BeginTime] = new decimal?[] { label.BeginTime };
                newBorder.SetBorder(label.BeginTime, label.LabelText);
            }
            newSeqeunce[labelSequence.Duration] = new decimal?[] { labelSequence.Duration };
            newBorder.SetBorder(labelSequence.Duration, newBorder.DefaultName);

            if (colorPalette != null)
            {
                foreach (var pair in colorPalette)
                {
                    newBorder.SetColor(pair.Key, pair.Value);
                }
            }

            SequenceData ret = new SequenceData(newSeqeunce, newBorder, title);

            ret.Type = SequenceType.Label;
            return(ret);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// データを指定するコンストラクタ
        /// </summary>
        /// <param name="sequence">時系列データ</param>
        /// <param name="border">ラベル境界情報</param>
        /// <param name="title">このデータの識別名</param>
        public SequenceData(TimeSeriesValues sequence, LabelingBorders border, string title)
        {
            _lockDisposable = new LockDisposable(_rwLock);

            this.Values        = sequence;
            this.Borders       = border;
            this.Title         = title;
            this.Type          = SequenceType.Numeric;
            this.IsDataChanged = false;
        }
        private void buttonDefault_Click(object sender, EventArgs e)
        {
            var labelColors = getSelectedLabelColors();
            Dictionary <string, Color> map = new Dictionary <string, Color>();

            foreach (var pair in labelColors)
            {
                map[pair.Key] = LabelingBorders.GetDefaultColorFor(pair.Key);
            }
            setColorMap(map);
            setLabelList();
        }
 private void buttonLoad_Click(object sender, EventArgs e)
 {
     try {
         if (dialogOpenBorder.ShowDialog() == DialogResult.OK)
         {
             LabelingBorders newBorder = LabelingBorders.Deserialize(dialogOpenBorder.FileName);
             _sequence.Borders = newBorder;
             refreshList();
             dialogSaveBorder.FileName = dialogOpenBorder.FileName;
         }
     } catch (Exception ex) {
         ErrorLogger.Tell(ex, "ファイルが読み込めませんでした");
     }
 }
Ejemplo n.º 8
0
 public LabelingBorders(LabelingBorders original)
     : this()
 {
     foreach (var pair in original.GetColorPalette())
     {
         this.SetColor(pair.Key, pair.Value);
     }
     this.DefaultName = original.DefaultName;
     foreach (var pair in original.Enumerate())
     {
         this.SetBorder(pair.Key, pair.Value);
     }
     this.TargetColumnIndex = original.TargetColumnIndex;
 }
 private void listBorders_DragDrop(object sender, DragEventArgs e)
 {
     if (e.Data.GetDataPresent(DataFormats.FileDrop))
     {
         string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
         if (files.Length > 0)
         {
             try {
                 _sequence.Borders = LabelingBorders.Deserialize(files[0]);
                 refreshList();
                 dialogSaveBorder.FileName = dialogOpenBorder.FileName = files[0];
             } catch (Exception ex) {
                 ErrorLogger.Tell(ex, "ファイルが読み込めませんでした");
             }
         }
     }
 }
Ejemplo n.º 10
0
        /// <summary>
        /// ストリームからデータを復元します
        /// </summary>
        /// <param name="reader"></param>
        /// <returns></returns>
        public static SequenceData Deserialize(XmlReader reader)
        {
            SequenceData ret = null;

            reader.ReadStartElement(typeof(SequenceData).Name);
            byte[]          titleBytes = null, sequenceBytes = null;
            LabelingBorders border     = null;
            string          tmp;
            MemoryStream    tmpStream;
            StreamWriter    tmpWriter;

            for (reader.MoveToContent(); reader.NodeType != XmlNodeType.EndElement && reader.NodeType != XmlNodeType.None; reader.MoveToContent())
            {
                if (reader.IsEmptyElement)
                {
                    reader.Skip();
                    continue;
                }
                switch (reader.Name)
                {
                case "Title":
                    tmp       = reader.ReadElementContentAsString();
                    tmpStream = new MemoryStream();
                    tmpWriter = new StreamWriter(tmpStream);
                    tmpWriter.Write(tmp);
                    tmpWriter.Flush();
                    titleBytes = tmpStream.ToArray();
                    break;

                case "Sequence":
                    tmp       = reader.ReadElementContentAsString();
                    tmpStream = new MemoryStream();
                    tmpWriter = new StreamWriter(tmpStream);
                    tmpWriter.Write(tmp);
                    tmpWriter.Flush();
                    sequenceBytes = tmpStream.ToArray();
                    break;

                case "Border":
                    reader.ReadStartElement();
                    border = LabelingBorders.Deserialize(reader.ReadSubtree());
                    for (reader.MoveToContent(); reader.NodeType != XmlNodeType.EndElement && reader.NodeType != XmlNodeType.None; reader.MoveToContent())
                    {
                        reader.Skip();
                    }
                    reader.ReadEndElement();
                    break;

                default:
                    reader.Skip();
                    break;
                }
            }
            reader.ReadEndElement();
            if (titleBytes != null && sequenceBytes != null && border != null)
            {
                ret         = new SequenceData();
                ret.Borders = border;
                using (MemoryStream stream2 = new MemoryStream(sequenceBytes)) {
                    ret.Values = TimeSeriesValues.Deserialize(stream2);
                }
                using (MemoryStream stream2 = new MemoryStream(titleBytes)) {
                    ret.RetrieveDataHeader(stream2);
                }
            }
            return(ret);
        }