예제 #1
0
        /*-------------------------------------------------------------*/
        private void btnLdStackConfig_Click(object sender, EventArgs e)
        {
            try
            {
                using (OpenFileDialog openDialog = new OpenFileDialog())
                {
                    openDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
                    openDialog.Filter           = "csv files (.CSV)|*.csv|Text Files (.txt)|*.txt|All Files (*.*)|*.*";
                    openDialog.Title            = "Please select a pnp machine file...";
                    if (openDialog.ShowDialog() == DialogResult.OK)
                    {
                        //HOW IT WORKS:
                        //1)get the reel list of the displayed layer
                        StackList   oldStackList  = (StackList)tcPhaseDisplayer.SelectedTab.Controls["stackList"];
                        List <Reel> stackReelList = oldStackList.GetTotalList();

                        //2) Make a new phase
                        string[] stackConfig = pnpMachine.LoadStackConfiguration(openDialog.FileName);
                        //StackList newStackList = new StackList(pnpMachine, openDialog.FileName, stackReelList);
                        StackList newStackList = new StackList(pnpMachine, stackConfig, stackReelList);
                        newStackList.Name = "stackList";
                        newStackList.updateAllListsEvent += UpdateAllListsEvent;
                        stacklisters.Add(newStackList);

                        //3) Try to add all components to the new stackList
                        foreach (Reel stackReel in stackReelList)
                        {
                            newStackList.AddReelWithUpdate(stackReel);
                        }
                        //4)
                        int phaseCounter = 0;
                        tcPhaseDisplayer.TabPages.Clear();
                        stacklisters = stacklisters.OrderBy(stacklist_ => stacklist_.Layer).ToList();
                        //http://stackoverflow.com/questions/3309188/how-to-sort-a-listt-by-a-property-in-the-object

                        while (phaseCounter < stacklisters.Count)
                        {
                            StackList curStackList = stacklisters[phaseCounter];
                            if (curStackList.ContainsReels)
                            {
                                phaseCounter++;
                                curStackList.PhaseNumber = phaseCounter;
                                GenerateTabPage(curStackList);
                            }
                            else
                            {
                                curStackList.updateAllListsEvent -= UpdateAllListsEvent;
                                stacklisters.Remove(curStackList);
                                curStackList.Dispose();
                            }
                        }
                    }
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }