Example #1
0
        ModCodeAndControlHolder XmlToCode(XmlDocument XDoc, Form F)
        {
            XmlNode UiTagNode = XDoc.ChildNodes[0];
            ReadAllControlNames(UiTagNode);
            StringBuilder PyCode = new StringBuilder();
            StringBuilder RbCode = new StringBuilder();
            PyCode.AppendLine("ui = ModUi()");
            RbCode.AppendLine("ui = ModUi.new()");

            ModCodeAndControlHolder Result = new ModCodeAndControlHolder();
            if (XDoc.DocumentElement.Name.Equals("UI", StringComparison.OrdinalIgnoreCase))
            {
                ModCodeAndControlHolder CPECC = ConvertControlPropertiesEventHandlersChildrenToCode(UiTagNode, "ui", F);
                PyCode.Append(CPECC.PyCode);
                PyCode.AppendLine("ui.ShowUi()");
                RbCode.Append(CPECC.RbCode);
                RbCode.AppendLine("ui.ShowUi()");
            }
            else
            {
                throw new Exception("Invalid UI description. Outermost tag must be the <ui> tag.");
            }
            Result.PyCode = PyCode.ToString();
            Result.RbCode = RbCode.ToString();
            Result.Control = F;
            return Result;
        }
Example #2
0
 ModCodeAndControlHolder ConvertControlPropertyNodeToCode(XmlNode PropertyNode, string ControlName, Control C)
 {
     StringBuilder PyCode = new StringBuilder();
     StringBuilder RbCode = new StringBuilder();
     switch (PropertyNode.Name)
     {
         case (ModUiTags.Size):
             SetSizeInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.Location):
             SetLocationInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.Anchor):
             SetAnchorInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.Dock):
             SetDockStyleInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.Enabled):
             SetEnabledInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.Visible):
             SetVisibleInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.BackColor):
             SetBackColorInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.ForeColor):
             SetForeColorInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.Font):
             SetFontInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.BorderStyle):
             SetBorderStyleInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.Icon):
             SetIconInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.ReadOnly):
             SetReadOnlyInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.Text):
             SetTextInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.PasswordChar):
             SetPasswordCharInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.MultiLine):
             SetMultiLineInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.Wordwrap):
             SetWordwrapInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.TextAlign):
             SetTextAlignInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.ScrollBars):
             SetScrollBarsInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         //case (ModUiTags.Rtf):
         //    SetRtfInCode(PyCode, RbCode, ControlName, C, PropertyNode);
         //    break;
         case (ModUiTags.RichTextScrollBars):
             SetRichTextScrollBarsInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.DetectUrls):
             SetDetectUrlsInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.Checked):
             SetCheckedInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.Columns):
             SetColumnsInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.AllowUserToAddRows):
             SetAllowUserToAddRowsInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.AllowUserToDeleteRows):
             SetAllowUserToDeleteRowsInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.AllowUserToResizeColumns):
             SetAllowUserToResizeColumnsInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.AllowUserToResizeRows):
             SetAllowUserToResizeRowsInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.ColumnHeadersVisible):
             SetColumnHeadersVisibleInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.RowHeadersVisible):
             SetRowHeadersVisibleInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.GridColor):
             SetGridColorInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.BackgroundColor):
             SetBackgroundColorInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
         case (ModUiTags.TabPages):
             SetTabPagesInCode(PyCode, RbCode, ControlName, C, PropertyNode);
             break;
     }
     ModCodeAndControlHolder Result = new ModCodeAndControlHolder();
     Result.PyCode = PyCode.ToString();
     Result.RbCode = RbCode.ToString();
     Result.Control = C;
     return Result;
 }
