Exemplo n.º 1
0
        /// <summary>
        /// 载入矩形数据
        /// </summary>
        /// <param name="tmpltID"></param>
        private void LoadRects(XmlDocument doc)
        {
            DrawPanel.ListRect.SnipRectList.Clear();

            XmlNodeList rectNodes = doc.DocumentElement.SelectNodes(@"//snip");
            SnipRect    rect;
            int         x, y, width, height;
            string      id;

            //载入所有矩形
            foreach (XmlNode node in rectNodes)
            {
                if (node is XmlElement)
                {
                    XmlElement ele = (XmlElement)node;
                    id     = ele.GetAttribute("id");
                    x      = Utility.Convert.PxStringToInt(ele.GetAttribute("x"));
                    y      = Utility.Convert.PxStringToInt(ele.GetAttribute("y"));
                    width  = Utility.Convert.PxStringToInt(ele.GetAttribute("width"));
                    height = Utility.Convert.PxStringToInt(ele.GetAttribute("height"));
                    rect   = new SnipRect(x, y, width, height, id);
                    //rect.IsSelected = Utility.Convert.StringToBool(ele.GetAttribute("isSelected"));
                    rect.IsLocked = Utility.Convert.StringToBool(ele.GetAttribute("isLocked"));
                    rect.HasSnip  = Utility.Convert.StringToBool(ele.GetAttribute("hasSnip"));
                    rect.SnipType = (PageSnipType)Enum.Parse(typeof(PageSnipType), ele.GetAttribute("type"));
                    rect.SnipName = ele.GetAttribute("snipName");
                    rect.ToCss    = ele.GetAttribute("css");
                    DrawPanel.ListRect.SnipRectList.Add(rect);
                }
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// 初始化
 /// </summary>
 /// <param name="rect"></param>
 private void Init(SnipRect rect)
 {
     if (rect == null)
     {
         return;
     }
     SnipID   = rect.SnipID;
     SnipName = rect.SnipName;
 }
Exemplo n.º 3
0
        /// <summary>
        /// 矩形元素重画
        /// </summary>
        /// <param name="rect"></param>
        /// <param name="g"></param>
        public override void DrawRect(Rect rect, Graphics g)
        {
            Pen penBlack    = new Pen(Color.Black, PenSize);
            Pen penSelected = new Pen(this.SelectedRectColor, PenSize * BoldPenTimes);

            if (rect.IsDeleted)
            {
                return;
            }
            Rectangle rectangle = new Rectangle(
                rect.X,
                rect.Y,
                rect.Width,
                rect.Height);
            Rectangle rectangle2 = new Rectangle(
                rect.X,
                rect.Y,
                rect.Width + 5,
                rect.Height + 5);

            if (rect.IsSelected)
            {
                g.FillRectangle(RectSelectedBrush, rectangle);
                g.DrawRectangle(Pens.Black, rectangle);
                g.DrawImage(_selectedImg, new PointF(rectangle.X + penBlack.Width, rectangle.Y + penBlack.Width));//画选择标志
            }
            else
            {
                g.DrawRectangle(penBlack, rectangle);
            }
            if (rect.IsLocked)
            {
                g.FillRectangle(LockedBrush, rectangle);
                g.DrawImage(_lockedImg, new PointF(rectangle.X + 20 + penBlack.Width, rectangle.Y + penBlack.Width));//画选择标志
            }
            if (rect is SnipRect)
            {
                SnipRect sRect = (SnipRect)rect;
                if (!sRect.HasSnip)
                {
                }
                else if (sRect.SnipType != PageSnipType.Content)
                {
                    g.FillRectangle(HasSnipBrush, rectangle);
                    g.DrawImage(_hasSnip, new PointF(rectangle.X + penBlack.Width, rectangle.Y + 20 + penBlack.Width));//画选择标志
                }
                else if (sRect.SnipType == PageSnipType.Content)
                {
                    g.FillRectangle(HasContentSnipBrush, rectangle);
                    g.DrawImage(_hasContentSnip, new PointF(rectangle.X + penBlack.Width, rectangle.Y + 20 + penBlack.Width)); //画选择标志
                }
            }
            //释放资源
            penBlack.Dispose();
            penSelected.Dispose();
        }
Exemplo n.º 4
0
        public ChangeSnipPerpertyCommand(DesignPanel tdPanel, SnipRect pastedSnipRect, SnipData newData)
        {
            PastedSnipRect = pastedSnipRect;
            NewSnipData    = newData;
            OldSnipData    = new SnipData(pastedSnipRect.SnipData);

            TDPanel          = tdPanel;
            TDPanel.Modified = true;
            CommandInfo      = "更改页面片属性";
        }
Exemplo n.º 5
0
        /// <summary>
        /// 工厂模式动态创建Rect
        /// </summary>
        override public Rect CreateRect(int x, int y, int width, int height, Rect rect)
        {
            SnipRect newSnipRect = new SnipRect(x, y, width, height, Guid.NewGuid().ToString("N"));

            ///复制页面片数据
            if (((SnipRect)rect).SnipData != null)
            {
                newSnipRect.SnipData = new SnipData(((SnipRect)rect).SnipData);
            }

            return(newSnipRect);
        }
Exemplo n.º 6
0
 /// <summary>
 /// 保存页面片的节点
 /// </summary>
 /// <param name="rect">页面片所在的矩形</param>
 private void SaveSnipElement(SnipRect rect)
 {
     if (radioButtonContent.Checked)
     {
         SnipType  = PageSnipType.Content;
         IsContent = true;
     }
     else
     {
         SnipType  = PageSnipType.General;
         IsContent = false;
     }
 }
Exemplo n.º 7
0
        /// <summary>
        /// 递归实现 矩形向Xml 节点的转换
        /// </summary>
        /// <param name="parentEle"></param>
        /// <param name="rect"></param>
        void AddRectToXml(XmlElement parentEle, RectTreeNode rect)
        {
            Rect resultRect = DrawPanel.ListRect.SnipRectList.Find(
                new FindRectByLayerRect(rect.RectLayer).PredicateEqualRect);

            if (resultRect != null)
            {
                //由一个矩形(SnipRect)生成一个XmlElement节点
                SnipRect            srect      = (SnipRect)resultRect;
                SnipXmlElement      snipXmlEle = (SnipXmlElement)TmpltDoc.CreateElement("snip");//CreateSnip(srect.SnipID);
                SnipPartsXmlElement partsEle   = (SnipPartsXmlElement)TmpltDoc.CreateElement("parts");
                snipXmlEle.AppendChild(partsEle);
                snipXmlEle.Id       = srect.SnipID;
                snipXmlEle.SnipName = srect.SnipName;
                snipXmlEle.Title    = srect.Title;
                snipXmlEle.Css      = srect.ToCss;
                snipXmlEle.HasSnip  = srect.HasSnip;
                snipXmlEle.SnipType = srect.SnipType;
                if (srect.SnipType == PageSnipType.Content)
                {
                    TmpltDoc.HasContentSnip = true;
                }
                else
                {
                    TmpltDoc.HasContentSnip = false;
                }
                snipXmlEle.X        = srect.X;
                snipXmlEle.Y        = srect.Y;
                snipXmlEle.Width    = srect.Width.ToString() + "px";
                snipXmlEle.Height   = srect.Height.ToString() + "px";
                snipXmlEle.IsLocked = srect.IsLocked;
                rect.Element        = snipXmlEle;
            }
            else
            {
                SnipRectXmlElement rectEle = (SnipRectXmlElement)TmpltDoc.CreateElement("rect");
                rectEle.Css   = rect.RectLayer.Css;
                rectEle.IsRow = !rect.RectLayer.IsRow;
                rect.Element  = rectEle;
                //如果有孩子,则继续遍历
                if (rect.RectLayer.ChildRects != null)
                {
                    foreach (RectLayer childRect in rect.RectLayer.ChildRects)
                    {
                        AddRectToXml(rect.Element, new RectTreeNode(childRect, null));
                    }
                }
            }
            parentEle.AppendChild(rect.Element);
        }
Exemplo n.º 8
0
        /// <summary>
        /// 构造页面片
        /// </summary>
        /// <param name="tmpltID">当前模板ID</param>
        /// <param name="rect">当前矩形(区域)</param>
        /// <param name="parentHasContentSnip">当前模板是否已有正文型页面片</param>
        public NewSnipSetupForm(XmlDocument doc, SnipRect rect, bool parentHasContentSnip)
        {
            InitializeComponent();
            _doc = doc;
            TmpltType _type = (TmpltType)Enum.Parse(typeof(TmpltType), doc.DocumentElement.GetAttribute("type"));

            if (_type == TmpltType.Home)
            {
                groupBoxDoWhat.Visible = false;
                this.Height            = 94;
            }
            _snipRect             = rect;
            _parentHasContentSnip = parentHasContentSnip;
            _initSnipWidth        = rect.Width.ToString() + "px";
            Init(rect);
        }
Exemplo n.º 9
0
 /// <summary>
 /// 拷贝页面片数据
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 public void CopySnipData_Click(object sender, EventArgs e)
 {
     if (ListRect.GetSelectedRects().Count == 1)
     {
         SnipRect rect = (SnipRect)ListRect.GetSelectedRects()[0];
         if (rect.HasSnip)
         {
             rect.SnipData = new SnipData(TmpltDoc.GetSnipElementById(rect.SnipID));
             rect.CopyToClipboard();
         }
         else
         {
             MessageService.Show(StringParserService.Parse("${res:tmpltDesign.tmpltDrawPanel.message.hasNoneSnip}"));
         }
     }
 }
Exemplo n.º 10
0
        /// <summary>
        /// 打开或添加页面片属性
        /// </summary>
        /// <param name="selectedRect"></param>
        private void ChangeSnipPerperty(SnipRect selectedRect)
        {
            if (selectedRect.HasSnip)
            {
                ///打开页面片
                Form snipForm = Service.Workbench.OpenWorkDocument(WorkDocumentType.SnipDesigner, selectedRect.SnipID, (TDPanel as TmpltDesignerPanel).TmpltID);
            }
            else
            {
                TmpltXmlDocument   doc     = TmpltDoc;
                TmpltDesignerPanel tDpanel = TDPanel as TmpltDesignerPanel;
                //tDpanel.SaveTmplt(doc);
                tDpanel.SaveRects();
                NewSnipSetupForm form = new NewSnipSetupForm(doc, selectedRect, GetHasContentSnip());
                if (form.ShowDialog() == DialogResult.OK)
                {
                    SnipXmlElement snipElement = doc.GetSnipElementById(selectedRect.SnipID);
                    snipElement.SnipName = form.SnipName;
                    snipElement.SnipType = form.SnipType;
                    snipElement.Width    = selectedRect.Width.ToString() + "px";
                    snipElement.Height   = selectedRect.Height.ToString() + "px";
                    snipElement.Title    = form.SnipName;
                    snipElement.HasSnip  = true;

                    tDpanel.SaveRects();
                    selectedRect.HasSnip  = true;
                    TDPanel.Modified      = true;
                    selectedRect.SnipType = form.IsContent ? PageSnipType.Content : PageSnipType.General;
                    if (form.IsContent)
                    {
                        if (!doc.HasContentSnip)
                        {
                            doc.HasContentSnip = true;
                        }
                    }
                    TDPanel.HasContentSnip = form.IsContent;
                    ///打开页面片
                    Form snipForm = Service.Workbench.OpenWorkDocument(WorkDocumentType.SnipDesigner, selectedRect.SnipID, (TDPanel as TmpltDesignerPanel).TmpltID);
                }
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// 响应当前矩形Css属性
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void CurRectProperty_Click(object sender, EventArgs e)
        {
            ((TmpltDesignerPanel)TDPanel).SaveTmplt(TmpltDoc);
            Rect selectedRect = ListRect.GetSelectedRect(FirstRealPoint, SelectPrecision);

            if (selectedRect is SnipRect)
            {
                SnipRect       snipRect = (SnipRect)selectedRect;
                SnipXmlElement ele      = TmpltDoc.GetSnipElementById(snipRect.SnipID);

                //writed by zhenghao 2008.05.20
                CssSettingForm form = new CssSettingForm(snipRect.ToCss);
                form.Owner = this.FindForm();
                if (form.ShowDialog() == DialogResult.OK)
                {
                    snipRect.ToCss = form.CssText;
                    ele.Css        = snipRect.ToCss;
                    this.DrawFrame.TDPanel.Modified = true;
                }
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// 属性菜单执行函数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void SnipPerperty_Click(object sender, EventArgs e)
        {
            SnipRect selectedRect = (SnipRect)ListRect.GetSelectedRects()[0];

            ChangeSnipPerperty(selectedRect);
        }