• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C# Style类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中Style的典型用法代码示例。如果您正苦于以下问题:C# Style类的具体用法?C# Style怎么用?C# Style使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



Style类属于命名空间,在下文中一共展示了Style类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: ContainsStyle

        public static bool ContainsStyle(Style style, System.Collections.ArrayList styles) {
            foreach (Style s in styles)
                if (s == style)
                    return true;

            return false;
        }
开发者ID:danielskowronski,项目名称:network-max-flow-demo,代码行数:7,代码来源:DrawingEnums.cs


示例2: HeaderPrint

        public static string HeaderPrint(string s, Style style)
        {
            if (s.Length > Stars.Length - 2)
                throw new Exception("Update HeaderPrinter");

            switch (style)
            {
                case Style.Left:
                    return string.Format(
                        "*{0}{1}*",
                        s, Pad(Stars.Length - s.Length - 2));
                case Style.CenterCaps:
                {
                    var totalPad = Stars.Length - 2 - s.Length;

                    var leftPad = totalPad/2;
                    var rightPad = totalPad - leftPad;

                    return string.Format(
                        "*{0}{1}{2}*",
                        Pad(leftPad), s.ToUpper(), Pad(rightPad));
                }

                default:
                    throw new NotImplementedException("Update HeaderPrinter");
            }
        }
开发者ID:ppittle,项目名称:AppInternalsDotNetSampler,代码行数:27,代码来源:HeaderPrinter.cs


示例3: SetRandomWallpaperFromPath

        public static void SetRandomWallpaperFromPath(FileInfo file, Style style)
        {
            if (file == null) return;

            SystemParametersInfo(SetDesktopWallpaper, 0, file.ToString(), UpdateIniFile | SendWinIniChange);
            var key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true);

            if (key == null) return;

            switch (style)
            {
                case Style.Stretch:
                    key.SetValue(@"WallpaperStyle", "2");
                    key.SetValue(@"TileWallpaper", "0");
                    break;
                case Style.Center:
                    key.SetValue(@"WallpaperStyle", "1");
                    key.SetValue(@"TileWallpaper", "0");
                    break;
                case Style.Tile:
                    key.SetValue(@"WallpaperStyle", "1");
                    key.SetValue(@"TileWallpaper", "1");
                    break;
                case Style.NoChange:
                    break;
            }

            key.Close();
        }
开发者ID:andersosthus,项目名称:WallpaperChanger,代码行数:29,代码来源:Wallpaper.cs


示例4: Set

        /// <summary>
        /// Set desktop wallpaper
        /// </summary>
        /// <param name="img">Image data</param>
        /// <param name="style">Style of wallpaper</param>
        public static void Set(System.Drawing.Image img, Style style)
        {
            try
            {
                string tempPath = Path.Combine(Path.GetTempPath(), "imageglass.jpg");
                img.Save(tempPath, System.Drawing.Imaging.ImageFormat.Jpeg);

                RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true);
                if (key == null)
                    return;

                if (style == Style.Stretched)
                {
                    key.SetValue(@"WallpaperStyle", "2");
                    key.SetValue(@"TileWallpaper", "0");
                }

                if (style == Style.Centered)
                {
                    key.SetValue(@"WallpaperStyle", "1");
                    key.SetValue(@"TileWallpaper", "0");
                }

                if (style == Style.Tiled)
                {
                    key.SetValue(@"WallpaperStyle", "1");
                    key.SetValue(@"TileWallpaper", "1");
                }

                SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, tempPath, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
            }
            catch (Exception) { }
        }
开发者ID:RazvanSt,项目名称:ImageGlass,代码行数:38,代码来源:DesktopWallapaper.cs


示例5: SetStyle

 public void SetStyle(Style style)
 {
     _officeColorTable = StyleBuilderFactory.GetOffice2007ColorTable(style);
     this.BorderColor=_officeColorTable.TextBoxBorderColor;
     //_startPaint = true;
     this.Refresh();
 }
开发者ID:GarnettLuo,项目名称:XiaoCai.WinformUI,代码行数:7,代码来源:TextBoxW.cs


