<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/platform.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://www.blogger.com/navbar.g?targetBlogID\x3d13405220\x26blogName\x3dPavan+Podila\x27s+Blog\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dBLUE\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttps://pavanpodila.blogspot.com/search\x26blogLocale\x3den_US\x26v\x3d2\x26homepageUrl\x3dhttp://pavanpodila.blogspot.com/\x26vt\x3d-3240902251102105728', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe", messageHandlersFilter: gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER, messageHandlers: { 'blogger-ping': function() {} } }); } }); </script>

Sunday, June 05, 2005

High on Avalon

The best way to get upto speed with a new technology is to start a Pet-Project. Just this time, the technology was Avalon, the new Presentation subsystem for Windows Longhorn and the project, a Blogger Client. I always wanted my own blogger client which would have all the nice features I wanted.

I have divided the project into 2 stages. In the first stage, the client would only be able to read news using the Atom API. This is because I blog mostly on Blogger.com and they support Atom. I got hold of Atom.NET that provides a library for reading/writing Atom feeds. That taken care I started exploring XAML. Here is the basic interface I came up with. Notice the cool Gel button on the top-right corner. Enjoyed creating that.



The Atom.NET library returns the blog entry text as HTML. To display it well I need a WebBrowser control. Unfortunately Avalon still does not have a WebBrowser control but Windows Forms has one. But how would I use a WinForms control in Avalon? Enter the WindowsFormsHost class that supports embedding a WinForms control inside Avalon. Did a little bit of configuration to disable the context menu on the IE control and there I had it: a neatly embedded IE control inside an Avalon Application.



Next I will spend some more time understanding Styles/Themes in Avalon. That would spruce up the App.