Example #3
0
 ModCodeAndControlHolder RawXmlToCode(string UiXml, Form F)
 {
     ModCodeAndControlHolder Result = new ModCodeAndControlHolder();
     XmlDocument XDoc = new XmlDocument();
     XDoc.LoadXml(UiXml);
     MemoryStream MS = new MemoryStream();
     XmlTextWriter XWriter = new XmlTextWriter(MS, Encoding.ASCII);
     XWriter.Formatting = Formatting.Indented;
     XDoc.WriteContentTo(XWriter);
     XWriter.Flush();
     MS.Flush();
     MS.Position = 0;
     StreamReader SR = new StreamReader(MS);
     Result.XmlCode = SR.ReadToEnd();
     ModCodeAndControlHolder PyRbControlResult = XmlToCode(XDoc, F);
     Result.PyCode = PyRbControlResult.PyCode;
     Result.RbCode = PyRbControlResult.RbCode;
     Result.Control = PyRbControlResult.Control;
     return Result;
 }
Example #4
0
 ModCodeAndControlHolder ConvertControlPropertiesNodeToCode(XmlNode PropertiesNode, string ControlName, Control C)
 {
     StringBuilder PyCode = new StringBuilder();
     StringBuilder RbCode = new StringBuilder();
     foreach (XmlNode ChildNode in PropertiesNode.ChildNodes)
     {
         ModCodeAndControlHolder PropertyCode = ConvertControlPropertyNodeToCode(ChildNode, ControlName, C);
         PyCode.Append(PropertyCode.PyCode);
         RbCode.Append(PropertyCode.RbCode);
     }
     ModCodeAndControlHolder Result = new ModCodeAndControlHolder();
     Result.PyCode = PyCode.ToString();
     Result.RbCode = RbCode.ToString();
     Result.Control = C;
     return Result;
 }
Example #5
0
 ModCodeAndControlHolder ConvertControlPropertiesEventHandlersChildrenToCode(XmlNode Node, string ControlName, Control C)
 {
     XmlNode PropertiesNode = null;
     XmlNode EventHandlersNode = null;
     XmlNode ChildrenNode = null;
     foreach (XmlNode SubNode in Node.ChildNodes)
     {
         switch (SubNode.Name)
         {
             case (ModUiTags.Properties):
                 PropertiesNode = SubNode;
                 break;
             case (ModUiTags.EventHandlers):
                 EventHandlersNode = SubNode;
                 break;
             case (ModUiTags.Children):
                 ChildrenNode = SubNode;
                 break;
             default:
                 continue;
         }
     }
     StringBuilder PyCode = new StringBuilder();
     StringBuilder RbCode = new StringBuilder();
     ModCodeAndControlHolder NodeResults = new ModCodeAndControlHolder();
     if (PropertiesNode != null)
     {
         NodeResults = ConvertControlPropertiesNodeToCode(PropertiesNode, ControlName, C);
         PyCode.Append(NodeResults.PyCode);
         RbCode.Append(NodeResults.RbCode);
     }
     if (EventHandlersNode != null)
     {
         NodeResults = ConvertControlEventHandlersNodeToCode(EventHandlersNode, ControlName, C);
         PyCode.Append(NodeResults.PyCode);
         RbCode.Append(NodeResults.RbCode);
     }
     if (ChildrenNode != null)
     {
         NodeResults = ConvertControlChildXmlNodesToCode(ChildrenNode, ControlName, C);
         PyCode.Append(NodeResults.PyCode);
         RbCode.Append(NodeResults.RbCode);
     }
     ModCodeAndControlHolder Result = new ModCodeAndControlHolder();
     Result.PyCode = PyCode.ToString();
     Result.RbCode = RbCode.ToString();
     Result.Control = C;
     return Result;
 }
Example #6
0
 ModCodeAndControlHolder ConvertControlEventHandlersNodeToCode(XmlNode EventHandlersNode, string ControlName, Control C)
 {
     StringBuilder PyCode = new StringBuilder();
     StringBuilder RbCode = new StringBuilder();
     foreach (XmlNode ChildNode in EventHandlersNode.ChildNodes)
     {
         ModCodeAndControlHolder ChildCode = ConvertControlEventHandlerNodeToCode(ChildNode, ControlName, C);
         PyCode.Append(ChildCode.PyCode);
         RbCode.Append(ChildCode.RbCode);
     }
     ModCodeAndControlHolder Result = new ModCodeAndControlHolder();
     Result.PyCode = PyCode.ToString();
     Result.RbCode = RbCode.ToString();
     Result.Control = C;
     return Result;
 }
