JACKY SUN

Good Good Study, Day Day Up.

Windows Live Writer插件推荐:CodeSyntaxHighLighter

来源:原创 发表时间:2006-09-09 11:03:48 查看:905 评论:0

 

CodeSyntaxHighLighter是代码高亮插件,让你在WLW下发布BLOG也能使用代码高亮。该项目是codeplex的Windows Live Writer Plugins项目的一个部分,有源代码下载,有需要的同学可以参照着写自己的插件。

下载地址:

http://www.codeplex.com/Release/ProjectReleases.as...

插件属性设置:

可以设置语言(几乎支持目前所有主流的语言),限定代码宽度,是否显示行号。不过代码内的文字大小无法设置,需要直接该源代码才可以修改。

试着插入一段C#代码,看看效果 :)

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using WindowsLive.Writer.Api;
using Wilco.SyntaxHighlighting;
using vbAccelerator.Components.Controls;
namespace CodeSyntaxHighLighter
{
    public partial class ContentEditor : SmartContentEditor, IDisposable    
    {
        WindowsLive.Writer.Api.ISmartContentEditorSite _editorSite;
        public ContentEditor(WindowsLive.Writer.Api.ISmartContentEditorSite editorSite)
        {
            InitializeComponent();
            _codeBlockSize.DataBindings.Add("Visible", _fixedSizeCheck, "Checked");
            _widthText.DataBindings.Add("Enabled", _fixedWidthCheck, "Checked");
            _heighText.DataBindings.Add("Enabled", _fixedHeighCheck, "Checked");
            _editorSite = editorSite;
            _editorSite.ContentResized += _editorSite_ContentResized;
            FillInHighlighters();
        }
        void _editorSite_ContentResized(object sender, EventArgs e)
        {
            FillInSize();
        }
        private void FillInHighlighters()
        {
            foreach (HighlighterBase hl in Register.Instance.Highlighters)
            {
                string key = hl.Name.ToLower();
                ImageComboItem iitem = new ImageComboItem();
                if (_languageList.Images.ContainsKey(key))
                    iitem.Image = this._languageList.Images[key];
                else
                    iitem.Image = _languageList.Images[0];
                iitem.Text = hl.Name;
                _imageComboBox.Items.Add(iitem);
            }
        }
        private void _widthText_Validating(object sender, CancelEventArgs e)
        {
            int defaultValue;
            string key;
            if (sender == _widthText)
            {
                key = "Width";
                defaultValue = AdvancedPlugin.DefaultWidth;
            }
            else if (sender == _heighText)
            {
                key = "Height";
                defaultValue = AdvancedPlugin.DefaultHeight;
            }
            else return;
            bool result = true;
            TextBox box = (TextBox)sender;
            string value = box.Text.Trim();
            int intValue = -1;
            if (Int32.TryParse(value, out intValue))
            {
                if (intValue < 0) result = false;
            }
            else
                result = false;
            if (result)
            {
                SelectedContent.Properties.SetString(key, value);
                OnContentEdited();
            }
            else
                box.Text = SelectedContent.Properties.GetString(key, defaultValue.ToString());
        }
        private void _imageComboBox_SelectionChangeCommitted(object sender, EventArgs e)
        {
            ImageComboItem item = (ImageComboItem)_imageComboBox.SelectedItem;
            SelectedContent.Properties.SetString("Language", item.Text);
            OnContentEdited();
        }
        private void settingsCheckBoxes_CheckedChanged(object sender, EventArgs e)
        {
            CheckBox box = (CheckBox)sender;
            string key = box.Tag.ToString();
            SelectedContent.Properties.SetBoolean(key, box.Checked);
            OnContentEdited();
        }
        protected override void OnSelectedContentChanged()
        {
            base.OnSelectedContentChanged();
            _fixedSizeCheck.Checked = SelectedContent.Properties.GetBoolean(_fixedSizeCheck.Tag.ToString(), false);
            _fixedWidthCheck.Checked = SelectedContent.Properties.GetBoolean(_fixedWidthCheck.Tag.ToString(), false);
            _fixedHeighCheck.Checked = SelectedContent.Properties.GetBoolean(_fixedHeighCheck.Tag.ToString(), false);
            FillInSize();
            string language = SelectedContent.Properties.GetString("Language", "C#");
            ImageComboItem lngItem;
            foreach (Object item in _imageComboBox.Items)
            {
                lngItem = (ImageComboItem)item;
                if (lngItem.Text == language)
                {
                    _imageComboBox.SelectedItem = lngItem;
                    break;
                }
            }
        }
        private void FillInSize()
        {
            _widthText.Text = SelectedContent.Properties.GetString("Width", AdvancedPlugin.DefaultWidth.ToString());
            _heighText.Text = SelectedContent.Properties.GetString("Height", AdvancedPlugin.DefaultHeight.ToString());
        }
        #region IDisposable Members
        void IDisposable.Dispose()
        {
            _editorSite.ContentResized -= _editorSite_ContentResized;
        }
        #endregion
    }
}




姓名:  
邮件: 不在页面显示,作者回复后将通过邮件通知您
网站:
验证码:  
内容: