Patch #410231: Add the Python Tix library.
diff --git a/Demo/tix/samples/CmpImg.py b/Demo/tix/samples/CmpImg.py
new file mode 100755
index 0000000..4e03bc1
--- /dev/null
+++ b/Demo/tix/samples/CmpImg.py
@@ -0,0 +1,197 @@
+#!/usr/local/bin/python
+# 
+# $Id$
+#
+# Tix Demostration Program
+#
+# This sample program is structured in such a way so that it can be
+# executed from the Tix demo program "tixwidgets": it must have a
+# procedure called "RunSample". It should also have the "if" statment
+# at the end of this file so that it can be run as a standalone
+# program.
+
+# This file demonstrates the use of the compound images: it uses compound
+# images to display a text string together with a pixmap inside
+# buttons
+#
+
+import Tix
+
+network_pixmap = """/* XPM */
+static char * netw_xpm[] = {
+/* width height ncolors chars_per_pixel */
+"32 32 7 1",
+/* colors */
+" 	s None	c None",
+".	c #000000000000",
+"X	c white",
+"o	c #c000c000c000",
+"O	c #404040",
+"+	c blue",
+"@	c red",
+/* pixels */
+"                                ",
+"                 .............. ",
+"                 .XXXXXXXXXXXX. ",
+"                 .XooooooooooO. ",
+"                 .Xo.......XoO. ",
+"                 .Xo.++++o+XoO. ",
+"                 .Xo.++++o+XoO. ",
+"                 .Xo.++oo++XoO. ",
+"                 .Xo.++++++XoO. ",
+"                 .Xo.+o++++XoO. ",
+"                 .Xo.++++++XoO. ",
+"                 .Xo.XXXXXXXoO. ",
+"                 .XooooooooooO. ",
+"                 .Xo@ooo....oO. ",
+" ..............  .XooooooooooO. ",
+" .XXXXXXXXXXXX.  .XooooooooooO. ",
+" .XooooooooooO.  .OOOOOOOOOOOO. ",
+" .Xo.......XoO.  .............. ",
+" .Xo.++++o+XoO.        @        ",
+" .Xo.++++o+XoO.        @        ",
+" .Xo.++oo++XoO.        @        ",
+" .Xo.++++++XoO.        @        ",
+" .Xo.+o++++XoO.        @        ",
+" .Xo.++++++XoO.      .....      ",
+" .Xo.XXXXXXXoO.      .XXX.      ",
+" .XooooooooooO.@@@@@@.X O.      ",
+" .Xo@ooo....oO.      .OOO.      ",
+" .XooooooooooO.      .....      ",
+" .XooooooooooO.                 ",
+" .OOOOOOOOOOOO.                 ",
+" ..............                 ",
+"                                "};
+"""
+
+hard_disk_pixmap = """/* XPM */
+static char * drivea_xpm[] = {
+/* width height ncolors chars_per_pixel */
+"32 32 5 1",
+/* colors */
+" 	s None	c None",
+".	c #000000000000",
+"X	c white",
+"o	c #c000c000c000",
+"O	c #800080008000",
+/* pixels */
+"                                ",
+"                                ",
+"                                ",
+"                                ",
+"                                ",
+"                                ",
+"                                ",
+"                                ",
+"                                ",
+"   ..........................   ",
+"   .XXXXXXXXXXXXXXXXXXXXXXXo.   ",
+"   .XooooooooooooooooooooooO.   ",
+"   .Xooooooooooooooooo..oooO.   ",
+"   .Xooooooooooooooooo..oooO.   ",
+"   .XooooooooooooooooooooooO.   ",
+"   .Xoooooooo.......oooooooO.   ",
+"   .Xoo...................oO.   ",
+"   .Xoooooooo.......oooooooO.   ",
+"   .XooooooooooooooooooooooO.   ",
+"   .XooooooooooooooooooooooO.   ",
+"   .XooooooooooooooooooooooO.   ",
+"   .XooooooooooooooooooooooO.   ",
+"   .oOOOOOOOOOOOOOOOOOOOOOOO.   ",
+"   ..........................   ",
+"                                ",
+"                                ",
+"                                ",
+"                                ",
+"                                ",
+"                                ",
+"                                ",
+"                                "};
+"""
+
+network_bitmap = """
+#define netw_width 32
+#define netw_height 32
+static unsigned char netw_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x02, 0x40,
+   0x00, 0x00, 0xfa, 0x5f, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x0a, 0x52,
+   0x00, 0x00, 0x0a, 0x52, 0x00, 0x00, 0x8a, 0x51, 0x00, 0x00, 0x0a, 0x50,
+   0x00, 0x00, 0x4a, 0x50, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x0a, 0x50,
+   0x00, 0x00, 0xfa, 0x5f, 0x00, 0x00, 0x02, 0x40, 0xfe, 0x7f, 0x52, 0x55,
+   0x02, 0x40, 0xaa, 0x6a, 0xfa, 0x5f, 0xfe, 0x7f, 0x0a, 0x50, 0xfe, 0x7f,
+   0x0a, 0x52, 0x80, 0x00, 0x0a, 0x52, 0x80, 0x00, 0x8a, 0x51, 0x80, 0x00,
+   0x0a, 0x50, 0x80, 0x00, 0x4a, 0x50, 0x80, 0x00, 0x0a, 0x50, 0xe0, 0x03,
+   0x0a, 0x50, 0x20, 0x02, 0xfa, 0xdf, 0x3f, 0x03, 0x02, 0x40, 0xa0, 0x02,
+   0x52, 0x55, 0xe0, 0x03, 0xaa, 0x6a, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00,
+   0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+"""
+
+hard_disk_bitmap = """
+#define drivea_width 32
+#define drivea_height 32
+static unsigned char drivea_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0xf8, 0xff, 0xff, 0x1f, 0x08, 0x00, 0x00, 0x18, 0xa8, 0xaa, 0xaa, 0x1a,
+   0x48, 0x55, 0xd5, 0x1d, 0xa8, 0xaa, 0xaa, 0x1b, 0x48, 0x55, 0x55, 0x1d,
+   0xa8, 0xfa, 0xaf, 0x1a, 0xc8, 0xff, 0xff, 0x1d, 0xa8, 0xfa, 0xaf, 0x1a,
+   0x48, 0x55, 0x55, 0x1d, 0xa8, 0xaa, 0xaa, 0x1a, 0x48, 0x55, 0x55, 0x1d,
+   0xa8, 0xaa, 0xaa, 0x1a, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+"""
+
+def RunSample(w):
+    w.img0 = Tix.Image('pixmap', data=network_pixmap)
+    if not w.img0:
+	w.img0 = Tix.Image('bitmap', data=network_bitmap)
+    w.img1 = Tix.Image('pixmap', data=hard_disk_pixmap)
+    if not w.img0:
+	w.img1 = Tix.Image('bitmap', data=hard_disk_bitmap)
+
+    hdd = Tix.Button(w, padx=4, pady=1, width=120)
+    net = Tix.Button(w, padx=4, pady=1, width=120)
+
+    # Create the first image: we create a line, then put a string,
+    # a space and a image into this line, from left to right.
+    # The result: we have a one-line image that consists of three
+    # individual items
+    #
+    # The tk.calls should be methods in Tix ...
+    w.hdd_img = Tix.Image('compound', window=hdd)
+    w.hdd_img.tk.call(str(w.hdd_img), 'add', 'line')
+    w.hdd_img.tk.call(str(w.hdd_img), 'add', 'text', '-text', 'Hard Disk',
+		    '-underline', '0')
+    w.hdd_img.tk.call(str(w.hdd_img), 'add', 'space', '-width', '7')
+    w.hdd_img.tk.call(str(w.hdd_img), 'add', 'image', '-image', w.img1)
+
+    # Put this image into the first button
+    #
+    hdd['image'] = w.hdd_img
+
+    # Next button
+    w.net_img = Tix.Image('compound', window=net)
+    w.net_img.tk.call(str(w.net_img), 'add', 'line')
+    w.net_img.tk.call(str(w.net_img), 'add', 'text', '-text', 'Network',
+		    '-underline', '0')
+    w.net_img.tk.call(str(w.net_img), 'add', 'space', '-width', '7')
+    w.net_img.tk.call(str(w.net_img), 'add', 'image', '-image', w.img0)
+
+    # Put this image into the first button
+    #
+    net['image'] = w.net_img
+
+    close = Tix.Button(w, pady=1, text='Close',
+		       command=lambda w=w: w.destroy())
+
+    hdd.pack(side=Tix.LEFT, padx=10, pady=10, fill=Tix.Y, expand=1)
+    net.pack(side=Tix.LEFT, padx=10, pady=10, fill=Tix.Y, expand=1)
+    close.pack(side=Tix.LEFT, padx=10, pady=10, fill=Tix.Y, expand=1)
+
+if __name__ == '__main__':
+    root = Tix.Tk()
+    RunSample(root)
+    root.mainloop()
+