ref: 2c9e3861a54e22498fb2e3226defe4393b20b202
dir: /sys/src/cmd/python/Demo/tix/samples/CmpImg.py/
# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- # # $Id: CmpImg.py 36560 2004-07-18 06:16:08Z tim_one $ # # Tix Demostration Program # # This sample program is structured in such a way so that it can be # executed from the Tix demo program "tixwidgets.py": 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. ", " [email protected]. ", " .............. .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. ", " [email protected]. .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()