<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>El cajón desastre &#187; Live Writer</title>
	<atom:link href="http://www.dubasdey.com/category/software/live-writer/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dubasdey.com</link>
	<description></description>
	<lastBuildDate>Tue, 02 Jun 2009 14:25:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Crear plugins para Windows Live! Writer</title>
		<link>http://www.dubasdey.com/2006/09/12/crear-plugins-para-windows-live-writer/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=crear-plugins-para-windows-live-writer</link>
		<comments>http://www.dubasdey.com/2006/09/12/crear-plugins-para-windows-live-writer/#comments</comments>
		<pubDate>Tue, 12 Sep 2006 18:43:18 +0000</pubDate>
		<dc:creator>Kuroneko</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Live Writer]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.dubasdey.com/2007/03/12/crear-plugins-para-windows-live-writer/</guid>
		<description><![CDATA[
Crear un plugin para Windows Live! Writer puede resultar muy sencillo. Existen dos formas de crear los plugins, una “Simple” donde simplemente mostramos un dialogo donde pedimos los datos que queramos y despu&#233;s creamos el HTML y otro m&#233;todo mas complejo en el cual adem&#225;s proveemos un control para poder editar el contenido que hemos [...]]]></description>
			<content:encoded><![CDATA[</p>
<p>Crear un plugin para Windows Live! Writer puede resultar muy sencillo. Existen dos formas de crear los plugins, una <em>“Simple”</em> donde simplemente mostramos un dialogo donde pedimos los datos que queramos y despu&eacute;s creamos el <em>HTML</em> y otro m&eacute;todo mas complejo en el cual adem&aacute;s proveemos un control para poder editar el contenido que hemos insertado.
<p>Hoy voy a explicar como hacer el plugin m&aacute;s simple. Solo hemos de empezar creando una Biblioteca de clases de .NET, Windows Live! Writer acepta vb.net y c# tanto sobre .NET 1.1 como 2.0 para los plugins
<p>A este proyecto hemos de importarle el ensamblado <strong>WindowsLive.Writer.Api.dll</strong> que se encuentra el la carpeta de nuestra instalaci&oacute;n de Windows Live! Writer e importar el espacio de nombres <strong>WindowsLive.Writer.Api</strong>, con esto ya tenemos todo listo para empezar a trabajar
<p>&nbsp;</p>
<pre class="csharp" style="border-right: #d0d0d0 1px solid; border-top: #d0d0d0 1px solid; border-left: #d0d0d0 1px solid; color: #000066; border-bottom: #d0d0d0 1px solid">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">using</span> <span class="kw5">System</span>.<span class="me1">Windows</span>.<span class="me1">Forms</span>;</div>
<li class="li1">
<div class="de1"><span class="kw1">using</span> WindowsLive.<span class="me1">Writer</span>.<span class="me1">Api</span>;</div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"><span class="kw1">namespace</span> HelloWorldPlugin<span class="br0">{</span></div>
<li class="li2">
<div class="de2"> <span class="br0">[</span>WriterPlugin<span class="br0">(</span><span class="st0">"605EEA63-B54B-4e6d-A290-F5E9E8229FC1"</span>, <span class="st0">"Simple Hola Mundo"</span>, </div>
<li class="li1">
<div class="de1"> ImagePath = <span class="st0">"Imagenes.icono.png"</span>,</div>
<li class="li1">
<div class="de1"> PublisherUrl = <span class="st0">"http://www.dubasdey.com"</span>,</div>
<li class="li1">
<div class="de1"> Description = <span class="st0">"Escribe un mensaje en h2."</span><span class="br0">)</span><span class="br0">]</span></div>
<li class="li1">
<div class="de1"> </div>
<li class="li2">
<div class="de2"> <span class="br0">[</span>InsertableContentSource<span class="br0">(</span> <span class="st0">"Simple Hola Mundo"</span> <span class="br0">)</span><span class="br0">]</span></div>
<li class="li1">
<div class="de1"> <span class="kw1">public</span> <span class="kw4">class</span> SimpleHelloWorldPlugin : ContentSource<span class="br0">{</span></div>
<li class="li1">
<div class="de1"> <span class="kw1">public</span> SimpleHelloWorldPlugin<span class="br0">(</span><span class="br0">)</span><span class="br0">{</span><span class="br0">}</span></div>
<li class="li1">
<div class="de1"> </div>
<li class="li1">
<div class="de1"> <span class="kw1">public</span> <span class="kw1">override</span> DialogResult CreateContent<span class="br0">(</span>IWin32Window dialogOwner, <span class="kw1">ref</span> <span class="kw4">string</span> newContent<span class="br0">)</span><span class="br0">{</span></div>
<li class="li2">
<div class="de2"> <span class="co1">// Creamos el dialogo HelloWorldInsertForm, que contiene</span></div>
<li class="li1">
<div class="de1"> <span class="co1">// una caja de texto y la propiedad Message para obteber su valor</span></div>
<li class="li1">
<div class="de1"> HelloWorldInsertForm insertForm = <a href="http://www.google.com/search?q=new+msdn.microsoft.com"><span class="kw3">new</span></a> HelloWorldInsertForm<span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> DialogResult result = insertForm.<span class="me1">ShowDialog</span><span class="br0">(</span><span class="br0">)</span>;</div>
<li class="li1">
<div class="de1"> <span class="kw1">if</span><span class="br0">(</span>result==DialogResult.<span class="me1">OK</span><span class="br0">)</span><span class="br0">{</span> <span class="co1">// Si el resultado es OK creamos el contenido</span></div>
<li class="li2">
<div class="de2"> newContent = <span class="st0">"&lt;h2&gt;"</span> + insertForm.<span class="me1">Message</span> + <span class="st0">"&lt;/h2&gt;"</span>; </div>
<li class="li1">
<div class="de1"> <span class="br0">}</span></div>
<li class="li1">
<div class="de1"> <span class="kw1">return</span> result;</div>
<li class="li1">
<div class="de1"> <span class="br0">}</span></div>
<li class="li1">
<div class="de1"> <span class="br0">}</span></div>
<li class="li2">
<div class="de2"><span class="br0">}</span> </div>
</li>
</ol>
</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Bien lo primero que vemos en el c&oacute;digo son una serie de atributos entre corchetes.<br />El primero, <strong>WriterPlugin</strong>, se usa para especificar que es un plugin de WindowsLive.Writer asi como una serie de propiedades del mismo. La primera cadena corresponde a un <strong>GUID</strong> que identificara &&uacute;acute;nicamente al plugin (cada plugin tiene que tener su GUID), despu&eacute;s tenemos el nombre del plugin, que es el nombre que tendr&aacute; a la vista, la siguiente cadena corresponde a la ruta (dentro del ensamblado) de una imagen PNG de 20&#215;18 p&iacute;xeles insertada como recurso incrustado que se usara como icono del plugin, los siguientes dos textos corresponden a una URL y una descripci&oacute;n para el Plugin.
<p>&nbsp;
<p>El siguiente atributo <strong>InsertableContentSource</strong> solo lleva el nombre del plugin y sirve para indicar que el plugin pertenece a un contenido insertable.
<p>&nbsp;
<p>Lo siguiente que necesitamos despues de a&ntilde;adir estos atributos a nuestra clase es que la clase herede de <strong>ContentSource</strong> y sobreescribir como vemos el metodo <strong>CreateContent</strong>.
<p>&nbsp;
<p><strong>CreateContent</strong> recive 2 parametros, el primero es el manejador de la ventana propietaria, para hacer un dialogo modal a esa ventana y el segundo es un valor de cadena por referencia donde escribiremos el codigo <em>HTML</em> que queramos depositar. Por ultimo el metodo devuelve un <strong>DialogResult</strong> con el que indicaremos si el usuario acepto las operaciones y cancelo. En esta funcion podremos hacer lo que necesitemos, por ejemplo crear un dialogo para pedir un texto como en el ejemplo y devolver ese texto como Heading 2 reescribiendo la cadena <strong>NewContent</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dubasdey.com/2006/09/12/crear-plugins-para-windows-live-writer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

