예제 #1
0
 public void Edit(LedString pString)
 {
     this.panel         = formMain.ledsys.SelectedPanel;
     this.stringContent = pString;
     try
     {
         this.Binding();
     }
     catch
     {
     }
 }
예제 #2
0
        public void DeleteSelected()
        {
            List <SimString> stringList = softBodyControl1.FindSelectedStrings();

            foreach (SimString _string in stringList)
            {
                LedString  stringToDel     = null;
                Controller controllerToDel = null;
                bool       delController   = false;
                Router     routerToDel     = null;
                bool       delRouter       = false;

                foreach (Router router in topology)
                {
                    foreach (Controller controller in router.Controllers)
                    {
                        foreach (LedString ledString in controller.Connections)
                        {
                            if (ledString.MassList == _string.MassList)
                            {
                                softBodyControl1.RemoveString(_string);
                                stringToDel     = ledString;
                                controllerToDel = controller;
                                if (controller.Connections.Count == 1)
                                {
                                    delController = true;
                                    routerToDel   = router;
                                    if (router.Controllers.Count == 1 && topology.Count > 1)
                                    {
                                        delRouter = true;
                                    }
                                }
                            }
                        }
                    }
                }
                if (stringToDel != null)
                {
                    controllerToDel.Connections.Remove(stringToDel);
                    stringToDel.Reference.Remove();
                    if (delController)
                    {
                        routerToDel.Controllers.Remove(controllerToDel);
                        controllerToDel.Reference.Remove();
                        if (delRouter)
                        {
                            routerToDel.Reference.Remove();
                            topology.Remove(routerToDel);
                        }
                    }
                }
            }
        }
예제 #3
0
 public formStringTest(LedString ps, formMain pfm)
 {
     this.InitializeComponent();
     this.stringContent       = ps;
     this.fm                  = pfm;
     this.panel               = formMain.Ledsys.SelectedPanel;
     this.stringUpdate        = new LedStringUpdate();
     this.Text                = formMain.ML.GetStr("formStringTest_Form_StringTest");
     this.gbUpdate.Text       = formMain.ML.GetStr("formStringTest_GroupBox_Update");
     this.gbDelete.Text       = formMain.ML.GetStr("formStringTest_GroupBox_Delete");
     this.lblEncoding.Text    = formMain.ML.GetStr("formStringTest_Label_Encoding");
     this.lblIndex.Text       = formMain.ML.GetStr("formStringTest_Label_Index");
     this.lblDisplayWay.Text  = formMain.ML.GetStr("formStringTest_Label_DisplayWay");
     this.lblColor.Text       = formMain.ML.GetStr("formStringTest_Label_Color");
     this.lblContent.Text     = formMain.ML.GetStr("formStringTest_Label_Content");
     this.lblDeleteType.Text  = formMain.ML.GetStr("formStringTest_Label_DeleteType");
     this.lblDeleteIndex.Text = formMain.ML.GetStr("formStringTest_Label_DeleteIndex");
     this.lblContentHint.Text = formMain.ML.GetStr("formStringTest_Label_ContentHint");
     this.btnSend.Text        = formMain.ML.GetStr("formStringTest_Button_Send");
     this.btnDelete.Text      = formMain.ML.GetStr("formStringTest_Button_Delete");
 }
예제 #4
0
        public void stringAdded(List <SimMass> massList)
        {
            isNew = false;

            //add the masses to an ledString
            LedString ledString = new LedString();

            ledString.MassList = massList;
            Controller controller = new Controller();

            controller.Connections.Add(ledString);
            Router router = topology.ElementAt(topology.Count - 1);

            controller.Router    = router;
            ledString.Controller = controller;



            router.Controllers.Add(controller);
            controller.IDNum = router.ControllerIDs;
            router.ControllerIDs++;

            ledString.ID = controller.StringCount;
            controller.StringCount++;

            foreach (SimMass mass in ledString.MassList)
            {
                mass.MassID = controller.LEDIDs;
                controller.LEDIDs++;
            }

            TreeNode controllerNode = new TreeNode("Controller " + controller.IDNum);
            TreeNode ledStringNode  = new TreeNode("String " + ledString.ID);

            controller.Reference = controllerNode;
            ledString.Reference  = ledStringNode;
            controllerNode.Nodes.Add(ledStringNode);
            controller.Router.Reference.Nodes.Add(controllerNode);
        }
예제 #5
0
        private void topo_treeView_DragDrop(object sender, DragEventArgs e)
        {
            TreeNode newNode;

            if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false))
            {
                Point    pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
                TreeNode destinationNode = ((TreeView)sender).GetNodeAt(pt);
                newNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
                ///not implemented

                /*
                 * if (newNode.TreeView == groups_treeView)
                 * {
                 *   if (destinationNode == null)
                 *   {
                 *       DialogResult dr = MessageBox.Show("Do you want to create a new router?", "", MessageBoxButtons.YesNo);
                 *       if (dr == DialogResult.Yes)
                 *       {
                 *           int number = topology.Count + 1; //get number of new router
                 *           //create and configure new router, new controller and new string
                 *           TreeNode newRouterNode = new TreeNode("Router " + number);
                 *           Router newRouter = new Router();
                 *           newRouter.Index = number;
                 *           newRouter.Reference = newRouterNode;
                 *           topology.Add(newRouter);
                 *
                 *           Controller newController = new Controller();
                 *           TreeNode newControllerNode = new TreeNode("Controller " + newRouter.ControllerIDs);
                 *           newRouter.ControllerIDs++;
                 *           newRouter.Controllers.Add(newController);
                 *           newController.Reference = newControllerNode;
                 *           newControllerNode.Nodes.Add((TreeNode)newNode.Clone());
                 *           newRouterNode.Nodes.Add(newControllerNode);
                 *
                 *           topo_treeView.Nodes.Add(newRouterNode);
                 *       }
                 *   }
                 *   else
                 *       if (destinationNode.TreeView != newNode.TreeView) //was not dragged from topo - topo
                 *       {
                 *           destinationNode.Nodes.Add((TreeNode)newNode.Clone());
                 *           destinationNode.Expand();
                 *
                 *       }
                 * }
                 *
                 * else
                 */
                #region topo_topo

                if (newNode.TreeView == topo_treeView)
                {
                    #region newRouter
                    if (destinationNode == null && newNode.Level == 2)
                    {
                        DialogResult dr = MessageBox.Show("Add the string to a new router?", "", MessageBoxButtons.YesNo);
                        if (dr == DialogResult.Yes)
                        {
                            int       number    = topology.Count + 1;
                            LedString newString = null;
                            //remove old place in topology
                            foreach (Router router in topology)
                            {
                                foreach (Controller controller in router.Controllers)
                                {
                                    foreach (LedString ledString in controller.Connections)
                                    {
                                        if (ledString.Reference == newNode)
                                        {
                                            newString = ledString;
                                        }
                                    }
                                }
                            }
                            if (newString != null)
                            {
                                //remove references of controller to topology
                                Controller toRemove  = newString.Controller;
                                Router     oldRouter = toRemove.Router;
                                toRemove.Router.Controllers.Remove(newString.Controller);// removes controller from router's list
                                newString.Controller = null;


                                TreeNode newRouterNode = new TreeNode("Router " + number);
                                Router   newRouter     = new Router();
                                newRouter.Index = number;

                                Controller newController = new Controller();
                                newController.IDNum = newRouter.ControllerIDs;
                                TreeNode newControllerNode = new TreeNode("Controller " + newRouter.ControllerIDs);
                                newRouter.ControllerIDs++;

                                //add to new place in tree and remove old place
                                newControllerNode.Nodes.Add((TreeNode)newNode.Clone());
                                newNode.Remove();
                                newString.Reference = newControllerNode.FirstNode;
                                newRouterNode.Nodes.Add(newControllerNode);
                                topo_treeView.Nodes.Add(newRouterNode);

                                topology.Add(newRouter);

                                //get right references for topology and treeview
                                newRouter.Reference = newRouterNode;
                                newRouter.Controllers.Add(newController);
                                newController.Reference = newControllerNode;
                                newController.Router    = newRouter;
                                newController.Connections.Add(newString);
                                newString.Controller = newController;


                                //remove controller from treeview
                                toRemove.Reference.Remove();

                                //check if empty router is left
                                if (oldRouter.Controllers.Count == 0)
                                {
                                    oldRouter.Reference.Remove();
                                    topology.Remove(oldRouter);
                                }
                            }
                        }
                    }
                    #endregion
                    else

                    //
                    //is a string being dragged from topo to topo
                    //
                    if (destinationNode != null)
                    {
                        if (destinationNode.TreeView == topo_treeView && newNode.Level == 2)
                        {
                            LedString newString = null;
                            //remove old place in topology
                            foreach (Router router in topology)
                            {
                                foreach (Controller controller in router.Controllers)
                                {
                                    foreach (LedString ledString in controller.Connections)
                                    {
                                        if (ledString.Reference == newNode)
                                        {
                                            newString = ledString;
                                        }
                                    }
                                }
                            }

                            Controller oldController = newString.Controller;
                            Router     oldRouter     = oldController.Router;

                            if (destinationNode.Level == 0)//dragged onto router
                            {
                                //find router
                                Router newRouter = null;
                                foreach (Router router in topology)
                                {
                                    if (router.Reference == destinationNode)
                                    {
                                        newRouter = router;
                                    }
                                }
                                if (newRouter != null && oldRouter != newRouter)
                                {
                                    //get new controller and node, add to topo and treeview
                                    Controller newController     = new Controller();
                                    TreeNode   newControllerNode = new TreeNode("Controller " + newRouter.ControllerIDs);
                                    newController.Reference = newControllerNode;

                                    newRouter.Controllers.Add(newController);
                                    newController.Router = newRouter;

                                    newController.IDNum = newRouter.ControllerIDs;
                                    newRouter.ControllerIDs++;

                                    newRouter.Reference.Nodes.Add(newControllerNode);

                                    //add node and remove last position
                                    newControllerNode.Nodes.Add((TreeNode)newNode.Clone());
                                    newNode.Remove();

                                    //Remove old string from old place
                                    oldController.Connections.Remove(newString);

                                    //add newstring to new place
                                    newString.Reference  = newControllerNode.FirstNode;
                                    newString.Controller = newController;
                                    newController.Connections.Add(newString);



                                    //check if old controller is empty
                                    if (oldController.Connections.Count == 0)
                                    {
                                        oldController.Reference.Remove();
                                        oldRouter.Controllers.Remove(oldController);
                                        if (oldRouter.Controllers.Count == 0)
                                        {
                                            oldRouter.Reference.Remove();
                                            topology.Remove(oldRouter);
                                        }
                                    }
                                }
                                if (oldRouter == newRouter)
                                {
                                    MessageBox.Show("This string is already on this Router", "Error", MessageBoxButtons.OK);
                                }
                            }
                            if (destinationNode.Level == 1 || destinationNode.Level == 2)//dragged onto controller or string
                            {
                                //
                                //
                                //
                                // implement adding a string to a controller or string
                                //
                                //
                                //
                                //
                            }
                        }
                    }
                }

                #endregion
            }
        }
