예제 #1
0
 private void BTN_Import_Click(object sender, EventArgs e)
 {
     try
     {
         PAN_Relational.Controls.Clear();
         this.selectedChild     = null;
         this.selectedContainer = null;
         string extractedMessage = TB_Import.Text.ToUpper().Replace(".", "").Replace(",", "").Replace("'", "");
         if (extractedMessage.Contains("WIDE"))
         {
             extractedMessage = LUAtoMQTT(extractedMessage);
         }
         string mes = "";
         try
         {
             mes = extractedMessage.Substring(extractedMessage.IndexOf("FE010001"));
         }
         catch
         {
             if (extractedMessage.IndexOf("900580") >= 0)
             {
                 mes = "FE010001FD020001" + extractedMessage.Substring(extractedMessage.IndexOf("900580") + 10) + "FE010002FD020001";
             }
         }
         updateValues = false;
         ParseImportMessage(mes);
         updateValues = true;
     }
     catch
     {
         MessageBox.Show("Specified input is not a recognized relational cycle.");
     }
 }
예제 #2
0
        public RelationalBuilder2(SymbIOT p, List <KeyValue> kv)
        {
            InitializeComponent();
            parent            = p;
            keyValues         = kv;
            activeLB          = null;
            selectedChild     = null;
            selectedContainer = null;
            relationalTypes   = new List <KeyValue>();
            RelationalID      = "FD020001";
            scrollpos         = PAN_Relational.VerticalScroll.Value;
            numContainers     = 0;

            BTN_Swap.Visible = parent.dm_name == "Cooking";

            AddGroupBox(0, "Presets");

            AddGroupBox(PAN_Keys.Controls.Count, "Recent");

            LoadLBs(CB_FullDM.Checked);

            if (!File.Exists("SymbIOT_Presets.xml"))
            {
                // Create a file to write to.
                using (StreamWriter sw = File.CreateText("SymbIOT_Presets.xml"))
                {
                    sw.WriteLine(Properties.Resources.SymbIOT_Presets);
                }
            }

            LoadXML();
        }
예제 #3
0
        public void AddContainer(RelationalContainer rc)
        {
            this.Controls.Add(rc);
            int index = selectedChild == null ? this.Controls.Count - 2 : this.Controls.GetChildIndex(selectedChild) + 1;

            this.Controls.SetChildIndex(rc, index);
            RefreshSize();
        }
예제 #4
0
        public void RefreshArrayCount()
        {
            arrayCount = 0;
            foreach (RelationalContainer rc in PAN_Relational.Controls)
            {
                rc.UpdateCount(updateValues);
            }

            BTN_Envelope.Enabled = PAN_Relational.Controls.Count == 0 ? true : false;
            BTN_Array.Enabled    = PAN_Relational.Controls.Count == 0 ? false : true;
            BTN_Entity.Enabled   = PAN_Relational.Controls.Count == 0 ? false : true;
            RefreshPresets();
            if (BTN_Envelope.Enabled)
            {
                this.selectedChild     = null;
                this.selectedContainer = null;
            }
        }
예제 #5
0
        private void InsertContainer(string type, string val)
        {
            KeyValue openKey  = null;
            KeyValue closeKey = null;
            string   openkv   = "";
            string   closekv  = "";

            numContainers++;
            switch (type)
            {
            case "Envelope":
                openkv        = "FE010001";
                closekv       = "FE010002";
                numContainers = 1;
                break;

            case "Array":
                openkv  = "FE030001";
                closekv = "FE030002";
                break;

            case "Entity":
                openkv  = "FE020001";
                closekv = "FE020002";
                break;

            default:
                break;
            }

            foreach (KeyValue k in keyValues)
            {
                if (k.KeyID == openkv)
                {
                    openKey = k;
                }
                if (k.KeyID == closekv)
                {
                    closeKey = k;
                }
            }
            if (this.selectedContainer == null)
            {
                RelationalContainer rc = new RelationalContainer(openKey, closeKey, this, this, 0, val);
                PAN_Relational.Controls.Add(rc);
                ClearAllSelected();
                ((RelationalItem2)rc.Controls[0]).SetSelected(true);
                BTN_Envelope.Enabled = false;
                BTN_Array.Enabled    = true;
                BTN_Entity.Enabled   = true;
                RefreshPresets();
            }
            else
            {
                if (!this.selectedChild.CloseBracket)
                {
                    RelationalContainer rc = new RelationalContainer(openKey, closeKey, this.selectedContainer, this, this.selectedContainer.Level + 1, val);
                    this.selectedContainer.AddContainer(rc);
                    ClearAllSelected();
                    ((RelationalItem2)rc.Controls[0]).SetSelected(true);
                }
                else
                {
                    if (this.selectedContainer.parent != this)
                    {
                        RelationalContainer rc = new RelationalContainer(openKey, closeKey, this.selectedContainer.parent, this, this.selectedContainer.Level, val);
                        ((RelationalContainer)this.selectedContainer.parent).selectedChild = this.selectedContainer;
                        ((RelationalContainer)this.selectedContainer.parent).AddContainer(rc);
                        ClearAllSelected();
                        ((RelationalItem2)rc.Controls[0]).SetSelected(true);
                    }
                }
            }
        }
