domingo, 22 de agosto de 2010

Almost there...

Last time I wrote a lot of things were in the to-do list. But now I'm glad to announce that Jake-PyQT4 is almost ready for a first release!
There are still some things that I'd like to patch before releasing, and also fix a little bit the default skin. It's not that ugly, but I'd like to have a designer doing that part, and I just didn't thought about it but Andrew's sister is a designer, so maybe she could help me :)

And here is the list of things that I added/fixed since last week:

* Configuration system was rewritten, and also all plugins. Now plugins have two main lists. One is for how the config dialog should look. The second one is for the default values (or the stored values in user's hard drive).

* Total rewrite of how config files are saved/loaded. Now only really important things are written to disk. That means less space in disk and major load/save speed :p

* Total rewrite of the part where combobox where created. I was saving the index of all combos, and that was totally wrong. Now values are saved.

*  Total rewrite of plugins system. Don't crash if one plugin fails to load (or maybe bad coded, missing libs, etc). Also, show info about what plugin crashed, what line and why.

* Total rewrite of how moving the cursor left/right is handled. No more weird html inserts! Special thanks to girishr from #qt in Freenode

* Major speed improvements on how cursor is managed, things done after hit, after hit, etc...

* A lot of code was moved to it's own class/file to make code more cleaner and easy to read. Also a lot of unused imports were removed (yes, more speed :p)

* More control when doing cut/copy/paste. Now only available-for-edit text can be cut.

* A global event filter was created! That filter manages all keyboard/mouse events and sends them to the right control.

* A bug was sent to Nokia, so they can fix it. The bug that I'm talking about is that weird behavior when moving a tab inside the tab widget. A cut-effect caused by a wrong rect size. You can see the bug report here.

* Now auto complete works everywhere instead only at the beginning of a command.


As you see I haven't wasted any time, and even more features are coming soon ;)

I should do some things before releasing. Here is a list:

* Check if it's possible to read/write to disk (that will let users to store their plugins settings and also update Jake-PyQT4)

* Check for updates and update if newer version is available.

* Fix a little bit the default skin.

Once those three things are done, I'll wait a little bit more for mgrant to release python-xlib 0.15 and nanotube to release pyHook compatible with Python 2.7
If no releases, I'll release with current python-xlib 0.15rc and with pyHook compatible with Python 2.6 (that will force me to release everything on Python 2.6 instead of 2.7).

I'll probably write again next weekend. Until then have a good time and enjoy the summer!
Bye!

domingo, 15 de agosto de 2010

Tons of new features

A lot of new thing were implemented during the whole week! Both Andrew and me made ~30commits/day and result is impressive. This is what we did:

* Translation system major fixes. Now each plugin has it's own translation method, and also, if no locales were detected, a global fake-locale system will be used. Fixes in how strings were managed (now everything is done using unicode).

* Spanish locales. Yes! Andrew spent a day translating all plugins and main app, and now we have Jake-PyQT4 in Spanish! Test it, and report bad translated words, please.

* TAB fancy sorting. Using TAB to auto-complete commands is handy, but seeing available commands is a must-have feature too. Sadly, available commands were shown as a list of commands, separated by one white space. That was really hard to read. Now, using QFontMetrics, Jake-PyQT4 is able to print those commands in a really nice html table (just like Unix shell).

* Pastebin lib and Pastebin plugin were made. I use pastebin a lot, and I hate having to open my browser, go to www.pastebin.com, paste the text, and copy the link. So, I made use of pastebin APIs.

* More skins were added. Now we have black (as default), green, red, blue and white. Those skins were made in less than 15 minutes, so don't except any breath-taking design. QSS (skin system) is really powerful, but I'm not a designer. That's why I need a designer. If you're interested, please mail me.

* Multi-line commands were implemented. This was a blocking bug for Pastebin plugin.

* Major speed improvements. Stop using .toPlainText() all the time. More improvements are comming!

* In SVN: everything was moved to trunk folder. And two new folders were created (tags and branches). Forum guides on how to get Jake-PyQT4 were updated according to those changes, so, please go to forums and check them.




Currently, I'm working on the config system. There are some bugs that I saw, and I'd like to fix them asap. Once done, I'll be doing more libs & plugins.
A stable 1.0 version will be available really soon. Still no release date, but "soon" means soon, for real.

I'll write when config system is done, until then have a good time!

Bye!

lunes, 9 de agosto de 2010

Song download plugin available!

I haven't made much commits this weekend, but a lot of new features were added. How? Easy, but before I tell you how, I should say that plugins are just wrapper for libs. So, there is no need to actually understand a lot of python to make a plugin.
Said that, after finishing the urbandictionary lib, I spent a day or so teaching andresmcid some basic python and how plugins, configsystem and pluginsystem work, and he made both urbandicionary plugin and mp3-goear plugin.
I gave him SVN permissions, so you can even check his commits :)
And this is how both plugins look like:




