Clase en el IRC
Bueno al fin logre entender como funciona el API de ATOM, jeje todo gracias a Gmikex. Che gracias gran paciencia la tuya :P
Bueno para los interesados, el log de esa charla esta en el svn de monoblog
Desarrollo de una herramienta Multiplataforma, sencilla y robusta para la edición y administración de Bitacoras en el Web (BLog). Desarrollada en C#, con Mono y GTK#.
Bueno al fin logre entender como funciona el API de ATOM, jeje todo gracias a Gmikex. Che gracias gran paciencia la tuya :P
Ya termine la modificacion q faltaba para poder seleccionar el post adecuado en el treeview, ahora cuando se selecciona una noticia, se carga esta en el View del lado derecho
Estuve tratando de liarme con el unico control que consideraba imposible del GTK, el treeview y bueno al parecer lo logre. Ahi les va un primer avance de mi codigo para visualizar Atom, me falta mejorarlo para que al momento de seleccionar un item en mi TreeView se carge la noticia respectiva pero ya lo hare despues
//VisorAtom
using System;
using System.Net;
using Atom.Core;
using Gtk;
using Glade;
using Gecko;
class AtomViewer
{
[Widget] Frame frame1;
[Widget] Entry txtURI;
[Widget] Gtk.Window wAtomViewer;
[Widget] ScrolledWindow treeframe;
WebControl web;
TreeView tv;
TreeStore store;
public static void Main()
{
new AtomViewer();
}
public AtomViewer()
{
Application.Init();
store = new TreeStore (typeof (string));
Glade.XML gxml = new Glade.XML(null,"AtomViewer.glade","wAtomViewer",null);
gxml.Autoconnect(this);
wAtomViewer.Resize(500,300);
txtURI.Activated += new EventHandler(LoadAtom);
wAtomViewer.DeleteEvent += new DeleteEventHandler(onExit);
tv = new TreeView (store);
tv.HeadersVisible = true;
tv.AppendColumn ("Post", new CellRendererText (), "text", 0);
treeframe.Add (tv);
web = new WebControl();
web.Show();
frame1.Add(web);
wAtomViewer.ShowAll();
Application.Run();
}
void LoadAtom(object o, EventArgs args)
{
web.LoadUrl(txtURI.Text);
LoadItems(txtURI.Text);
}
void onExit(object o, DeleteEventArgs args)
{
Application.Quit();
args.RetVal = true;
}
void LoadItems(string URI)
{
Console.WriteLine("LoadItems");
Uri blog = new Uri(URI);
AtomFeed feed = AtomFeed.Load(blog);
foreach (AtomEntry entry in feed.Entries)
{
Console.WriteLine(entry.Title.Content);
TreeIter iter = store.AppendValues(entry.Title.Content);
}
}
}