jueves, 13 de enero de 2011


Hi all, I know it has been a lot of time since my last post, and I'm sorry for that. I went threw some health problems (still sick), had almost no free time for anything and my job got kind of complicated so I had to spend more time at work.

Anyways, now I have some more free time, so I decided to continue with this project... sort of... I'm making Jake in C++. Don't panic, I already started the project! In fact, it's almost at the same state as the current project :)
Some plugins are still missing, but the plugin system got even better, so expect really great things.

So, the project page is: https://bitbucket.org/alexandernst/jake

I'm also starting a blog, where I'll write things about all my projects (and maybe other things), so if you'd like to have a look at it, it's at http://alexandernst.wordpress.com/ .

Thank you all for reading!

Good bye

miércoles, 6 de octubre de 2010

Fast update

I've been off lately, in fact I haven't posted nothing new since almost a month. I'm sorry for that, but I'm having some health problems.
I hope that I'll be fine soon so I can continue working on Jake-PyQt4.

Anyways, this update is to let you guys know that WingIDE just gave me an Open Source License for their IDE so I can keep working on this project. (Note that this IDE is paid!)
Go and check their website and the product, you'll like it!

About the project, I have a few news to give you, but I'd like to do that when I'm better. Anyways, you can find out that I'm doing something cool if you check SVN.

Keep checking this blog from time to time and have a nice time!


jueves, 9 de septiembre de 2010


It has been a really long long long time since my last post and I'm really sorry for that, but I have good news! I finally managed to build Jake-PyQT4 on both Windows and Linux platforms, and create a single executable file that can be run without having to install Python, PyQt4, Xlib, pyHook, PyWin32 nor any other dependency! Isn't that great?
I'm sorry for Mac users, but right now I'm trying to release for Windows and Linux. But don't worry, code runs just fine, so the only show-stopping "bug" is an app that will let me create a single standalone file that could be ran on Mac OS. I don't know how exactly does Mac manages executable files, but I'm looking at py2app. You'll soon have a release too ;)
Here goes some info. The executable file for Linux was made with cx_Freeze and MakeSelf and it's final size is 4,8mb. On Windows the executable file was created with cx_Freeze, 7z and SFX 7z module, I'm still having some small problems with UPX, but that isn't that important as this only causes a little bigger size (we're talking about ~1mb)

And here goes the full list of changes that I made since my last post:

* Some fixes in the TAB autocompleter. Several crashes were fixed.

* A lot of fixes in the locale system. Missing imports, some strings weren't unicode, etc.

* Now skins and folders can be stored in users folder. This way users can create their own plugins/skins and test them.

* Some more changes in the config system. Most of them related to the combo control.

* I worked for a week on an updated, but it seems that I won't be able to make Jake-PyQT4 autoupdate itself. The best that I can do for now is to show a message telling the user that there is an update, a short description of the update and a button to download the update. Maybe the download will be made by my own QDownloader.

* I moved pyXhook and pyHook outside of Jake-PyQT4. Now if you want to run from source you'll have to read the INSTALL file and install all dependencies.

* Nanotube finally upgraded pyHook and made it compatible with Python 2.7 Thanks!

* Some problems with the focus on Windows were fixed, but there might be left one. Please test when you get binaries, and report.

* Red, Green and Blue skins were removed because they don't look good (for now). As soon as they look good they will be merged again.

* I wrote my own svn2log script. You can have a look at the output of that script here. This way you can track all the changes that I make.

I hope you're wishing to test my app! It will be here in a few days :)
I'll write again when I'll be releasing it. Until then, have fun.


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!

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!


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!


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!