Example #7
0
 ModCodeAndControlHolder ConvertControlEventHandlerNodeToCode(XmlNode EventHandlerNode, string ControlName, Control C)
 {
     StringBuilder PyCode = new StringBuilder();
     StringBuilder RbCode = new StringBuilder();
     string EventName = EventHandlerNode.Name;
     string EventHandlerMethod = EventHandlerNode.InnerText;
     if (EventHandlerMethod.Length > 0)
     {
         PyCode.AppendLine(string.Format("{0}.{1} += lambda s,e: {2}", ControlName, EventName, EventHandlerMethod));
         RbCode.AppendLine(string.Format("{0}.{1}  do |s, e|", ControlName, EventName));
         RbCode.AppendLine(string.Format("   {0}", EventHandlerMethod));
         RbCode.AppendLine("end");
         switch (C.GetType().Name)
         {
             case ("Form"):
                 ModUi.EventHandlers[EventName] = EventHandlerMethod;
                 break;
             case ("ModTextBox"):
                 (C as ModTextBox).EventHandlers[EventName] = EventHandlerMethod;
                 break;
             case ("ModRichTextBox"):
                 (C as ModRichTextBox).EventHandlers[EventName] = EventHandlerMethod;
                 break;
             case ("ModButton"):
                 (C as ModButton).EventHandlers[EventName] = EventHandlerMethod;
                 break;
             case ("ModCheckBox"):
                 (C as ModCheckBox).EventHandlers[EventName] = EventHandlerMethod;
                 break;
             case ("ModRadioButton"):
                 (C as ModRadioButton).EventHandlers[EventName] = EventHandlerMethod;
                 break;
             case ("ModLabel"):
                 (C as ModLabel).EventHandlers[EventName] = EventHandlerMethod;
                 break;
             case ("ModDataGridView"):
                 (C as ModDataGridView).EventHandlers[EventName] = EventHandlerMethod;
                 break;
             case ("ModPanel"):
                 (C as ModPanel).EventHandlers[EventName] = EventHandlerMethod;
                 break;
             case ("ModTabControl"):
                 (C as ModTabControl).EventHandlers[EventName] = EventHandlerMethod;
                 break;
         }
     }
     ModCodeAndControlHolder Result = new ModCodeAndControlHolder();
     Result.PyCode = PyCode.ToString();
     Result.RbCode = RbCode.ToString();
     Result.Control = C;
     return Result;
 }
