Windows Live Writer插件编写
由. Ghost 将文章归档于 Windows Live

首先,你希望你的插件有哪些选项?这些只是基础的插件,所以当安装好插件后如何使得它的功能是终端用户们想要的就是我们所面临的问题。我们最近常用一些 BLOG 文本输入插件,因此我下面会介绍下怎么样让我们输入的文字成为默认的粗体字型。
我们必须创建一个包括所有设置属性的新 Class。在这个例子中,我们称之为 PluginSettings.cs 。在我们开始之前,我们还需先声明一个实例 IProperties 接口:
private IProperties m_properties;
private const string DEFAULTBOLD = "DEFAULTBOLD";
Class 的设置需要传递一个 IProperties 实例来获得一个参照,然后你需要设置你刚才声明的 IProperties 实例,现在你的构造器是这样的:
public PluginSettings(IProperties properties)
{
m_properties = properties;
}
然后我们将 Class 设置写入属性,你的插件中可使用以下5种中的1个类型:int, string, boolean, decimal,float。在这个插件中我们将使用 Boolean,因为我们在设置字体是否是粗体型时为 true 或 false 即逻辑是或否。这个插件只需要1个属性,我的代码是这样的:
public bool DefaultBoldOption
{
get { return m_properties.GetBoolean(DEFAULTBOLD, true); }
set { m_properties.SetBoolean(DEFAULTBOLD, value); }
}
你会发现在这里我们会使用先前的常量值,它作为一个属性名传递给插件相应的属性,其中一共有两部分,一个是 GET 部分,另一个是 SET 部分。GET 部分必须返回一个值,这个值是你在使用的任何类型。在这个例子中是 Boolean 值,因此我们使用IProperties' GetBoolean方法。SET部分是我们要设置的属性值。这部分由 Setting class 完成。
现在我们回到插件的主 Class。声明一个 PluginSettings 对象(我在这里称之为 M_Defaultoptions),这在后面会进行设置。为了这样做我们需要忽略初始化。声明最初设置意味着默认属性对其他插件也会应用于其他插件。
public override void Initialize(IProperties pluginOptions)
{
base.Initialize(pluginOptions);
m_defaultsettings = new PluginSettings(pluginOptions);
}
请注意我们是怎样传递 IProperties 对象给 PluginSettings class
你或许记得在之前的指南中,在 WriterPlugin 部分中我们设置 HasEditbleOptions 为 false,现在我们要将其设置为 true,这样选项按钮会生效。在我们给插件设置选项窗口之前,我们先加入新的Windows形式到工程中(我在这里取名为mine frmOptions.cs)

现在按F7然后进入源代码界面,然后再一次加入 WindowsLive.Writer.Api; namespace。在顶部对 PluginSettings class 声明新的实例。并且我们需要在设计器中将 PluginSetting 传递,然后采用默认设置。
public frmOptions(PluginSettings settings)
{
InitializeComponent();
m_settings = settings;
// This sets the checkbox to be whatever the default option was
chBoldOption.Checked = m_settings.DefaultBoldOption;
}
当我们按保存按钮时,只有一处需要保存:
private void btnSave_Click(object sender, EventArgs e)
{
// This actually sets the option to be whatever the checkbox is currently at
m_settings.DefaultBoldOption = chBoldOption.Checked;
this.Close();
}
好了回到主插件 Class。现在我们有了我们的选择列表,我们只需选择相应选项来告诉插件该做什么;因此我们这里不采用 EditOptions 方法。
public override void EditOptions(IWin32Window dialogOwner)
{
PluginSettings options = new PluginSettings(this.Options);
frmOptions op = new frmOptions(options);
op.ShowDialog();
}
现在最后件事就是将这些设置应用到BLOG输入中。就这个插件而言,其内容是简单的因为只涉及了1个设置。在 CreateContent 这个方法里面我们使用IF声明,我们还要附加一个IF声明来确定这个设置是否被应用。而这里使用 Boolean 只用进行简单的选择。IF声明方式如下:
if (m_defaultsettings.DefaultBoldOption)
newContent = string.Format("{0}", newContent);
如上你就完成了,源代码请在这里下载。(via)
Permalink: Windows Live Writer插件编写
Tags:
live
blog
软件
插件
Tips
Trackback: http://www.creative-weblogging.com/cgi-bin/mt-tb.pl/65508

Mr Wong





