Example #1
0
        private void Open(List <Bot.SubjectStruct> subject)
        {
            List <TimeElement> al = new List <TimeElement>();

            foreach (Bot.SubjectStruct ss in subject)
            {
                TimeElement te = TimeParser.Get(ss.시강);
                te.index = ss.index.ToString();
                al.Add(te);
            }
            txts.Add(al);
            view_table = txts[0];
        }
Example #2
0
        /// <summary>
        /// 특정 과목을 강제로 추가합니다.
        /// </summary>
        public void DoAddSubject(int index)
        {
            PushUndo();

            foreach (List <TimeElement> lte in subject_group)
            {
                foreach (TimeElement te in lte)
                {
                    if (te.index == index.ToString())
                    {
                        MessageBox.Show("같은 과목이 이미 추가되었습니다.", Version.Name, MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                }
            }

            // 같은 이름을 가진 과목을 찾는다
            for (int i = 0; i < subject_group.Count; i++)
            {
                if (bot.subject[Convert.ToInt32(subject_group[i][0].index)].과목명 == bot.subject[index].과목명)
                {
                    TimeElement te = TimeParser.Get(bot.subject[index].시강);
                    te.index = index.ToString();
                    subject_group[i].Add(te);
                    return;
                }
            }

            // 같은 이름을 가진 과목이 없다면 새로 만든다.
            List <Bot.SubjectStruct> ssl      = new List <Bot.SubjectStruct>();
            List <TimeElement>       subjects = new List <TimeElement>();
            TimeElement ite = TimeParser.Get(bot.subject[index].시강);

            ite.index = index.ToString();
            subjects.Add(ite);
            ssl.Add(bot.subject[index]);
            subject_group.Add(subjects);

            AppendSubjectsToList(ssl);
            UpdateCombination();
        }
Example #3
0
        /// <summary>
        /// frmTTViewer에서 '이 시간표를 기반으로 시간표 만들기'버튼을 누를때 이 함수가 호출됩니다.
        /// </summary>
        public void DoFixedMode(List <TimeElement> subject)
        {
            PushUndo();
            subject_group.Clear();

            List <Bot.SubjectStruct> ssl = new List <Bot.SubjectStruct>();

            foreach (TimeElement tex in subject)
            {
                Bot.SubjectStruct  ss       = bot.subject[Convert.ToInt32(tex.index)];
                List <TimeElement> subjects = new List <TimeElement>();
                TimeElement        te       = TimeParser.Get(ss.시강);
                te.index = ss.index.ToString();
                subjects.Add(te);
                ssl.Add(ss);
                subject_group.Add(subjects);
            }

            lvSearch.Items.Clear();
            AppendSubjectsToList(ssl);
            UpdateCombination();
        }
Example #4
0
 /// <summary>
 /// 조합 파일 불러오기
 /// </summary>
 private void Open()
 {
     try
     {
         string line;
         System.IO.StreamReader file = new System.IO.StreamReader(frmMain.PathCombinations);
         while ((line = file.ReadLine()) != null)
         {
             List <TimeElement> al = new List <TimeElement>();
             foreach (string ix in line.Split('|'))
             {
                 if (ix != "")
                 {
                     foreach (Bot.SubjectStruct ss in subject)
                     {
                         if (ss.index.ToString() == ix)
                         {
                             TimeElement te = TimeParser.Get(ss.시강);
                             te.index = ss.index.ToString();
                             al.Add(te);
                         }
                     }
                 }
             }
             txts.Add(al);
         }
         file.Close();
         if (txts.Count > 0)
         {
             view_table = txts[0];
         }
         if (txts.Count == 1)
         {
             bRight.Enabled = false;
         }
     }
     catch {  }
 }
Example #5
0
        /// <summary>
        /// 시간 정보를 해석합니다.
        /// </summary>
        static public TimeElement Get(string table)
        {
            TimeElement te = new TimeElement();

            try
            {
                /*
                 *
                 * 시간 표시 유형이 두 가지가 있다.
                 *
                 * 1. 월1,2,3(하-101)/화1,2,3(2-112)
                 * 2. 월1,2,3화1,2,3(60주년-1012)
                 *
                 * 혼종 발견 ( 처리안함 귀찮음 )
                 * 3. 월1,2,3,화1,2,3(하-101)/수1,2,3(60주년-7077)
                 *
                 */
                string dayOfWeek = TimeTableSettings.DayOfWeek;
                foreach (string s in table.Split('/'))
                {
                    string i = s.Trim();
                    int    j = -1;
                    if (dayOfWeek.Contains(i[0]))
                    {
                        j = TimeTableSettings.DayMaxClass * dayOfWeek.IndexOf(i[0]);
                        i = i.Substring(1);
                        foreach (string t in i.Split(','))
                        {
                            // 강의실 제외한 나머지를 구겨넣음
                            if (t.Contains('('))
                            {
                                te.Add(j + Convert.ToInt32(t.Remove(t.IndexOf('('))) - 1);
                            }
                            else
                            {
                                // 2 유형의 경우 "화1" 처럼 숫자와 문자가 붙어 있음
                                if (dayOfWeek.Contains(t[0]))
                                {
                                    j = TimeTableSettings.DayMaxClass * dayOfWeek.IndexOf(t[0]);
                                    te.Add(j + Convert.ToInt32(t.Substring(1)) - 1);
                                }
                                else
                                {
                                    te.Add(j + Convert.ToInt32(t) - 1);
                                }
                            }
                        }
                    }
                }
                foreach (string c in getSlice(table))
                {
                    te.cr.Add(c);
                }
                if (te.cr[0] == "웹강의" && te.cr.Count > 1)
                {
                    te.cr[0] = te.cr[1]; te.with_web = true;
                }
                else if (te.cr.Count == 1)
                {
                    te.cr.Add(te.cr[0]);
                }
            }
            catch
            {
            }

            return(te);
        }