I made some work on how plugins access their config. Before the actual change, accessing an item from a config was a real PITA. Config was saved as list with sublists, so you could perfectly have something like config[0][1][2][0][4]. Pretty scary for noobs, right? But now accessing an item is just as easy as everything else in Jake-PyQT4. You just need to call the config system this way: configsystem.value(config, 'plaintextcolor') and you'll get the value for the default color of plain text. I told you! A piece of a cake :p

Some options were added to main config, and also some bugs were fixed.
And finally, project status in sourceforge was changed from Alpha to Beta.
I'd really like to keep the good commit-rythm and make a stable release by the end of month. Of course, Not all plugins are going to be available, nor much skins, but that release will aim to a stable base release. Once that stability is reached, no major changes will be made to internal structure. This way we'll be able to start working only on plugins and skins.

Currently, I'm working on a filestube library, and once finished, andresmcid will make another plugin, so, just have a look from time to time to this page and you'll know it.

I'll write again this weeked. Until then, have a good time!

Bye!


sábado, 7 de agosto de 2010

What a waste of time...

This is a quick update. SVN hasn't seen too much commits this week because I was trying to make something with those tabs. I was trying to resize the rect of the QTabBar that handles the tabs in order to fix that "bug" that's there right now. You can see it if you move a tab to one side. Do you see how the tab gets cutted? That's what I have been trying to fix, but without luck...
The code is still there, committed, but commented. Maybe I'll try to do it again some when in the future, or maybe not.

Because of lack of new cool stuff, I decided to implement better the text cursor. Now it works just like a real console :)

Nothing more for today, but I'll try to finish the urban dictionary plugin and start working on those mp3 plugins that I promised. I'll write next week.

Have a good time until then!

Bye!

lunes, 2 de agosto de 2010

Not that hard after all

In my last post I said that I was having a lot of problems with QTextBrowser implementation because of images size and poor HTML support in general. Well, I was wrong!
After sending a few mails to Roberto Alsina (Lateral Opinion) I managed to display images with custom width and height, without needing to subclass more functions nor using QWebView. Thanks fo the help!

Once done that, I thought it would be cool to fix google-maps-streetview plugin, so I did it, and that's how it looks like:


But that wasn't enough. I was having a lot of free time, so I did a full commits party! Right away from commit 57 to commit 85! Almost 30 commits in one day!
Starting with 57. There was an error in all plugins that support *-more command. They were showing wrong results/current page number/result number.
Next important commit was the range 64-66 in which I implemented Jake-PyQT4 config dialog. I also added another skin. They both look this way:


Some small bug fixes, related with how I was managing prompt and cursor text, configuration parsing/saving, qss coding style, plugins typos, etc.

Commit 81 is interesting because of the focus-on-first-run bug described in my last post.

I should thanks to andresmcid for being such a good beta-tester and reporting bugs instantly via MSN. Thanks!

Also, thanks to nanotube (creator of pyHook) for promising making a release compatible with Python 2.7. Thanks!

Also, thanks to mgrant (creator of python-xlib) for promising making a release fixing some bugs and some annoying output messages. Thanks!

What now?
I'll be probably working on mp3 plugins. But first I'll level up a little bit my skills using Beautiful Soup. Once I think I'm done, I'll start making plugins for goear and filestube. Once I'm done with those, I'll add more.

I don't know when I'll post, but don't expect it too late. (or subscribe via RSS)

Bye!