示例6: TreeControl

        /// <summary>
        /// Constructor of a tree control with a particular style and renderer</summary>
        /// <param name="style">Tree style</param>
        /// <param name="itemRenderer">Renderer of a node in the tree. If null, then a new
        /// TreeItemRenderer is created and used</param>
        public TreeControl(Style style, TreeItemRenderer itemRenderer)
        {
            m_style = style;
            if (m_style == Style.CategorizedPalette)
                m_showRoot = false;

            m_root = new Node(this, null, null);

            m_dragHoverExpandTimer = new Timer();
            m_dragHoverExpandTimer.Interval = 1000; // 1 second delay for drag hover expand
            m_dragHoverExpandTimer.Tick += DragHoverTimerTick;

            m_autoScrollTimer = new Timer();
            m_autoScrollTimer.Interval = 200; // 5 Hz auto scroll rate
            m_autoScrollTimer.Tick += AutoScrollTimerTick;

            m_editLabelTimer = new Timer();
            m_editLabelTimer.Tick += EditLabelTimerTick;

            m_averageRowHeight = FontHeight + Margin.Top;

            SuspendLayout();

            m_textBox = new TextBox();
            m_textBox.Visible = false;
            m_textBox.BorderStyle = BorderStyle.None;

            m_textBox.KeyDown += TextBoxKeyDown;
            m_textBox.KeyPress += TextBoxKeyPress;
            m_textBox.LostFocus += TextBoxLostFocus;

            m_vScrollBar = new VScrollBar();
            m_vScrollBar.Dock = DockStyle.Right;
            m_vScrollBar.SmallChange = m_averageRowHeight;
            m_vScrollBar.ValueChanged += VerticalScrollBarValueChanged;

            m_hScrollBar = new HScrollBar();
            m_hScrollBar.Dock = DockStyle.Bottom;
            m_vScrollBar.SmallChange = 8;
            m_hScrollBar.ValueChanged += HorizontalScrollBarValueChanged;

            Controls.Add(m_vScrollBar);
            Controls.Add(m_hScrollBar);
            Controls.Add(m_textBox);

            ResumeLayout();

            BackColor = SystemColors.Window;

            base.DoubleBuffered = true;

            SetStyle(ControlStyles.ResizeRedraw, true);

            if (itemRenderer == null)
                itemRenderer = new TreeItemRenderer();
            ItemRenderer = itemRenderer;

            m_filterImage = ResourceUtil.GetImage16(Resources.FilterImage) as Bitmap;
            m_toolTip = new ToolTip();
        }
开发者ID:GeertVL,项目名称:ATF,代码行数:65,代码来源:TreeControl.cs


示例7: DrawContent

        protected override void DrawContent(int left, int top, int width, int height, Style cStyle)
        {
            if (_image == null) return;

            int imgWidth = _image.Width, imgHeight = _image.Height;
            _desktopOwner._screenBuffer.DrawImage(left + (width - imgWidth) / 2, top + (height - imgHeight) / 2, _image, 0, 0, imgWidth, imgHeight, _enabled ? (ushort)256 : (ushort)100);
        }
开发者ID:andrei-tatar,项目名称:MediaPlayer.NETMF,代码行数:7,代码来源:ImageButton.cs


示例8: Chart

       public Chart() : base ()
       {
         //SetStyle(ControlStyles.OptimizedDoubleBuffer, true); //the PlotPane is already dbl buffered
         SetStyle(ControlStyles.UserPaint, true);
         SetStyle(ControlStyles.AllPaintingInWmPaint, true); //no ERASE BACKGROUND
         
         SetStyle(ControlStyles.UserMouse, true);

         
         UpdateStyles();
         
         m_Style = new Style(this, null);
         m_RulerStyle = new Style(this, null);
         m_PlotStyle = new Style(this, null);
         
         BuildDefaultStyle(m_Style);
         BuildDefaultRulerStyle(m_RulerStyle);
         BuildDefaultPlotStyle(m_PlotStyle);
         
         
         m_ControllerNotificationTimer = new Timer();
         m_ControllerNotificationTimer.Interval = REBUILD_TIMEOUT_MS;
         m_ControllerNotificationTimer.Enabled = false;
         m_ControllerNotificationTimer.Tick += new EventHandler((o, e) =>
                                                       {
                          //todo ETO NUJNO DLYA DRAG/DROP   if (m_RepositioningColumn!=null || m_ResizingColumn!=null ) return;//while grid is being manipulated dont flush timer just yet
                                                       
                                                        m_ControllerNotificationTimer.Stop(); 
                                                        notifyAndRebuildChart();
                                                       });
       }
开发者ID:vlapchenko,项目名称:nfx,代码行数:31,代码来源:Chart.cs