예제 #6
0
        public RelationalItem2(KeyValue kv, RelationalContainer parent, RelationalBuilder2 topparent, string val)
        {
            InitializeComponent();
            isScript         = false;
            this.parent      = parent;
            this.topParent   = topparent;
            keyvalue         = kv;
            upperKV          = kv;
            lowerKV          = kv;
            CloseBracket     = false;
            OpenBracket      = false;
            CBO_Type.Visible = false;
            indent           = new String(' ', parent.Level * 2);
            SetSelected(false);
            if (kv.Instance.StartsWith("Relational") && kv.AttributeName == "Open" || kv.AttributeName == "Close")
            {
                try
                {
                    CBO_Type.SelectedIndex = val != "" && !val.StartsWith("FD") ? int.Parse(val.Substring(0, 2), NumberStyles.AllowHexSpecifier) - 1 : 0;
                }
                catch
                {
                    CBO_Type.SelectedIndex = 0;
                }
                switch (kv.AttributeName)
                {
                case "Open":
                    LBL_Name.Text    = indent + (kv.Instance.Contains("Array") ? "[" : "{");
                    CBO_Type.Visible = true;
                    OpenBracket      = true;
                    break;

                case "Close":
                    LBL_Name.Text = indent + (kv.Instance.Contains("Array") ? "]" : "}");
                    CloseBracket  = true;
                    break;

                default:
                    break;
                }

                parent.type     = kv.Instance.Split('_')[1];
                parent.datatype = val != "" && !val.StartsWith("FD") ? val.Substring(0, 2) : "01";

                if (parent.type == "Envelope" && CBO_Type.Visible)
                {
                    CBO_Type.Items.Clear();
                    for (int i = 0; i < topparent.relationalTypes.Count; i++)
                    {
                        CBO_Type.Items.Add(topparent.relationalTypes[i].AttributeName + " (0x" + topparent.relationalTypes[i].KeyID + ")");
                        if (topparent.relationalTypes[i].KeyID == "FD020001")
                        {
                            CBO_Type.SelectedIndex = i;
                        }
                    }
                }
                else
                {
                    /*if (SymbIOT.dm_name == "Cooking")
                     * {
                     *  //CBO_Type.Visible = false;
                     *  //parent.datatype = "02";
                     * }*/
                }

                TB_Value.Visible  = true;
                CBO_Value.Visible = false;
                TB_Value.Text     = val;
            }
            else
            {
                LBL_Name.Text = indent + kv.Instance + "." + kv.AttributeName;
                if (kv.EnumName != null)
                {
                    TB_Value.Visible  = false;
                    CBO_Value.Visible = true;
                    for (int j = 0; j < kv.EnumName.Enums.Count; j++)
                    {
                        if (kv.EnumName.Enums[j] != null)
                        {
                            CBO_Value.Items.Add(j.ToString("X2") + "=" + kv.EnumName.Enums[j]);
                            if (val == kv.EnumName.Enums[j].ToString())
                            {
                                CBO_Value.SelectedItem = j.ToString("X2") + "=" + kv.EnumName.Enums[j];
                            }
                        }
                    }

                    /*foreach (string s in kv.EnumName.Enums)
                     * {
                     *  if (s != null)
                     *  {
                     *      CBO_Value.Items.Add(s);
                     *  }
                     * }
                     * if (val != null)
                     * {
                     *  CBO_Value.SelectedItem = val;
                     * }*/
                }
                else
                {
                    TB_Value.Visible  = true;
                    CBO_Value.Visible = false;
                    if (val != null)
                    {
                        TB_Value.Text = val;
                    }
                }
            }
        }