How to Embed Web Browser in Python GTK application using pymozembed

Embedding web browser or a screen for parsing HTML is easy in PyGTK. You only need to import the pymozembed, and add a few lines of code in your pygtk library, and you are set to go.

Here’s a sample PyGTK application that embeds a web-browser as well as a “Back” button for demonstration purpose :

PyGTK + browser Screenshot
PyMozEmbed PyGTK+ Mypapit Demo

[python]
#!/usr/bin/python
#
# demo by mypapit (info@mypapit.net) – Sept 2009
# http://blog.mypapit.net/
#
import pygtk
pygtk.require(‘2.0’)
import gtk
import gtkmozembed

class PyMoz:

def delete_event(self,widget,data=None):
print(“Exit”)
return False

def destroy(self,widget,data=None):
gtk.main_quit()

def button_clicked(self,widget,data):
data.go_back()

def __init__(self):
#init mozembed
self.moz = gtkmozembed.MozEmbed()
#create a Vertical Box Container to whole the browser
#and the “Back Button”
box = gtk.VBox(False,0)

#create a basic GTK+ window
win = gtk.Window()
win.add(box)

#create and connect “Back” button, to add functionality
self.button = gtk.Button(“Back”)
self.button.connect(“clicked”,self.button_clicked,self.moz)

#include both back button and the browser in the vertical box
#and the GTK+ window
box.pack_start(self.button,False,False,0)
box.pack_start(self.moz,True,True,0)

#load the URL
self.moz.load_url(‘http://blog.mypapit.net/’)

#set the window title
title=self.moz.get_title()
win.set_title(“browser demo”)

#show all the stuffs on screen
win.show_all()

#connect the delete_event and destroy event to make sure
#the app quits when the window is closed
win.connect(“delete_event”,self.delete_event)
win.connect(“destroy”,self.destroy)

if __name__ == “__main__”:
PyMoz()
gtk.main()

[/python]

Download demo source code : pymoz.py

Working hard publishing papers and learning PyGTK

For the last few weeks I’ve been working hard to finish up my research project, most of it concerning about on mobile phone application usability and context-aware applications. This leaves me with less  time to devote for this blog and I started to realise that I might have a ‘burn-out’ issue at the same time.

I’m still using Ubuntu in my daily work if you are curious (Ubuntu Netbook Remix 9.04 for netbook) and Ubuntu Jaunty Jackalope for my Intel Core 2 Duo Desktop PC. Besides writing those research papers, I’ve use what left of my time to learn PyGTK to enable me to code RAD app for GNU/Linux desktop environment.

I found out the references around the internet regarding PyGTK is very helpful to aid me in understanding the GTK+ bindings in python, which is not much different from its C counterpart.

Now that I’ve some time to spare until Hari Raya, I’ll try to use that time wisely to fill up this blog with a couple more of fresh new posts. So, keep reading!

Upgrade Pidgin to solve Yahoo messenger Issue

Regarding the previous post Solving Pidgin Yahoo Messenger Connection Problem , the temporary solution may not work anymore as Yahoo already upgraded their server to accept newer authentication mode.

Pidgin logo

The good news is, users can download the latest Pidgin release (2.5.7) in order to keep connected with Yahoo Messenger.

For Ubuntu users, Pidgin 2.5.7 is available for download from the Click-and-Run GetDeb.net portal. Just select Pidgin package, and choose to open it with gdebi.

Hopefully you can solve the Pidgin login problem through this post.

How to disable touchpad in Ubuntu Netbook Remix

Here’s how to temporarily disable the touchpad control on Ubuntu Netbook Remix for those who were always accidently ‘clicked’ or ‘touched’ the touchpad while typing long sentences.

Disabling Touchpad

  • Go to the Ubuntu Netbook Remix main screen
  • Select ‘Preference’, then ‘Mouse’
How to disable touchpad

Untick the touchpad checkbox. The touchpad would be disabled until you you change the option back.

How to make my Ubuntu detect more than 4GB memory

There were a couple of people that I met recently complained to me that their Ubuntu only detects 3 gigs of RAM after they upgraded their machine to 4 GB RAM.

Actually the problem does not lie with Ubuntu or any operating system in particular, rather the problem is related to 32bit operating system which only can address maximum of 232 bytes of memory.

Some might argue that 32-bit should be enough to address 4GB RAM, but in reality some of those memory location are reserved for computer and application operation that only a fraction of it are addressable when you installed 4GB RAM on a 32bit operating system. Thus you would see that your computer would only have around 3.5 GB only.

The solution?

There are two solutions to remedy this problem :
i) Install a 64-bit (Ubuntu) operating system
ii) Compile/Install kernel with PAE features enabled

The (i) solution is obvious, just install a 64bit edition of Ubuntu to your computer, and your problem will be automatically solved! The downside is, you probably does not want to use a 64bit edition of Ubuntu yet for some obscure reason (the evil binary only drivers and blobs)

The (ii) solution requires you to install a kernel with Physical Address Extension (PAE) support enabled.

For you information, Ubuntu comes with pre-compiled linux kernel that has PAE enabled. What you need to do is to apt-get these 3 packages “linux-headers-server, linux-image-server and linux-server” and reboot your computer. This will enable you operating system to recognize the extra RAM installed inside your computer.

p/s : The best solution is to get a system that does not depend on binary blogs (hardware drivers, etc) and move to 64-bit operating system in order to enjoy the full potential of your computer.