Example #8
0
 ModCodeAndControlHolder ConvertControlChildXmlNodesToCode(XmlNode ParentNode, string ParentName, Control ParentControl)
 {
     StringBuilder PyCode = new StringBuilder();
     StringBuilder RbCode = new StringBuilder();
     foreach (XmlNode ChildNode in ParentNode.ChildNodes)
     {
         string ReadControlName = GetControlNameFromControlXmlNode(ChildNode);
         string ControlName = GetControlName(ChildNode.Name, ReadControlName);
         Control C;
         switch (ChildNode.Name)
         {
             case ("ModLabel"):
                 PyCode.AppendLine(string.Format("{0} = ModLabel()", ControlName));
                 RbCode.AppendLine(string.Format("{0} = ModLabel.new()", ControlName));
                 try
                 {
                     C = (ModLabel)ModUiDesigner.IDH.CreateComponent(typeof(ModLabel), ControlName);
                 }
                 catch { C = new ModLabel(); }
                 break;
             case ("ModTextBox"):
                 PyCode.AppendLine(string.Format("{0} = ModTextBox()", ControlName));
                 RbCode.AppendLine(string.Format("{0} = ModTextBox.new()", ControlName));
                 try
                 {
                     C = (ModTextBox)ModUiDesigner.IDH.CreateComponent(typeof(ModTextBox), ControlName);
                 }
                 catch { C = new ModTextBox(); }
                 break;
             case ("ModRichTextBox"):
                 PyCode.AppendLine(string.Format("{0} = ModRichTextBox()", ControlName));
                 RbCode.AppendLine(string.Format("{0} = ModRichTextBox.new()", ControlName));
                 try
                 {
                     C = (ModRichTextBox)ModUiDesigner.IDH.CreateComponent(typeof(ModRichTextBox), ControlName);
                 }
                 catch { C = new ModRichTextBox(); }
                 break;
             case ("ModButton"):
                 PyCode.AppendLine(string.Format("{0} = ModButton()", ControlName));
                 RbCode.AppendLine(string.Format("{0} = ModButton.new()", ControlName));
                 try
                 {
                     C = (ModButton)ModUiDesigner.IDH.CreateComponent(typeof(ModButton), ControlName);
                 }
                 catch { C = new ModButton(); }
                 break;
             case ("ModCheckBox"):
                 PyCode.AppendLine(string.Format("{0} = ModCheckBox()", ControlName));
                 RbCode.AppendLine(string.Format("{0} = ModCheckBox.new()", ControlName));
                 try
                 {
                     C = (ModCheckBox)ModUiDesigner.IDH.CreateComponent(typeof(ModCheckBox), ControlName);
                 }
                 catch { C = new ModCheckBox(); }
                 break;
             case ("ModRadioButton"):
                 PyCode.AppendLine(string.Format("{0} = ModRadioButton()", ControlName));
                 RbCode.AppendLine(string.Format("{0} = ModRadioButton.new()", ControlName));
                 try
                 {
                     C = (ModRadioButton)ModUiDesigner.IDH.CreateComponent(typeof(ModRadioButton), ControlName);
                 }
                 catch { C = new ModRadioButton(); }
                 break;
             case ("ModDataGridView"):
                 PyCode.AppendLine(string.Format("{0} = ModDataGridView()", ControlName));
                 RbCode.AppendLine(string.Format("{0} = ModDataGridView.new()", ControlName));
                 try
                 {
                     C = (ModDataGridView)ModUiDesigner.IDH.CreateComponent(typeof(ModDataGridView), ControlName);
                 }
                 catch { C = new ModDataGridView(); }
                 break;
             case ("ModPanel"):
                 PyCode.AppendLine(string.Format("{0} = ModPanel()", ControlName));
                 RbCode.AppendLine(string.Format("{0} = ModPanel.new()", ControlName));
                 try
                 {
                     C = (ModPanel)ModUiDesigner.IDH.CreateComponent(typeof(ModPanel), ControlName);
                 }
                 catch { C = new ModPanel(); }
                 break;
             case ("ModTabControl"):
                 PyCode.AppendLine(string.Format("{0} = ModTabControl()", ControlName));
                 RbCode.AppendLine(string.Format("{0} = ModTabControl.new()", ControlName));
                 ModTabControl M = new ModTabControl();
                 try
                 {
                     C = (ModTabControl)ModUiDesigner.IDH.CreateComponent(typeof(ModTabControl), ControlName);
                 }
                 catch { C = new ModTabControl(); }
                 break;
             default:
                 continue;
         }
         SetNameInCode(PyCode, RbCode, ControlName, C);
         ModCodeAndControlHolder CPECC = ConvertControlPropertiesEventHandlersChildrenToCode(ChildNode, ControlName, C);
         PyCode.Append(CPECC.PyCode);
         RbCode.Append(CPECC.RbCode);
         PyCode.AppendLine(string.Format("{0}.Controls.Add({1})", ParentName, ControlName));
         RbCode.AppendLine(string.Format("{0}.Controls.Add({1})", ParentName, ControlName));
         PyCode.AppendLine(string.Format("ui.ModControls['{0}'] = {0}", ControlName));
         RbCode.AppendLine(string.Format("ui.mod_controls['{0}'] = {0}", ControlName));
         CPECC.Control.Parent = ParentControl;
     }
     ModCodeAndControlHolder Result = new ModCodeAndControlHolder();
     Result.PyCode = PyCode.ToString();
     Result.RbCode = RbCode.ToString();
     Result.Control = ParentControl;
     return Result;
 }