예제 #6
0
        private void openToolStripButton_Click(object sender, EventArgs e)
        {
            System.Threading.Thread.CurrentThread.CurrentCulture   = new System.Globalization.CultureInfo("en-GB");
            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-GB");

            //goto new button to clear current stuff
            if (!isNew)
            {
                newToolStripButton_Click(sender, e);
            }

            isNew = false;

            DialogResult diaRes = openFileDialog1.ShowDialog();

            if (diaRes == DialogResult.OK)
            {
                string file = openFileDialog1.FileName;

                #region XML Loading
                XDocument  loadDoc = XDocument.Load(file);
                XNamespace ns      = loadDoc.Root.GetDefaultNamespace();

                //running count for generating routers (starts at 1 for default router)
                int routerCount = 1;

                foreach (XElement element in loadDoc.Elements()) //scene element
                {
                    //each router
                    foreach (XElement routerEle in element.Elements())
                    {
                        routerCount++;
                        Router newRouter = new Router();
                        topology.Add(newRouter);
                        newRouter.Index = routerCount;
                        TreeNode newRouterNode = new TreeNode("Router " + routerCount);
                        newRouter.Reference = newRouterNode;
                        topo_treeView.Nodes.Add(newRouterNode);

                        List <SimString> stringList = new List <SimString>();
                        bool             exist      = false;
                        float            xPos;
                        float            yPos;
                        UInt32           id;
                        UInt16           id16;
                        byte             controllerID;
                        byte             lightID;

                        foreach (XElement ele in routerEle.Elements())
                        {
                            if (ele.Name.ToString().Contains("Light"))//if element is a lightpoint
                            {
                                id           = (UInt32)Convert.ToInt32(ele.Attribute("id").Value);
                                id16         = (UInt16)(id & 0xFFFF);
                                lightID      = (byte)(id16 & 0xFF);
                                controllerID = (byte)(id16 >> 8);

                                xPos = Math.Abs(Convert.ToSingle(ele.Attribute("x").Value) * 1000);
                                yPos = Math.Abs(Convert.ToSingle(ele.Attribute("y").Value) * 1000);

                                foreach (SimString sString in stringList)
                                {
                                    if (sString.ID == controllerID)
                                    { // a string has the id, add to it
                                        exist = true;
                                        sString.AddMass(new SimMass(new Microsoft.Xna.Framework.Vector2(xPos, yPos), lightID));
                                    }
                                }

                                if (!exist)
                                {
                                    SimString newString = new SimString();
                                    newString.ID = controllerID;
                                    newString.AddMass(new SimMass(new Microsoft.Xna.Framework.Vector2(xPos, yPos), lightID));
                                    stringList.Add(newString);
                                }
                                exist = false;
                            }
                        }

                        //add found lightpoints and controllers to the router
                        foreach (SimString sString in stringList)
                        {
                            //create controllers
                            Controller newController     = new Controller();
                            TreeNode   newControllerNode = new TreeNode("Controller " + newRouter.ControllerIDs);
                            newRouter.ControllerIDs++;
                            newController.IDNum     = (ushort)sString.ID;
                            newController.Reference = newControllerNode;
                            newController.Router    = newRouter;

                            newRouter.Controllers.Add(newController);
                            newRouterNode.Nodes.Add(newControllerNode);

                            LedString newString = new LedString();
                            newString.Controller = newController;
                            newString.ID         = sString.ID;
                            newString.MassList   = sString.MassList;
                            newString.NumOfLeds  = sString.MassList.Count;
                            newController.Connections.Add(newString);

                            TreeNode newStringNode = new TreeNode("String " + newController.StringCount);
                            newController.StringCount++;

                            newString.Reference = newStringNode;

                            newControllerNode.Nodes.Add(newStringNode);
                        }
                        //add this router's masses to the simulation
                        softBodyControl1.loadMasses(stringList);
                    }
                } //parsing done
                #endregion
            }
        }