Friday, August 15, 2008

Foxkit Vector Icon


So after doing nothing for a while I started thinking a lot about a logo for Foxkit.

I've never been very artistic, but I had a nice vision in my head for the logo (more so icon), so I started thinking about how to make it using vectors art. I downloaded Inkscape and got to work trying to figure out how to use all the tools, and since I've spent lots of time watching multiple people use Illustrator (the vector equivalent to Photoshop) over many years, I had a general idea what the tools should be able to do.

After quite a bit of experimentation and failure I eventually got the basic outline of what I had in my head. With quite a bit more failure I eventually got it colored (although not exactly the same as I wanted, but good enough for now).

You can find the Inkscape SVG on kde-look.org ( http://www.kde-look.org/content/show.php?content=87252 ), later I plan on making it the default icon for Foxkit (so it should appear in the Git repository before long) although I'm always open to alternatives (preferably something with a similar feel... I really like the Fox at the bottom :P).

Monday, August 4, 2008

New Tabs, Development

Earlier I got links that request a new tab to work, I still got one minor (possibly unrelated) problem to work out and I think I'll have most of the features I want for 0.0.6, though since I just made a release I'm gonna wait a while for the next one and try to finish the cmake stuff and maybe have a tiny config dialog.

The last couple of days I've been reading various Qt Quaterly articles and have found them extremely informative (especially the one about designing APIs), several of them will definitely help in the future.

The more I work on Foxkit the more problems I'm encountering and the more I have to twist the API and internals, often undoing various things I'd previously done in the process. That may seem like a bad thing, but it's actually a good thing, as I've actually be solving the problems (and learning from my mistakes) and the API has been improving (some) from my changes.

The original way I had it setup couldn't handle the needs of a real browser, but it's slowly getting to the point where it actually takes only small modifications to get things working. I tried a few ways to solve the problem with links that wanted to open in new tabs, the first was an attempt to use signals with a non-void return type (can't do that), then I tried to give it a single argument, a pointer that the slot would set to the page it'd create which would result in a blank tab, lastly I slightly modified how tabs were created, I moved most of the code into a function that took a pointer to a webView and did all the connecting/inserting into the tab bar which made it easy to solve my problem.

The webView::createWindow() function would create a pointer to a new instance of a webView object then emit a signal with the pointer as one of the arguments, the slot in the foxkit object would take that pointer and do exactly the same as if it'd gone through newView (as newView does the same thing as the createWindow() function.

This prevents code duplication, and code duplication is Very Bad. Not just because it has a (generally trivial) impact on performance, but because I'll update one version of the code but forget to update the other and then have no clue why things are breaking :P

All-in-all I'm extremely happy with Foxkit, I'm not to the point where I'm gonna ditch Konqueror/Opera, but I'm actually getting to the point where that seems reasonable.