[Home]GladeVCP Custom Widgets

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org

Showing revision 11
Difference (from revision 11 to revision 11) (minor diff)
(The revisions are identical or unavailable.)
Here we attempt to describe how to build a custom glade widget using python.
Note i am not a programmer by trade, more of a hacker, so what I so you works, but there may be better ways.
This is current as of June 2012 (under construction)

We will use a calculator widget that is already in linuxcnc (master)

1. Custom stand-alone GTK widget
1.1. What do we start with?
1.2. looking at the code
2. Custom GTK widget in glade editor


1. Custom stand-alone GTK widget

We will start with a regular custom widget program that uses GLADE to build the display but this widget is not included in the GLADE interface.

I found this calculator widget on the net: http://sraji.wordpress.com/2009/09/08/calculator-using-python-and-glade/
I changed the keys a a bit for my use and switched to glade builder from libraryglade
here is the source code: upload:custom_calculator.zip
I apologize - this program uses leading tabs instead of spaces -that sucks but thats what the original program used.
upload:calculator.png If you run this with: python newcalculatorglade.py
It will display a calculator and pushing keys will change the display and pushing equals will do the math.

1.1. What do we start with?

When building a custom widget we pick an object that is close to what we want and then add to it from there.(thats the calculator example)
In the case of a really custom widget - one where you want to draw things you pick a widget and 'override' its original function calls and make it do what you want.
here is an example for a clock using gtkDrawingArea?:
http://www.pygtk.org/articles/cairo-pygtk-widgets/cairo-pygtk-widgets.htm
http://www.pygtk.org/articles/cairo-pygtk-widgets/cairo-pygtk-widgets2.htm
here is another one - this one use the base class widget:
http://www.pygtk.org/articles/writing-a-custom-widget-using-pygtk/writing-a-custom-widget-using-pygtk.htm

1.2. looking at the code

upload:calculatorcode1.png
#!/usr/bin/env python

import sys
import math
try:
	import pygtk
	pygtk.require('2.0')
except:
	pass
try:
	import gtk
except:
	print('GTK not available')
	sys.exit(1)

2. Custom GTK widget in glade editor

Now we want it to show up in the glade editor so we can add it to other containers.
The first problem is that by building it with the GLADE editor we had to add it to a top window.
A top window can not be put into anything else so we must re-parent the custom widget.
(This would not be true if we had built the widget without the GLADE editor.)

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org
This page is read-only. Follow the BasicSteps to edit pages. | View other revisions | View current revision
Edited June 25, 2012 8:07 pm by Cmorley (diff)
Search:
Published under a Creative Commons License