private void menuTransformToolToolStripMenuItem_Click(object sender, EventArgs e) { TreeNode t = this.prv_currentNodeContext; if (t != null) { if (t.Tag != null) { if (t.Tag is Library.MasterObject) { DialogResult dr = MessageBox.Show(Translate("TransformTool"), Translate("TransformToolTitle"), MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == System.Windows.Forms.DialogResult.Yes) { HTMLTool tool = new HTMLTool(); MasterObject mo = t.Tag as MasterObject; OutputHTML html = mo.GenerateProduction(); tool.HTML = html.HTML.ToString(); tool.JavaScript.Code = html.JavaScript.ToString(); tool.JavaScriptOnLoad.Code = html.JavaScriptOnLoad.ToString(); string error; CSSValidation.CSSValidate(html.CSS.ToString(), false, tool.CSSList.List, out error); tool.Width = mo.Width; tool.Height = mo.Height; tool.ConstraintWidth = mo.ConstraintWidth; tool.ConstraintHeight = mo.ConstraintHeight; Project.CurrentProject.Add(tool, "generated/" + mo.Title); Project.Save(Project.CurrentProject, ConfigDirectories.GetDocumentsFolder(), AppDomain.CurrentDomain.GetData("fileName").ToString()); Project.CurrentProject.ReloadProject(); } } } } }
private void toJavascriptToolStripMenuItem_Click(object sender, EventArgs e) { TreeNode t = this.prv_currentNodeContext; if (t != null) { if (t.Tag != null) { if (t.Tag is Library.MasterObject) { DialogResult dr = MessageBox.Show(Translate("ConvertToJavascriptText"), Translate("ConvertToJavascriptTitle"), MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dr == System.Windows.Forms.DialogResult.Yes) { MasterObject mo = t.Tag as MasterObject; HTMLTool tool = mo.ToJavascript(); Project.CurrentProject.Add(tool, "generated/" + mo.Title); Project.Save(Project.CurrentProject, ConfigDirectories.GetDocumentsFolder(), AppDomain.CurrentDomain.GetData("fileName").ToString()); Project.CurrentProject.ReloadProject(); } } } } }
public WebRenderer() { StringBuilder sb = new StringBuilder(); this.project = new Project(); Projects.Add(projectName, this.project); this.project.CreationDate = DateTime.Now; this.project.Title = projectName; this.project.Revision = 1; Projects.TrySelect(projectName, out this.project); // add js link //this.project.JavascriptUrls.Add("jquery-3.3.1.min.js"); this.project.JavascriptUrls.Add("jquery-ui.1.12/external/jquery/jquery.js"); this.project.JavascriptUrls.Add("jquery-ui.1.12/jquery-ui.js"); // creating all master-objects and tools HTMLTool tool = new HTMLTool(); tool.ConstraintHeight = EnumConstraint.AUTO; tool.ConstraintWidth = EnumConstraint.AUTO; tool.Path = "html"; tool.Name = "readOnlyText"; tool.Id = "labelText"; tool.HTML = "<div style='cursor:default' onselectstart='javascript:return false;' ondragstart='javascript:return false;'>{0}</div>"; this.project.Tools.Add(tool); tool = new HTMLTool(); tool.ConstraintHeight = EnumConstraint.AUTO; tool.ConstraintWidth = EnumConstraint.AUTO; tool.Path = "html"; tool.Name = "selectableText"; tool.Id = "labelSelectableText"; tool.HTML = "<div id='{0}' onmouseover='javascript:RaiseArrow(this);' indexValue='{1}' style='cursor:default' onselectstart='javascript:return false;' ondragstart='javascript:return false;'>{2}</div>"; this.project.Tools.Add(tool); tool = new HTMLTool(); tool.ConstraintHeight = EnumConstraint.AUTO; tool.ConstraintWidth = EnumConstraint.AUTO; tool.Path = "html"; tool.Name = "box"; tool.HTML = "<div id='{0}'>{1}</div>"; tool.Id = "boxContainer"; this.project.Tools.Add(tool); tool = new HTMLTool(); tool.ConstraintHeight = EnumConstraint.AUTO; tool.ConstraintWidth = EnumConstraint.AUTO; tool.Path = "html"; tool.Name = "li"; tool.Id = "liContainer"; sb = new StringBuilder(); sb.Append("<li><span itemName='{1}' style='display:inline' onclick='javascript:onTreeItemChanged(this);'>- </span>{0}</li>"); tool.HTML = sb.ToString(); this.project.Tools.Add(tool); tool = new HTMLTool(); tool.Path = "html"; tool.Name = "default"; tool.Id = "defaultCode"; CodeCSS outerDiv = new CodeCSS(".outerDiv"); outerDiv.Discret("margin-top", "auto"); outerDiv.Discret("margin-bottom", "auto"); outerDiv.Discret("margin-left", "auto"); outerDiv.Discret("margin-right", "auto"); outerDiv.Discret("width", "150px"); outerDiv.Discret("height", "30px"); outerDiv.Discret("padding", "5px"); outerDiv.Discret("background-color", "#EFFAFC"); outerDiv.Discret("border", "3px solid #3F48CC"); outerDiv.Discret("border-radius", "25px"); outerDiv.Discret("vertical-align", "middle"); outerDiv.Discret("cursor", "pointer"); tool.CSSAdditional.Add(outerDiv); CodeCSS innerDiv = new CodeCSS(".innerDiv"); innerDiv.Discret("width", "auto"); innerDiv.Discret("height", "auto"); innerDiv.Discret("padding", "5px"); innerDiv.Discret("font-size", "11pt"); innerDiv.Discret("background-color", "#FDFEFE"); innerDiv.Discret("border", "1px solid white"); innerDiv.Discret("text-align", "center"); tool.CSSAdditional.Add(innerDiv); CodeCSS lineUp = new CodeCSS(".lineUp"); lineUp.Discret("width", "auto"); lineUp.Discret("height", "auto"); lineUp.Discret("padding", "5px"); lineUp.Discret("font-size", "11pt"); lineUp.Discret("background-color", "#0000FF"); lineUp.Discret("color", "#FFFFFF"); tool.CSSAdditional.Add(lineUp); CodeCSS lineDown = new CodeCSS(".lineDown"); lineDown.Discret("width", "auto"); lineDown.Discret("height", "auto"); lineDown.Discret("padding", "5px"); lineDown.Discret("font-size", "11pt"); lineDown.Discret("background-color", "#222222"); lineDown.Discret("color", "#000000"); tool.CSSAdditional.Add(lineDown); sb = new StringBuilder(); sb.Append("var currentIndex; function onRoll(obj) { obj.oldBackgroundColor = obj.style.backgroundColor; "); sb.Append("obj.oldTextColor = obj.style.color; obj.style.backgroundColor = obj.rollBackColor; obj.style.color = obj.rollColor; } "); sb.Append("function unRoll(obj) { if (obj.oldBorderColor != undefined) { obj.style.borderColor = obj.oldBorderColor; "); sb.Append("obj.oldBorderColor = null; } obj.style.backgroundColor = obj.oldBackgroundColor; "); sb.Append("obj.style.color = obj.oldTextColor; } "); sb.Append("function onClickDown(obj) { obj.oldBorderColor = obj.style.borderColor; obj.style.borderColor = obj.clickBorderColor; } "); sb.Append("function onClickUp(obj) { if (obj.oldBorderColor != undefined) { obj.style.borderColor = obj.oldBorderColor; "); sb.Append("obj.oldBorderColor = null; } } "); sb.Append("function onSelectLine(obj) { obj.className = 'lineUp'; } "); sb.Append("function onUnselectLine(obj) { obj.className = 'lineDown'; } "); sb.Append("function RaiseArrow(obj) { var img; if (currentIndex) { img = document.getElementById('imgLeft_' + currentIndex); if (img) { img.src='left.png' }; img = document.getElementById('imgRight_' + currentIndex); if (img) { img.src='right.png' }; }; img = document.getElementById('imgLeft_' + obj.indexValue); if (img) { img.src='left_on.png' }; img = document.getElementById('imgRight_' + obj.indexValue); if (img) { img.src='right_on.png' }; currentIndex = obj.indexValue; }"); sb.Append("function LeaveArrow() { if (currentIndex) { img = document.getElementById('imgLeft_' + currentIndex); if (img) { img.src='left.png' }; img = document.getElementById('imgRight_' + currentIndex); if (img) { img.src='right.png' }; }; currentIndex = null; }"); sb.Append("function onImageRoll(obj) { if (obj.rollSrc != undefined) { obj.saveSrc = obj.src; obj.src = obj.rollSrc; } else { onRoll(obj); } }"); sb.Append(" function unImageRoll(obj) { if (obj.rollSrc != undefined) { obj.src = obj.saveSrc; } else { unRoll(obj); } }"); sb.Append("function onImageClickDown(obj) { if (obj.clickSrc != undefined) { obj.saveSrc = obj.src; obj.src = obj.clickSrc; } else { onClickDown(obj); } } "); sb.Append("function onImageClickUp(obj) { if (obj.clickSrc != undefined) { obj.src = obj.saveSrc; } else { onClickUp(obj); } } "); sb.Append("function serverSideCall(notif, data) { var p = document.getElementById('serverSideHandler'); p.setAttribute('notif', notif); p.setAttribute('data',data); p.click(); }"); sb.Append("function onTreeItemChanged(obj) { if (obj.innerText == '+') { obj.innerText = '- '; var i = document.getElementById(obj.itemName); i.style.display='block';} else { obj.innerText = '+'; var i = document.getElementById(obj.itemName); i.style.display='none';} }"); tool.JavaScript.Code = sb.ToString(); tool.HTML = @"<div id='serverSideHandler' style='display:none'></div>"; this.project.Tools.Add(tool); tool = new HTMLTool(); tool.Path = "html"; tool.Name = "button"; tool.Id = "buttonObject"; sb = new StringBuilder(); sb.Append("<table cellspacing='0' cellpadding='0' width='100%' height='100%' style='border:1px solid red'>"); sb.Append("<tr><td><button id='{0}' class='md-raised'>{1}</button></td></tr></table>"); tool.HTML = sb.ToString(); this.project.Tools.Add(tool); tool = new HTMLTool(); tool.Path = "html"; tool.Name = "link"; tool.Id = "clickableObject"; sb = new StringBuilder(); sb.Append("<table cellspacing='0' cellpadding='0' width='100%' height='100%'>"); sb.Append("<tr><td><div onselectstart='javascript:return false;' id='{0}'>"); sb.Append("<a href='javascript:void(0);' ondragstart='javascript:return false;'>{1}</a></div></td></tr></table>"); tool.HTML = sb.ToString(); this.project.Tools.Add(tool); tool = new HTMLTool(); tool.Path = "html"; tool.Name = "image"; tool.Id = "imageObject"; sb = new StringBuilder(); sb.Append("<table cellspacing='0' cellpadding='0' width='100%' height='100%'>"); sb.Append("<tr><td><div onselectstart='javascript:return false;'>"); sb.Append("<img src='{1}' width='{2}px' height='{3}px' id='{0}' ondragstart='javascript:return false;'/></div></td></tr></table>"); tool.HTML = sb.ToString(); this.project.Tools.Add(tool); tool = new HTMLTool(); tool.Path = "html"; tool.Name = "clickableImage"; tool.Id = "clickableImageObject"; sb = new StringBuilder(); sb.Append("<table cellspacing='0' cellpadding='0' width='100%' height='100%'>"); sb.Append("<tr><td><div onselectstart='javascript:return false;' id='{0}'>"); sb.Append("<img src='{1}' clickSrc='{5}' rollSrc='{6}' rollBackColor='{2}' rollColor='{3}' clickBorderColor='{4}' onmousedown='javascript:onImageClickDown(this);' onmouseup='javascript:onImageClickUp(this);' "); sb.Append("onmouseover='javascript:onImageRoll(this);' onmouseout='javascript:unImageRoll(this);' ondragstart='javascript:return false;'/></div></td></tr></table>"); tool.HTML = sb.ToString(); this.project.Tools.Add(tool); }
/// <summary> /// Render a window /// </summary> /// <param name="window">window to render</param> public void RenderControl(UXWindow window) { string previous; Projects.Activate(projectName, out previous); Page p = new Page(); window.Get("Constraint-Width", (x, y) => { EnumConstraint c; if (Enum.TryParse <EnumConstraint>(y.Value, out c)) { p.ConstraintWidth = c; } else { p.ConstraintWidth = EnumConstraint.AUTO; } }); window.Get("Constraint-Height", (x, y) => { EnumConstraint c; if (Enum.TryParse <EnumConstraint>(y.Value, out c)) { p.ConstraintHeight = c; } else { p.ConstraintHeight = EnumConstraint.AUTO; } }); window.Get("Disposition", (s, v) => { p.Disposition = Enum.Parse(typeof(Disposition), v.Value); }); window.Get("Width", (x, y) => { p.Width = Convert.ToUInt32(y.Value); }); window.Get("Height", (x, y) => { p.Height = Convert.ToUInt32(y.Value); }); MasterPage mp = new MasterPage(); RenderCSSProperties(window, mp.CSS); mp.Name = "masterPage_" + window.Name; mp.Width = 100; mp.Height = 100; mp.ConstraintWidth = EnumConstraint.RELATIVE; mp.ConstraintHeight = EnumConstraint.RELATIVE; mp.CountColumns = 1; mp.CountLines = 1; mp.Meta = "<meta name='viewport' content='initial-scale=1, maximum-scale=1, user-scalable=no'/>"; HTMLTool def = this.project.Tools.Find(x => x.Path == "html" && x.Name == "default"); HTMLObject obj = new HTMLObject(def); obj.Container = "globalContainer"; mp.Objects.Add(obj); this.project.Instances.Add(obj); List <AreaSizedRectangle> rects = new List <AreaSizedRectangle>(); AreaSizedRectangle sz = new AreaSizedRectangle(0, 0, 1, 1, 0, 0); rects.Add(sz); mp.MakeZones(rects); this.project.MasterPages.Add(mp); p.MasterPageName = mp.Name; p.Name = window.FileName; currentPage = p; currentMasterPage = mp; currentContainer = mp.HorizontalZones[0].VerticalZones[0].Name; currentObject = currentPage; foreach (IUXObject child in window.Children) { RenderControl(child); } using (FileStream fs = new FileStream(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, p.Name), FileMode.Create, FileAccess.Write, FileShare.Write)) { using (StreamWriter sw = new StreamWriter(fs)) { OutputHTML o = currentPage.GenerateProduction(); sw.Write(o.HTML); sw.Close(); } fs.Close(); } Projects.Reactivate(previous); }