[转]制作BlogWriter 博客客户端
这个东东上次发出来有很多问题, 也没太多时间,忙里偷闲, 修改了下.上次发时工具栏提示,还都是toolstripbutton1 , toolstripbutton2..... 这个改过了,呵呵!
最主要的问题:
是文章发布时常会出现图片不能上传,还是本地图片地址.
先说下文章发布的步骤:
先找出文章中所有的图片地址->检查是不是本地图片->如果是本地图片测上传->将文章中的本地图片地址转为上传后图片的网络地址 -> 将文章发布.
本来是使用正则找出所有本地图片地址, 第一想到的是正测表达式有问题. 断点查看,正则没问题.
原来:
如:C:\Documents and Settings\Administrator\桌面\02asds.jpg本图片路径. 在html原文件中会是这样file:///C:/Documents%20and%20Settings/Administrator/桌面/02asds.jpg
程序找不本地路径.
解决:
除去 file:/// 及 %20
---------------------------------
介绍一下插件接口吧.
IPlugin:
/// <summary>
/// 所有插件接口基础.(所有插件接口都继承此接口)
/// </summary>
public interface IPlugin
{
/// <summary>
/// 插件的基本信息
/// </summary>
PlugBaseInfo BaseInfo{get;}
/// <summary>
/// 插件应用的启动方法.加载插件时调用.
/// </summary>
/// <param name="FunctionMenuItem"></param>
void Start();
}
所有插件须实现此接口.
其中PlugBaseInfo是一个包含插件基本信息的结构体.
/// <summary>
/// 插件的基本信息结构体
/// </summary>
public struct PlugBaseInfo
{
/// <summary>
/// 插件名称,将在BlogWrite 程序的功能菜单显示
/// </summary>
public string Name;
/// <summary>
/// 插件的类型.宿主程序通过此属性确定插件类型
/// </summary>
public string Type;
/// <summary>
/// 插件图标
/// </summary>
public Image Ico;
public string Readme;
}
IBlogAPI 接口:
IBlogAPI接口继承自IPlugin接口, 通过现实IBlogAPI接口,以扩展所有支持的博客API类型,目前仅支持MetaWeblog. IBlogAPI接口目前定义还不完善, 下次下说喽.
FunctionMenuService:
此类在BlogWriter.Interface.Service命名空间中.提供对宿主程序功能菜单的操作.
类App :
类App的静态成员Host提供宿主程序公开接口的访问.
插件Demo:
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
//
using BlogWriter.Interface;
using BlogWriter.Interface.Service;
using BlogWriter.Interface.BlogAPI;
namespace Houfeng.BlogWriterPlugins
{
public class PreBrowser:IPlugin
{
public PlugBaseInfo BaseInfo
{
get
{
BlogWriter.Interface.PlugBaseInfo bi = new BlogWriter.Interface.PlugBaseInfo();
bi.Name = "插件名字";
bi.Readme = "插件描述";
bi.Type = "FunctionMenu";
return bi;
}
}
public void Start()
{
FunctionMenuService fm = new FunctionMenuService();
ToolStripMenuItem ti = new ToolStripMenuItem("插件Demo(&B)");
ti.Click += new EventHandler(ti_Click);
fm.AddMenuItem("插件Demo", ti);
}
void ti_Click(object sender, EventArgs e)
{
// 菜单项事件处理
}
}
}
嘿嘿!注意添加对 BlogWriter.Interface.dll 的引用
附:http://www.cnblogs.com/houfeng/archive/2009/08/13/1544784.html