1# -*-mode: python; fill-column: 75; tab-width: 8; coding: iso-latin-1-unix -*- 2# 3# $Id$ 4# 5# Tix Demonstration Program 6# 7# This sample program is structured in such a way so that it can be 8# executed from the Tix demo program "tixwidgets.py": it must have a 9# procedure called "RunSample". It should also have the "if" statment 10# at the end of this file so that it can be run as a standalone 11# program. 12 13# This file demonstrates the use of the compound images: it uses compound 14# images to display a text string together with a pixmap inside 15# buttons 16# 17 18import Tix 19 20network_pixmap = """/* XPM */ 21static char * netw_xpm[] = { 22/* width height ncolors chars_per_pixel */ 23"32 32 7 1", 24/* colors */ 25" s None c None", 26". c #000000000000", 27"X c white", 28"o c #c000c000c000", 29"O c #404040", 30"+ c blue", 31"@ c red", 32/* pixels */ 33" ", 34" .............. ", 35" .XXXXXXXXXXXX. ", 36" .XooooooooooO. ", 37" .Xo.......XoO. ", 38" .Xo.++++o+XoO. ", 39" .Xo.++++o+XoO. ", 40" .Xo.++oo++XoO. ", 41" .Xo.++++++XoO. ", 42" .Xo.+o++++XoO. ", 43" .Xo.++++++XoO. ", 44" .Xo.XXXXXXXoO. ", 45" .XooooooooooO. ", 46" .Xo@ooo....oO. ", 47" .............. .XooooooooooO. ", 48" .XXXXXXXXXXXX. .XooooooooooO. ", 49" .XooooooooooO. .OOOOOOOOOOOO. ", 50" .Xo.......XoO. .............. ", 51" .Xo.++++o+XoO. @ ", 52" .Xo.++++o+XoO. @ ", 53" .Xo.++oo++XoO. @ ", 54" .Xo.++++++XoO. @ ", 55" .Xo.+o++++XoO. @ ", 56" .Xo.++++++XoO. ..... ", 57" .Xo.XXXXXXXoO. .XXX. ", 58" .XooooooooooO.@@@@@@.X O. ", 59" .Xo@ooo....oO. .OOO. ", 60" .XooooooooooO. ..... ", 61" .XooooooooooO. ", 62" .OOOOOOOOOOOO. ", 63" .............. ", 64" "}; 65""" 66 67hard_disk_pixmap = """/* XPM */ 68static char * drivea_xpm[] = { 69/* width height ncolors chars_per_pixel */ 70"32 32 5 1", 71/* colors */ 72" s None c None", 73". c #000000000000", 74"X c white", 75"o c #c000c000c000", 76"O c #800080008000", 77/* pixels */ 78" ", 79" ", 80" ", 81" ", 82" ", 83" ", 84" ", 85" ", 86" ", 87" .......................... ", 88" .XXXXXXXXXXXXXXXXXXXXXXXo. ", 89" .XooooooooooooooooooooooO. ", 90" .Xooooooooooooooooo..oooO. ", 91" .Xooooooooooooooooo..oooO. ", 92" .XooooooooooooooooooooooO. ", 93" .Xoooooooo.......oooooooO. ", 94" .Xoo...................oO. ", 95" .Xoooooooo.......oooooooO. ", 96" .XooooooooooooooooooooooO. ", 97" .XooooooooooooooooooooooO. ", 98" .XooooooooooooooooooooooO. ", 99" .XooooooooooooooooooooooO. ", 100" .oOOOOOOOOOOOOOOOOOOOOOOO. ", 101" .......................... ", 102" ", 103" ", 104" ", 105" ", 106" ", 107" ", 108" ", 109" "}; 110""" 111 112network_bitmap = """ 113#define netw_width 32 114#define netw_height 32 115static unsigned char netw_bits[] = { 116 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0x02, 0x40, 117 0x00, 0x00, 0xfa, 0x5f, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x0a, 0x52, 118 0x00, 0x00, 0x0a, 0x52, 0x00, 0x00, 0x8a, 0x51, 0x00, 0x00, 0x0a, 0x50, 119 0x00, 0x00, 0x4a, 0x50, 0x00, 0x00, 0x0a, 0x50, 0x00, 0x00, 0x0a, 0x50, 120 0x00, 0x00, 0xfa, 0x5f, 0x00, 0x00, 0x02, 0x40, 0xfe, 0x7f, 0x52, 0x55, 121 0x02, 0x40, 0xaa, 0x6a, 0xfa, 0x5f, 0xfe, 0x7f, 0x0a, 0x50, 0xfe, 0x7f, 122 0x0a, 0x52, 0x80, 0x00, 0x0a, 0x52, 0x80, 0x00, 0x8a, 0x51, 0x80, 0x00, 123 0x0a, 0x50, 0x80, 0x00, 0x4a, 0x50, 0x80, 0x00, 0x0a, 0x50, 0xe0, 0x03, 124 0x0a, 0x50, 0x20, 0x02, 0xfa, 0xdf, 0x3f, 0x03, 0x02, 0x40, 0xa0, 0x02, 125 0x52, 0x55, 0xe0, 0x03, 0xaa, 0x6a, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 126 0xfe, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; 127""" 128 129hard_disk_bitmap = """ 130#define drivea_width 32 131#define drivea_height 32 132static unsigned char drivea_bits[] = { 133 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 134 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 135 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 136 0xf8, 0xff, 0xff, 0x1f, 0x08, 0x00, 0x00, 0x18, 0xa8, 0xaa, 0xaa, 0x1a, 137 0x48, 0x55, 0xd5, 0x1d, 0xa8, 0xaa, 0xaa, 0x1b, 0x48, 0x55, 0x55, 0x1d, 138 0xa8, 0xfa, 0xaf, 0x1a, 0xc8, 0xff, 0xff, 0x1d, 0xa8, 0xfa, 0xaf, 0x1a, 139 0x48, 0x55, 0x55, 0x1d, 0xa8, 0xaa, 0xaa, 0x1a, 0x48, 0x55, 0x55, 0x1d, 140 0xa8, 0xaa, 0xaa, 0x1a, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f, 141 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 142 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 143 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; 144""" 145 146def RunSample(w): 147 w.img0 = Tix.Image('pixmap', data=network_pixmap) 148 if not w.img0: 149 w.img0 = Tix.Image('bitmap', data=network_bitmap) 150 w.img1 = Tix.Image('pixmap', data=hard_disk_pixmap) 151 if not w.img0: 152 w.img1 = Tix.Image('bitmap', data=hard_disk_bitmap) 153 154 hdd = Tix.Button(w, padx=4, pady=1, width=120) 155 net = Tix.Button(w, padx=4, pady=1, width=120) 156 157 # Create the first image: we create a line, then put a string, 158 # a space and an image into this line, from left to right. 159 # The result: we have a one-line image that consists of three 160 # individual items 161 # 162 # The tk.calls should be methods in Tix ... 163 w.hdd_img = Tix.Image('compound', window=hdd) 164 w.hdd_img.tk.call(str(w.hdd_img), 'add', 'line') 165 w.hdd_img.tk.call(str(w.hdd_img), 'add', 'text', '-text', 'Hard Disk', 166 '-underline', '0') 167 w.hdd_img.tk.call(str(w.hdd_img), 'add', 'space', '-width', '7') 168 w.hdd_img.tk.call(str(w.hdd_img), 'add', 'image', '-image', w.img1) 169 170 # Put this image into the first button 171 # 172 hdd['image'] = w.hdd_img 173 174 # Next button 175 w.net_img = Tix.Image('compound', window=net) 176 w.net_img.tk.call(str(w.net_img), 'add', 'line') 177 w.net_img.tk.call(str(w.net_img), 'add', 'text', '-text', 'Network', 178 '-underline', '0') 179 w.net_img.tk.call(str(w.net_img), 'add', 'space', '-width', '7') 180 w.net_img.tk.call(str(w.net_img), 'add', 'image', '-image', w.img0) 181 182 # Put this image into the first button 183 # 184 net['image'] = w.net_img 185 186 close = Tix.Button(w, pady=1, text='Close', 187 command=lambda w=w: w.destroy()) 188 189 hdd.pack(side=Tix.LEFT, padx=10, pady=10, fill=Tix.Y, expand=1) 190 net.pack(side=Tix.LEFT, padx=10, pady=10, fill=Tix.Y, expand=1) 191 close.pack(side=Tix.LEFT, padx=10, pady=10, fill=Tix.Y, expand=1) 192 193if __name__ == '__main__': 194 root = Tix.Tk() 195 RunSample(root) 196 root.mainloop() 197