示例9: Set

        public static void Set(string fileName, Style style)
        {
            string filePath = Path.Combine("Images", fileName);
            Image image = Image.FromFile(filePath, true);
            string tempPath = Path.Combine(Path.GetTempPath(), fileName);
            image.Save(tempPath, System.Drawing.Imaging.ImageFormat.Bmp);

            RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true);
            if (style == Style.Stretched)
            {
                key.SetValue(@"WallpaperStyle", 2.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }

            if (style == Style.Centered)
            {
                key.SetValue(@"WallpaperStyle", 1.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }

            if (style == Style.Tiled)
            {
                key.SetValue(@"WallpaperStyle", 1.ToString());
                key.SetValue(@"TileWallpaper", 1.ToString());
            }

            SystemParametersInfo(SPI_SETDESKWALLPAPER,
                0,
                tempPath,
                SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
        }
开发者ID:Oberheim,项目名称:WallpaperChanger,代码行数:31,代码来源:WallpaperChanger.cs


示例10: StyleListBox

		public StyleListBox(IStyleSet styleSet, Style style, bool showDefaultStyleItem, bool showOpenDesignerItem) :
			this()
		{
			if (styleSet == null) throw new ArgumentNullException("design");
			if (style == null) throw new ArgumentNullException("style");
			Initialize(styleSet, showDefaultStyleItem, showOpenDesignerItem, style.GetType(), style);
		}
开发者ID:stewmc,项目名称:vixen,代码行数:7,代码来源:StyleListBox.cs


示例11: HandleStartElement

        protected override void HandleStartElement(XmlNodeInformation nodeInfo)
        {
            if (nodeInfo.Is(NamespaceId.w, NormalizedVersion("style")))
            {
                Style newStyle = new Style(nodeInfo);
                newStyle.StyleType = nodeInfo.GetAttributeValue(NormalizedVersion("type"));
                m_styles.Add(newStyle.Id, newStyle);
                m_activeStyle = newStyle;
                m_bSendAllToActiveStyle = false;
            }
            else if (nodeInfo.Is(NamespaceId.w, NormalizedVersion("basedOn")))
            {
                m_activeStyle.BasedOn = nodeInfo.GetAttributeValue(NormalizedVersion("val"));
            }
            else if (nodeInfo.Is(NamespaceId.w, NormalizedVersion("name")))
            {
                m_activeStyle.Name = nodeInfo.GetAttributeValue(NormalizedVersion("val"));
            }
            else if (nodeInfo.Is(NamespaceId.w, NormalizedVersion("rPr")))
            {
                m_bSendAllToActiveStyle = true;
            }
            else if (m_bSendAllToActiveStyle)
            {
                if (m_activeStyle != null)
                {
                    nodeInfo.GetAttributes(); // force them to be loaded
                    m_activeStyle.AddProperty(nodeInfo);
                }

            }

        }
开发者ID:killbug2004,项目名称:WSProf,代码行数:33,代码来源:StyleSheet.cs


示例12: Set

        public static void Set(string uri, Style style)
        {
            System.IO.Stream s = new System.Net.WebClient().OpenRead(uri);

            System.Drawing.Image img = System.Drawing.Image.FromStream(s);
            string tempPath = Path.Combine(Path.GetTempPath(), "wallpaper.bmp");
            img.Save(tempPath, System.Drawing.Imaging.ImageFormat.Bmp);

            RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true);
            if (style == Style.Stretched)
            {
                key.SetValue(@"WallpaperStyle", 2.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }

            if (style == Style.Centered)
            {
                key.SetValue(@"WallpaperStyle", 1.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }

            if (style == Style.Tiled)
            {
                key.SetValue(@"WallpaperStyle", 1.ToString());
                key.SetValue(@"TileWallpaper", 1.ToString());
            }

            SystemParametersInfo(SPI_SETDESKWALLPAPER,
                0,
                tempPath,
                SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
        }
开发者ID:schulzetenberg,项目名称:LastFM-Album-Wallpaper,代码行数:32,代码来源:Wallpaper.cs


示例13: Set

        public static void Set(String uri, Style style)
        {
            System.Drawing.Image img = Image.FromStream(new System.Net.WebClient().OpenRead(uri.ToString()));

            // 将图片保存到本地目录
            img.Save(Environment.GetEnvironmentVariable("Temp") + "\\" + ImageName, System.Drawing.Imaging.ImageFormat.Bmp);

            RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true);
            if (style == Style.Stretched)
            {
                key.SetValue(@"WallpaperStyle", 2.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }
            else if (style == Style.Centered)
            {
                key.SetValue(@"WallpaperStyle", 1.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }
            else if (style == Style.Tiled)
            {
                key.SetValue(@"WallpaperStyle", 1.ToString());
                key.SetValue(@"TileWallpaper", 1.ToString());
            }

            // 设置桌面壁纸的API
            SystemParametersInfo(SPI_SETDESKWALLPAPER
                                , 0
                                , Environment.GetEnvironmentVariable("Temp") + "\\" + ImageName
                                , SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
        }
开发者ID:zhanghuihn,项目名称:BingWallpaper,代码行数:30,代码来源:Wallpaper.cs


示例14: SetWallPaper

        /// <summary>
        /// Sets wallpaper and style
        /// WinowsAPI Call
        /// </summary>
        /// <param name="image"></param>
        /// <param name="style"></param>
        public static void SetWallPaper(BitmapImage image, Style style)
        {
            if (image != null)
            {
                string tempPath = Path.Combine(Path.GetTempPath(), "wallpaper");

                //image.Save(tempPath, System.Drawing.Imaging.ImageFormat.Jpeg)
                JpegBitmapEncoder encoder = new JpegBitmapEncoder();

                try
                {
                    encoder.Frames.Add(BitmapFrame.Create(image));
                }
                catch { }

                using(Stream fs = new FileStream(tempPath, FileMode.Create))
                {
                    encoder.Save(fs);
                }

                SetWallPaperStyle(style);

                //Win API Call
                SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, tempPath, SPIF_UPDATEINIFILE | SPIF_SENDWINIINICHANGE);
            }
        }
开发者ID:jabaker88,项目名称:WebPaper,代码行数:32,代码来源:WinConfigWrapper.cs


示例15: Set

 public static void Set(Uri uri, Style style)
 {
     System.IO.Stream s = new WebClient().OpenRead(uri.ToString());
     //获取壁纸文件,传入到流
     System.Drawing.Image img = System.Drawing.Image.FromStream(s);
     //传入到image中
     string tempPath = Path.Combine(Path.GetTempPath(), "wallpaper.bmp");
     //将壁纸的存储地址设置为Temp目录,并且命名为wallpaper.bmp
     img.Save(tempPath, System.Drawing.Imaging.ImageFormat.Bmp);
     //保存为bmp文件
     RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true);
     //打开注册表
     //判断壁纸设置的类型,并且将键值写入注册表
     if (style == Style.Stretched)
     {
         key.SetValue(@"WallpaperStyle", 2.ToString());
         key.SetValue(@"TileWallpaper", 0.ToString());
     }
     if (style == Style.Centered)
     {
         key.SetValue(@"WallpaperStyle", 1.ToString());
         key.SetValue(@"TileWallpaper", 0.ToString());
     }
     if (style == Style.Tiled)
     {
         key.SetValue(@"WallpaperStyle", 1.ToString());
         key.SetValue(@"TileWallpaper", 1.ToString());
     }
     //调用方法设置壁纸
     SystemParametersInfo(SPI_SETDESKWALLPAPER,
         0,
         tempPath,
         SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
 }
开发者ID:Hsiny,项目名称:BingWallpaper,代码行数:34,代码来源:Wallpaper.cs


示例16: WriteDesignerStyleAttributes

 internal static unsafe void WriteDesignerStyleAttributes(HtmlMobileTextWriter writer, MobileControl control, Style style)
 {
     Alignment alignment = *((Alignment*) style.get_Item(Style.AlignmentKey, true));
     Wrapping wrapping = *((Wrapping*) style.get_Item(Style.WrappingKey, true));
     Color c = (Color) style.get_Item(Style.BackColorKey, true);
     bool flag = alignment != 0;
     bool flag2 = (wrapping == 1) || (wrapping == 0);
     string str = "100%";
     if (!flag2)
     {
         writer.Write(" style=\"overflow-x:hidden;width:" + str);
     }
     else
     {
         writer.Write(" style=\"word-wrap:break-word;overflow-x:hidden;width:" + str);
     }
     if (c != Color.Empty)
     {
         writer.Write(";background-color:" + ColorTranslator.ToHtml(c));
     }
     if (flag)
     {
         writer.Write(";text-align:" + Enum.GetName(typeof(Alignment), alignment));
     }
 }
开发者ID:ikvm,项目名称:webmatrix,代码行数:25,代码来源:Utils.cs


示例17: DeepCopy

 public void DeepCopy(IDeepCopyable source, ICopyManager copyManager)
 {
   ListViewItemGenerator icg = (ListViewItemGenerator) source;
   _itemTemplate = copyManager.GetCopy(icg._itemTemplate);
   _itemContainerStyle = copyManager.GetCopy(icg._itemContainerStyle);
   _parent = copyManager.GetCopy(icg._parent);
   if (icg._items == null)
     _items = null;
   else
   {
     _items = new List<object>(icg._items.Count);
     foreach (object item in icg._items)
       _items.Add(copyManager.GetCopy(item));
   }
   _populatedStartIndex = icg._populatedStartIndex;
   _populatedEndIndex = icg._populatedEndIndex;
   if (icg._materializedItems == null)
     _materializedItems = null;
   else
   {
     _materializedItems = new List<FrameworkElement>(icg._materializedItems.Count);
     foreach (FrameworkElement item in icg._materializedItems)
       _materializedItems.Add(copyManager.GetCopy(item));
   }
 }
开发者ID:HAF-Blade,项目名称:MediaPortal-2,代码行数:25,代码来源:ListViewItemGenerator.cs


示例18: GenerateHeadingOneCharStyle

        private Style GenerateHeadingOneCharStyle()
        {
            Style style1 = new Style() { Type = StyleValues.Character, StyleId = HeadingOneCharStyle, CustomStyle = true };
            StyleName styleName1 = new StyleName() { Val = "Heading 1 Char" };
            BasedOn basedOn1 = new BasedOn() { Val = "DefaultParagraphFont" };
            LinkedStyle linkedStyle1 = new LinkedStyle() { Val = "Heading1" };
            UIPriority uIPriority1 = new UIPriority() { Val = 9 };
            //Rsid rsid1 = new Rsid() { Val = "0013195F" };

            StyleRunProperties styleRunProperties1 = new StyleRunProperties();
            RunFonts runFonts1 = new RunFonts() { AsciiTheme = ThemeFontValues.MajorHighAnsi, HighAnsiTheme = ThemeFontValues.MajorHighAnsi, EastAsiaTheme = ThemeFontValues.MajorEastAsia, ComplexScriptTheme = ThemeFontValues.MajorBidi };
            Color color1 = new Color() { Val = "2E74B5", ThemeColor = ThemeColorValues.Accent1, ThemeShade = "BF" };
            FontSize fontSize1 = new FontSize() { Val = "32" };
            FontSizeComplexScript fontSizeComplexScript1 = new FontSizeComplexScript() { Val = "32" };

            styleRunProperties1.Append(runFonts1);
            styleRunProperties1.Append(color1);
            styleRunProperties1.Append(fontSize1);
            styleRunProperties1.Append(fontSizeComplexScript1);

            style1.Append(styleName1);
            style1.Append(basedOn1);
            style1.Append(linkedStyle1);
            style1.Append(uIPriority1);
            //style1.Append(rsid1);
            style1.Append(styleRunProperties1);

            return style1;
        }
开发者ID:FerHenrique,项目名称:Owl,代码行数:29,代码来源:StyleCreator.cs


示例19: PlayerZones

            public PlayerZones(int playerIndex, Style.IStyleContainer parent, XElement styleDefinition)
            {
                var layout = new Style.LayoutGizmo<UI.TransformNode>(parent, styleDefinition);
                layout.Initialize();
                layout.Target.Dispatcher = parent.Target;
                layout.BindingProvider = this;
                UIStyle = layout;
                PlayerIndex = playerIndex;

                m_manaTextEvaluator = GameApp.Service<GameManager>().CreateGameEvaluator(game =>
                {
                    var player = game.Players[PlayerIndex];
                    return player.Mana != 0 || player.MaxMana != 0
                           ? player.Mana.ToString() + "/" + player.MaxMana.ToString()
                           : "0";
                }, "-");

                Library = new CardZone(UIStyle.ChildIds["Library"]);
                Hand = new CardZone(UIStyle.ChildIds["Hand"]);
                Sacrifice = new CardZone(UIStyle.ChildIds["Sacrifice"]);
                Battlefield = new CardZone(UIStyle.ChildIds["Battlefield"]);
                Hero = new CardZone(UIStyle.ChildIds["Hero"]);
                Assists = new CardZone(UIStyle.ChildIds["Assists"]);
                Graveyard = new CardZone(UIStyle.ChildIds["Graveyard"]);
            }
开发者ID:galaxyyao,项目名称:TouhouGrave,代码行数:25,代码来源:GameUI.PlayerZones.cs


示例20: StyleForToken_GetsNullForUnknown

        public void StyleForToken_GetsNullForUnknown()
        {
            var subject = new Style();

            Check.That(subject.StyleForToken(_root)).IsNull();
            Check.That(subject[_root]).IsNull();
        }
开发者ID:akatakritos,项目名称:PygmentSharp,代码行数:7,代码来源:StyleTests.cs



注:本文中的Style类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# StyleBundle类代码示例发布时间:2022-05-24
下一篇:
C# StudyXml类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap