Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch bwidget-vendor-branch Excluding Merge-Ins
This is equivalent to a diff from 602ad7de6b to 48bc375a03
1999-08-03
| ||
20:20 | BWidget 1.2.1 import check-in: 68d35bc50f user: ericm tags: trunk | |
20:20 | BWidget 1.2.1 import Leaf check-in: 48bc375a03 user: ericm tags: bwidget-vendor-branch | |
20:20 | Synthetic commit. Leaf check-in: b688e782af user: cvs2fossil tags: MAIN, MAIN-synthetic | |
20:20 | initial empty check-in check-in: 602ad7de6b user: cvs2fossil tags: trunk | |
Added BWman/ArrowButton.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 | <HTML> <HEAD><TITLE>ArrowButton</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>ArrowButton</B> - Button widget with an arrow shape. </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>ArrowButton</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-activebackground">-activebackground</A></TR> <TD> <A HREF="options.htm#M-activeforeground">-activeforeground</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-background">-background or -bg</A></TD> <TD> <A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-disabledforeground">-disabledforeground</A></TR> <TD> <A HREF="options.htm#M-foreground">-foreground or -fg</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-highlightbackground">-highlightbackground</A></TR> <TD> <A HREF="options.htm#M-highlightcolor">-highlightcolor</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-highlightthickness">-highlightthickness</A></TR> <TD> <A HREF="options.htm#M-relief">-relief</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-repeatdelay">-repeatdelay</A></TR> <TD> <A HREF="options.htm#M-repeatinterval">-repeatinterval</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-takefocus">-takefocus</A></TR> <TD> <A HREF="options.htm#M-troughcolor">-troughcolor</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-armcommand">-armcommand</A></TR> <TD> <A HREF="#-arrowbd">-arrowbd</A></TR> </TR> <TR> <TD> <A HREF="#-arrowrelief">-arrowrelief</A></TR> <TD> <A HREF="#-clean">-clean</A></TR> </TR> <TR> <TD> <A HREF="#-command">-command</A></TR> <TD> <A HREF="#-dir">-dir</A></TR> </TR> <TR> <TD> <A HREF="#-disarmcommand">-disarmcommand</A></TR> <TD> <A HREF="#-height">-height</A></TR> </TR> <TR> <TD> <A HREF="#-helptext">-helptext</A></TR> <TD> <A HREF="#-helptype">-helptype</A></TR> </TR> <TR> <TD> <A HREF="#-helpvar">-helpvar</A></TR> <TD> <A HREF="#-ipadx">-ipadx</A></TR> </TR> <TR> <TD> <A HREF="#-ipady">-ipady</A></TR> <TD> <A HREF="#-state">-state</A></TR> </TR> <TR> <TD> <A HREF="#-type">-type</A></TR> <TD> <A HREF="#-width">-width</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#invoke"><B>invoke</B></A> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> ArrowButton can be of two types following <B>type</B> option: for <B>button</B> type, it is standard button with an arrow drawn on it; for <B>arrow</B> type, it is an arrow like scrollbar's arrow. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-armcommand"><B>-armcommand</B></A></DT> <DD> Specifies a Tcl command to associate with the ArrowButton when mouse button 1 is pressed over the ArrowButton. When <B>repeatdelay</B> or <B>repeatinterval</B> option is positive integer, this command is repeatedly called if mouse pointer is over the button and until mouse button 1 is released. </DD> </DL> <DL><DT><A NAME="-arrowbd"><B>-arrowbd</B></A></DT> <DD> When ArrowButton <B>type</B> is <I>arrow</I>, specifies the border width of the arrow. Must be 1 or 2. </DD> </DL> <DL><DT><A NAME="-arrowrelief"><B>-arrowrelief</B></A></DT> <DD> When ArrowButton <B>type</B> is <I>arrow</I>, specifies the relief of the arrow. Must be <B>raised</B> or <B>sunken</B>. </DD> </DL> <DL><DT><A NAME="-clean"><B>-clean</B></A></DT> <DD> Specifies a level of quality, between 0 and 2, for the arrow. If 0, the arrow is drawn with its maximum width and height. If 1, the base of arrow is arranged to be odd to have same edges. If 2, the base of arrow is arranged to be odd and the orthogonal to be (base+1)/2 to have 'straight' diagonal for edges. </DD> </DL> <DL><DT><A NAME="-command"><B>-command</B></A></DT> <DD> Specifies a Tcl command to associate with the ArrowButton. This command is typically invoked when mouse button 1 is released over the ArrowButton window. </DD> </DL> <DL><DT><A NAME="-dir"><B>-dir</B></A></DT> <DD> Specifies the direction of the arrow: <B>top</B>, <B>bottom</B>, <B>left</B> or <B>right</B>. </DD> </DL> <DL><DT><A NAME="-disarmcommand"><B>-disarmcommand</B></A></DT> <DD> Specifies a Tcl command to associate with the ArrowButton when mouse button 1 is released. This command is called even if pointer is not over the ArrowButton, and always before the command specified by <B>command</B> option. It is typically used in conjuntion with <B>armcommand</B>, <B>repeatdelay</B> and <B>repeatinterval</B>. </DD> </DL> <DL><DT><A NAME="-height"><B>-height</B></A></DT> <DD> Specifies a desired height for the ArrowButton. The value is in screen units. </DD> </DL> <DL><DT><A NAME="-helptext"><B>-helptext</B></A></DT> <DD> Text for dynamic help. If empty, no help is available for this widget. See also <A HREF="DynamicHelp.html">DynamicHelp</A>. </DD> </DL> <DL><DT><A NAME="-helptype"><B>-helptype</B></A></DT> <DD> Type of dynamic help. Use <I>balloon</I> or <I>variable</I>. See also <A HREF="DynamicHelp.html">DynamicHelp</A>. </DD> </DL> <DL><DT><A NAME="-helpvar"><B>-helpvar</B></A></DT> <DD> Variable to use when <B>helptype</B> option is <I>variable</I>. See also <A HREF="DynamicHelp.html">DynamicHelp</A>. </DD> </DL> <DL><DT><A NAME="-ipadx"><B>-ipadx</B></A></DT> <DD> Specifies a minimun pad between the ArrowButton border and the right and left side of the arrow. The value is in screen units. </DD> </DL> <DL><DT><A NAME="-ipady"><B>-ipady</B></A></DT> <DD> Specifies a minimun pad between the ArrowButton border and the top and bottom side of the arrow. The value is in screen units. </DD> </DL> <DL><DT><A NAME="-state"><B>-state</B></A></DT> <DD> Specifies one of three states for the ArrowButton: <B>normal</B>, <B>active</B>, or <B>disabled</B>. <DL><DT>If ArrowButton <B>type</B> is <I>button</I>:</DT> <DD>In normal state the ArrowButton is displayed using the <B>foreground</B> and <B>background</B> options. The active state is typically used when the pointer is over the ArrowButton. In active state the ArrowButton is displayed using the <B>activeforeground</B> and <B>activebackground</B> options. In disabled state the <B>disabledforeground</B> and <B>background</B> options determine how the ArrowButton is displayed. </DD> <DT>If ArrowButton <B>type</B> is <I>arrow</I>:</DT> <DD>Only colors of arrow change. The background of ArrowButton is always displayed using <B>troughcolor</B> option. In normal state the ArrowButton is displayed using the <B>background</B> option. The active state is typically used when the pointer is over the ArrowButton. In active state the ArrowButton is displayed using the <B>activebackground</B> option. In disabled state the ArrowButton is displayed with a dark stipple. </DD> </DL> Disabled state means that the ArrowButton should be insensitive: the default bindings will refuse to activate the widget and will ignore mouse button presses. </DD> </DL> <DL><DT><A NAME="-type"><B>-type</B></A></DT> <DD> Determines the type of the ArrowButton: <B>button</B> for standard button look, or <B>arrow</B> scrollbar's arrow look. </DD> </DL> <DL><DT><A NAME="-width"><B>-width</B></A></DT> <DD> Specifies a desired width for the ArrowButton. The value is in screen units. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="invoke"><I>pathName</I> <B>invoke</B></A> </DT><DD> If ArrowButton <B>state</B> is not disabled, this invoke the commands of the button. ArrowButton is redisplayed with active color and sunken relief, and <B>armcommand</B> is called. Then ArrowButton is redisplayed with normal color and its defined relief, and <B>disarmcommand</B> then <B>command</B> are called. <P><B>invoke</B> is called when ArrowButton has input focus and user press the space bar. </DD></DL> </BODY></HTML> |
Added BWman/BWidget.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | <HTML> <HEAD><TITLE>BWidget</TITLE></HEAD> <BODY BGCOLOR=white> <IMG SRC="constr.gif" WIDTH="40" HEIGHT="40"> Under construction ...<BR> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>BWidget</B> - Description text </DD></DL> <DL> <DT><I><A HREF="#wc">COMMAND</A></I></DT> <DD>BWidget::<A HREF="#XLFDfont"><B>XLFDfont</B></A> <I>cmd</I> ?<I>arg...</I>? </DD> <DD>BWidget::<A HREF="#assert"><B>assert</B></A> <I>exp</I> ?<I>msg</I>? </DD> <DD>BWidget::<A HREF="#clonename"><B>clonename</B></A> <I>menu</I> </DD> <DD>BWidget::<A HREF="#focus"><B>focus</B></A> <I>option</I> <I>path</I> </DD> <DD>BWidget::<A HREF="#get3dcolor"><B>get3dcolor</B></A> <I>path</I> <I>bgcolor</I> </DD> <DD>BWidget::<A HREF="#getname"><B>getname</B></A> <I>name</I> </DD> <DD>BWidget::<A HREF="#grab"><B>grab</B></A> <I>option</I> <I>path</I> </DD> <DD>BWidget::<A HREF="#lreorder"><B>lreorder</B></A> <I>list</I> <I>neworder</I> </DD> <DD>BWidget::<A HREF="#parsetext"><B>parsetext</B></A> <I>text</I> </DD> <DD>BWidget::<A HREF="#place"><B>place</B></A> <I>path</I> <I>w</I> <I>h</I> ?<I>arg...</I>? </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> Description text </P> <HR WIDTH="50%"><BR> <B><A NAME="wc">COMMAND</A></B><BR> <DL><DT><A NAME="XLFDfont">BWidget::<B>XLFDfont</B></A> <I>cmd</I> ?<I>arg...</I>? </DT><DD> Description text </DD></DL> <DL><DT><A NAME="assert">BWidget::<B>assert</B></A> <I>exp</I> ?<I>msg</I>? </DT><DD> Description text </DD></DL> <DL><DT><A NAME="clonename">BWidget::<B>clonename</B></A> <I>menu</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="focus">BWidget::<B>focus</B></A> <I>option</I> <I>path</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="get3dcolor">BWidget::<B>get3dcolor</B></A> <I>path</I> <I>bgcolor</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="getname">BWidget::<B>getname</B></A> <I>name</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="grab">BWidget::<B>grab</B></A> <I>option</I> <I>path</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="lreorder">BWidget::<B>lreorder</B></A> <I>list</I> <I>neworder</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="parsetext">BWidget::<B>parsetext</B></A> <I>text</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="place">BWidget::<B>place</B></A> <I>path</I> <I>w</I> <I>h</I> ?<I>arg...</I>? </DT><DD> Description text </DD></DL> </BODY></HTML> |
Added BWman/Button.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 | <HTML> <HEAD><TITLE>Button</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>Button</B> - Button widget with enhanced options </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>Button</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-activebackground">-activebackground</A></TR> <TD> <A HREF="options.htm#M-activeforeground">-activeforeground</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-anchor">-anchor</A></TR> <TD> <A HREF="options.htm#M-background">-background or -bg</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-bitmap">-bitmap</A></TR> <TD> <A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-cursor">-cursor</A></TR> <TD> <A HREF="options.htm#M-disabledforeground">-disabledforeground</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-font">-font</A></TR> <TD> <A HREF="options.htm#M-foreground">-foreground or -fg</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-highlightbackground">-highlightbackground</A></TR> <TD> <A HREF="options.htm#M-highlightcolor">-highlightcolor</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-highlightthickness">-highlightthickness</A></TR> <TD> <A HREF="options.htm#M-image">-image</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-justify">-justify</A></TR> <TD> <A HREF="options.htm#M-padx">-padx</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-pady">-pady</A></TR> <TD> <A HREF="options.htm#M-repeatdelay">-repeatdelay</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-repeatinterval">-repeatinterval</A></TR> <TD> <A HREF="options.htm#M-takefocus">-takefocus</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-text">-text</A></TR> <TD> <A HREF="options.htm#M-textvariable">-textvariable</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-wraplength">-wraplength</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-armcommand">-armcommand</A></TR> <TD> <A HREF="#-command">-command</A></TR> </TR> <TR> <TD> <A HREF="#-default">-default</A></TR> <TD> <A HREF="#-disarmcommand">-disarmcommand</A></TR> </TR> <TR> <TD> <A HREF="#-height">-height</A></TR> <TD> <A HREF="#-helptext">-helptext</A></TR> </TR> <TR> <TD> <A HREF="#-helptype">-helptype</A></TR> <TD> <A HREF="#-helpvar">-helpvar</A></TR> </TR> <TR> <TD> <A HREF="#-name">-name</A></TR> <TD> <A HREF="#-relief">-relief</A></TR> </TR> <TR> <TD> <A HREF="#-state">-state</A></TR> <TD> <A HREF="#-underline">-underline</A></TR> </TR> <TR> <TD> <A HREF="#-width">-width</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#invoke"><B>invoke</B></A> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> Button widget extends the Tk button with new options. <A HREF="DynamicHelp.html">DynamicHelp</A> options, a new relief style, callback for <B>arm</B>/<B>disarm</B>, and <B>repeatdelay</B>/<B>repeatinterval</B> options has been added. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-armcommand"><B>-armcommand</B></A></DT> <DD> Specifies a Tcl command to associate with the Button when mouse button 1 is pressed over the Button. When <B>repeatdelay</B> or <B>repeatinterval</B> option is positive integer, this command is repeatedly called if mouse pointer is over the Button and until mouse button 1 is released. </DD> </DL> <DL><DT><A NAME="-command"><B>-command</B></A></DT> <DD> Specifies a Tcl command to associate with the Button. This command is typically invoked when mouse button 1 is released over the Button window. </DD> </DL> <DL><DT><A NAME="-default"><B>-default</B></A></DT> <DD> Specifies one of three states for the default ring: <B>normal</B>, <B>active</B>, or <B>disabled</B>. In active state, the button is drawn with the platform specific appearance for a default button. In normal state, the button is drawn with the platform specific appearance for a non-default button, leaving enough space to draw the default button appearance. The normal and active states will result in buttons of the same size. In disabled state, the button is drawn with the non-default button appearance without leaving space for the default appearance. The disabled state may result in a smaller button than the active state. </DD> </DL> <DL><DT><A NAME="-disarmcommand"><B>-disarmcommand</B></A></DT> <DD> Specifies a Tcl command to associate with the Button when mouse button 1 is released. This command is called even if pointer is not over the Button, and always before the command specified by <B>command</B> option. It is typically used in conjuntion with <B>armcommand</B>, <B>repeatdelay</B> and <B>repeatinterval</B>. </DD> </DL> <DL><DT><A NAME="-height"><B>-height</B></A></DT> <DD> Specifies a desired height for the Button. If an image or bitmap is being displayed in the Button then the value is in screen units; for text it is in lines of text. If this option isn't specified, the Button's desired height is computed from the size of the image or bitmap or text being displayed in it. </DD> </DL> <DL><DT><A NAME="-helptext"><B>-helptext</B></A></DT> <DD> Text for dynamic help. If empty, no help is available for this widget. See also <A HREF="DynamicHelp.html">DynamicHelp</A>. </DD> </DL> <DL><DT><A NAME="-helptype"><B>-helptype</B></A></DT> <DD> Type of dynamic help. Use <I>balloon</I> or <I>variable</I>. See also <A HREF="DynamicHelp.html">DynamicHelp</A>. </DD> </DL> <DL><DT><A NAME="-helpvar"><B>-helpvar</B></A></DT> <DD> Variable to use when <B>helptype</B> option is <I>variable</I>. See also <A HREF="DynamicHelp.html">DynamicHelp</A>. </DD> </DL> <DL><DT><A NAME="-name"><B>-name</B></A></DT> <DD> Specifies a standard name for the button. If the option <B>*<I>name</I>Name</B> is found in the resources database, then <B>text</B> and <B>underline</B> options are extracted from its value. </DD> </DL> <DL><DT><A NAME="-relief"><B>-relief</B></A></DT> <DD> Specifies the 3-D effect desired for the widget. Acceptable values are standard values for button relief (<B>raised</B>, <B>sunken</B>, <B>flat</B>, <B>ridge</B>, <B>solid</B>, and <B>groove</B>) and <B>link</B>, which specifies that button relief is <B>flat</B> when pointer is outside the button and <B>raised</B> when pointer is inside. </DD> </DL> <DL><DT><A NAME="-state"><B>-state</B></A></DT> <DD> Specifies one of three states for the Button: <B>normal</B>, <B>active</B>, or <B>disabled</B>. In normal state the Button is displayed using the <B>foreground</B> and <B>background</B> options. The active state is typically used when the pointer is over the Button. In active state the Button is displayed using the <B>activeforeground</B> and <B>activebackground</B> options. Disabled state means that the Button should be insensitive: the default bindings will refuse to activate the widget and will ignore mouse button presses. In this state the <B>disabledforeground</B> and <B>background</B> options determine how the Button is displayed. </DD> </DL> <DL><DT><A NAME="-underline"><B>-underline</B></A></DT> <DD> Specifies the integer index of a character to underline in the label of the button. 0 corresponds to the first character of the text displayed, 1 to the next character, and so on. <BR>The binding <B><Alt-<I>char</I>></B> is automatically set on the toplevel of the Button to call Button::<B>setfocus</B>. </DD> </DL> <DL><DT><A NAME="-width"><B>-width</B></A></DT> <DD> If an image or bitmap is being displayed in the Button then the value is in screen units; for text it is in characters. If this option isn't specified, the Button's desired width is computed from the size of the image or bitmap or text being displayed in it. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="invoke"><I>pathName</I> <B>invoke</B></A> </DT><DD> If Button <B>state</B> is not disabled, this invoke the commands of the Button. Button is redisplayed with active color and sunken relief, and <B>armcommand</B> is called. Then Button is redisplayed with normal color and its defined relief, and <B>disarmcommand</B> then <B>command</B> are called. <P><B>invoke</B> is called when Button has input focus and user press the space bar. </DD></DL> </BODY></HTML> |
Added BWman/ButtonBox.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 | <HTML> <HEAD><TITLE>ButtonBox</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>ButtonBox</B> - Set of buttons with horizontal or vertical layout </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>ButtonBox</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-background">-background or -bg</A></TD> <TD> <A HREF="#-default">-default</A></TR> </TR> <TR> <TD> <A HREF="#-homogeneous">-homogeneous</A></TR> <TD> <A HREF="#-orient">-orient</A></TR> </TR> <TR> <TD> <A HREF="#-padx">-padx</A></TR> <TD> <A HREF="#-pady">-pady</A></TR> </TR> <TR> <TD> <A HREF="#-spacing">-spacing</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#add"><B>add</B></A> ?<I>option value...</I>? </DD> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#index"><B>index</B></A> <I>index</I> </DD> <DD><I>pathName</I> <A HREF="#invoke"><B>invoke</B></A> <I>index</I> </DD> <DD><I>pathName</I> <A HREF="#itemcget"><B>itemcget</B></A> <I>index</I> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#itemconfigure"><B>itemconfigure</B></A> <I>index</I> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#setfocus"><B>setfocus</B></A> <I>index</I> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> ButtonBox layouts Button horizontally or vertically. Some commands take an <I>index</I> as argument indicating on which Button it work. This index may be specified in any of the following forms: <P> <DL COMPACT> <DT> <I>number</I> <DD> Specifies the Button numerically, where 0 corresponds to the first added Button, 1 to the next, and so on. <DT> <B>end</B> or <B>last</B> <DD> Indicates the last item added. <DT><B>default</B> <DD> Indicates the default Button. </DL> </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-background"><B>-background</B></A></DT> <DD> Specifies a default background color for all added buttons and for the frame. </DD> </DL> <DL><DT><A NAME="-default"><B>-default</B></A></DT> <DD> Specifies the default button of the button box. The value is an integer referencing the n-th added button, starting from 0. If this value is -1 (the default), all button wil be drawn with their -default option set to disabled, and this value can not be changed. <BR>If this value is not -1, the associated button is drawn with -default option set to active and the others are drawn with -default option set to normal. The value can be changed by configure. </DD> </DL> <DL><DT><A NAME="-homogeneous"><B>-homogeneous (read-only)</B></A></DT> <DD> Specifies wether or not buttons must have the same width for horizontal layout. </DD> </DL> <DL><DT><A NAME="-orient"><B>-orient (read-only)</B></A></DT> <DD> Specifies the orientation of the button box. If this option is <B>horizontal</B> (the default), buttons are added from top to bottom. If this option is <B>vertical</B>, buttons are added from left to right. </DD> </DL> <DL><DT><A NAME="-padx"><B>-padx</B></A></DT> <DD> Specifies a default value for the -padx option of all added buttons. </DD> </DL> <DL><DT><A NAME="-pady"><B>-pady</B></A></DT> <DD> Specifies a default value for the -pady option of all added buttons. </DD> </DL> <DL><DT><A NAME="-spacing"><B>-spacing</B></A></DT> <DD> Specifies the default spacing between buttons. This value can be changed before each call to <B>add</B>. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="add"><I>pathName</I> <B>add</B></A> ?<I>option value...</I>? </DT><DD> Add a button to the button box. <P> See <A HREF="Button.html"><B>Button</B></A> for description of options. </DD></DL> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="index"><I>pathName</I> <B>index</B></A> <I>index</I> </DT><DD> Return the numerical index corresponding to the item. </DD></DL> <DL><DT><A NAME="invoke"><I>pathName</I> <B>invoke</B></A> <I>index</I> </DT><DD> Invoke the Button given by <I>index</I>. </DD></DL> <DL><DT><A NAME="itemcget"><I>pathName</I> <B>itemcget</B></A> <I>index</I> <I>option</I> </DT><DD> Returns the current value of a configuration option for the item. <I>Option</I> may have any of the values accepted by the item creation command. </DD></DL> <DL><DT><A NAME="itemconfigure"><I>pathName</I> <B>itemconfigure</B></A> <I>index</I> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> This command is similar to the <B>configure</B> command, except that it applies to the options for an individual item, whereas <B>configure</B> applies to the options for the widget as a whole. <B>Options</B> may have any of the values accepted by the item creation widget command. If options are specified, options are modified as indicated in the command and the command returns an empty string. If no options are specified, returns a list describing the current options for the item. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="setfocus"><I>pathName</I> <B>setfocus</B></A> <I>index</I> </DT><DD> Set the focus to the Button given by <I>index</I>. </DD></DL> </BODY></HTML> |
Added BWman/ComboBox.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 | <HTML> <HEAD><TITLE>ComboBox</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>ComboBox</B> - ComboBox widget </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>ComboBox</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I><A HREF="ArrowButton.html">OPTIONS from <B>ArrowButton</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -background or -bg</TD> <TD> -disabledforeground</TD> </TR> <TR> <TD> -foreground or -fg</TD> <TD> -state</TD> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="Entry.html">OPTIONS from <B>Entry</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -command</TD> <TD> -disabledforeground</TD> </TR> <TR> <TD> -dragenabled</TD> <TD> -dragendcmd</TD> </TR> <TR> <TD> -dragevent</TD> <TD> -draginitcmd</TD> </TR> <TR> <TD> -dragtype</TD> <TD> -dropcmd</TD> </TR> <TR> <TD> -dropenabled</TD> <TD> -dropovercmd</TD> </TR> <TR> <TD> -droptypes</TD> <TD> -editable</TD> </TR> <TR> <TD> -entrybg (see <B>-background</B>)</TD> <TD> -entryfg (see <B>-foreground</B>)</TD> </TR> <TR> <TD> -exportselection</TD> <TD> -font</TD> </TR> <TR> <TD> -helptext</TD> <TD> -helptype</TD> </TR> <TR> <TD> -helpvar</TD> <TD> -highlightbackground</TD> </TR> <TR> <TD> -highlightcolor</TD> <TD> -highlightthickness</TD> </TR> <TR> <TD> -insertbackground</TD> <TD> -insertborderwidth</TD> </TR> <TR> <TD> -insertofftime</TD> <TD> -insertontime</TD> </TR> <TR> <TD> -insertwidth</TD> <TD> -justify</TD> </TR> <TR> <TD> -selectbackground</TD> <TD> -selectborderwidth</TD> </TR> <TR> <TD> -selectforeground</TD> <TD> -show</TD> </TR> <TR> <TD> -state</TD> <TD> -takefocus</TD> </TR> <TR> <TD> -text</TD> <TD> -textvariable</TD> </TR> <TR> <TD> -width</TD> <TD> -xscrollcommand</TD> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="LabelFrame.html">OPTIONS from <B>LabelFrame</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -background or -bg</TD> <TD> -borderwidth or -bd</TD> </TR> <TR> <TD> -disabledforeground</TD> <TD> -foreground or -fg</TD> </TR> <TR> <TD> -helptext</TD> <TD> -helptype</TD> </TR> <TR> <TD> -helpvar</TD> <TD> -label (see <B>-text</B>)</TD> </TR> <TR> <TD> -labelanchor (see <B>-anchor</B>)</TD> <TD> -labelfont (see <B>-font</B>)</TD> </TR> <TR> <TD> -labelheight (see <B>-height</B>)</TD> <TD> -labeljustify (see <B>-justify</B>)</TD> </TR> <TR> <TD> -labelwidth (see <B>-width</B>)</TD> <TD> -name</TD> </TR> <TR> <TD> -padx</TD> <TD> -pady</TD> </TR> <TR> <TD> -relief</TD> <TD> -side</TD> </TR> <TR> <TD> -state</TD> <TD> -underline</TD> </TR> <TR> <TD> -wraplength</TD> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-height">-height</A></TR> <TD> <A HREF="#-modifycmd">-modifycmd</A></TR> </TR> <TR> <TD> <A HREF="#-postcommand">-postcommand</A></TR> <TD> <A HREF="#-values">-values</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#bind"><B>bind</B></A> ?<I>arg...</I>? </DD> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#getvalue"><B>getvalue</B></A> </DD> <DD><I>pathName</I> <A HREF="#setvalue"><B>setvalue</B></A> <I>index</I> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> ComboBox widget enables the user to select a value among a list given by the <B>values</B> option. The list of possible values can be popped by pressing the ArrowButton or by clicking in the entry when <B>editable</B> value of the ComboBox is <B>false</B>.<BR> If <B>editable</B> value of the ComboBox is <B>true</B> and the entry has the focus, the user can press the top and bottom arrow keys to modify its value. If the current value exactly match a value in the list, then the previous (for top arrow key) or then next (for bottom arrow key) value in the list is displayed. If the current value match the beginning of a value in the list, then this value is displayed. If the current value doesnt match anything, then the first value is displayed. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-height"><B>-height</B></A></DT> <DD> Specifies the desired height for the window, in lines. If zero or less, then the desired height for the window is made just large enough to hold all the elements in the listbox. </DD> </DL> <DL><DT><A NAME="-modifycmd"><B>-modifycmd</B></A></DT> <DD> Specifies a Tcl command called when the user modify the value of the ComboBox by selecting it in the listbox or pressing arrow key. </DD> </DL> <DL><DT><A NAME="-postcommand"><B>-postcommand</B></A></DT> <DD> Specifies a Tcl command called before the listbox of the ComboBox is mapped. </DD> </DL> <DL><DT><A NAME="-values"><B>-values</B></A></DT> <DD> Specifies the values to display in the listbox of the ComboBox. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="bind"><I>pathName</I> <B>bind</B></A> ?<I>arg...</I>? </DT><DD> Set bindings on the entry widget. </DD></DL> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="getvalue"><I>pathName</I> <B>getvalue</B></A> </DT><DD> Returns the index of the current text of the ComboBox in the list of values, or -1 if it doesn't match any value. </DD></DL> <DL><DT><A NAME="setvalue"><I>pathName</I> <B>setvalue</B></A> <I>index</I> </DT><DD> Set the text of the ComboBox to the value indicated by <I>index</I> in the list of values. <I>index</I> may be specified in any of the following forms: <P> <DL COMPACT> <DT> <B>last</B> <DD> Specifies the last element of the list of values. <DT><B>first</B> <DD> Specifies the first element of the list of values. <DT> <B>next</B> <DD> Specifies the element following the current (ie returned by <B>getvalue</B>) in the list of values. <DT><B>previous</B> <DD> Specifies the element preceding the current (ie returned by <B>getvalue</B>) in the list of values. <DT> @<I>number</I> <DD> Specifies the integer index in the list of values. </DL> </DD></DL> <HR><BR><B>BINDINGS</B><BR><BR> When Entry of the ComboBox has the input focus, it has the following bindings, in addition to the default Entry bindings: <UL> <LI>Page up set the value of the ComboBox to the first value. <LI>Page down set the value of the ComboBox to the last value. <LI>Arrow up set the value of the ComboBox to the previous value. <LI>Arrow down set the value of the ComboBox to the next value. </UL> If the listbox is not mapped and ComboBox is not editable or disabled, mouse button 1 on the Entry cause the listbox to popup, as if the user press the ArrowButton. </BODY></HTML> |
Added BWman/Dialog.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 | <HTML> <HEAD><TITLE>Dialog</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>Dialog</B> - Dialog abstraction with custom buttons </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>Dialog</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I><A HREF="ButtonBox.html">OPTIONS from <B>ButtonBox</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -background or -bg</TD> <TD> -homogeneous</TD> </TR> <TR> <TD> -padx</TD> <TD> -pady</TD> </TR> <TR> <TD> -spacing</TD> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-anchor">-anchor</A></TR> <TD> <A HREF="#-bitmap">-bitmap</A></TR> </TR> <TR> <TD> <A HREF="#-cancel">-cancel</A></TR> <TD> <A HREF="#-default">-default</A></TR> </TR> <TR> <TD> <A HREF="#-image">-image</A></TR> <TD> <A HREF="#-modal">-modal</A></TR> </TR> <TR> <TD> <A HREF="#-parent">-parent</A></TR> <TD> <A HREF="#-separator">-separator</A></TR> </TR> <TR> <TD> <A HREF="#-side">-side</A></TR> <TD> <A HREF="#-title">-title</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#add"><B>add</B></A> ?<I>arg...</I>? </DD> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#draw"><B>draw</B></A> ?<I>focus</I>? </DD> <DD><I>pathName</I> <A HREF="#enddialog"><B>enddialog</B></A> <I>result</I> </DD> <DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A> </DD> <DD><I>pathName</I> <A HREF="#invoke"><B>invoke</B></A> <I>index</I> </DD> <DD><I>pathName</I> <A HREF="#itemcget"><B>itemcget</B></A> <I>index</I> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#itemconfigure"><B>itemconfigure</B></A> <I>index</I> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#setfocus"><B>setfocus</B></A> <I>index</I> </DD> <DD><I>pathName</I> <A HREF="#withdraw"><B>withdraw</B></A> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> Dialog widget enables the user to create a dialog box. Some commands take an <I>index</I> as argument indicating on which Button it work. This index is the same specified for equivalent ButtonBox command: <P> <DL COMPACT> <DT> <I>number</I> <DD> Specifies the Button numerically, where 0 corresponds to the first added Button, 1 to the next, and so on. <DT> <B>end</B> or <B>last</B> <DD> Indicates the last item added. <DT><B>default</B> <DD> Indicates the default Button. </DL> </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-anchor"><B>-anchor (read-only)</B></A></DT> <DD> Specifies the anchor point of the ButtonBox. Must be one of <B>w</B>, <B>e</B>, <B>n</B>, <B>s</B> or <B>c</B>. If <B>side</B> option is set to <I>top</I> or <I>bottom</I>, <B>anchor</B> values <I>n</I>, <I>s</I> and <I>c</I> have the same effect. If <B>side</B> option is set to <I>left</I> or <I>right</I>, <B>anchor</B> values <I>w</I>, <I>e</I> and <I>c</I> have the same effect. </DD> </DL> <DL><DT><A NAME="-bitmap"><B>-bitmap (read-only)</B></A></DT> <DD> Specifies a bitmap to display at the left of the user frame. <B>image</B> option override <B>bitmap</B>. </DD> </DL> <DL><DT><A NAME="-cancel"><B>-cancel</B></A></DT> <DD> Specifies the number of the cancel button of the Dialog. When user press Esc in the Dialog, this button is invoked. </DD> </DL> <DL><DT><A NAME="-default"><B>-default</B></A></DT> <DD> Specifies the number of the default button of the Dialog. When user press Return in the Dialog, this button is invoked. </DD> </DL> <DL><DT><A NAME="-image"><B>-image (read-only)</B></A></DT> <DD> Specifies an image to display at the left of the user frame. <B>image</B> option override <B>bitmap</B>. </DD> </DL> <DL><DT><A NAME="-modal"><B>-modal</B></A></DT> <DD> This option must be <B>none</B>, <B>local</B> or <B>global</B>. The value of this option specifies the grab mode of the dialog and how works Dialog::<B>draw</B>. </DD> </DL> <DL><DT><A NAME="-parent"><B>-parent</B></A></DT> <DD> Parent of the Dialog. Dialog is centered in its parent. If empty, it is centered in root window. </DD> </DL> <DL><DT><A NAME="-separator"><B>-separator (read-only)</B></A></DT> <DD> Specifies wether or not to draw a separator between the user frame and the ButtonBox. </DD> </DL> <DL><DT><A NAME="-side"><B>-side (read-only)</B></A></DT> <DD> Specifies where to draw the ButtonBox relative to the user frame. Must be one of <B>top</B>, <B>left</B>, <B>bottom</B> or <B>right</B>. </DD> </DL> <DL><DT><A NAME="-title"><B>-title</B></A></DT> <DD> Title of the Dialog toplevel. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="add"><I>pathName</I> <B>add</B></A> ?<I>arg...</I>? </DT><DD> Add a button to the button box of the dialog box. Default -command option is <I>Dialog::enddialog $path index</I> where <I>index</I> is number of button added. </DD></DL> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="draw"><I>pathName</I> <B>draw</B></A> ?<I>focus</I>? </DT><DD> This command draw the Dialog, and set grab to it following <B>modal</B> option. If <B>modal</B> option is set to <I>none</I>, the command returns immediatly an empty string. In all other case, the command returns when Dialog::<B>enddialog</B> is called or when Dialog is destroyed. The return value is the result argument of Dialog::<B>enddialog</B> or -1 if it is destroyed. <P> By default, the focus is set to the default button referenced by <B>default</B> option, or to the toplevel of Dialog if no default button has been set. If <I>focus</I> is present, it must be a pathname, or an index to a button. Initial focus is set on this pathname or corresponding button. </DD></DL> <DL><DT><A NAME="enddialog"><I>pathName</I> <B>enddialog</B></A> <I>result</I> </DT><DD> This command is typically called within a command of a button to make Dialog::<B>draw</B> return. </DD></DL> <DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A> </DT><DD> Returns the pathname of the user window. </DD></DL> <DL><DT><A NAME="invoke"><I>pathName</I> <B>invoke</B></A> <I>index</I> </DT><DD> Invoke the Button given by <I>index</I>. </DD></DL> <DL><DT><A NAME="itemcget"><I>pathName</I> <B>itemcget</B></A> <I>index</I> <I>option</I> </DT><DD> Returns the current value of a configuration option for the item. <I>Option</I> may have any of the values accepted by the item creation command. </DD></DL> <DL><DT><A NAME="itemconfigure"><I>pathName</I> <B>itemconfigure</B></A> <I>index</I> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> This command is similar to the <B>configure</B> command, except that it applies to the options for an individual item, whereas <B>configure</B> applies to the options for the widget as a whole. <B>Options</B> may have any of the values accepted by the item creation widget command. If options are specified, options are modified as indicated in the command and the command returns an empty string. If no options are specified, returns a list describing the current options for the item. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="setfocus"><I>pathName</I> <B>setfocus</B></A> <I>index</I> </DT><DD> Set the focus to the Button given by <I>index</I>. </DD></DL> <DL><DT><A NAME="withdraw"><I>pathName</I> <B>withdraw</B></A> </DT><DD> Call this command to hide the dialog box. </DD></DL> </BODY></HTML> |
Added BWman/DragSite.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | <HTML> <HEAD><TITLE>DragSite</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>DragSite</B> - Commands set for Drag facilities </DD></DL> <DL> <DT><I><A HREF="#wc">COMMAND</A></I></DT> <DD>DragSite::<A HREF="#include"><B>include</B></A> <I>class</I> <I>type</I> <I>event</I> </DD> <DD>DragSite::<A HREF="#register"><B>register</B></A> <I>path</I> ?<I>option value...</I>? </DD> <DD>DragSite::<A HREF="#setdrag"><B>setdrag</B></A> <I>path</I> <I>subpath</I> <I>initcmd</I> <I>endcmd</I> ?<I>force</I>? </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> Commands of this namespace enable user to define a BWidget or a Tk widget as a drag site. </P> <HR WIDTH="50%"><BR> <B><A NAME="wc">COMMAND</A></B><BR> <DL><DT><A NAME="include">DragSite::<B>include</B></A> <I>class</I> <I>type</I> <I>event</I> </DT><DD> This command provides a simple way to include options relatives to a drag site into BWidget resources definition. It includes the options needed for <B>register</B>: <I>-dragevent</I>, initialized to <I>event</I>, <I>-draginitcmd</I> and <I>-dragendcmd</I>, initialized to empty string, and two new options: <TABLE BORDER=0 CELLSPACING=1> <TR><TD><I>-dragenabled</I><TD>Specifies wether or not drag is active (initialized to 0) <TR><TD><I>-dragtype</I><TD>Default or alternate dragged data type (initialized to <I>type</I>) </TABLE> </DD></DL> <DL><DT><A NAME="register">DragSite::<B>register</B></A> <I>path</I> ?<I>option value...</I>? </DT><DD> This command is used to declare <I>path</I> as a drag site. Options are: <P> <DL><DT><A NAME="DragSite-dragendcmd"><B>-dragendcmd</B></A></DT> <DD> Command called when drag terminates (ie when user release drag icon). This command is called with the following arguments: <UL> <LI>the pathname of the drag source (the widget itself), <LI>the pathname of the drop target, <LI>the operation, <LI>the type of the dragged data, <LI>the dragged data, <LI>result of the drop (result of the call to <B>-dropcmd</B> of the target), </UL> If the drop does not occurs, the target and the operation are empty string and the result is 0. </DD> </DL> <DL><DT><A NAME="DragSite-dragevent"><B>-dragevent</B></A></DT> <DD> Specifies the number of the mouse button associated to the drag. Must be <B>1</B>, <B>2</B> or <B>3</B>. </DD> </DL> <DL><DT><A NAME="DragSite-draginitcmd"><B>-draginitcmd</B></A></DT> <DD> Command called when drag initiates. When the event of option <B>dragevent</B> occurs on <I>path</I>, this command is called with the following arguments: <UL> <LI>pathname of the drag source (<I>path</I>), <LI>root x-coordinate of pointer, <LI>root y-coordinate of pointer, <LI>a toplevel created to represent dragged data. When returning, if it has no children, a bitmap is automatically displayed. </UL> The command must return a list containing three elements: <UL> <LI>the type of the data, <LI>the list of acceptable basic operations (<B>copy</B>, <B>move</B> and <B>link</B>) <LI>and the data. </UL> Note that even if <B>copy</I> does not appear in the list of basic operation, it is considered as an acceptable operation, since <B>copy</B> semantic does not modify the drag source. </DD> </DL> </DD></DL> <DL><DT><A NAME="setdrag">DragSite::<B>setdrag</B></A> <I>path</I> <I>subpath</I> <I>initcmd</I> <I>endcmd</I> ?<I>force</I>? </DT><DD> This command provides a simple way to call <B>register</B> during a BWidget creation or configuration. <UL> <LI><I>path</I> is the pathname of the BWidget, <LI><I>subpath</I> is the pathname of the tk widget where drag event occurs, <LI><I>initcmd</I> BWidget command for <I>drag-init</I> event, <LI><I>endcmd</I> BWidget command for <I>drag-end</I> event, <LI><I>force</I> specifies wether or not to call <B>register</B> whenever no option value has changed (0 by default - for BWidget configuration, use 1 for BWidget creation). </UL> <B>setdrag</B> verifies the modification flag of options <B>dragenabled</B> and <B>dragevent</B> and calls <B>register</B> if needed according to the options values and <I>initcmd</I> and <I>endcmd</I> arguments. <B>draginitcmd</B> and <B>dragendcmd</B> are not taken from options of widget because they are considered as user command, called by BWidget implementation of <I>drag-init</I> and <I>drag-end</I> events. </DD></DL> </BODY></HTML> |
Added BWman/DropSite.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 | <HTML> <HEAD><TITLE>DropSite</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>DropSite</B> - Commands set for Drop facilities </DD></DL> <DL> <DT><I><A HREF="#wc">COMMAND</A></I></DT> <DD>DropSite::<A HREF="#include"><B>include</B></A> <I>class</I> <I>types</I> </DD> <DD>DropSite::<A HREF="#register"><B>register</B></A> <I>path</I> ?<I>option value...</I>? </DD> <DD>DropSite::<A HREF="#setcursor"><B>setcursor</B></A> <I>cursor</I> </DD> <DD>DropSite::<A HREF="#setdrop"><B>setdrop</B></A> <I>path</I> <I>subpath</I> <I>dropover</I> <I>drop</I> ?<I>force</I>? </DD> <DD>DropSite::<A HREF="#setoperation"><B>setoperation</B></A> <I>op</I> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> Commands of this namespace enable user to define a BWidget or a Tk widget as a drop site. A drop site is composed of the type of object that can be dropped and associated operation, a command called when drop occurs, and a command when an object is dragged over the widget. A drop site must have at least one type of acceptable object and a drop command. </P> <HR WIDTH="50%"><BR> <B><A NAME="wc">COMMAND</A></B><BR> <DL><DT><A NAME="include">DropSite::<B>include</B></A> <I>class</I> <I>types</I> </DT><DD> This command provides a simple way to include options relatives to a drop site into BWidget resources definition. It includes the options needed for <B>register</B>, <I>-dropovercmd</I> and <I>-dropcmd</I>, initialized to empty string, and <I>-droptypes</I>, initialized to <I>types</I>, and one new option: <TABLE BORDER=0 CELLSPACING=1> <TR><TD><I>-dropenabled</I><TD>Specifies wether or not drop is active (initialized to 0) </TABLE> </DD></DL> <DL><DT><A NAME="register">DropSite::<B>register</B></A> <I>path</I> ?<I>option value...</I>? </DT><DD> This command is used to declare <I>path</I> as a drop site. Options are: <P> <DL><DT><A NAME="DropSite-dropcmd"><B>-dropcmd</B></A></DT> <DD> This command is called when user release the drag icon over a valid drop target widget. It takes the same arguments as <B>-dragovercmd</B> command. Its return values is passed as a result to the <B>-dragendcmd</B> command of the drag source widget. </DD> </DL> <DL><DT><A NAME="DropSite-dropovercmd"><B>-dropovercmd</B></A></DT> <DD> This command can be used to provide a dynamic drag while <I>drag-over</I> events. While a drag occurs, events <Enter>, <Motion> and <Leave> are catched. Arguments passed to the command are: <UL> <LI>pathname of the drop target (the widget itself), <LI>pathname of the drag source, <LI>event over the drop target: <I>enter</I>, <I>motion</I> or <I>leave</I>, <LI>root x-coordinate of the pointer, <LI>root y-coordinate of the pointer, <LI>operation, <LI>type of the dragged data, <LI>dragged data. </UL> Command must the new status of the drag: <UL> <LI>0 if widget refuse this drag. Command will not be recalled on motion/leave event. <LI>1 if widget accept this drag. Command will not be recalled on motion/leave event. <LI>2 if widget refuse this drag. Command will be recalled on each motion event to reevaluate. <LI>3 if widget accept this drag. Command will be recalled on each motion event to reevaluate. </UL> Here is a list of events and associated actions on a DropSite widget. This example assumes that dragged data type is valid for the drop target. <B>status</B> is the status of the drag on a DropSite. Its value is: <BR><BR> <TABLE BORDER CELLSPACING=1 CELLPADDING=4> <TR><TD WIDTH="18%" VALIGN="TOP"> <P ALIGN="CENTER"><FONT SIZE=2>Event</FONT></TD> <TD WIDTH="10%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="CENTER">Old status</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="CENTER">Action</FONT></TD> <TD WIDTH="24%" VALIGN="TOP"> <FONT SIZE=2><P ALIGN="CENTER">New status</FONT></TD> </TR> <TR><TD WIDTH="18%" VALIGN="TOP" ROWSPAN=2> <FONT SIZE=2><P><Enter></FONT></TD> <TD WIDTH="10%" VALIGN="TOP" ROWSPAN=2> <FONT SIZE=2><P>-</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2><P>if DropSite has <B>dropovercmd</B>, call it with <I>enter</I></FONT></TD> <TD WIDTH="24%" VALIGN="TOP"> <FONT SIZE=2><P>result of <B>dropovercmd</B></FONT></TD> </TR> <TR><TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2><P>else</FONT></TD> <TD WIDTH="24%" VALIGN="TOP"> <FONT SIZE=2><P>1</FONT></TD> </TR> <TR><TD WIDTH="18%" VALIGN="TOP" ROWSPAN=2> <FONT SIZE=2><P><Motion></FONT></TD> <TD WIDTH="10%" VALIGN="TOP"> <FONT SIZE=2><P>0 or 1</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> </TD> <TD WIDTH="24%" VALIGN="TOP"> <FONT SIZE=2><P>unchanged</FONT></TD> </TR> <TR><TD WIDTH="10%" VALIGN="TOP"> <FONT SIZE=2><P>2 or 3</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2><P>call <B>dropovercmd</B> with <I>motion</I></FONT></TD> <TD WIDTH="24%" VALIGN="TOP"> <FONT SIZE=2><P>result of <B>dropovercmd</B></FONT></TD> </TR> <TR><TD WIDTH="18%" VALIGN="TOP" ROWSPAN=2> <FONT SIZE=2><P><Leave></P> </FONT><P> </TD> <TD WIDTH="10%" VALIGN="TOP"> <FONT SIZE=2><P>0 or 1</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> </TD> <TD WIDTH="24%" VALIGN="TOP"> <FONT SIZE=2><P>-</FONT></TD> </TR> <TR><TD WIDTH="10%" VALIGN="TOP"> <FONT SIZE=2><P>2 or 3</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2><P>call <B>dropovercmd</B> with <I>leave</I></FONT></TD> <TD WIDTH="24%" VALIGN="TOP"> <FONT SIZE=2><P>-</FONT></TD> </TR> <TR><TD WIDTH="18%" VALIGN="TOP" ROWSPAN=4> <FONT SIZE=2><P><Drop></FONT></TD> <TD WIDTH="10%" VALIGN="TOP"> <FONT SIZE=2><P>0</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2><P>call <B>dragendcmd</B> of drag source</FONT></TD> <TD WIDTH="24%" VALIGN="TOP" ROWSPAN=4> <FONT SIZE=2><P>-</FONT></TD> </TR> <TR><TD WIDTH="10%" VALIGN="TOP"> <FONT SIZE=2><P>1</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2><P>call <B>dropcmd</B> and call <B>dragendcmd</B> of drag source</FONT></TD> </TR> <TR><TD WIDTH="10%" VALIGN="TOP"> <FONT SIZE=2><P>2</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2><P>call <B>dropovercmd</B> with <I>leave</I> and call <B>dragendcmd</B> of drag source</FONT></TD> </TR> <TR><TD WIDTH="10%" VALIGN="TOP"> <FONT SIZE=2><P>3</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2><P>call <B>dropcmd</B> and call <B>dragendcmd</B> of drag source</FONT></TD> </TR> </TABLE> <BR> </DD> </DL> <DL><DT><A NAME="DropSite-droptypes"><B>-droptypes</B></A></DT> <DD> Specifies a list {<I>type</I> <I>oplist</I> ?<I>type</I> <I>oplist</I>? ...} of acceptable types and associated operations for the drop target. For each type, <I>oplist</I> is a list {<I>descops</I> <I>mod</I> ?<I>descops</I> <I>mod</I>? ...} describing operations and modifier keys for these operations. <I>descops</I> describe an operation. It can be a predefined operations (<B>copy</B>, <B>move</B> or <B>link</B>) or a new user defined operation, of the form {<I>subop</I> <B>baseop</I> ?<I>bitmap</I>?}. <I>subop</I> is the name given to the sub operation, <I>baseop</I> is the name of the base operation (<B>copy</B>, <B>move</B> or <B>link</B>) and <I>bitmap</I> is a bitmap to display for the operation. <BR>If <I>bitmap</I> is empty, the default bitmap of the base operation is used for the sub operation. <BR><I>subop</I> can be a base operation, in order to change the bitmap of a base operation. In this case, <I>baseop</I> must be empty or equal to <I>subop</I>. <BR><I>mod</I> is the modifer key for the operation. It can be: <UL> <LI><B>none</B> to specify that no modifier key is pressed. This modifier can only be used with a sub operation named <B>default</B> (and vice versa), which has the behaviour of not display any bitmap operation. For all type, if the modifier <B>none</B> is not given, it is automatically associated to the <B>default</B> sub operation of a <B>copy</B> base operation. <LI><B>program</B> to specifies a sub operation accessible only by <B>DropSite::setoperation</B>. <LI>A list combining <B>shift</B>, <B>control</B> and <B>alt</B>, which means their corresponding key. </UL> </DD> </DL> </DD></DL> <DL><DT><A NAME="setcursor">DropSite::<B>setcursor</B></A> <I>cursor</I> </DT><DD> This command can be used within the script <B>dragovercmd</B>. It is usefull to provide visual effect about the state of the drag. </DD></DL> <DL><DT><A NAME="setdrop">DropSite::<B>setdrop</B></A> <I>path</I> <I>subpath</I> <I>dropover</I> <I>drop</I> ?<I>force</I>? </DT><DD> This command provides a simple way to call <B>register</B> during a BWidget creation or configuration. <UL> <LI><I>path</I> is the pathname of the BWidget, <LI><I>subpath</I> is the pathname of the tk widget where drag event occurs, <LI><I>dropover</I> is a command for <I>drag-over</I> event, <LI><I>drop</I> is a command for <I>drop</I> event, <LI><I>force</I> specifies wether or not to call <B>register</B> whenever no option value has changed (0 by default - for BWidget configuration, use 1 for BWidget creation). </UL> <B>setdrop</B> verifies the modification flag of options <B>dropenabled</B> and <B>droptypes</B> and calls <B>register</B> if needed according to the options values and <I>dropover</I> and <I>drop</I> arguments. <B>dropovercmd</B> and <B>dropcmd</B> are not taken from options of widget because they are considered as user command, called by BWidget implementation of <I>drag-over</I> and <I>drop</I> events. </DD></DL> <DL><DT><A NAME="setoperation">DropSite::<B>setoperation</B></A> <I>op</I> </DT><DD> Description text </DD></DL> </BODY></HTML> |
Added BWman/DynamicHelp.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | <HTML> <HEAD><TITLE>DynamicHelp</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>DynamicHelp</B> - Provide help to Tk widget or BWidget </DD></DL> <DL> <DT><I><A HREF="#wc">COMMAND</A></I></DT> <DD>DynamicHelp::<A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD>DynamicHelp::<A HREF="#include"><B>include</B></A> <I>class</I> <I>type</I> </DD> <DD>DynamicHelp::<A HREF="#register"><B>register</B></A> <I>path</I> <I>type</I> ?<I>arg...</I>? </DD> <DD>DynamicHelp::<A HREF="#sethelp"><B>sethelp</B></A> <I>path</I> <I>subpath</I> ?<I>force</I>? </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> Description text </P> <HR WIDTH="50%"><BR> <B><A NAME="wc">COMMAND</A></B><BR> <DL><DT><A NAME="configure">DynamicHelp::<B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> This command configure the ballon help. <P> <DL><DT><A NAME="DynamicHelp-borderwidth"><B>-borderwidth</B></A></DT> <DD> Width of the black border around the balloon. </DD> </DL> <DL><DT><A NAME="DynamicHelp-delay"><B>-delay</B></A></DT> <DD> Define the delay in millisecond of mouse inactivity before displaying the balloon. </DD> </DL> <BR>Other standard options are: <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-background">-background or -bg</A></TD> <TD> <A HREF="options.htm#M-font">-font</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-foreground">-foreground or -fg</A></TD> <TD> <A HREF="options.htm#M-justify">-justify</A></TR> </TR> </TABLE></DD> </DD></DL> <DL><DT><A NAME="include">DynamicHelp::<B>include</B></A> <I>class</I> <I>type</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="register">DynamicHelp::<B>register</B></A> <I>path</I> <I>type</I> ?<I>arg...</I>? </DT><DD> Register a help text to the widget <I>path</I>. <I>type</I> determines the type of the help or the type of the widget. Depending on <I>type</I>, other options must be provided. <BR> <TABLE CELLSPACING=5 CELLPADDING=0 BORDER=0> <TR><TD><B> type </B></TD><TD><B> options </B></TD></TR> <TR><TD><B><I> balloon </I></B></TD><TD><I> text </I></TD></TR> <TR><TD><B><I> variable </I></B></TD><TD><I> varName text </I></TD></TR> <TR><TD><B><I> menu </I></B></TD><TD><I> varName </I></TD></TR> <TR><TD><B><I> menuentry </I></B></TD><TD><I> index text </I></TD></TR> </TABLE> <BR>If one of the option is missing or is empty, help is removed for this widget. <BR>For type other than <I>balloon</I>, <I>varName</I> is typically a variable linked to a label. <BR>For menu, balloon type help is not available. To declare a help for menu, you first declare the menu, and then entries of this menu. <BR>For example: <BR><BR> <CENTER> <TABLE BORDER=2 CELLSPACING=2 WIDTH="80%"> <TR><TD><PRE> <FONT COLOR=red><I># create menu</I></FONT> menu .m -type menubar <FONT COLOR=red><I># associate menubar to toplevel BEFORE DynamicHelp::register</I></FONT> <FONT COLOR=red><I># to make it works with menu clone name</I></FONT> . configure -menu .m .m add cascade -label "File" -menu .m.file menu .m.file .m.file add command -label "Open..." .m.file add command -label "Quit" <FONT COLOR=red><I># create label for help, using variable varinfo</I></FONT> label .l -textvariable varinfo <FONT COLOR=red><I># associate all entries of menu .m.file to variable varinfo</I></FONT> DynamicHelp::register .m.file menu varinfo <FONT COLOR=red><I># then declare entries of .m.file</I></FONT> DynamicHelp::register .m.file menuentry 0 "Detach menu" DynamicHelp::register .m.file menuentry 1 "Open a file" DynamicHelp::register .m.file menuentry 2 "Exit demo" </PRE></TD></TR></TABLE></CENTER> <BR> <BR>Notice that if popup menu is owned by a menubar, you must associate first the menubar to its toplevel. In this case, when you create a menu popup, its clone window is also created, and DynamicHelp::register detects the exitence of the clone window and maps events to it. </DD></DL> <DL><DT><A NAME="sethelp">DynamicHelp::<B>sethelp</B></A> <I>path</I> <I>subpath</I> ?<I>force</I>? </DT><DD> Description text </DD></DL> </BODY></HTML> |
Added BWman/Entry.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 | <HTML> <HEAD><TITLE>Entry</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>Entry</B> - Entry widget with <B>state</B> option, dynamic help and drag and drop facilities </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>Entry</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-background">-background or -bg</A></TD> <TD> <A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-disabledforeground">-disabledforeground</A></TR> <TD> <A HREF="options.htm#M-exportselection">-exportselection</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-font">-font</A></TR> <TD> <A HREF="options.htm#M-foreground">-foreground or -fg</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-highlightbackground">-highlightbackground</A></TR> <TD> <A HREF="options.htm#M-highlightcolor">-highlightcolor</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-highlightthickness">-highlightthickness</A></TR> <TD> <A HREF="options.htm#M-insertbackground">-insertbackground</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-insertborderwidth">-insertborderwidth</A></TR> <TD> <A HREF="options.htm#M-insertofftime">-insertofftime</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-insertontime">-insertontime</A></TR> <TD> <A HREF="options.htm#M-insertwidth">-insertwidth</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-justify">-justify</A></TR> <TD> <A HREF="options.htm#M-relief">-relief</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-selectbackground">-selectbackground</A></TR> <TD> <A HREF="options.htm#M-selectborderwidth">-selectborderwidth</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-selectforeground">-selectforeground</A></TR> <TD> <A HREF="options.htm#M-takefocus">-takefocus</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-text">-text</A></TR> <TD> <A HREF="options.htm#M-textvariable">-textvariable</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-xscrollcommand">-xscrollcommand</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-command">-command</A></TR> <TD> <A HREF="#-dragenabled">-dragenabled</A></TR> </TR> <TR> <TD> <A HREF="#-dragendcmd">-dragendcmd</A></TR> <TD> <A HREF="#-dragevent">-dragevent</A></TR> </TR> <TR> <TD> <A HREF="#-draginitcmd">-draginitcmd</A></TR> <TD> <A HREF="#-dragtype">-dragtype</A></TR> </TR> <TR> <TD> <A HREF="#-dropcmd">-dropcmd</A></TR> <TD> <A HREF="#-dropenabled">-dropenabled</A></TR> </TR> <TR> <TD> <A HREF="#-dropovercmd">-dropovercmd</A></TR> <TD> <A HREF="#-droptypes">-droptypes</A></TR> </TR> <TR> <TD> <A HREF="#-editable">-editable</A></TR> <TD> <A HREF="#-helptext">-helptext</A></TR> </TR> <TR> <TD> <A HREF="#-helptype">-helptype</A></TR> <TD> <A HREF="#-helpvar">-helpvar</A></TR> </TR> <TR> <TD> <A HREF="#-show">-show</A></TR> <TD> <A HREF="#-state">-state</A></TR> </TR> <TR> <TD> <A HREF="#-width">-width</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#invoke"><B>invoke</B></A> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> The <B>Entry</B> widget extends the default Tk entry. Options have been added to provide visual effect depending on the state of the Entry, <A HREF="DynamicHelp.html">DynamicHelp</A> options, and <A HREF="DragSite.html">Drag</A> and <A HREF="DropSite.html">Drop</A>. Entry behaves much like a Label, with <B>text</B> option to set its contents. <BR>Tk entry command can also be used on Entry widget. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-command"><B>-command</B></A></DT> <DD> Specifies a command when user press <Return> in the Entry. </DD> </DL> <DL><DT><A NAME="-dragenabled"><B>-dragenabled</B></A></DT> <DD> A boolean specifying if drag is enabled. </DD> </DL> <DL><DT><A NAME="-dragendcmd"><B>-dragendcmd</B></A></DT> <DD> Specifies a command to be called when drag ended. <B>dragendcmd</B> must be a command conforming to the description of the option <B>dragendcmd</B> of <B>DragSite::<A HREF="DragSite.html#register">register</A></B>. <BR>If <B>dragendcmd</B> is empty, the internal <I>dragend</I> command updates the entry following the operation (<B>move</B> or <B>copy</B>) and the dragged data (whole or selected part of the entry). </DD> </DL> <DL><DT><A NAME="-dragevent"><B>-dragevent</B></A></DT> <DD> Specifies the number of the mouse button associated to the drag. Must be <B>1</B>, <B>2</B> or <B>3</B>. </DD> </DL> <DL><DT><A NAME="-draginitcmd"><B>-draginitcmd</B></A></DT> <DD> Specifies a command to be called when <B>dragevent</B> occurs on widget. <B>draginitcmd</B> must be a command conforming to the description of the option <B>draginitcmd</B> of <B>DragSite::<A HREF="DragSite.html#register">register</A></B>. <BR>if <B>draginitcmd</B> is empty, the command refuse the drag if entry is empty or if portion of text is selected and event doesn't occur above the selection. In all other cases, the command returns: <UL> <LI>as the data type, the value of option <B>dragtype</B> or <I>TEXT</I> if empty, <LI>as the operations, <I>{copy move}</I> if <B>state</B> is normal and <B>editable</B> is true, or <I>{copy}</I> only in other cases, <LI>as the data, the whole content or the selected portion of the entry. </UL> </DD> </DL> <DL><DT><A NAME="-dragtype"><B>-dragtype</B></A></DT> <DD> Specifies an alternate type of dragged object. </DD> </DL> <DL><DT><A NAME="-dropcmd"><B>-dropcmd</B></A></DT> <DD> Entry has a command wrapper for <I>drop</I> events. This command stops auto scrolling and extract current position. <BR>If <B>dropcmd</B> is not empty, it is called with the following arguments: <UL> <LI>the pathname of the Entry, <LI>the pathname of the drag source, <LI>the numeric index in the entry designated by the cursor, <LI>the current operation, <LI>the data type, <LI>the data. </UL> and must return a value conforming to <B>dropcmd</B> option described in <B>DropSite::<A HREF="DropSite.html#register">register</A></B>. If <B>dropcmd</B> is empty, the wrapper updates the entry following the type of data: <DL><DD><TABLE BORDER=0 CELLSPACING=1> <TR><TD><I>COLOR</I> or <I>FGCOLOR</I></TD> <TD>reconfigure the <B>foreground</B> of the Entry</TD> <TR><TD><I>BGCOLOR</I></TD> <TD>reconfigure the <B>background</B> of the Entry</TD> <TR><TD><I>TEXT</I>,<BR>or any other tag</TD> <TD>reconfigure the Entry to display the associated string.</TD> </TABLE></DL> and returns 1. </DD> </DL> <DL><DT><A NAME="-dropenabled"><B>-dropenabled</B></A></DT> <DD> A boolean specifying if drop is enabled. </DD> </DL> <DL><DT><A NAME="-dropovercmd"><B>-dropovercmd</B></A></DT> <DD> Entry has a command wrapper for <I>drag-over</I> events. This command enables auto scrolling and position extraction during the <I>drag-over</I>. <BR>If <B>dropovercmd</B> is empty, the wrapper accepts the drop if <B>editable</b> option is true and <B>state</B> option is normal. <BR>If <B>dropovercmd</B> is not empty, it is called with the following arguments: <UL> <LI>the pathname of the Entry, <LI>the pathname of the drag source, <LI>the event, <LI>the numeric index in the entry designated by the cursor, <LI>the current operation, <LI>the data type, <LI>the data. </UL> and must return a value conforming to <B>dropovercmd</B> option described in <B>DropSite::<A HREF="DropSite.html#register">register</A></B>. </DD> </DL> <DL><DT><A NAME="-droptypes"><B>-droptypes</B></A></DT> <DD> Specifies a list of accepted dropped object/operation. See option <B>droptypes</B> of <B>DropSite::<A HREF="DropSite.html#register">register</A></B>. for more infromation. Default accepts <I>FGCOLOR</I>, <I>COLOR</I>, <I>BGCOLOR</I> and <I>TEXT</I>, all with <B>copy</B> and <B>move</B> operations. </DD> </DL> <DL><DT><A NAME="-editable"><B>-editable</B></A></DT> <DD> Specifies whether the Entry is editable by the user. Equivalent to the <B>state</B> option of the Tk entry widget. </DD> </DL> <DL><DT><A NAME="-helptext"><B>-helptext</B></A></DT> <DD> Text for dynamic help. If empty, no help is available for this widget. See also <A HREF="DynamicHelp.html">DynamicHelp</A>. </DD> </DL> <DL><DT><A NAME="-helptype"><B>-helptype</B></A></DT> <DD> Type of dynamic help. Use <I>balloon</I> or <I>variable</I>. See also <A HREF="DynamicHelp.html">DynamicHelp</A>. </DD> </DL> <DL><DT><A NAME="-helpvar"><B>-helpvar</B></A></DT> <DD> Variable to use when <B>helptype</B> option is <I>variable</I>. See also <A HREF="DynamicHelp.html">DynamicHelp</A>. </DD> </DL> <DL><DT><A NAME="-show"><B>-show</B></A></DT> <DD> If this option is specified, then the true contents of the entry are not displayed in the window. Instead, each character in the entry's value will be displayed as the first character in the value of this option, such as ``*''. This is useful, for example, if the entry is to be used to enter a password. If characters in the entry are selected and copied elsewhere, the information copied will be what is displayed, not the true contents of the entry. </DD> </DL> <DL><DT><A NAME="-state"><B>-state</B></A></DT> <DD> Specifies one of two states for the Entry: <B>normal</B> or <B>disabled</B>. In normal state the text of the Entry is displayed using the <B>foreground</B> option. In disabled state the text of the Entry is displayed using the <B>disabledforeground</B> option. If the entry is disabled then the value may not be changed by user input and no insertion cursor will be displayed, even if the input focus is in the widget. Disabled state is the same as not editable with visual effect. </DD> </DL> <DL><DT><A NAME="-width"><B>-width</B></A></DT> <DD> Specifies an integer value indicating the desired width of the entry window, in average-size characters of the widget's font. If the value is less than or equal to zero, the widget picks a size just large enough to hold its current text. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="invoke"><I>pathName</I> <B>invoke</B></A> </DT><DD> Calls the command specified by the option <B>-command</B>. </DD></DL> </BODY></HTML> |
Added BWman/Label.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 | <HTML> <HEAD><TITLE>Label</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>Label</B> - Label widget with <B>state</B> option, dynamic help and drag and drop facilities </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>Label</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-anchor">-anchor</A></TR> <TD> <A HREF="options.htm#M-background">-background or -bg</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-bitmap">-bitmap</A></TR> <TD> <A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-cursor">-cursor</A></TR> <TD> <A HREF="options.htm#M-disabledforeground">-disabledforeground</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-font">-font</A></TR> <TD> <A HREF="options.htm#M-foreground">-foreground or -fg</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-highlightbackground">-highlightbackground</A></TR> <TD> <A HREF="options.htm#M-highlightcolor">-highlightcolor</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-highlightthickness">-highlightthickness</A></TR> <TD> <A HREF="options.htm#M-image">-image</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-justify">-justify</A></TR> <TD> <A HREF="options.htm#M-padx">-padx</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-pady">-pady</A></TR> <TD> <A HREF="options.htm#M-relief">-relief</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-takefocus">-takefocus</A></TR> <TD> <A HREF="options.htm#M-text">-text</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-textvariable">-textvariable</A></TR> <TD> <A HREF="options.htm#M-wraplength">-wraplength</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-dragenabled">-dragenabled</A></TR> <TD> <A HREF="#-dragendcmd">-dragendcmd</A></TR> </TR> <TR> <TD> <A HREF="#-dragevent">-dragevent</A></TR> <TD> <A HREF="#-draginitcmd">-draginitcmd</A></TR> </TR> <TR> <TD> <A HREF="#-dragtype">-dragtype</A></TR> <TD> <A HREF="#-dropcmd">-dropcmd</A></TR> </TR> <TR> <TD> <A HREF="#-dropenabled">-dropenabled</A></TR> <TD> <A HREF="#-dropovercmd">-dropovercmd</A></TR> </TR> <TR> <TD> <A HREF="#-droptypes">-droptypes</A></TR> <TD> <A HREF="#-focus">-focus</A></TR> </TR> <TR> <TD> <A HREF="#-height">-height</A></TR> <TD> <A HREF="#-helptext">-helptext</A></TR> </TR> <TR> <TD> <A HREF="#-helptype">-helptype</A></TR> <TD> <A HREF="#-helpvar">-helpvar</A></TR> </TR> <TR> <TD> <A HREF="#-name">-name</A></TR> <TD> <A HREF="#-state">-state</A></TR> </TR> <TR> <TD> <A HREF="#-underline">-underline</A></TR> <TD> <A HREF="#-width">-width</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#setfocus"><B>setfocus</B></A> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> The <B>Label</B> widget extends the default Tk label. Options have been added to provide visual effect depending on the state of the Label, <A HREF="DynamicHelp.html">DynamicHelp</A> options, and <A HREF="DragSite.html">Drag </A> and <A HREF="DropSite.html">Drop</A>. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-dragenabled"><B>-dragenabled</B></A></DT> <DD> A boolean specifying if drag is enabled. </DD> </DL> <DL><DT><A NAME="-dragendcmd"><B>-dragendcmd</B></A></DT> <DD> Specifies a command to be called when drag ended. <B>dragendcmd</B> must be a command conforming to the description of the option <B>dragendcmd</B> of <B>DragSite::<A HREF="DragSite.html#register">register</A></B>. </DD> </DL> <DL><DT><A NAME="-dragevent"><B>-dragevent</B></A></DT> <DD> Specifies the number of the mouse button associated to the drag. Must be <B>1</B>, <B>2</B> or <B>3</B>. </DD> </DL> <DL><DT><A NAME="-draginitcmd"><B>-draginitcmd</B></A></DT> <DD> Specifies a command to be called when <B>dragevent</B> occurs on widget. <B>draginitcmd</B> must be a command conforming to the description of the option <B>draginitcmd</B> of <B>DragSite::<A HREF="DragSite.html#register">register</A></B>. <BR>If <B>draginitcmd</B> is empty, the internal <B>draginitcmd</B> command is used instead and returns: <DL><DD><TABLE BORDER=0 CELLSPACING=1> <TR><TD valign=top><I>IMAGE {copy} <image name></I> <TD>if an image is displayed. <TR><TD valign=top><I>BITMAP {copy} <bitmap name></I> <TD>if a bitmap is displayed. <TR><TD valign=top><I>TEXT {copy} <text></I> <TD>if a text is displayed. </TABLE></DL> Note that if <B>dragtype</B> option is not empty, its value is used instead of those above. </DD> </DL> <DL><DT><A NAME="-dragtype"><B>-dragtype</B></A></DT> <DD> Specifies an alternate type of dragged object. </DD> </DL> <DL><DT><A NAME="-dropcmd"><B>-dropcmd</B></A></DT> <DD> Specifies a command to be called when drop occurs on the widget. <B>dropcmd</B> must be a command conforming to the description of the option <B>dropcmd</B> of <B>DropSite::<A HREF="DropSite.html#register">register</A></B>. <BR>If <B>dropcmd</B> is empty, the command updates the label following the type of the data: <DL><DD><TABLE BORDER=0 CELLSPACING=1> <TR><TD><I>COLOR</I> or <I>FGCOLOR</I></TD> <TD>reconfigure the <B>foreground</B> of the Label.</TD> <TR><TD><I>BGCOLOR</I></TD> <TD>reconfigure the <B>background</B> of the Label.</TD> <TR><TD><I>IMAGE</I></TD> <TD>reconfigure the Label to display the associated image.</TD> <TR><TD><I>BITMAP</I></TD> <TD>reconfigure the Label to display the associated bitmap. <B>image</B> option is set to empty.</TD> <TR><TD><I>TEXT</I>,<BR>or any other tag</TD> <TD>reconfigure the Label to display the associated string. <B>image</B> and <B>bitmap</B> options are set to empty.</TD> </TABLE></DL> and returns 1. </DD> </DL> <DL><DT><A NAME="-dropenabled"><B>-dropenabled</B></A></DT> <DD> A boolean specifying if drop is enabled. </DD> </DL> <DL><DT><A NAME="-dropovercmd"><B>-dropovercmd</B></A></DT> <DD> Specifies a command to be called when drag icon is over the widget. <B>dropovercmd</B> must be a command conforming to the description of the option <B>dropovercmd</B> of <B>DropSite::<A HREF="DropSite.html#register">register</A></B>. <BR>If <B>dropovercmd</B> is empty, Label always accepts the drop if data type is <I>FGCOLOR</I>, <I>COLOR</I>, <I>BGCOLOR</I>, and accepts all other data type only if <B>state</B> is normal. </DD> </DL> <DL><DT><A NAME="-droptypes"><B>-droptypes</B></A></DT> <DD> Specifies a list of accepted dropped object/operation. See option <B>droptypes</B> of <B>DropSite::<A HREF="DropSite.html#register">register</A></B>. for more infromation. Default accepts <I>FGCOLOR</I>, <I>COLOR</I>, <I>BGCOLOR</I>, <I>TEXT</I>, <I>BITMAP</I> and <I>IMAGE</I>, all with <B>copy</B> and <B>move</B> operations. </DD> </DL> <DL><DT><A NAME="-focus"><B>-focus</B></A></DT> <DD> Specifies a pathname to set the focus on for Label::<B>setfocus</B> command. </DD> </DL> <DL><DT><A NAME="-height"><B>-height</B></A></DT> <DD> Specifies a desired height for the label. If an image or bitmap is being displayed in the label then the value is in screen units, for text it is in lines of text. If this option isn't specified, the label's desired height is computed from the size of the image or bitmap or text being displayed in it. </DD> </DL> <DL><DT><A NAME="-helptext"><B>-helptext</B></A></DT> <DD> Text for dynamic help. If empty, no help is available for this widget. See also <A HREF="DynamicHelp.html">DynamicHelp</A>. </DD> </DL> <DL><DT><A NAME="-helptype"><B>-helptype</B></A></DT> <DD> Type of dynamic help. Use <I>balloon</I> or <I>variable</I>. See also <A HREF="DynamicHelp.html">DynamicHelp</A>. </DD> </DL> <DL><DT><A NAME="-helpvar"><B>-helpvar</B></A></DT> <DD> Variable to use when <B>helptype</B> option is <I>variable</I>. See also <A HREF="DynamicHelp.html">DynamicHelp</A>. </DD> </DL> <DL><DT><A NAME="-name"><B>-name</B></A></DT> <DD> Specifies a standard name for the label. If the option <B>*<I>name</I>Name</B> is found in the resource database, then <B>text</B> and <B>underline</B> options are extracted from its value. </DD> </DL> <DL><DT><A NAME="-state"><B>-state</B></A></DT> <DD> Specifies one of two states for the Label: <B>normal</B> or <B>disabled</B>. In normal state the text of the Label is displayed using the <B>foreground</B> option. In disabled state the text of the Label is displayed using the <B>disabledforeground</B> option. </DD> </DL> <DL><DT><A NAME="-underline"><B>-underline</B></A></DT> <DD> Specifies the integer index of a character to underline in the label. 0 corresponds to the first character of the text displayed, 1 to the next character, and so on. <BR>The binding <B><Alt-<I>char</I>></B> is automatically set on the toplevel of the Label to call Label::<B>setfocus</B>. </DD> </DL> <DL><DT><A NAME="-width"><B>-width</B></A></DT> <DD> Specifies a desired width for the label. If an image or bitmap is being displayed in the label then the value is in screen units, for text it is in characters. If this option isn't specified, the label's desired width is computed from the size of the image or bitmap or text being displayed in it. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="setfocus"><I>pathName</I> <B>setfocus</B></A> </DT><DD> Set the focus on the pathname given by <B>-focus</B> option if <B>-state</B> is <I>normal</I>. </DD></DL> </BODY></HTML> |
Added BWman/LabelEntry.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 | <HTML> <HEAD><TITLE>LabelEntry</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>LabelEntry</B> - LabelFrame containing an Entry widget. </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>LabelEntry</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I><A HREF="Entry.html">OPTIONS from <B>Entry</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -borderwidth or -bd</TD> <TD> -command</TD> </TR> <TR> <TD> -disabledforeground</TD> <TD> -dragenabled</TD> </TR> <TR> <TD> -dragendcmd</TD> <TD> -dragevent</TD> </TR> <TR> <TD> -draginitcmd</TD> <TD> -dragtype</TD> </TR> <TR> <TD> -dropcmd</TD> <TD> -dropenabled</TD> </TR> <TR> <TD> -dropovercmd</TD> <TD> -droptypes</TD> </TR> <TR> <TD> -editable</TD> <TD> -entrybg (see <B>-background</B>)</TD> </TR> <TR> <TD> -entryfg (see <B>-foreground</B>)</TD> <TD> -exportselection</TD> </TR> <TR> <TD> -font</TD> <TD> -helptext</TD> </TR> <TR> <TD> -helptype</TD> <TD> -helpvar</TD> </TR> <TR> <TD> -highlightbackground</TD> <TD> -highlightcolor</TD> </TR> <TR> <TD> -highlightthickness</TD> <TD> -insertbackground</TD> </TR> <TR> <TD> -insertborderwidth</TD> <TD> -insertofftime</TD> </TR> <TR> <TD> -insertontime</TD> <TD> -insertwidth</TD> </TR> <TR> <TD> -justify</TD> <TD> -relief</TD> </TR> <TR> <TD> -selectbackground</TD> <TD> -selectborderwidth</TD> </TR> <TR> <TD> -selectforeground</TD> <TD> -show</TD> </TR> <TR> <TD> -state</TD> <TD> -takefocus</TD> </TR> <TR> <TD> -text</TD> <TD> -textvariable</TD> </TR> <TR> <TD> -width</TD> <TD> -xscrollcommand</TD> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="LabelFrame.html">OPTIONS from <B>LabelFrame</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -background or -bg</TD> <TD> -disabledforeground</TD> </TR> <TR> <TD> -foreground or -fg</TD> <TD> -helptext</TD> </TR> <TR> <TD> -helptype</TD> <TD> -helpvar</TD> </TR> <TR> <TD> -label (see <B>-text</B>)</TD> <TD> -labelanchor (see <B>-anchor</B>)</TD> </TR> <TR> <TD> -labelfont (see <B>-font</B>)</TD> <TD> -labelheight (see <B>-height</B>)</TD> </TR> <TR> <TD> -labeljustify (see <B>-justify</B>)</TD> <TD> -labelwidth (see <B>-width</B>)</TD> </TR> <TR> <TD> -name</TD> <TD> -padx</TD> </TR> <TR> <TD> -pady</TD> <TD> -side</TD> </TR> <TR> <TD> -state</TD> <TD> -underline</TD> </TR> <TR> <TD> -wraplength</TD> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#bind"><B>bind</B></A> ?<I>arg...</I>? </DD> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> LabelEntry is a widget composed of <A HREF="LabelFrame.html">LabelFrame</A> widget containing an <A HREF="Entry.html">Entry</A> widget. Tk entry command can also be used on LabelEntry widget. </P> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="bind"><I>pathName</I> <B>bind</B></A> ?<I>arg...</I>? </DT><DD> Set bindings on the entry widget. </DD></DL> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> </BODY></HTML> |
Added BWman/LabelFrame.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | <HTML> <HEAD><TITLE>LabelFrame</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>LabelFrame</B> - Frame with a Label </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>LabelFrame</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD> <TD> <A HREF="options.htm#M-relief">-relief</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="Label.html">OPTIONS from <B>Label</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -anchor</TD> <TD> -background or -bg</TD> </TR> <TR> <TD> -disabledforeground</TD> <TD> -focus</TD> </TR> <TR> <TD> -font</TD> <TD> -foreground or -fg</TD> </TR> <TR> <TD> -height</TD> <TD> -helptext</TD> </TR> <TR> <TD> -helptype</TD> <TD> -helpvar</TD> </TR> <TR> <TD> -justify</TD> <TD> -name</TD> </TR> <TR> <TD> -padx</TD> <TD> -pady</TD> </TR> <TR> <TD> -state</TD> <TD> -text</TD> </TR> <TR> <TD> -underline</TD> <TD> -width</TD> </TR> <TR> <TD> -wraplength</TD> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-side">-side</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD>LabelFrame::<A HREF="#align"><B>align</B></A> ?<I>arg...</I>? </DD> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> LabelFrame enables user to create a frame with a <A HREF="Label.html">Label</A> positionned at any side. LabelFrame is used by <A HREF="ComboBox.html">ComboBox</A> and <A HREF="SpinBox.html">SpinBox</A>. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-side"><B>-side (read-only)</B></A></DT> <DD> Specifies where to position the Label relative to the user frame: <B>top</B>, <B>bottom</B>, <B>left</B> or <B>right</B>. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="align">LabelFrame::<B>align</B></A> ?<I>arg...</I>? </DT><DD> This command align label of all widget given by <I>args</I> of class LabelFrame (or "derived") by setting their width to the max one +1 </DD></DL> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A> </DT><DD> Return the frame where the user can create any other widget. </DD></DL> </BODY></HTML> |
Added BWman/ListBox.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 | <HTML> <HEAD><TITLE>ListBox</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>ListBox</B> - ListBox widget </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>ListBox</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-background">-background or -bg</A></TD> <TD> <A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-cursor">-cursor</A></TR> <TD> <A HREF="options.htm#M-highlightbackground">-highlightbackground</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-highlightcolor">-highlightcolor</A></TR> <TD> <A HREF="options.htm#M-highlightthickness">-highlightthickness</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-relief">-relief</A></TR> <TD> <A HREF="options.htm#M-selectbackground">-selectbackground</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-selectforeground">-selectforeground</A></TR> <TD> <A HREF="options.htm#M-takefocus">-takefocus</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-xscrollcommand">-xscrollcommand</A></TR> <TD> <A HREF="options.htm#M-yscrollcommand">-yscrollcommand</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-deltax">-deltax</A></TR> <TD> <A HREF="#-deltay">-deltay</A></TR> </TR> <TR> <TD> <A HREF="#-dragenabled">-dragenabled</A></TR> <TD> <A HREF="#-dragendcmd">-dragendcmd</A></TR> </TR> <TR> <TD> <A HREF="#-dragevent">-dragevent</A></TR> <TD> <A HREF="#-draginitcmd">-draginitcmd</A></TR> </TR> <TR> <TD> <A HREF="#-dragtype">-dragtype</A></TR> <TD> <A HREF="#-dropcmd">-dropcmd</A></TR> </TR> <TR> <TD> <A HREF="#-dropenabled">-dropenabled</A></TR> <TD> <A HREF="#-dropovercmd">-dropovercmd</A></TR> </TR> <TR> <TD> <A HREF="#-dropovermode">-dropovermode</A></TR> <TD> <A HREF="#-droptypes">-droptypes</A></TR> </TR> <TR> <TD> <A HREF="#-height">-height</A></TR> <TD> <A HREF="#-multicolumn">-multicolumn</A></TR> </TR> <TR> <TD> <A HREF="#-padx">-padx</A></TR> <TD> <A HREF="#-redraw">-redraw</A></TR> </TR> <TR> <TD> <A HREF="#-width">-width</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#bindImage"><B>bindImage</B></A> <I>event</I> <I>script</I> </DD> <DD><I>pathName</I> <A HREF="#bindText"><B>bindText</B></A> <I>event</I> <I>script</I> </DD> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#delete"><B>delete</B></A> ?<I>arg...</I>? </DD> <DD><I>pathName</I> <A HREF="#edit"><B>edit</B></A> <I>item</I> <I>text</I> ?<I>verifycmd</I>? ?<I>clickres</I>? ?<I>select</I>? </DD> <DD><I>pathName</I> <A HREF="#exists"><B>exists</B></A> <I>item</I> </DD> <DD><I>pathName</I> <A HREF="#index"><B>index</B></A> <I>item</I> </DD> <DD><I>pathName</I> <A HREF="#insert"><B>insert</B></A> <I>index</I> <I>item</I> ?<I>option value...</I>? </DD> <DD><I>pathName</I> <A HREF="#item"><B>item</B></A> <I>first</I> ?<I>last</I>? </DD> <DD><I>pathName</I> <A HREF="#itemcget"><B>itemcget</B></A> <I>item</I> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#itemconfigure"><B>itemconfigure</B></A> <I>item</I> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#items"><B>items</B></A> ?<I>first</I>? ?<I>last</I>? </DD> <DD><I>pathName</I> <A HREF="#move"><B>move</B></A> <I>item</I> <I>index</I> </DD> <DD><I>pathName</I> <A HREF="#reorder"><B>reorder</B></A> <I>neworder</I> </DD> <DD><I>pathName</I> <A HREF="#see"><B>see</B></A> <I>item</I> </DD> <DD><I>pathName</I> <A HREF="#selection"><B>selection</B></A> <I>cmd</I> ?<I>arg...</I>? </DD> <DD><I>pathName</I> <A HREF="#xview"><B>xview</B></A> ?<I>arg...</I>? </DD> <DD><I>pathName</I> <A HREF="#yview"><B>yview</B></A> ?<I>arg...</I>? </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> <B>ListBox</B> widget uses canvas to display a list of items. Each item is composed of a label with its own font and foreground attributes, and an optional image or window. Each item is drawn in a single line, whose height is defined by the <B>deltay</B> option, so they must have at most this height. A item is uniquely identified by a string given at creation (by the <B>insert</B> command). The ListBox can have one or more columns, depending on <B>multicolumn</B> option. The user do not handle columns; the number of columns is determined following the height of the ListBox in order to see each item vertically. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-deltax"><B>-deltax</B></A></DT> <DD> Specifies horizontal pad between each columns. </DD> </DL> <DL><DT><A NAME="-deltay"><B>-deltay</B></A></DT> <DD> Specifies vertical size of the items. </DD> </DL> <DL><DT><A NAME="-dragenabled"><B>-dragenabled</B></A></DT> <DD> A boolean specifying if drag is enabled. </DD> </DL> <DL><DT><A NAME="-dragendcmd"><B>-dragendcmd</B></A></DT> <DD> Specifies a command to be called when drag ended. <B>dragendcmd</B> must be a command conforming to the description of the option <B>dragendcmd</B> of <B>DragSite::<A HREF="DragSite.html#register">register</A></B>. </DD> </DL> <DL><DT><A NAME="-dragevent"><B>-dragevent</B></A></DT> <DD> Specifies the number of the mouse button associated to the drag. Must be <B>1</B>, <B>2</B> or <B>3</B>. </DD> </DL> <DL><DT><A NAME="-draginitcmd"><B>-draginitcmd</B></A></DT> <DD> ListBox has a command wrapper for <I>drag-init</I> events. This command refused the drag if no item is designated. In other cases: <BR>If <B>draginitcmd</B> is empty, it returns: <UL> <LI>the value of option <B>dragtype</B> or <I>LISTBOX_ITEM</I> if empty as the data type, <LI><I>{move copy link}</I> as the operations, <LI>the item identifier as the data. </UL> If <B>draginitcmd</B> is not empty, it is called with the following arguments: <UL> <LI>the pathname of the listbox, <LI>the identifier of the dragged item, <LI>the toplevel created to represent dragged data. </UL> and must return a value conforming to <B>draginitcmd</B> option described in <B>DragSite::<A HREF="DragSite.html#register">register</A></B>. </DD> </DL> <DL><DT><A NAME="-dragtype"><B>-dragtype</B></A></DT> <DD> Specifies an alternate type of dragged object. </DD> </DL> <DL><DT><A NAME="-dropcmd"><B>-dropcmd</B></A></DT> <DD> ListBox has a command wrapper for <I>drop</I> events. This command stops auto scrolling and extract item and position. <BR>If <B>dropcmd</B> is not empty, it is called with the following arguments: <UL> <LI>the pathname of the listbox, <LI>the pathname of the drag source, <LI>a list describing where the drop occurs. It can be: <UL> <LI><I>{</I><B>widget</B><I>}</I>, <LI><I>{</I><B>item</B> <I>item}</I> or <LI><I>{</I><B>position</B> <I>index}</I>. </UL> <LI>the current operation, <LI>the data type, <LI>the data. </UL> </DD> </DL> <DL><DT><A NAME="-dropenabled"><B>-dropenabled</B></A></DT> <DD> A boolean specifying if drop is enabled. </DD> </DL> <DL><DT><A NAME="-dropovercmd"><B>-dropovercmd</B></A></DT> <DD> LsitBox has a command wrapper for <I>drag-over</I> events. This command enables auto scrolling and position extraction during the <I>drag-over</I>. If <B>dropovercmd</B> is not empty, the command is called with the following aguments: <UL> <LI>the pathname of the listbox, <LI>the pathname of the drag source, <LI>a list describing where the drop can occur, whose elements are: <UL> <LI>the string <I>widget</I> if <B>dropovertype</B> option contains <I>w</I>, else empty string. <LI>the targeted item if drag icon points an item and <B>dropovertype</B> option contains <I>i</I>, else empty string. <LI>an index within two items where drag icon points to if <B>dropovertype</B> option contains <I>p</I>, else empty string. <LI>optionally, the preferred method if drop can occur both inside an item and between two items. The value is <I>position</I> or <I>item</I>. </UL> <LI>the current operation, <LI>the data type, <LI>the data. </UL> The command must return a list with two elements: <UL> <LI>the drop status, conforming to those described in <B>dropovercmd</B> option of <B>DropSite::<A HREF="DropSite.html#register">register</A></B>, <LI>the choosen method: <I>widget</I>, <I>item</I> or <I>position</I>. </UL> </DD> </DL> <DL><DT><A NAME="-dropovermode"><B>-dropovermode</B></A></DT> <DD> Specifies the type of <I>drop-over</I> interaction. Must be a combination of <B>w</B>, which specifies that drop can occurs everywhere on widget, <B>p</B>, which specifies that drop can occurs between two items, and <B>i</B>, which specifies that drop occurs inside items. </DD> </DL> <DL><DT><A NAME="-droptypes"><B>-droptypes</B></A></DT> <DD> Specifies a list of accepted dropped object/operation. See option <B>droptypes</B> of <B>DropSite::<A HREF="DropSite.html#register">register</A></B>. for more infromation. <BR>Default is <I>LISTBOX_ITEM</I> with operations <B>copy</B> and <B>move</B>. </DD> </DL> <DL><DT><A NAME="-height"><B>-height</B></A></DT> <DD> Specifies the desired height for the listbox in units of <B>deltay</B> pixels. </DD> </DL> <DL><DT><A NAME="-multicolumn"><B>-multicolumn</B></A></DT> <DD> Specifies wether or not ListBox layouts items in order to see each one vertically. </DD> </DL> <DL><DT><A NAME="-padx"><B>-padx</B></A></DT> <DD> Specifies distance between image or window and text of the items. </DD> </DL> <DL><DT><A NAME="-redraw"><B>-redraw</B></A></DT> <DD> Specifies wether or not the listbox should be redrawn when entering idle. Set it to false if you call <B>update</B> while modifying the listbox. </DD> </DL> <DL><DT><A NAME="-width"><B>-width</B></A></DT> <DD> Specifies the desired width for the listbox in units of 8 pixels. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="bindImage"><I>pathName</I> <B>bindImage</B></A> <I>event</I> <I>script</I> </DT><DD> This command associates a command to execute whenever the event sequence given by <I>event</I> occurs on the image of a item. The item idenfier on which the event occurs is appended to the command. </DD></DL> <DL><DT><A NAME="bindText"><I>pathName</I> <B>bindText</B></A> <I>event</I> <I>script</I> </DT><DD> This command associates a command to execute whenever the event sequence given by <I>event</I> occurs on the label of a item. The item idenfier on which the event occurs is appended to the command. </DD></DL> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="delete"><I>pathName</I> <B>delete</B></A> ?<I>arg...</I>? </DT><DD> Deletes all items in <I>arg</I>. <I>arg</I> can be a list of items or a list of list of items. To delete all items, do <I>$pathName delete [$pathName items]</I>. </DD></DL> <DL><DT><A NAME="edit"><I>pathName</I> <B>edit</B></A> <I>item</I> <I>text</I> ?<I>verifycmd</I>? ?<I>clickres</I>? ?<I>select</I>? </DT><DD> Provides a way for the user to edit in place the label of an item. <BR>The command takes the initial text as argument and does not modify the label of the edited node, but returns an empty string if edition is canceled, or the typed text if edition is accepted. <BR>When editing, the user can cancel by pressing Escape, or accept by pressing Return. <BR><I>clickres</I> specifies what to do if the user click outside the editable area. If <I>clickres</I> is 0 (the default), the edition is canceled. If <I>clickres</I> is 1, the edition is accepted. In all other case, the edition continues. <BR>If edition is accepted and <I>modifycmd</I> is not empty, then it is called with the new text as argument and must return 1 to accept the new text, 0 to refuse it and continue edition. <BR><I>select</I> specifies wether or not the initial text should be selected. Default is 1. </DD></DL> <DL><DT><A NAME="exists"><I>pathName</I> <B>exists</B></A> <I>item</I> </DT><DD> Returns 1 if <I>item</I> exists in the listbox, else 0. </DD></DL> <DL><DT><A NAME="index"><I>pathName</I> <B>index</B></A> <I>item</I> </DT><DD> Returns the position of <I>item</I> in the list. </DD></DL> <DL><DT><A NAME="insert"><I>pathName</I> <B>insert</B></A> <I>index</I> <I>item</I> ?<I>option value...</I>? </DT><DD> Inserts a new item identified by <I>item</I> in the list at position <I>index</I>. <P> <DL><DT><A NAME="Item-data"><B>-data</B></A></DT> <DD> User data associated to the item. </DD> </DL> <DL><DT><A NAME="Item-fill"><B>-fill</B></A></DT> <DD> Specifies the foreground color of the label of the item. </DD> </DL> <DL><DT><A NAME="Item-font"><B>-font</B></A></DT> <DD> Specifies a font for the label of the item. </DD> </DL> <DL><DT><A NAME="Item-image"><B>-image</B></A></DT> <DD> Specifies an image to display at the left of the label of the item. <B>window</B> option override <B>image</B>. </DD> </DL> <DL><DT><A NAME="Item-indent"><B>-indent</B></A></DT> <DD> Specifies the amount of extra space in pixels at the left of the item. </DD> </DL> <DL><DT><A NAME="Item-text"><B>-text</B></A></DT> <DD> Specifies the label of the item. </DD> </DL> <DL><DT><A NAME="Item-window"><B>-window</B></A></DT> <DD> Specifies a pathname to display at the left of the label of the item. <B>window</B> option override <B>image</B>. </DD> </DL> </DD></DL> <DL><DT><A NAME="item"><I>pathName</I> <B>item</B></A> <I>first</I> ?<I>last</I>? </DT><DD> <B>Its use is deprecated. Use <I>items</I> instead.</B><BR> If <I>last</I> is omitted, returns the item at index <I>first</I> in the list, or an empty string if <I>first</I> refers to a non-existent element. If <I>last</I> is specified, the command returns a list whose elements are all of the items between <I>first</I> and <I>last</I>, inclusive. Both <I>first</I> and <I>last</I> may have any of the standard forms for indices. </DD></DL> <DL><DT><A NAME="itemcget"><I>pathName</I> <B>itemcget</B></A> <I>item</I> <I>option</I> </DT><DD> Returns the current value of a configuration option for the item. <I>Option</I> may have any of the values accepted by the item creation command. </DD></DL> <DL><DT><A NAME="itemconfigure"><I>pathName</I> <B>itemconfigure</B></A> <I>item</I> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> This command is similar to the <B>configure</B> command, except that it applies to the options for an individual item, whereas <B>configure</B> applies to the options for the widget as a whole. <B>Options</B> may have any of the values accepted by the item creation widget command. If options are specified, options are modified as indicated in the command and the command returns an empty string. If no options are specified, returns a list describing the current options for the item. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="items"><I>pathName</I> <B>items</B></A> ?<I>first</I>? ?<I>last</I>? </DT><DD> If <I>first</I> and <I>last</I> are omitted, returns the list of all items. If <I>first</I> is specified and <I>last</I> omitted, returns the item at index <I>first</I>, or an empty string if <I>first</I> refers to a non-existent element. If <I>first</I> and <I>last</I> are specified, the command returns a list whose elements are all of the items between <I>first</I> and <I>last</I>, inclusive. Both <I>first</I> and <I>last</I> may have any of the standard forms for indices. </DD></DL> <DL><DT><A NAME="move"><I>pathName</I> <B>move</B></A> <I>item</I> <I>index</I> </DT><DD> Moves <I>item</I> at position <I>index</I> in the list. </DD></DL> <DL><DT><A NAME="reorder"><I>pathName</I> <B>reorder</B></A> <I>neworder</I> </DT><DD> Modifies the order of items in the listbox given by <I>neworder</I>. Items that do not appear in <I>neworder</I> are no moved. </DD></DL> <DL><DT><A NAME="see"><I>pathName</I> <B>see</B></A> <I>item</I> </DT><DD> Arrange the scrolling area to make <I>item</I> visible. </DD></DL> <DL><DT><A NAME="selection"><I>pathName</I> <B>selection</B></A> <I>cmd</I> ?<I>arg...</I>? </DT><DD> Modifies the list of selected items following <I>cmd</I>: <DL> <DT><B>clear</B> <DD>remove all items of the selection. <DT><B>set</B> <DD>set the selection to all items in <I>arg</I> <DT><B>add</B> <DD>add all items of <I>arg</I> in the selection <DT><B>remove</B> <DD>remove all items of <I>arg</I> of the selection <DT><B>get</B> <DD>return the current selected items </DL> </DD></DL> <DL><DT><A NAME="xview"><I>pathName</I> <B>xview</B></A> ?<I>arg...</I>? </DT><DD> Standard command to enable horizontal scrolling of <I>pathName</I>. </DD></DL> <DL><DT><A NAME="yview"><I>pathName</I> <B>yview</B></A> ?<I>arg...</I>? </DT><DD> Standard command to enable vertical scrolling of <I>pathName</I>. </DD></DL> </BODY></HTML> |
Added BWman/MainFrame.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 | <HTML> <HEAD><TITLE>MainFrame</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>MainFrame</B> - Manage toplevel with menu, toolbar and statusbar </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>MainFrame</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I><A HREF="ProgressBar.html">OPTIONS from <B>ProgressBar</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -background or -bg</TD> <TD> -progressfg (see <B>-foreground</B>)</TD> </TR> <TR> <TD> -progressmax (see <B>-maximum</B>)</TD> <TD> -progresstype (see <B>-type</B>)</TD> </TR> <TR> <TD> -progressvar (see <B>-variable</B>)</TD> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-height">-height</A></TR> <TD> <A HREF="#-menu">-menu</A></TR> </TR> <TR> <TD> <A HREF="#-separator">-separator</A></TR> <TD> <A HREF="#-textvariable">-textvariable</A></TR> </TR> <TR> <TD> <A HREF="#-width">-width</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#addindicator"><B>addindicator</B></A> ?<I>arg...</I>? </DD> <DD><I>pathName</I> <A HREF="#addtoolbar"><B>addtoolbar</B></A> </DD> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A> </DD> <DD><I>pathName</I> <A HREF="#getindicator"><B>getindicator</B></A> <I>index</I> </DD> <DD><I>pathName</I> <A HREF="#getmenu"><B>getmenu</B></A> <I>menuid</I> </DD> <DD><I>pathName</I> <A HREF="#gettoolbar"><B>gettoolbar</B></A> <I>index</I> </DD> <DD><I>pathName</I> <A HREF="#setmenustate"><B>setmenustate</B></A> <I>tag</I> <I>state</I> </DD> <DD><I>pathName</I> <A HREF="#showstatusbar"><B>showstatusbar</B></A> <I>name</I> </DD> <DD><I>pathName</I> <A HREF="#showtoolbar"><B>showtoolbar</B></A> <I>index</I> <I>bool</I> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> MainFrame manage toplevel to have:<BR> <UL> <LI>simple menu creation, with automatic accelerator bindings and <A HREF="DynamicHelp.html">DynamicHelp</A> association, <LI>one or more toolbar that user can hide, <LI>a status bar, displaying a user message or a menu description, and optionnaly a <A HREF="ProgressBar.html">ProgressBar</A>. </UL> </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-height"><B>-height</B></A></DT> <DD> Specifies the desired height for the user frame in any of the forms acceptable to Tk_GetPixels. If this option is less than or equal to zero (the default) then the window will not request any size at all. </DD> </DL> <DL><DT><A NAME="-menu"><B>-menu (read-only)</B></A></DT> <DD> This option describes the menu. This is a list whose each five elements describe one cascad menu. It has the following form: {<I>menuname</I> <I>tags</I> <I>menuId</I> <I>tearoff</I> <I>menuentries</I>...} where <I>menuentries</I> is a list where each element describe one menu entry, which can be: <UL> <LI>for a separator:<BR> {<B>separator</B>} <LI>for a command:<BR> {<B>command</B> <I>menuname</I> ?<I>tags</I>? ?<I>description</I>? ?<I>accelerator</I>? ?<I>option</I> <I>value</I>? ...} <LI>for a check button:<BR> {<B>checkbutton</B> <I>menuname</I> ?<I>tags</I>? ?<I>description</I>? ?<I>accelerator</I>? ?<I>option</I> <I>value</I>? ...} <LI>for a radio button:<BR> {<B>radiobutton</B> <I>menuname</I> ?<I>tags</I>? ?<I>description</I>? ?<I>accelerator</I> ?<I>option</I> <I>value</I>? ...} <LI>for a cascad menu:<BR> {<B>cascad</B> <I>menuname</I> <I>tags</I> <I>menuId</I> <I>tearoff</I> <I>menuentries</I>} </UL> where: <UL> <LI><I>menuname</I> is the name of the menu. If it contains a &, the following character is automatically converted to the corresponding <B>-underline</B> option of <B>menu add</B> command. <LI><I>tags</I> is the tags list for the entry, used for enabling or disabling menu entries with <B>MainFrame::setmenustate</B>. <LI><I>menuId</I> is an id for the menu, from which you can get menu pathname with <B>MainFrame::getmenu</B>. <LI><I>tearoff</I> specifies if menu has tearoff entry. <LI><I>description</I> specifies a string for <A HREF=\"DynamicHelp.html\">DynamicHelp</A>. <LI><I>accelerator</I> specifies a key sequence. It is a list of two elements, where the first is one of <B>Ctrl</B>, <B>Alt</B> or <B>CtrlAlt</B>, and the second as letter or a digit. An accelerator string is build and corresponding binding set on the toplevel to invoke the menu entry. <LI><I>option value</I> specifies additionnal options for the entry (see <B>menu add</B> command). </UL> Each value enclosed by ? are optional and defaulted to empty string, but must be provided if one or more following options is not empty. <BR>Example: <PRE> set descmenu { "&File" {} {} 0 { {command "&New" {} "Create a new document" {Ctrl n} -command Menu::new} {command "&Open..." {} "Open an existing document" {Ctrl o} -command Menu::open} {command "&Save" open "Save the document" {Ctrl s} -command Menu::save} {cascad "&Export" {} export 0 { {command "Format &1" open "Export document to format 1" {} -command {Menu::export 1}} {command "Format &2" open "Export document to format 2" {} -command {Menu::export 2}} }} {separator} {cascad "&Recent files" {} recent 0 {}} {separator} {command "E&xit" {} "Exit the application" {} -command Menu::exit} } "&Options" {} {} 0 { {checkbutton "Toolbar" {} "Show/hide toolbar" {} -variable Menu::_drawtoolbar -command {$Menu::_mainframe showtoolbar toolbar $Menu::_drawtoolbar} } } } </PRE> </DD> </DL> <DL><DT><A NAME="-separator"><B>-separator (read-only)</B></A></DT> <DD> Specifies if separator should be drawn at the top and/or at the bottom of the user window. Must be one of the values <B>none</B>, <B>top</B>, <B>bottom</B> or <B>both</B>. It depends on the relief of subwidgets of user window. </DD> </DL> <DL><DT><A NAME="-textvariable"><B>-textvariable</B></A></DT> <DD> Specifies the textvariable option for the label of the status bar. <A HREF="DynamicHelp.html">DynamicHelp</A> description of menu entries are mapped to this variable at the creation of the MainFrame. If this variable is changed by MainFrame::configure, menu description will not be available. <BR>You change the text of the label by modifying the value of the variable. </DD> </DL> <DL><DT><A NAME="-width"><B>-width</B></A></DT> <DD> Specifies the desired width for the user frame in any of the forms acceptable to Tk_GetPixels. If this option is less than or equal to zero (the default) then the window will not request any size at all. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="addindicator"><I>pathName</I> <B>addindicator</B></A> ?<I>arg...</I>? </DT><DD> Add an indicator box at the right of the status bar. Each indicator are added from left to right. An indicator is a Tk label widget configured with option-value pair given by ?<I>arg...</I>?. <B>-relief</B> and <B>-borderwidth</B> options are respetively defaulted to <I>sunken</I> and 1. Returns the pathname of the created label. </DD></DL> <DL><DT><A NAME="addtoolbar"><I>pathName</I> <B>addtoolbar</B></A> </DT><DD> Add a toolbar to the MainFrame. Returns the pathname of the new window where to place toolbar items. </DD></DL> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A> </DT><DD> Returns the pathname of the user window. </DD></DL> <DL><DT><A NAME="getindicator"><I>pathName</I> <B>getindicator</B></A> <I>index</I> </DT><DD> Returns the pathname of the <I>index</I>th added indicator. </DD></DL> <DL><DT><A NAME="getmenu"><I>pathName</I> <B>getmenu</B></A> <I>menuid</I> </DT><DD> Returns the pathname of the menu whose id is <I>menuid</I>. </DD></DL> <DL><DT><A NAME="gettoolbar"><I>pathName</I> <B>gettoolbar</B></A> <I>index</I> </DT><DD> Returns the pathname of the <I>index</I>th added toolbar. </DD></DL> <DL><DT><A NAME="setmenustate"><I>pathName</I> <B>setmenustate</B></A> <I>tag</I> <I>state</I> </DT><DD> Set the <B>-state</B> option value of all the menu entries that have the tag <I>tag</I> to <I>state</I>. </DD></DL> <DL><DT><A NAME="showstatusbar"><I>pathName</I> <B>showstatusbar</B></A> <I>name</I> </DT><DD> <I>name</I> is one of <B>none</B>, <B>status</B> or <B>progression</B>. Use <B>none</B> to hide the status bar, <B>status</B> to display the label only, or <B>progression</B> to display the label and the <A HREF="ProgressBar.html">ProgressBar</A>. </DD></DL> <DL><DT><A NAME="showtoolbar"><I>pathName</I> <B>showtoolbar</B></A> <I>index</I> <I>bool</I> </DT><DD> Hide if <I>bool</I> is 0, or show if <I>bool</I> is 1 the <I>index</I>th added toolbar. To prevent your toplevel from resizing while hiding/showing toolbar, do [wm geometry $top [wm geometry $top]] when it is managed. </DD></DL> </BODY></HTML> |
Added BWman/MessageDlg.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 | <HTML> <HEAD><TITLE>MessageDlg</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>MessageDlg</B> - Message dialog box </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>MessageDlg</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-anchor">-anchor</A></TR> <TD> <A HREF="options.htm#M-font">-font</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-foreground">-foreground or -fg</A></TD> <TD> <A HREF="options.htm#M-padx">-padx</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-pady">-pady</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="Dialog.html">OPTIONS from <B>Dialog</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -background or -bg</TD> <TD> -cancel</TD> </TR> <TR> <TD> -default</TD> <TD> -parent</TD> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-aspect">-aspect</A></TR> <TD> <A HREF="#-buttons">-buttons</A></TR> </TR> <TR> <TD> <A HREF="#-icon">-icon</A></TR> <TD> <A HREF="#-justify">-justify</A></TR> </TR> <TR> <TD> <A HREF="#-message">-message</A></TR> <TD> <A HREF="#-title">-title</A></TR> </TR> <TR> <TD> <A HREF="#-type">-type</A></TR> <TD> <A HREF="#-width">-width</A></TR> </TR> </TABLE></DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> MessageDlg provides a simple way to display a message dialog. MessageDlg::<B>create</B> creates the message dialog, displays it and return the index of the pressed button, or -1 if it is destroyed. When returning, the dialog no longer exists. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-aspect"><B>-aspect</B></A></DT> <DD> Specifies a non-negative integer value indicating desired aspect ratio for the text. The aspect ratio is specified as 100*width/height. 100 means the text should be as wide as it is tall, 200 means the text should be twice as wide as it is tall, 50 means the text should be twice as tall as it is wide, and so on. Used to choose line length for text if <B>width</B> option isn't specified. Defaults to 150. </DD> </DL> <DL><DT><A NAME="-buttons"><B>-buttons</B></A></DT> <DD> Specifies a list of buttons to display when <B>type</B> option is <I>user</I>. If a button has a symbolic name, its associated text will be displayed. </DD> </DL> <DL><DT><A NAME="-icon"><B>-icon</B></A></DT> <DD> Specifies an icon to display. Must be one of the following: <B>error</B>, <B>info</B>, <B>question</B> or <B>warning</B>. </DD> </DL> <DL><DT><A NAME="-justify"><B>-justify</B></A></DT> <DD> Specifies how to justify lines of text. Must be one of <B>left</B>, <B>center</B>, or <B>right</B>. Defaults to <B>left</B>. This option works together with the <B>anchor</B>, <B>aspect</B>, <B>padx</B>, <B>pady</B>, and <B>width</B> options to provide a variety of arrangements of the text within the window. The <B>aspect</B> and <B>width</B> options determine the amount of screen space needed to display the text. The <B>anchor</B>, <B>padx</B>, and <B>pady</B> options determine where this rectangular area is displayed within the widget's window, and the <B>justify</B> option determines how each line is displayed within that rectangular region. For example, suppose <B>anchor</B> is <B>e</B> and <B>justify</B> is <B>left</B>, and that the message window is much larger than needed for the text. The the text will displayed so that the left edges of all the lines line up and the right edge of the longest line is <B>padx</B> from the right side of the window; the entire text block will be centered in the vertical span of the window. </DD> </DL> <DL><DT><A NAME="-message"><B>-message</B></A></DT> <DD> Specifies the message to display in this message box. </DD> </DL> <DL><DT><A NAME="-title"><B>-title</B></A></DT> <DD> Specifies a string to display as the title of the message box. If the value is empty (the default), a default title will be set corresponding to the <B>icon</B> option. The default associated title is in english, and can be modified to set it in another language by specifying the resource: <PRE> *MessageDlg.<I>name</I>Title: <I>value</I></PRE> or the equivalent tcl command: <PRE> option add *MessageDlg.<I>name</I>Title <I>value</I></PRE> where <I>name</I> is the name of an icon as defined in the <B>icon</B> option. <BR>For example, for french language, you can specify for a warning dialog: <PRE> option add *MessageDlg.warningTitle "Attention"</PRE> </DD> </DL> <DL><DT><A NAME="-type"><B>-type</B></A></DT> <DD> Specifies a set of buttons to be displayed. The following values are possible: <DD> <P> <DL COMPACT> <DT> <B>abortretryignore</B> <DD> Displays three buttons whose symbolic names are <B>abort</B>, <B>retry</B> and <B>ignore</B>.<P> <DT> <B>ok</B> <DD> Displays one button whose symbolic name is <B>ok</B>.<P> <DT> <B>okcancel</B> <DD> Displays two buttons whose symbolic names are <B>ok</B> and <B>cancel</B>.<P> <DT> <B>retrycancel</B> <DD> Displays two buttons whose symbolic names are <B>retry</B> and <B>cancel</B>.<P> <DT> <B>yesno</B> <DD> Displays two buttons whose symbolic names are <B>yes</B> and <B>no</B>.<P> <DT> <B>yesnocancel</B> <DD> Displays three buttons whose symbolic names are <B>yes</B>, <B>no</B> and <B>cancel</B>. <P> <DT> <B>user</B> <DD> Displays buttons of <B>-buttons</B> option.<P> <DT> </DL COMPACT> </DD> </DL> <DL><DT><A NAME="-width"><B>-width</B></A></DT> <DD> Specifies the length of lines in the window. If this option has a value greater than zero then the <B>aspect</B> option is ignored and the <B>width</B> option determines the line length. If this option has a value less than or equal to zero, then the <B>aspect</B> option determines the line length. </DD> </DL> </BODY></HTML> |
Added BWman/NoteBook.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 | <HTML> <HEAD><TITLE>NoteBook</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>NoteBook</B> - Notebook manager widget </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>NoteBook</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-font">-font</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="ArrowButton.html">OPTIONS from <B>ArrowButton</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -activebackground</TD> <TD> -activeforeground</TD> </TR> <TR> <TD> -background or -bg</TD> <TD> -borderwidth or -bd</TD> </TR> <TR> <TD> -disabledforeground</TD> <TD> -foreground or -fg</TD> </TR> <TR> <TD> -repeatdelay</TD> <TD> -repeatinterval</TD> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-height">-height</A></TR> <TD> <A HREF="#-homogeneous">-homogeneous</A></TR> </TR> <TR> <TD> <A HREF="#-side">-side</A></TR> <TD> <A HREF="#-width">-width</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#bindtabs"><B>bindtabs</B></A> <I>event</I> <I>script</I> </DD> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#compute_size"><B>compute_size</B></A> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#delete"><B>delete</B></A> <I>page</I> ?<I>destroyframe</I>? </DD> <DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A> <I>page</I> </DD> <DD><I>pathName</I> <A HREF="#index"><B>index</B></A> <I>page</I> </DD> <DD><I>pathName</I> <A HREF="#insert"><B>insert</B></A> <I>index</I> <I>page</I> ?<I>option value...</I>? </DD> <DD><I>pathName</I> <A HREF="#itemcget"><B>itemcget</B></A> <I>page</I> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#itemconfigure"><B>itemconfigure</B></A> <I>page</I> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#move"><B>move</B></A> <I>page</I> <I>index</I> </DD> <DD><I>pathName</I> <A HREF="#page"><B>page</B></A> <I>first</I> ?<I>last</I>? </DD> <DD><I>pathName</I> <A HREF="#pages"><B>pages</B></A> ?<I>first</I>? ?<I>last</I>? </DD> <DD><I>pathName</I> <A HREF="#raise"><B>raise</B></A> ?<I>page</I>? </DD> <DD><I>pathName</I> <A HREF="#see"><B>see</B></A> <I>page</I> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> NoteBook widget manage a set of pages and displays one of them. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-height"><B>-height</B></A></DT> <DD> Specifies the desired height for the pages. If this option is equal to zero (the default) then the window will not request any size at all. In this case, user may want to call NoteBook::<B>compute_size</B> to make NoteBook larger enough to contains the largest page. </DD> </DL> <DL><DT><A NAME="-homogeneous"><B>-homogeneous</B></A></DT> <DD> Specifies wether or not the label of the pages must have the same width. </DD> </DL> <DL><DT><A NAME="-side"><B>-side (read-only)</B></A></DT> <DD> Specifies the side where to place the label of the pages. Must be one of <B>top</B> or <B>bottom</B>. Only <B>top</B> is implemented for the moment. </DD> </DL> <DL><DT><A NAME="-width"><B>-width</B></A></DT> <DD> Specifies the desired width for the pages. If this option is equal to zero (the default) then the window will not request any size at all. In this case, user may want to call NoteBook::<B>compute_size</B> to make NoteBook larger enough to contains the largest page. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="bindtabs"><I>pathName</I> <B>bindtabs</B></A> <I>event</I> <I>script</I> </DT><DD> This command associates a command to execute whenever the event sequence given by <I>event</I> occurs on a tabs. The page idenfier on which the event occurs is appended to the command. </DD></DL> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="compute_size"><I>pathName</I> <B>compute_size</B></A> </DT><DD> This command can be called to make the NoteBook large enough to contain the largest page. Note that if all pages use -createcmd, they will have no requested size. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="delete"><I>pathName</I> <B>delete</B></A> <I>page</I> ?<I>destroyframe</I>? </DT><DD> Deletes the page <I>page</I>. If <I>destroyframe</I> is 1 (the default), the frame associated to <I>page</I> is destroyed. If <I>destroyframe</I> is 0, the frame is not destroyed and is reused by further call to <B>insert</B> with the same <I>page</I>. </DD></DL> <DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A> <I>page</I> </DT><DD> Returns the pathname of the page <I>page</I>. </DD></DL> <DL><DT><A NAME="index"><I>pathName</I> <B>index</B></A> <I>page</I> </DT><DD> Return the numerical index corresponding to the item. </DD></DL> <DL><DT><A NAME="insert"><I>pathName</I> <B>insert</B></A> <I>index</I> <I>page</I> ?<I>option value...</I>? </DT><DD> Insert a new page idendified by <I>page</I> at position <I>index</I> in the pages list. <I>index</I> must be numeric or <B>end</B>. The pathname of the new page is returned. <P> <DL><DT><A NAME="Page-createcmd"><B>-createcmd</B></A></DT> <DD> Specifies a command to be called the first time the page is raised. </DD> </DL> <DL><DT><A NAME="Page-image"><B>-image</B></A></DT> <DD> Specifies an image to display for the page at the left of the label </DD> </DL> <DL><DT><A NAME="Page-leavecmd"><B>-leavecmd</B></A></DT> <DD> Specifies a command to be called when a page is about to be leaved. The command must return 0 if the page can not be leaved, or 1 if it can. </DD> </DL> <DL><DT><A NAME="Page-raisecmd"><B>-raisecmd</B></A></DT> <DD> Specifies a command to be called each time the page is raised. </DD> </DL> <DL><DT><A NAME="Page-state"><B>-state</B></A></DT> <DD> Specifies the state of the page. Must be <B>normal</B> or <B>disabled</B>. </DD> </DL> <DL><DT><A NAME="Page-text"><B>-text</B></A></DT> <DD> Specifies a label to display for the page. </DD> </DL> </DD></DL> <DL><DT><A NAME="itemcget"><I>pathName</I> <B>itemcget</B></A> <I>page</I> <I>option</I> </DT><DD> Returns the current value of a configuration option for the item. <I>Option</I> may have any of the values accepted by the item creation command. </DD></DL> <DL><DT><A NAME="itemconfigure"><I>pathName</I> <B>itemconfigure</B></A> <I>page</I> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> This command is similar to the <B>configure</B> command, except that it applies to the options for an individual item, whereas <B>configure</B> applies to the options for the widget as a whole. <B>Options</B> may have any of the values accepted by the item creation widget command. If options are specified, options are modified as indicated in the command and the command returns an empty string. If no options are specified, returns a list describing the current options for the item. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="move"><I>pathName</I> <B>move</B></A> <I>page</I> <I>index</I> </DT><DD> Moves <I>page</I> tab to index <I>index</I>. </DD></DL> <DL><DT><A NAME="page"><I>pathName</I> <B>page</B></A> <I>first</I> ?<I>last</I>? </DT><DD> <B>Its use is deprecated. Use <I>pages</I> instead.</B><BR> If <I>last</I> is omitted, returns the page at index <I>first</I>, or an empty string if <I>first</I> refers to a non-existent element. If <I>last</I> is specified, the command returns a list whose elements are all of the pages between <I>first</I> and <I>last</I>, inclusive. Both <I>first</I> and <I>last</I> may have any of the standard forms for indices. </DD></DL> <DL><DT><A NAME="pages"><I>pathName</I> <B>pages</B></A> ?<I>first</I>? ?<I>last</I>? </DT><DD> If <I>first</I> and <I>last</I> are omitted, returns the list of all pages. If <I>first</I> is specified and <I>last</I> omitted, returns the page at index <I>first</I>, or an empty string if <I>first</I> refers to a non-existent element. If <I>first</I> and <I>last</I> are specified, the command returns a list whose elements are all of the pages between <I>first</I> and <I>last</I>, inclusive. Both <I>first</I> and <I>last</I> may have any of the standard forms for indices. </DD></DL> <DL><DT><A NAME="raise"><I>pathName</I> <B>raise</B></A> ?<I>page</I>? </DT><DD> Raise the page <I>page</I>, or return the raised page if <I>page</I> is omitted. </DD></DL> <DL><DT><A NAME="see"><I>pathName</I> <B>see</B></A> <I>page</I> </DT><DD> Scrolls labels to make the label of the page <I>page</I> visible. </DD></DL> </BODY></HTML> |
Added BWman/PagesManager.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | <HTML> <HEAD><TITLE>PagesManager</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>PagesManager</B> - Pages manager widget </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>PagesManager</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-background">-background</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-height">-height</A></TR> <TD> <A HREF="#-width">-width</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#add"><B>add</B></A> <I>page</I> </DD> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#compute_size"><B>compute_size</B></A> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#delete"><B>delete</B></A> <I>page</I> </DD> <DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A> <I>page</I> </DD> <DD><I>pathName</I> <A HREF="#page"><B>page</B></A> <I>first</I> ?<I>last</I>? </DD> <DD><I>pathName</I> <A HREF="#pages"><B>pages</B></A> ?<I>first</I>? ?<I>last</I>? </DD> <DD><I>pathName</I> <A HREF="#raise"><B>raise</B></A> ?<I>page</I>? </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> PagesManager widget manage a set of pages and displays one of them. PagesManager does not provide any user access method, as NoteBook does, so it can be done through a listbox, a menu, radiobutton, or whatever. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-height"><B>-height</B></A></DT> <DD> Specifies the desired height for the pages. If this option is equal to zero (the default) then the window will not request any size at all. In this case, user may want to call PagesManager::<B>compute_size</B> to make PagesManager larger enough to contains the largest page. </DD> </DL> <DL><DT><A NAME="-width"><B>-width</B></A></DT> <DD> Specifies the desired width for the pages. If this option is equal to zero (the default) then the window will not request any size at all. In this case, user may want to call PagesManager::<B>compute_size</B> to make PagesManager larger enough to contains the largest page. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="add"><I>pathName</I> <B>add</B></A> <I>page</I> </DT><DD> Add a new page idendified by <I>page</I>. The pathname of the new page is returned. </DD></DL> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="compute_size"><I>pathName</I> <B>compute_size</B></A> </DT><DD> This command can be called to make the PagesManager large enough to contain the largest page. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="delete"><I>pathName</I> <B>delete</B></A> <I>page</I> </DT><DD> Deletes the page <I>page</I>. </DD></DL> <DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A> <I>page</I> </DT><DD> Returns the pathname of the page <I>page</I>. </DD></DL> <DL><DT><A NAME="page"><I>pathName</I> <B>page</B></A> <I>first</I> ?<I>last</I>? </DT><DD> <B>Its use is deprecated. Use <I>pages</I> instead.</B><BR> If <I>last</I> is omitted, returns the page at index <I>first</I>, or an empty string if <I>first</I> refers to a non-existent element. If <I>last</I> is specified, the command returns a list whose elements are all of the pages between <I>first</I> and <I>last</I>, inclusive. Both <I>first</I> and <I>last</I> may have any of the standard forms for indices. </DD></DL> <DL><DT><A NAME="pages"><I>pathName</I> <B>pages</B></A> ?<I>first</I>? ?<I>last</I>? </DT><DD> If <I>first</I> and <I>last</I> are omitted, returns the list of all pages. If <I>first</I> is specified and <I>last</I> omitted, returns the page at index <I>first</I>, or an empty string if <I>first</I> refers to a non-existent element. If <I>first</I> and <I>last</I> are specified, the command returns a list whose elements are all of the pages between <I>first</I> and <I>last</I>, inclusive. Both <I>first</I> and <I>last</I> may have any of the standard forms for indices. </DD></DL> <DL><DT><A NAME="raise"><I>pathName</I> <B>raise</B></A> ?<I>page</I>? </DT><DD> Raise the page <I>page</I>, or return the raised page if <I>page</I> is omitted. </DD></DL> </BODY></HTML> |
Added BWman/PanedWindow.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | <HTML> <HEAD><TITLE>PanedWindow</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>PanedWindow</B> - Tiled layout manager widget </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>PanedWindow</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-background">-background or -bg</A></TD> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-pad">-pad</A></TR> <TD> <A HREF="#-side">-side</A></TR> </TR> <TR> <TD> <A HREF="#-width">-width</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#add"><B>add</B></A> ?<I>option value...</I>? </DD> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A> <I>index</I> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> PanedWindow is a widget that lays out children in a vertically or horizontally tiled format. The user can adjust the size of the panes, with a pane control sash created between children. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-pad"><B>-pad (read-only)</B></A></DT> <DD> Specifies additional space between the button of the sash and children. </DD> </DL> <DL><DT><A NAME="-side"><B>-side (read-only)</B></A></DT> <DD> Specifies the side of the sash, which implies the layout: <B>top</B> or <B>bottom</B> (horizontal layout), <B>left</B> or <B>right</B> (vertical layout). </DD> </DL> <DL><DT><A NAME="-width"><B>-width (read-only)</B></A></DT> <DD> Specifies the width of the button of the sash. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="add"><I>pathName</I> <B>add</B></A> ?<I>option value...</I>? </DT><DD> This command add a new pane. The new pane is placed below the previous pane for vertical layout or at right for horizontal layout. This command returns a frame where user can place its widget. Valid options are: <P> <DL><DT><A NAME="Pane-minsize"><B>-minsize</B></A></DT> <DD> Specifies the minimum size requested for the pane. See the <B>grid</B> command for more information. </DD> </DL> <DL><DT><A NAME="Pane-weight"><B>-weight</B></A></DT> <DD> Specifies the relative weight for apportioning any extra spaces among panes. See the <B>grid</B> command for more information. </DD> </DL> </DD></DL> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A> <I>index</I> </DT><DD> Returns the pathname of the <I>index</I>th added pane. </DD></DL> </BODY></HTML> |
Added BWman/PasswdDlg.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 | <HTML> <HEAD><TITLE>PasswdDlg</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>PasswdDlg</B> - Login/Password dialog box </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>PasswdDlg</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I><A HREF="Dialog.html">OPTIONS from <B>Dialog</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -anchor</TD> <TD> -background or -bg</TD> </TR> <TR> <TD> -homogeneous</TD> <TD> -modal</TD> </TR> <TR> <TD> -padx</TD> <TD> -pady</TD> </TR> <TR> <TD> -parent</TD> <TD> -spacing</TD> </TR> <TR> <TD> -title</TD> </TABLE></DD> </DL> <DL> <DT><I><A HREF="LabelEntry.html">OPTIONS from <B>LabelEntry</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -background or -bg</TD> <TD> -borderwidth or -bd</TD> </TR> <TR> <TD> -disabledforeground</TD> <TD> -entrybg</TD> </TR> <TR> <TD> -entryfg</TD> <TD> -exportselection</TD> </TR> <TR> <TD> -font</TD> <TD> -foreground or -fg</TD> </TR> <TR> <TD> -helptype</TD> <TD> -highlightbackground</TD> </TR> <TR> <TD> -highlightcolor</TD> <TD> -highlightthickness</TD> </TR> <TR> <TD> -insertbackground</TD> <TD> -insertborderwidth</TD> </TR> <TR> <TD> -insertofftime</TD> <TD> -insertontime</TD> </TR> <TR> <TD> -insertwidth</TD> <TD> -labelanchor</TD> </TR> <TR> <TD> -labelfont</TD> <TD> -labelheight</TD> </TR> <TR> <TD> -labeljustify</TD> <TD> -labelwidth</TD> </TR> <TR> <TD> -loginhelptext (see <B>-helptext</B>)</TD> <TD> -loginhelpvar (see <B>-helpvar</B>)</TD> </TR> <TR> <TD> -loginlabel (see <B>-label</B>)</TD> <TD> -logintext (see <B>-text</B>)</TD> </TR> <TR> <TD> -logintextvariable (see <B>-textvariable</B>)</TD> <TD> -loginunderline (see <B>-underline</B>)</TD> </TR> <TR> <TD> -passwdeditable (see <B>-editable</B>)</TD> <TD> -passwdhelptext (see <B>-helptext</B>)</TD> </TR> <TR> <TD> -passwdhelpvar (see <B>-helpvar</B>)</TD> <TD> -passwdlabel (see <B>-label</B>)</TD> </TR> <TR> <TD> -passwdstate (see <B>-state</B>)</TD> <TD> -passwdtext (see <B>-text</B>)</TD> </TR> <TR> <TD> -passwdtextvariable (see <B>-textvariable</B>)</TD> <TD> -passwdunderline (see <B>-underline</B>)</TD> </TR> <TR> <TD> -relief</TD> <TD> -selectbackground</TD> </TR> <TR> <TD> -selectborderwidth</TD> <TD> -selectforeground</TD> </TR> <TR> <TD> -wraplength</TD> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-command">-command</A></TR> <TD> <A HREF="#-type">-type</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> PasswdDlg provides a simple way to display a login/password dialog. PasswdDlg::<B>create</B> creates the dialog, displays it, and return the value of login and password in a list, or an empty list if it is destroyed or user press cancel. When returning, the dialog no longer exists. <BR>Additionnal resources can be set to modify other text: <PRE> *loginName Label for login LabelEntry *passwordName Label for password LabelEntry </PRE> </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-command"><B>-command</B></A></DT> <DD> Specifies a command to call when user press ok button. </DD> </DL> <DL><DT><A NAME="-type"><B>-type</B></A></DT> <DD> Specifies a set of buttons to be displayed. The following values are possible: <DD> <P> <DL COMPACT> <DT> <B>ok</B> <DD> Displays one button whose symbolic name is <B>ok</B>.<P> <DT> <B>okcancel</B> <DD> Displays two buttons whose symbolic names are <B>ok</B> and <B>cancel</B>.<P> </DL COMPACT> </DD> </DL> </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <HR> <ADRESS>Stephane Lavirotte <A HREF="mailto:[email protected]">([email protected])</A></ADRESS> </BODY></HTML> |
Added BWman/ProgressBar.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | <HTML> <HEAD><TITLE>ProgressBar</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>ProgressBar</B> - Progress indicator widget </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>ProgressBar</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-background">-background or -bg</A></TD> <TD> <A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-foreground">-foreground or -fg</A></TD> <TD> <A HREF="options.htm#M-orient">-orient</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-relief">-relief</A></TR> <TD> <A HREF="options.htm#M-troughcolor">-troughcolor</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-height">-height</A></TR> <TD> <A HREF="#-maximum">-maximum</A></TR> </TR> <TR> <TD> <A HREF="#-type">-type</A></TR> <TD> <A HREF="#-variable">-variable</A></TR> </TR> <TR> <TD> <A HREF="#-width">-width</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> ProgressBar widget indicates the user the progress of a lengthly operation. It is used by <A HREF="MainFrame.html">MainFrame</A> and <A HREF="ProgressDlg.html">ProgressDlg</A>. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-height"><B>-height</B></A></DT> <DD> Specifies the desired height for the progress indicator. </DD> </DL> <DL><DT><A NAME="-maximum"><B>-maximum</B></A></DT> <DD> Specifies the maximum value of the variable. </DD> </DL> <DL><DT><A NAME="-type"><B>-type</B></A></DT> <DD> Specifies the type of the ProgressBar. Must be one of <B>normal</B>, <B>incremental</B> or <B>infinite</B>. <BR>If <B>type</B> is <I>normal</I>, the progress indicator is drawn proportional to the variable value and <B>maximum</B> option each time the variable is set. <BR>If <B>type</B> is <I>incremental</I>, the value of the progress indicator is maintained internally, and incremented each time the variable is set by its value. The progress indicator is drawn proportional to the internal value and <B>maximum</B> option. <BR>If <B>type</B> is <I>infinite</I>, the value of the progress indicator is maintained internally, and incremented each time the variable is set by its value. The progress indicator grow from left to right if internal value (modulo <B>maximum</B>) is less than <B>maximum</B>/2, and from right to left if internal value is greater than <B>maximum</B>/2. <BR>See <B>-variable</B> option for special case of its value, </DD> </DL> <DL><DT><A NAME="-variable"><B>-variable</B></A></DT> <DD> Specifies the variable attached to the progress indicator. Progress indicator is updated when the value of the variable changes. If the value of the variable is negative, the progress indicator is not displayed (it is drawn flat with <B>background</B> color - usefull for ProgressDlg to make it invisible). If its value 0, progress indicator is reinitialized. </DD> </DL> <DL><DT><A NAME="-width"><B>-width</B></A></DT> <DD> Specifies the desired width for the progress indicator. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> </BODY></HTML> |
Added BWman/ProgressDlg.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | <HTML> <HEAD><TITLE>ProgressDlg</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>ProgressDlg</B> - Progress indicator dialog box </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>ProgressDlg</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-font">-font</A></TR> <TD> <A HREF="options.htm#M-textvariable">-textvariable</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="Dialog.html">OPTIONS from <B>Dialog</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -background or -bg</TD> <TD> -parent</TD> </TR> <TR> <TD> -separator</TD> <TD> -title</TD> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="ProgressBar.html">OPTIONS from <B>ProgressBar</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -background or -bg</TD> <TD> -borderwidth or -bd</TD> </TR> <TR> <TD> -foreground or -fg</TD> <TD> -maximum</TD> </TR> <TR> <TD> -relief</TD> <TD> -troughcolor</TD> </TR> <TR> <TD> -type</TD> <TD> -variable</TD> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-command">-command</A></TR> <TD> <A HREF="#-height">-height</A></TR> </TR> <TR> <TD> <A HREF="#-stop">-stop</A></TR> <TD> <A HREF="#-width">-width</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> ProgressDlg provides a simple way to display a progress indicator dialog. ProgressDlg::<B>create</B> creates the dialog, displays it, set a local grab to it and immediatly return. The dialog is updated by modifying the value of the variable of options <B>-textvariable</B> and <B>-variable</B>. You have to destroy the dialog after use. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-command"><B>-command</B></A></DT> <DD> Specifies a command to call when user press stop button. </DD> </DL> <DL><DT><A NAME="-height"><B>-height</B></A></DT> <DD> Specifies a desired height for the label in lines of text. </DD> </DL> <DL><DT><A NAME="-stop"><B>-stop</B></A></DT> <DD> Specifies the text of the button typically used to stop process. If empty, no button will be drawn. This can be a symbolic name. </DD> </DL> <DL><DT><A NAME="-width"><B>-width</B></A></DT> <DD> Specifies a desired width for the label in characters. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> </BODY></HTML> |
Added BWman/ScrollView.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | <HTML> <HEAD><TITLE>ScrollView</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>ScrollView</B> - Display the visible area of a scrolled window </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>ScrollView</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-background">-background or -bg</A></TD> <TD> <A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-cursor">-cursor</A></TR> <TD> <A HREF="options.htm#M-relief">-relief</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-fill">-fill</A></TR> <TD> <A HREF="#-foreground">-foreground or -fg</A></TD> </TR> <TR> <TD> <A HREF="#-height">-height</A></TR> <TD> <A HREF="#-width">-width</A></TR> </TR> <TR> <TD> <A HREF="#-window">-window</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> ScrollView displays the visible area of a scrolled window within its scroll region. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-fill"><B>-fill</B></A></DT> <DD> Specifies the fill color of the rectangle. </DD> </DL> <DL><DT><A NAME="-foreground"><B>-foreground</B></A></DT> <DD> Specifies the color of the border of the rectangle. </DD> </DL> <DL><DT><A NAME="-height"><B>-height</B></A></DT> <DD> Specifies the desired height for the ScrollView. </DD> </DL> <DL><DT><A NAME="-width"><B>-width</B></A></DT> <DD> Specifies the desired width for the ScrollView. </DD> </DL> <DL><DT><A NAME="-window"><B>-window</B></A></DT> <DD> Specifies the window to view. This widget must have <B>-xscrollcommand</B> and <B>-yscrollcommand</B> options, and respond to <B>xview</B> and <B>yview</B> command. In order to make ScrollView working with other scrollbar, <B>-xscrollcommand</B> and <B>-yscrollcommand</B> options of the widget must be set before the widget is passed to the <B>-window</B> option of the ScrollView (for example, if the widget is handled by a ScrolledWindow, call <B>setwidget</B> before setting <B>-window</B> option). </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <HR><BR><B>BINDINGS</B><BR><BR> <DL><DT>If mouse button 1 is pressed and dragged over the ScrollView, the top left corner of the visible area of the scrolled window is moved proportionally to the mouse displacement. </DT></DL> <DL><DT>If mouse button 3 is pressed over the ScrollView, the top left corner of the visible area is proportionally set to this point. </DT></DL> </BODY></HTML> |
Added BWman/ScrollableFrame.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 | <HTML> <HEAD><TITLE>ScrollableFrame</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>ScrollableFrame</B> - Scrollable frame containing widget </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>ScrollableFrame</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-background">-background or -bg</A></TD> <TD> <A HREF="options.htm#M-xscrollcommand">-xscrollcommand</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-yscrollcommand">-yscrollcommand</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-areaheight">-areaheight</A></TR> <TD> <A HREF="#-areawidth">-areawidth</A></TR> </TR> <TR> <TD> <A HREF="#-constrainedheight">-constrainedheight</A></TR> <TD> <A HREF="#-constrainedwidth">-constrainedwidth</A></TR> </TR> <TR> <TD> <A HREF="#-height">-height</A></TR> <TD> <A HREF="#-width">-width</A></TR> </TR> <TR> <TD> <A HREF="#-xscrollincrement">-xscrollincrement</A></TR> <TD> <A HREF="#-yscrollincrement">-yscrollincrement</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A> </DD> <DD><I>pathName</I> <A HREF="#see"><B>see</B></A> <I>widget</I> ?<I>vert</I>? ?<I>horz</I>? </DD> <DD><I>pathName</I> <A HREF="#xview"><B>xview</B></A> ?<I>arg...</I>? </DD> <DD><I>pathName</I> <A HREF="#yview"><B>yview</B></A> ?<I>arg...</I>? </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> ScrollableFrame widget containing widget. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-areaheight"><B>-areaheight</B></A></DT> <DD> Specifies the height for the scrollable area. If zero, then the height of the scrollable area is made just large enough to hold all its children. </DD> </DL> <DL><DT><A NAME="-areawidth"><B>-areawidth</B></A></DT> <DD> Specifies the width for the scrollable area. If zero, then the width of the scrollable area window is made just large enough to hold all its children. </DD> </DL> <DL><DT><A NAME="-constrainedheight"><B>-constrainedheight</B></A></DT> <DD> Specifies whether or not the scrollable area should have the same height of the scrolled window. If true, vertical scrollbar is not needed. </DD> </DL> <DL><DT><A NAME="-constrainedwidth"><B>-constrainedwidth</B></A></DT> <DD> Specifies whether or not the scrollable area should have the same width of the scrolled window. If true, horizontal scrollbar is not needed. </DD> </DL> <DL><DT><A NAME="-height"><B>-height</B></A></DT> <DD> Specifies the desired height for the window in pixels. </DD> </DL> <DL><DT><A NAME="-width"><B>-width</B></A></DT> <DD> Specifies the desired width for the window in pixels. </DD> </DL> <DL><DT><A NAME="-xscrollincrement"><B>-xscrollincrement</B></A></DT> <DD> See <B>xscrollincrement</B> option of <B>canvas</B> widget. </DD> </DL> <DL><DT><A NAME="-yscrollincrement"><B>-yscrollincrement</B></A></DT> <DD> See <B>yscrollincrement</B> option of <B>canvas</B> widget. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A> </DT><DD> Return the pathname of the scrolled frame where widget should be created. </DD></DL> <DL><DT><A NAME="see"><I>pathName</I> <B>see</B></A> <I>widget</I> ?<I>vert</I>? ?<I>horz</I>? </DT><DD> Arrange scrollable area to make <I>widget</I> visible in the window. <I>vert</I> and <I>horz</I> specify which part of <I>widget</I> must be preferably visible, in case where <I>widget</I> is too tall or too large to be entirely visible. <I>vert</I> must be <B>top</B> (the default) or <B>bottom</B>, and <I>horz</I> must be <B>left</B> (the default) or <B>right</B>. If <I>vert</I> or <I>horz</I> is not a valid value, area is not scrolled in this direction. </DD></DL> <DL><DT><A NAME="xview"><I>pathName</I> <B>xview</B></A> ?<I>arg...</I>? </DT><DD> Standard command to enable horizontal scrolling of <I>pathName</I>. </DD></DL> <DL><DT><A NAME="yview"><I>pathName</I> <B>yview</B></A> ?<I>arg...</I>? </DT><DD> Standard command to enable vertical scrolling of <I>pathName</I>. </DD></DL> </BODY></HTML> |
Added BWman/ScrolledWindow.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | <HTML> <HEAD><TITLE>ScrolledWindow</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>ScrolledWindow</B> - Generic scrolled widget </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>ScrolledWindow</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-background">-background or -bg</A></TD> <TD> <A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-relief">-relief</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-auto">-auto</A></TR> <TD> <A HREF="#-scrollbar">-scrollbar</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A> </DD> <DD><I>pathName</I> <A HREF="#setwidget"><B>setwidget</B></A> <I>widget</I> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> ScrolledWindow enables user to create easily a widget with its scrollbar. Scrollbars are created by ScrolledWindow and scroll commands are automatically associated to a scrollable widget with <B>ScrolledWindow::setwidget</B>. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-auto"><B>-auto</B></A></DT> <DD> Specifies the desired auto managed scrollbar: <LI><B>none</B> means scrollbar are always drawn <LI><B>horizontal</B> means horizontal scrollbar is drawn as needed <LI><B>vertical</B> means vertical scrollbar is drawn as needed <LI><B>both</B> means horizontal and vertical scrollbars are drawn as needed <LI><B>horizontal</B> means horizontal scrollbar is drawn as needed </DD> </DL> <DL><DT><A NAME="-scrollbar"><B>-scrollbar (read-only)</B></A></DT> <DD> Specifies the desired scrollbar: <B>none</B>, <B>horizontal</B>, <B>vertical</B> or <B>both</B>. This option is not modifiable with <B>ScrolledWindow::configure</B>. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A> </DT><DD> Return the pathname of the frame where the scrolled widget should be created. This command is no longer needed. You can directly create the scrolled widget as the child of <I>pathName</I>. </DD></DL> <DL><DT><A NAME="setwidget"><I>pathName</I> <B>setwidget</B></A> <I>widget</I> </DT><DD> Associate <I>widget</I> to the the scrollbars. <I>widget</I> is packed in with option <B>expand</B> to <I>yes</I> and <B>fill</B> to <I>both</I>. <I>widget</I> must be a scrollable widget, i.e. have the options <B>xscrollcommand</B>/<B>yscrollcommand</B> and the command <B>xview</B>/<B>yview</B>, such as canvas or text. </DD></DL> </BODY></HTML> |
Added BWman/SelectColor.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | <HTML> <HEAD><TITLE>SelectColor</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>SelectColor</B> - Color selection widget </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>SelectColor</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-color">-color</A></TR> <TD> <A HREF="#-command">-command</A></TR> </TR> <TR> <TD> <A HREF="#-height">-height</A></TR> <TD> <A HREF="#-parent">-parent</A></TR> </TR> <TR> <TD> <A HREF="#-title">-title</A></TR> <TD> <A HREF="#-type">-type</A></TR> </TR> <TR> <TD> <A HREF="#-variable">-variable</A></TR> <TD> <A HREF="#-width">-width</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD>SelectColor::<A HREF="#setcolor"><B>setcolor</B></A> <I>index</I> <I>color</I> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> SelectColor provides a simple way to select color. It can be displayed as a dialog box or as a menubutton. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-color"><B>-color</B></A></DT> <DD> Specifies the color value of the widget. </DD> </DL> <DL><DT><A NAME="-command"><B>-command</B></A></DT> <DD> When <B>type</B> is <I>menubutton</I>, specifies a command to call when user select a color. </DD> </DL> <DL><DT><A NAME="-height"><B>-height</B></A></DT> <DD> When <B>type</B> is <I>menubutton</I>, specifies the desired height for the button. </DD> </DL> <DL><DT><A NAME="-parent"><B>-parent</B></A></DT> <DD> Parent of the Dialog. Dialog is centered in its parent. If empty, it is centered in root window. </DD> </DL> <DL><DT><A NAME="-title"><B>-title</B></A></DT> <DD> Title of the Dialog toplevel. </DD> </DL> <DL><DT><A NAME="-type"><B>-type (read-only)</B></A></DT> <DD> Specifies the type of the SelectColor widget. Must be <B>dialog</B> or <B>menubutton</B>. <BR>If <B>type</B> option is <I>dialog</I>, SelectColor::<B>create</B> directly creates the dialog, displays it and return an empty string if cancel button is pressed or if dialog is destroyed, and the selected color if ok button is pressed. In all cases, dialog is destroyed. <BR>If <B>type</B> option is <I>menubutton</I>, SelectColor::<B>create</B> returns the pathname of the widget created. It is composed of a button from which user can access a menu displaying predefined colors. </DD> </DL> <DL><DT><A NAME="-variable"><B>-variable</B></A></DT> <DD> Specifies a variable to link to the color value of the widget. </DD> </DL> <DL><DT><A NAME="-width"><B>-width</B></A></DT> <DD> When <B>type</B> is <I>menubutton</I>, specifies the desired width for the button. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="setcolor">SelectColor::<B>setcolor</B></A> <I>index</I> <I>color</I> </DT><DD> Set the value of user predefined color at index <I>index</I> to <I>color</I>. <I>index</I> must be between 1 and 5. </DD></DL> </BODY></HTML> |
Added BWman/SelectFont.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | <HTML> <HEAD><TITLE>SelectFont</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>SelectFont</B> - Font selection widget </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>SelectFont</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-background">-background or -bg</A></TD> <TD> <A HREF="options.htm#M-font">-font</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-command">-command</A></TR> <TD> <A HREF="#-parent">-parent</A></TR> </TR> <TR> <TD> <A HREF="#-sampletext">-sampletext</A></TR> <TD> <A HREF="#-title">-title</A></TR> </TR> <TR> <TD> <A HREF="#-type">-type</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD>SelectFont::<A HREF="#loadfont"><B>loadfont</B></A> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> SelectFont provides a simple way to choose font. It can be displayed as a dialog box or as a toolbar. <BR>Textual items in Dialog box uses <B>-name</B> options so they can be translated to any language. Symbolic name used are <B>ok</B>, <B>cancel</B>, <B>font</B>, <B>size</B>, <B>style</B>, <B>bold</B>, <B>italic</B>, <B>underline</B> and <B>overstrike</B>. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-command"><B>-command</B></A></DT> <DD> Specifies a command to call when user select a new font when SelectFont <B>type</B> option is <I>toolbar</I>. </DD> </DL> <DL><DT><A NAME="-parent"><B>-parent</B></A></DT> <DD> Parent of the Dialog. Dialog is centered in its parent. If empty, it is centered in root window. </DD> </DL> <DL><DT><A NAME="-sampletext"><B>-sampletext</B></A></DT> <DD> Specifies the text displayed in the preview area. </DD> </DL> <DL><DT><A NAME="-title"><B>-title</B></A></DT> <DD> Title of the Dialog toplevel. </DD> </DL> <DL><DT><A NAME="-type"><B>-type</B></A></DT> <DD> Specifies the type of the SelectFont widget. Must be <B>dialog</B> or <B>toolbar</B>. <BR>If <B>type</B> option is <I>dialog</I>, SelectFont::<B>create</B> directly creates the dialog, displays it and return an empty string if cancel button is pressed or if dialog is destroyed, and the selected font if ok button is pressed. In all cases, dialog is destroyed. <BR>If <B>type</B> option is <I>toolbar</I>, SelectFont::<B>create</B> returns the pathname of the widget created. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="loadfont">SelectFont::<B>loadfont</B></A> </DT><DD> Load the font available in the system. </DD></DL> </BODY></HTML> |
Added BWman/Separator.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | <HTML> <HEAD><TITLE>Separator</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>Separator</B> - 3D separator widget </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>Separator</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-background">-background or -bg</A></TD> <TD> <A HREF="options.htm#M-orient">-orient</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-relief">-relief</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> Separator is a widget that display an horizontal or vertical 3-D line. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-relief"><B>-relief</B></A></DT> <DD> Specifies the relief of the Separator. Must be <B>groove</B> (the default) or <B>ridge</B>. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> </BODY></HTML> |
Added BWman/SpinBox.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 | <HTML> <HEAD><TITLE>SpinBox</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>SpinBox</B> - SpinBox widget </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>SpinBox</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I><A HREF="ArrowButton.html">OPTIONS from <B>ArrowButton</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -background or -bg</TD> <TD> -disabledforeground</TD> </TR> <TR> <TD> -foreground or -fg</TD> <TD> -repeatdelay</TD> </TR> <TR> <TD> -repeatinterval</TD> <TD> -state</TD> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="Entry.html">OPTIONS from <B>Entry</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -command</TD> <TD> -disabledforeground</TD> </TR> <TR> <TD> -dragenabled</TD> <TD> -dragendcmd</TD> </TR> <TR> <TD> -dragevent</TD> <TD> -draginitcmd</TD> </TR> <TR> <TD> -dragtype</TD> <TD> -dropcmd</TD> </TR> <TR> <TD> -dropenabled</TD> <TD> -dropovercmd</TD> </TR> <TR> <TD> -droptypes</TD> <TD> -editable</TD> </TR> <TR> <TD> -entrybg (see <B>-background</B>)</TD> <TD> -entryfg (see <B>-foreground</B>)</TD> </TR> <TR> <TD> -exportselection</TD> <TD> -font</TD> </TR> <TR> <TD> -helptext</TD> <TD> -helptype</TD> </TR> <TR> <TD> -helpvar</TD> <TD> -highlightbackground</TD> </TR> <TR> <TD> -highlightcolor</TD> <TD> -highlightthickness</TD> </TR> <TR> <TD> -insertbackground</TD> <TD> -insertborderwidth</TD> </TR> <TR> <TD> -insertofftime</TD> <TD> -insertontime</TD> </TR> <TR> <TD> -insertwidth</TD> <TD> -justify</TD> </TR> <TR> <TD> -selectbackground</TD> <TD> -selectborderwidth</TD> </TR> <TR> <TD> -selectforeground</TD> <TD> -show</TD> </TR> <TR> <TD> -state</TD> <TD> -takefocus</TD> </TR> <TR> <TD> -text</TD> <TD> -textvariable</TD> </TR> <TR> <TD> -width</TD> <TD> -xscrollcommand</TD> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="LabelFrame.html">OPTIONS from <B>LabelFrame</B></A></I></DT> <DD><TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> <TR> <TD> -background or -bg</TD> <TD> -borderwidth or -bd</TD> </TR> <TR> <TD> -disabledforeground</TD> <TD> -foreground or -fg</TD> </TR> <TR> <TD> -helptext</TD> <TD> -helptype</TD> </TR> <TR> <TD> -helpvar</TD> <TD> -label (see <B>-text</B>)</TD> </TR> <TR> <TD> -labelanchor (see <B>-anchor</B>)</TD> <TD> -labelfont (see <B>-font</B>)</TD> </TR> <TR> <TD> -labelheight (see <B>-height</B>)</TD> <TD> -labeljustify (see <B>-justify</B>)</TD> </TR> <TR> <TD> -labelwidth (see <B>-width</B>)</TD> <TD> -name</TD> </TR> <TR> <TD> -padx</TD> <TD> -pady</TD> </TR> <TR> <TD> -relief</TD> <TD> -side</TD> </TR> <TR> <TD> -state</TD> <TD> -underline</TD> </TR> <TR> <TD> -wraplength</TD> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-modifycmd">-modifycmd</A></TR> <TD> <A HREF="#-range">-range</A></TR> </TR> <TR> <TD> <A HREF="#-values">-values</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#bind"><B>bind</B></A> ?<I>arg...</I>? </DD> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#getvalue"><B>getvalue</B></A> </DD> <DD><I>pathName</I> <A HREF="#setvalue"><B>setvalue</B></A> <I>index</I> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> SpinBox widget enables the user to select a value among a list given by the <B>values</B> option or a set of values defined by a mininum, a maximum and an increment. Notice that <B>range</B> option defines a list of values, so <B>getvalue</B> and <B>setvalue</B> work with both values and range. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-modifycmd"><B>-modifycmd</B></A></DT> <DD> Specifies a Tcl command called when the user modify the value of the SpinBox. </DD> </DL> <DL><DT><A NAME="-range"><B>-range</B></A></DT> <DD> Specifies a list of three intergers (or real) describing the minimum, maximum and increment of the SpinBox. </DD> </DL> <DL><DT><A NAME="-values"><B>-values</B></A></DT> <DD> Specifies the values accepted by the SpinBox. This option takes precedence over <B>range</B> option. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="bind"><I>pathName</I> <B>bind</B></A> ?<I>arg...</I>? </DT><DD> Set bindings on the entry widget. </DD></DL> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="getvalue"><I>pathName</I> <B>getvalue</B></A> </DT><DD> Returns the index of the current text of the SpinBox in the list of values, or -1 if it doesn't match any value. </DD></DL> <DL><DT><A NAME="setvalue"><I>pathName</I> <B>setvalue</B></A> <I>index</I> </DT><DD> Set the text of the SpinBox to the value indicated by <I>index</I> in the list of values. <I>index</I> may be specified in any of the following forms: <P> <DL COMPACT> <DT> <B>last</B> <DD> Specifies the last element of the list of values. <DT><B>first</B> <DD> Specifies the first element of the list of values. <DT> <B>next</B> <DD> Specifies the element following the current (ie returned by <B>getvalue</B>) in the list of values. <DT><B>previous</B> <DD> Specifies the element preceding the current (ie returned by <B>getvalue</B>) in the list of values. <DT> @<I>number</I> <DD> Specifies the integer index in the list of values. </DL> </DD></DL> <HR><BR><B>BINDINGS</B><BR><BR> When Entry of the SpinBox has the input focus, it has the following bindings, in addition to the default Entry bindings: <UL> <LI>Page up set the value of the SpinBox to the last value. <LI>Page down set the value of the SpinBox to the first value. <LI>Arrow up set the value of the SpinBox to the next value. <LI>Arrow down set the value of the SpinBox to the previous value. </UL> </BODY></HTML> |
Added BWman/TitleFrame.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | <HTML> <HEAD><TITLE>TitleFrame</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>TitleFrame</B> - Frame with a title </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>TitleFrame</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-background">-background or -bg</A></TD> <TD> <A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-font">-font</A></TR> <TD> <A HREF="options.htm#M-foreground">-foreground or -fg</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-relief">-relief</A></TR> <TD> <A HREF="options.htm#M-text">-text</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-baseline">-baseline</A></TR> <TD> <A HREF="#-ipad">-ipad</A></TR> </TR> <TR> <TD> <A HREF="#-side">-side</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#getframe"><B>getframe</B></A> </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> TitleFrame enables user to create a frame with a title like XmFrame Motif widget. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-baseline"><B>-baseline</B></A></DT> <DD> Specifies the vertical alignment of the title: <B>top</B>, <B>center</B> or <B>bottom</B>. </DD> </DL> <DL><DT><A NAME="-ipad"><B>-ipad</B></A></DT> <DD> Specifies a pad between the border of the frame and the user frame. The value is in screen units. </DD> </DL> <DL><DT><A NAME="-side"><B>-side</B></A></DT> <DD> Specifies the horizontal alignment of the title: <B>left</B>, <B>center</B> or <B>right</B>. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="getframe"><I>pathName</I> <B>getframe</B></A> </DT><DD> Return the frame where the user can create any other widget. </DD></DL> </BODY></HTML> |
Added BWman/Tree.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 | <HTML> <HEAD><TITLE>Tree</TITLE></HEAD> <BODY BGCOLOR=white> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>Tree</B> - Tree widget </DD></DL> <DL> <DT><I>CREATION</I></DT> <DD><A HREF="#descr"><B>Tree</B></A> <I>pathName</I> ?<I>option value...</I>?</DD> </DL> <DL> <DT><I>STANDARD OPTIONS</I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="options.htm#M-background">-background or -bg</A></TD> <TD> <A HREF="options.htm#M-borderwidth">-borderwidth or -bd</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-cursor">-cursor</A></TR> <TD> <A HREF="options.htm#M-highlightbackground">-highlightbackground</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-highlightcolor">-highlightcolor</A></TR> <TD> <A HREF="options.htm#M-highlightthickness">-highlightthickness</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-relief">-relief</A></TR> <TD> <A HREF="options.htm#M-selectbackground">-selectbackground</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-selectforeground">-selectforeground</A></TR> <TD> <A HREF="options.htm#M-takefocus">-takefocus</A></TR> </TR> <TR> <TD> <A HREF="options.htm#M-xscrollcommand">-xscrollcommand</A></TR> <TD> <A HREF="options.htm#M-yscrollcommand">-yscrollcommand</A></TR> </TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-closecmd">-closecmd</A></TR> <TD> <A HREF="#-deltax">-deltax</A></TR> </TR> <TR> <TD> <A HREF="#-deltay">-deltay</A></TR> <TD> <A HREF="#-dragenabled">-dragenabled</A></TR> </TR> <TR> <TD> <A HREF="#-dragendcmd">-dragendcmd</A></TR> <TD> <A HREF="#-dragevent">-dragevent</A></TR> </TR> <TR> <TD> <A HREF="#-draginitcmd">-draginitcmd</A></TR> <TD> <A HREF="#-dragtype">-dragtype</A></TR> </TR> <TR> <TD> <A HREF="#-dropcmd">-dropcmd</A></TR> <TD> <A HREF="#-dropenabled">-dropenabled</A></TR> </TR> <TR> <TD> <A HREF="#-dropovercmd">-dropovercmd</A></TR> <TD> <A HREF="#-dropovermode">-dropovermode</A></TR> </TR> <TR> <TD> <A HREF="#-droptypes">-droptypes</A></TR> <TD> <A HREF="#-height">-height</A></TR> </TR> <TR> <TD> <A HREF="#-linesfill">-linesfill</A></TR> <TD> <A HREF="#-linestipple">-linestipple</A></TR> </TR> <TR> <TD> <A HREF="#-opencmd">-opencmd</A></TR> <TD> <A HREF="#-padx">-padx</A></TR> </TR> <TR> <TD> <A HREF="#-redraw">-redraw</A></TR> <TD> <A HREF="#-showlines">-showlines</A></TR> </TR> <TR> <TD> <A HREF="#-width">-width</A></TR> </TABLE></DD> </DL> <DL> <DT><I><A HREF="#wc">WIDGET COMMAND</A></I></DT> <DD><I>pathName</I> <A HREF="#bindImage"><B>bindImage</B></A> <I>event</I> <I>script</I> </DD> <DD><I>pathName</I> <A HREF="#bindText"><B>bindText</B></A> <I>event</I> <I>script</I> </DD> <DD><I>pathName</I> <A HREF="#cget"><B>cget</B></A> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#closetree"><B>closetree</B></A> <I>node</I> </DD> <DD><I>pathName</I> <A HREF="#configure"><B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#delete"><B>delete</B></A> ?<I>arg...</I>? </DD> <DD><I>pathName</I> <A HREF="#edit"><B>edit</B></A> <I>node</I> <I>text</I> ?<I>verifycmd</I>? ?<I>clickres</I>? ?<I>select</I>? </DD> <DD><I>pathName</I> <A HREF="#exists"><B>exists</B></A> <I>node</I> </DD> <DD><I>pathName</I> <A HREF="#index"><B>index</B></A> <I>node</I> </DD> <DD><I>pathName</I> <A HREF="#insert"><B>insert</B></A> <I>index</I> <I>parent</I> <I>node</I> ?<I>option value...</I>? </DD> <DD><I>pathName</I> <A HREF="#itemcget"><B>itemcget</B></A> <I>node</I> <I>option</I> </DD> <DD><I>pathName</I> <A HREF="#itemconfigure"><B>itemconfigure</B></A> <I>node</I> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DD> <DD><I>pathName</I> <A HREF="#move"><B>move</B></A> <I>parent</I> <I>node</I> <I>index</I> </DD> <DD><I>pathName</I> <A HREF="#nodes"><B>nodes</B></A> <I>node</I> ?<I>first</I>? ?<I>last</I>? </DD> <DD><I>pathName</I> <A HREF="#opentree"><B>opentree</B></A> <I>node</I> </DD> <DD><I>pathName</I> <A HREF="#parent"><B>parent</B></A> <I>node</I> </DD> <DD><I>pathName</I> <A HREF="#reorder"><B>reorder</B></A> <I>node</I> <I>neworder</I> </DD> <DD><I>pathName</I> <A HREF="#see"><B>see</B></A> <I>node</I> </DD> <DD><I>pathName</I> <A HREF="#selection"><B>selection</B></A> <I>cmd</I> ?<I>arg...</I>? </DD> <DD><I>pathName</I> <A HREF="#visible"><B>visible</B></A> <I>node</I> </DD> <DD><I>pathName</I> <A HREF="#xview"><B>xview</B></A> ?<I>arg...</I>? </DD> <DD><I>pathName</I> <A HREF="#yview"><B>yview</B></A> ?<I>arg...</I>? </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> <B>Tree</B> widget uses canvas to display a hierarchical list of items (called nodes). Each node is composed of a label with its own font and foreground attributes, and an optional image or window. Each node can have a list of subnodes, which can be collapsed or expanded. Each node is drawn in a single line, whose height is defined by the <B>deltay</B> option, so they must have at most this height. A node is uniquely identified by a string given at creation (by the <B>insert</B> command). The node named <I>root</I> is the root of the tree and is not drawn. The tree structure is directly maintained by the widget. </P> <BR><HR WIDTH="50%"><BR> <B><A NAME="wso">WIDGET-SPECIFIC OPTIONS</A></B><BR> <DL><DT><A NAME="-closecmd"><B>-closecmd</B></A></DT> <DD> Specifies a command to be called when user close a node. The closed node is appended to the command. </DD> </DL> <DL><DT><A NAME="-deltax"><B>-deltax</B></A></DT> <DD> Specifies horizontal indentation between a node and its children. </DD> </DL> <DL><DT><A NAME="-deltay"><B>-deltay</B></A></DT> <DD> Specifies vertical size of the nodes. </DD> </DL> <DL><DT><A NAME="-dragenabled"><B>-dragenabled</B></A></DT> <DD> A boolean specifying if drag is enabled. </DD> </DL> <DL><DT><A NAME="-dragendcmd"><B>-dragendcmd</B></A></DT> <DD> Specifies a command to be called when drag ended. <B>dragendcmd</B> must be a command conforming to the description of the option <B>dragendcmd</B> of <B>DragSite::<A HREF="DragSite.html#register">register</A></B>. </DD> </DL> <DL><DT><A NAME="-dragevent"><B>-dragevent</B></A></DT> <DD> Specifies the number of the mouse button associated to the drag. Must be <B>1</B>, <B>2</B> or <B>3</B>. </DD> </DL> <DL><DT><A NAME="-draginitcmd"><B>-draginitcmd</B></A></DT> <DD> Tree has a command wrapper for <I>drag-init</I> events. This command refused the drag if no node is designated. In other cases: <BR>If <B>draginitcmd</B> is empty, it returns: <UL> <LI>the value of option <B>dragtype</B> or <I>TREE_NODE</I> if empty as the data type, <LI><I>{copy move link}</I> as the operations, <LI>the node identifier as the data. </UL> If <B>draginitcmd</B> is not empty, it is called with the following arguments: <UL> <LI>the pathname of the tree, <LI>the identifier of the dragged node, <LI>the toplevel created to represent dragged data. </UL> and must return a value conforming to <B>draginitcmd</B> option described in <B>DragSite::<A HREF="DragSite.html#register">register</A></B>. </DD> </DL> <DL><DT><A NAME="-dragtype"><B>-dragtype</B></A></DT> <DD> Specifies an alternate type of dragged object. </DD> </DL> <DL><DT><A NAME="-dropcmd"><B>-dropcmd</B></A></DT> <DD> Tree has a command wrapper for <I>drop</I> events. This command stops auto scrolling and extract node and position. <BR>If <B>dropcmd</B> is not empty, it is called with the following arguments: <UL> <LI>the pathname of the tree, <LI>the pathname of the drag source, <LI>a list describing where the drop occurs. It can be: <UL> <LI><I>{</I><B>widget</B><I>}</I>, <LI><I>{</I><B>node</B> <I>node}</I> or <LI><I>{</I><B>position</B> <I>node index}</I>. </UL> <LI>the current operation, <LI>the data type, <LI>the data. </UL> </DD> </DL> <DL><DT><A NAME="-dropenabled"><B>-dropenabled</B></A></DT> <DD> A boolean specifying if drop is enabled. </DD> </DL> <DL><DT><A NAME="-dropovercmd"><B>-dropovercmd</B></A></DT> <DD> Tree has a command wrapper for <I>drag-over</I> events. This command enables auto scrolling and position extraction during the <I>drag-over</I>. If <B>dropovercmd</B> is not empty, the command is called with the following aguments: <UL> <LI>the pathname of the tree, <LI>the pathname of the drag source, <LI>a list describing where the drop can occur, whose elements are: <UL> <LI>the string <I>widget</I> if <B>dropovertype</B> option contains <I>w</I>, else empty string. <LI>the targeted node if drag icon points a node and <B>dropovertype</B> option contains <I>n</I>, else empty string. <LI>a list containing a node and the position within the children of the node where drag icon points to if <B>dropovertype</B> option contains <I>p</I>, else empty string. <LI>optionally, the preferred method if drop can occur both inside a node and between two nodes. The value is <I>position</I> or <I>node</I>. </UL> <LI>the current operation, <LI>the data type, <LI>the data. </UL> The command must return a list with two elements: <UL> <LI>the drop status, conforming to those described in <B>dropovercmd</B> option of <B>DropSite::<A HREF="DropSite.html#register">register</A></B>, <LI>the choosen method: <I>widget</I>, <I>node</I> or <I>position</I>. </UL> </DD> </DL> <DL><DT><A NAME="-dropovermode"><B>-dropovermode</B></A></DT> <DD> Specifies the type of <I>drop-over</I> interaction. Must be a combination of <B>w</B>, which specifies that drop can occurs everywhere on widget, <B>p</B>, which specifies that drop can occurs between two nodes, and <B>n</B>, which specifies that drop occurs inside nodes. </DD> </DL> <DL><DT><A NAME="-droptypes"><B>-droptypes</B></A></DT> <DD> Specifies a list of accepted dropped object/operation. See option <B>droptypes</B> of <B>DropSite::<A HREF="DropSite.html#register">register</A></B>. for more infromation. <BR>Default is <I>TREE_NODE</I> with operations <B>copy</B> and <B>move</B>. </DD> </DL> <DL><DT><A NAME="-height"><B>-height</B></A></DT> <DD> Specifies the desired height for the tree in units of <B>deltay</B> pixels. </DD> </DL> <DL><DT><A NAME="-linesfill"><B>-linesfill</B></A></DT> <DD> Specifies a foreground color for the lines between nodes. </DD> </DL> <DL><DT><A NAME="-linestipple"><B>-linestipple</B></A></DT> <DD> Specifies a stipple bitmap for the lines between nodes. </DD> </DL> <DL><DT><A NAME="-opencmd"><B>-opencmd</B></A></DT> <DD> Specifies a command to be called when user open a node. The opened node is appended to the command. </DD> </DL> <DL><DT><A NAME="-padx"><B>-padx</B></A></DT> <DD> Specifies distance between image or window and text of the nodes. </DD> </DL> <DL><DT><A NAME="-redraw"><B>-redraw</B></A></DT> <DD> Specifies wether or not the tree should be redrawn when entering idle. Set it to false if you call <B>update</B> while modifying the tree. </DD> </DL> <DL><DT><A NAME="-showlines"><B>-showlines</B></A></DT> <DD> Specifies whether or not lines should be drawn between nodes. </DD> </DL> <DL><DT><A NAME="-width"><B>-width</B></A></DT> <DD> Specifies the desired width for the tree in units of 8 pixels. </DD> </DL> <HR WIDTH="50%"><BR> <B><A NAME="wc">WIDGET COMMAND</A></B><BR> <DL><DT><A NAME="bindImage"><I>pathName</I> <B>bindImage</B></A> <I>event</I> <I>script</I> </DT><DD> This command associates a command to execute whenever the event sequence given by <I>event</I> occurs on the image of a node. The node idenfier on which the event occurs is appended to the command. </DD></DL> <DL><DT><A NAME="bindText"><I>pathName</I> <B>bindText</B></A> <I>event</I> <I>script</I> </DT><DD> This command associates a command to execute whenever the event sequence given by <I>event</I> occurs on the label of a node. The node idenfier on which the event occurs is appended to the command. </DD></DL> <DL><DT><A NAME="cget"><I>pathName</I> <B>cget</B></A> <I>option</I> </DT><DD> Returns the current value of the configuration option given by <I>option</I>. <I>Option</I> may have any of the values accepted by the creation command. </DD></DL> <DL><DT><A NAME="closetree"><I>pathName</I> <B>closetree</B></A> <I>node</I> </DT><DD> This command close all the subtree given by <I>node</I> (recurse through the tree starting at <I>node</I> and set <B>open</B> option to 0) </DD></DL> <DL><DT><A NAME="configure"><I>pathName</I> <B>configure</B></A> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> Query or modify the configuration options of the widget. If no <I>option</I> is specified, returns a list describing all of the available options for <I>pathName</I>. If <I>option</I> is specified with no <I>value</I>, then the command returns a list describing the one named <I>option</I> (this list will be identical to the corresponding sublist of the value returned if no <I>option</I> is specified). If one or more <I>option-value</I> pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. <I>Option</I> may have any of the values accepted by the creation command. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="delete"><I>pathName</I> <B>delete</B></A> ?<I>arg...</I>? </DT><DD> Deletes all nodes (and children of them) in <I>arg</I>. <I>arg</I> can be a list of nodes or a list of list of nodes. To delete all the tree, do <I>$pathName delete [$pathName nodes root]</I>. </DD></DL> <DL><DT><A NAME="edit"><I>pathName</I> <B>edit</B></A> <I>node</I> <I>text</I> ?<I>verifycmd</I>? ?<I>clickres</I>? ?<I>select</I>? </DT><DD> Provides a way for the user to edit in place the label of a node. This is possible only if <I>node</I> is visible (all its parents are open). <BR>The command takes the initial text as argument and does not modify the label of the edited node, but returns an empty string if edition is canceled, or the typed text if edition is accepted. <BR>When editing, the user can cancel by pressing Escape, or accept by pressing Return. <BR><I>clickres</I> specifies what to do if the user click outside the editable area. If <I>clickres</I> is 0 (the default), the edition is canceled. If <I>clickres</I> is 1, the edition is accepted. In all other case, the edition continues. <BR>If edition is accepted and <I>modifycmd</I> is not empty, then it is called with the new text as argument and must return 1 to accept the new text, 0 to refuse it and continue edition. <BR><I>select</I> specifies wether or not the initial text should be selected. Default is 1. </DD></DL> <DL><DT><A NAME="exists"><I>pathName</I> <B>exists</B></A> <I>node</I> </DT><DD> Returns whether or not <I>node</I> exists in the tree. </DD></DL> <DL><DT><A NAME="index"><I>pathName</I> <B>index</B></A> <I>node</I> </DT><DD> Returns the position of <I>node</I> in its parent. </DD></DL> <DL><DT><A NAME="insert"><I>pathName</I> <B>insert</B></A> <I>index</I> <I>parent</I> <I>node</I> ?<I>option value...</I>? </DT><DD> Inserts a new node identified by <I>node</I> in the children list of <I>parent</I> at position <I>index</I>. <P> <DL><DT><A NAME="Node-data"><B>-data</B></A></DT> <DD> User data associated to the node. </DD> </DL> <DL><DT><A NAME="Node-drawcross"><B>-drawcross</B></A></DT> <DD> Specifies how the cross used to expand or collapse the children of a node should be drawn. Must be one of <B>auto</B>, <B>allways</B> or <B>never</B>. <BR>If <B>auto</B>, the cross is drawn only if the node has children. If <B>allways</B>, the cross is always drawn. If <B>never</B>, the cross is never drawn. </DD> </DL> <DL><DT><A NAME="Node-fill"><B>-fill</B></A></DT> <DD> Specifies the foreground color of the label of the node. </DD> </DL> <DL><DT><A NAME="Node-font"><B>-font</B></A></DT> <DD> Specifies a font for the label of the node. </DD> </DL> <DL><DT><A NAME="Node-image"><B>-image</B></A></DT> <DD> Specifies an image to display at the left of the label of the node. <B>window</B> option override <B>image</B>. </DD> </DL> <DL><DT><A NAME="Node-open"><B>-open</B></A></DT> <DD> Specifies wether or not the children of the node should be drawn. </DD> </DL> <DL><DT><A NAME="Node-text"><B>-text</B></A></DT> <DD> Specifies the label of the node. </DD> </DL> <DL><DT><A NAME="Node-window"><B>-window</B></A></DT> <DD> Specifies a pathname to display at the left of the label of the node. <B>window</B> option override <B>image</B>. </DD> </DL> </DD></DL> <DL><DT><A NAME="itemcget"><I>pathName</I> <B>itemcget</B></A> <I>node</I> <I>option</I> </DT><DD> Returns the current value of a configuration option for the item. <I>Option</I> may have any of the values accepted by the item creation command. </DD></DL> <DL><DT><A NAME="itemconfigure"><I>pathName</I> <B>itemconfigure</B></A> <I>node</I> ?<I>option</I>? ?<I>value</I> <I>option</I> <I>value</I> ...? </DT><DD> This command is similar to the <B>configure</B> command, except that it applies to the options for an individual item, whereas <B>configure</B> applies to the options for the widget as a whole. <B>Options</B> may have any of the values accepted by the item creation widget command. If options are specified, options are modified as indicated in the command and the command returns an empty string. If no options are specified, returns a list describing the current options for the item. Read-only options are not be modified. </DD></DL> <DL><DT><A NAME="move"><I>pathName</I> <B>move</B></A> <I>parent</I> <I>node</I> <I>index</I> </DT><DD> Moves <I>node</I> to the children list of <I>parent</I> at position <I>index</I>. <I>parent</I> can not be a descendant of <I>node</I>. </DD></DL> <DL><DT><A NAME="nodes"><I>pathName</I> <B>nodes</B></A> <I>node</I> ?<I>first</I>? ?<I>last</I>? </DT><DD> Returns parts of the children of <I>node</I>, following <I>first</I> and <I>last</I>.<BR> If <I>first</I> and <I>last</I> are omitted, returns the list of all children. If <I>first</I> is specified and <I>last</I> omitted, returns the child at index <I>first</I>, or an empty string if <I>first</I> refers to a non-existent element. If <I>first</I> and <I>last</I> are specified, the command returns a list whose elements are all of the children between <I>first</I> and <I>last</I>, inclusive. Both <I>first</I> and <I>last</I> may have any of the standard forms for indices. </DD></DL> <DL><DT><A NAME="opentree"><I>pathName</I> <B>opentree</B></A> <I>node</I> </DT><DD> This command open all the subtree given by <I>node</I> (recurse through the tree starting at <I>node</I> and set <B>open</B> option to 1) </DD></DL> <DL><DT><A NAME="parent"><I>pathName</I> <B>parent</B></A> <I>node</I> </DT><DD> Returns the parent of <I>node</I>. </DD></DL> <DL><DT><A NAME="reorder"><I>pathName</I> <B>reorder</B></A> <I>node</I> <I>neworder</I> </DT><DD> Modifies the order of children of <I>node</I> given by <I>neworder</I>. Children of <I>node</I> that do not appear in <I>neworder</I> are no moved. </DD></DL> <DL><DT><A NAME="see"><I>pathName</I> <B>see</B></A> <I>node</I> </DT><DD> Arrange the scrolling area to make <I>node</I> visible. </DD></DL> <DL><DT><A NAME="selection"><I>pathName</I> <B>selection</B></A> <I>cmd</I> ?<I>arg...</I>? </DT><DD> Modifies the list of selected nodes following <I>cmd</I>: <DL> <DT><B>clear</B> <DD>remove all nodes of the selection. <DT><B>set</B> <DD>set the selection to all nodes in <I>arg</I> <DT><B>add</B> <DD>add all nodes of <I>arg</I> in the selection <DT><B>remove</B> <DD>remove all nodes of <I>arg</I> of the selection <DT><B>get</B> <DD>return the current selected nodes </DL> </DD></DL> <DL><DT><A NAME="visible"><I>pathName</I> <B>visible</B></A> <I>node</I> </DT><DD> Returns whether or not <I>node</I> is visible (all its parents are open). </DD></DL> <DL><DT><A NAME="xview"><I>pathName</I> <B>xview</B></A> ?<I>arg...</I>? </DT><DD> Standard command to enable horizontal scrolling of <I>pathName</I>. </DD></DL> <DL><DT><A NAME="yview"><I>pathName</I> <B>yview</B></A> ?<I>arg...</I>? </DT><DD> Standard command to enable vertical scrolling of <I>pathName</I>. </DD></DL> </BODY></HTML> |
Added BWman/Widget.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 | <HTML> <HEAD><TITLE>Widget</TITLE></HEAD> <BODY BGCOLOR=white> <IMG SRC="constr.gif" WIDTH="40" HEIGHT="40"> Under construction ...<BR> <DL><DT><I><A HREF="#descr">NAME</A></I></DT> <DD><B>Widget</B> - The Widget base class </DD></DL> <DL> <DT><I><A HREF="#wc">COMMAND</A></I></DT> <DD>Widget::<A HREF="#addmap"><B>addmap</B></A> <I>class</I> <I>subclass</I> <I>subpath</I> <I>options</I> </DD> <DD>Widget::<A HREF="#bwinclude"><B>bwinclude</B></A> <I>class</I> <I>subclass</I> <I>subpath</I> ?<I>arg...</I>? </DD> <DD>Widget::<A HREF="#cget"><B>cget</B></A> <I>path</I> <I>option</I> </DD> <DD>Widget::<A HREF="#configure"><B>configure</B></A> <I>path</I> <I>options</I> </DD> <DD>Widget::<A HREF="#declare"><B>declare</B></A> <I>class</I> <I>optlist</I> </DD> <DD>Widget::<A HREF="#destroy"><B>destroy</B></A> <I>path</I> </DD> <DD>Widget::<A HREF="#focusNext"><B>focusNext</B></A> <I>w</I> </DD> <DD>Widget::<A HREF="#focusOK"><B>focusOK</B></A> <I>w</I> </DD> <DD>Widget::<A HREF="#focusPrev"><B>focusPrev</B></A> <I>w</I> </DD> <DD>Widget::<A HREF="#generate-doc"><B>generate-doc</B></A> <I>dir</I> <I>widgetlist</I> </DD> <DD>Widget::<A HREF="#generate-widget-doc"><B>generate-widget-doc</B></A> <I>class</I> <I>iscmd</I> <I>file</I> </DD> <DD>Widget::<A HREF="#getoption"><B>getoption</B></A> <I>path</I> <I>option</I> </DD> <DD>Widget::<A HREF="#hasChanged"><B>hasChanged</B></A> <I>path</I> <I>option</I> <I>pvalue</I> </DD> <DD>Widget::<A HREF="#init"><B>init</B></A> <I>class</I> <I>path</I> <I>options</I> </DD> <DD>Widget::<A HREF="#setoption"><B>setoption</B></A> <I>path</I> <I>option</I> <I>value</I> </DD> <DD>Widget::<A HREF="#subcget"><B>subcget</B></A> <I>path</I> <I>subwidget</I> </DD> <DD>Widget::<A HREF="#syncoptions"><B>syncoptions</B></A> <I>class</I> <I>subclass</I> <I>subpath</I> <I>options</I> </DD> <DD>Widget::<A HREF="#tkinclude"><B>tkinclude</B></A> <I>class</I> <I>tkwidget</I> <I>subpath</I> ?<I>arg...</I>? </DD> </DL> <BR><HR WIDTH="100%"><BR> <B><A NAME="descr"></A>DESCRIPTION</B><BR> <P> The <B>Widget</B> namespace handle data associated to all BWidget and provide commands to easily define BWidget. <BR>For commands can be used to define a BWidget: <B>tkinclude</B>, <B>bwinclude</B>, <B>declare</B>, <B>addmap</B> and <B>syncoptions</B>. Here is the definition of <A HREF="ComboBox.html">ComboBox</A> widget: <BR><BR> <CENTER> <TABLE BORDER=2 CELSPACING=2 WIDTH=80%> <TR><TD><PRE> namespace eval ComboBox { <FONT COLOR=red><I># We're using ArrowButton, Entry and LabelFrame</I></FONT> ArrowButton::use Entry::use LabelFrame::use <FONT COLOR=red><I># Include resources of LabelFrame</I></FONT> Widget::bwinclude ComboBox LabelFrame .labf \ rename {-text -label} \ remove {-focus} \ prefix {label -justify -width -anchor -height -font} \ initialize {-relief sunken -borderwidth 2} <FONT COLOR=red><I># Include resources of Entry</I></FONT> Widget::bwinclude ComboBox Entry .e \ remove {-relief -bd -borderwidth -bg -fg} \ rename {-foreground -entryfg -background -entrybg} <FONT COLOR=red><I># Declare new resources</I></FONT> Widget::declare ComboBox { {-height TkResource 0 0 listbox} {-values String "" 0} {-modifycmd String "" 0} {-postcommand String "" 0} } <FONT COLOR=red><I># Map resources to subwidget</I></FONT> Widget::addmap ComboBox "" :cmd {-background {}} Widget::addmap ComboBox ArrowButton .a \ {-foreground {} -background {} -disabledforeground {} -state {}} <FONT COLOR=red><I># Synchronize subwidget options</I></FONT> Widget::syncoptions ComboBox Entry .e {-text {}} Widget::syncoptions ComboBox LabelFrame .labf {-label -text -underline {}} proc use {} {} }</PRE> </TD></TR> </TABLE></CENTER> </P> <HR WIDTH="50%"><BR> <B><A NAME="wc">COMMAND</A></B><BR> <DL><DT><A NAME="addmap">Widget::<B>addmap</B></A> <I>class</I> <I>subclass</I> <I>subpath</I> <I>options</I> </DT><DD> This command map some resources to subwidget. Mapped resources automatically configure subwidget when widget is configured. <UL> <LI><I>class</I> is the class of the new BWidget <LI><I>subclass</I> is the class the subwidget (BWidget class, e.g Entry, or empty for Tk widget) <LI><I>subpath</I> is the path of the subwidget <LI><I>options</I> is the list <I>{option realres ...}</I> of options to map to subwidget </UL> </DD></DL> <DL><DT><A NAME="bwinclude">Widget::<B>bwinclude</B></A> <I>class</I> <I>subclass</I> <I>subpath</I> ?<I>arg...</I>? </DT><DD> This command includes into a new BWidget the resources of another BWidget. Arguments are: <UL> <LI><I>class</I> class of the new widget <LI><I>subclass</I> class name of the BWidget to be included <LI><I>subpath</I> path of the widget to configure when BWidget is configured <LI><I>options</I> is: <UL> <LI><I><B>include</B> {option option ...}</I> <BR>list of options to include (all if not defined) <LI><I><B>remove</B> {option option ...}</I> <BR> list of options to remove <LI><I><B>rename</B> {option name option name ...}</I> <BR>list of options to rename <LI><I><B>prefix</B> {prefix option option ...}</I> <BR>pefix all <I>option</I> by <I>prefix</I> <LI><I><B>initialize</B> {option value option value ...}</I> <BR>default value of options <LI><I><B>readonly</B> {option value option value ...}</I> <BR>new readonly flag </UL></UL> </DD></DL> <DL><DT><A NAME="cget">Widget::<B>cget</B></A> <I>path</I> <I>option</I> </DT><DD> Returns the value of <I>option</I> of BWidget <I>path</I>. <B>cget</B> tests the option existence and takes care of synchronization with subwidget. Typically called by the BWidget <B>cget</B> command. </DD></DL> <DL><DT><A NAME="configure">Widget::<B>configure</B></A> <I>path</I> <I>options</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="declare">Widget::<B>declare</B></A> <I>class</I> <I>optlist</I> </DT><DD> This command declare new resources for a BWidget. <UL> <LI><I>class</I> is class of the new widget <LI><I>options</I> is the list describing new options. Each new option is a list <B>{option type value ro ?args?}</B> where: <UL> <LI><I>option</I> is the name of the option <LI><I>type</I> is the type of the option <LI><I>value</I> is the default value of the option <LI><I>ro</I> is the readonly flag of the option <LI><I>args</I> depends on type </UL></UL> <BR> <I>type</I> can be: <BR> <DL> <DT><B>TkResource</B></DT> <DD> <I>value</I> of <I>option</I> denotes a resource of a Tk widget. <I>args</I> must be <I>class</I> or <I>{class realoption}</I>. <I>class</I> is the creation command of the Tk widget, e.g. <B>entry</B>. The second form must be used if <I>option</I> has not the same name in Tk widget, but <I>realoption</I>. <BR>If <I>value</I> is empty, it is initialized to the default value of the Tk widget. </DD> <DT><B>BwResource</B></DT> <DD> <I>value</I> of <I>option</I> denotes a resource of a BWidget. <I>args</I> must be <I>class</I> or <I>{class realoption}</I>. <I>class</I> is the name of the namespace of the BWidget, e.g. <B>LabelFrame</B>. The second form must be used if <I>option</I> has not the same name in BWidget, but <I>realoption</I>. <BR>If <I>value</I> is empty, it is initialized to the default value of the BWidget. </DD> <DT><B>Int</B></DT> <DD><I>value</I> of <I>option</I> is an integer. <I>args</I> can be <I>{?min? ?max?}</I> to force it to be in a range. The test is <I>[expr $option>$min] && [expr $option<$max]</I> so if args is <I>{0 10}</I>, value must be beetween 0 and 10 exclude, if <I>args</I> is <I>{=0 =10}</I> , value must be beetween 0 and 10 include. </DD> <DT><B>Boolean</B></DT> <DD><I>value</I> of <I>option</I> is a boolean. True values can be <B>1</B>, <B>true</B> or <B>yes</B>. False values can be <B>0</B>, <B>false</B> or <B>no</B>. <B>Widget::cget</B> always return 0 or 1. </DD> <DT><B>Enum</B></DT> <DD> <I>value</I> of <I>option</I> is a element of a enumeration. <I>args</I> must be the list of enumeration, e.g. <I>{top left bottom right}</I>. </DD> <DT><B>Flag</B></DT> <DD> <I>value</I> of <I>option</I> is a combination of a set of chars. <I>args</I> must be a string defining the set. </DD> <DT><B>String</B></DT> <DD> <DD><I>value</I> of <I>option</I> is any uncontrolled string. </DD> <DT><B>Synonym</B></DT> <DD> <DD><I>option</I> is a synonym of option <I>args</I>. <I>value</I> has no effect here. </DD> </DL> </DD></DL> <DL><DT><A NAME="destroy">Widget::<B>destroy</B></A> <I>path</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="focusNext">Widget::<B>focusNext</B></A> <I>w</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="focusOK">Widget::<B>focusOK</B></A> <I>w</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="focusPrev">Widget::<B>focusPrev</B></A> <I>w</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="generate-doc">Widget::<B>generate-doc</B></A> <I>dir</I> <I>widgetlist</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="generate-widget-doc">Widget::<B>generate-widget-doc</B></A> <I>class</I> <I>iscmd</I> <I>file</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="getoption">Widget::<B>getoption</B></A> <I>path</I> <I>option</I> </DT><DD> Returns the value of <I>option</I> of BWidget <I>path</I>. This command does not test option existence, does not handle synonym and does not take care of synchronization with subwidget. </DD></DL> <DL><DT><A NAME="hasChanged">Widget::<B>hasChanged</B></A> <I>path</I> <I>option</I> <I>pvalue</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="init">Widget::<B>init</B></A> <I>class</I> <I>path</I> <I>options</I> </DT><DD> Description text </DD></DL> <DL><DT><A NAME="setoption">Widget::<B>setoption</B></A> <I>path</I> <I>option</I> <I>value</I> </DT><DD> Set the value of <I>option</I> of BWidget <I>path</I> without option test, subwidget mapping, synonym handling and does not set the modification flag. </DD></DL> <DL><DT><A NAME="subcget">Widget::<B>subcget</B></A> <I>path</I> <I>subwidget</I> </DT><DD> Returns the list of all option/value of BWidget <I>path</I> that are mapped to <I>subwidget</I>. </DD></DL> <DL><DT><A NAME="syncoptions">Widget::<B>syncoptions</B></A> <I>class</I> <I>subclass</I> <I>subpath</I> <I>options</I> </DT><DD> This command synchronize options value of a subwidget. Used when an option of a subwidget is modified out of the BWidget <B>configure</B> command. <UL> <LI><I>class</I> is the class of the new BWidget <LI><I>subclass</I> is the class the subwidget (BWidget class, e.g Entry, or empty for Tk widget) <LI><I>subpath</I> is the path of the subwidget <LI><I>options</I> is the list <I>{option realres ...}</I> of options to synchronize with subwidget </UL> </DD></DL> <DL><DT><A NAME="tkinclude">Widget::<B>tkinclude</B></A> <I>class</I> <I>tkwidget</I> <I>subpath</I> ?<I>arg...</I>? </DT><DD> This command includes into a new BWidget the resources of a Tk widget. Arguments are: <UL> <LI><I>class</I> class of the new widget <LI><I>tkwidger</I> command name of the Tk widget to be included <LI><I>subpath</I> path of the widget to configure when BWidget is configured <LI><I>options</I> is: <UL> <LI><I><B>include</B> {option option ...}</I> <BR>list of options to include (all if not defined) <LI><I><B>remove</B> {option option ...}</I> <BR>list of options to remove <LI><I><B>rename</B> {option name option name ...}</I> <BR>list of options to rename <LI><I><B>prefix</B> {prefix option option ...}</I> <BR>pefix all <I>option</I> by <I>prefix</I> <LI><I><B>initialize</B> {option value option value ...}</I> <BR>default value of options <LI><I><B>readonly</B> {option value option value ...}</I> <BR>new readonly flag </UL></UL> </DD></DL> </BODY></HTML> |
Added BWman/contents.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | <HTML><BODY BGCOLOR=white target=Manual> <BR><BR><DT><B>Simple Widgets</B> <DD><TABLE BORDER=0 CELLSPACING=0> <TR><TD><A HREF="Label.html">Label</A></TD> <TD>Label widget with <B>state</B> option, dynamic help and drag and drop facilities</TD></TR> <TR><TD><A HREF="Entry.html">Entry</A></TD> <TD>Entry widget with <B>state</B> option, dynamic help and drag and drop facilities</TD></TR> <TR><TD><A HREF="Button.html">Button</A></TD> <TD>Button widget with enhanced options</TD></TR> <TR><TD><A HREF="ArrowButton.html">ArrowButton</A></TD> <TD>Button widget with an arrow shape.</TD></TR> <TR><TD><A HREF="ProgressBar.html">ProgressBar</A></TD> <TD>Progress indicator widget</TD></TR> <TR><TD><A HREF="ScrollView.html">ScrollView</A></TD> <TD>Display the visible area of a scrolled window</TD></TR> <TR><TD><A HREF="Separator.html">Separator</A></TD> <TD>3D separator widget</TD></TR> </TABLE> <BR><BR><DT><B>Manager Widgets</B> <DD><TABLE BORDER=0 CELLSPACING=0> <TR><TD><A HREF="MainFrame.html">MainFrame</A></TD> <TD>Manage toplevel with menu, toolbar and statusbar </TD></TR> <TR><TD><A HREF="LabelFrame.html">LabelFrame</A></TD> <TD>Frame with a Label</TD></TR> <TR><TD><A HREF="TitleFrame.html">TitleFrame</A></TD> <TD>Frame with a title</TD></TR> <TR><TD><A HREF="ScrolledWindow.html">ScrolledWindow</A></TD> <TD>Generic scrolled widget</TD></TR> <TR><TD><A HREF="ScrollableFrame.html">ScrollableFrame</A></TD> <TD>Scrollable frame containing widget</TD></TR> <TR><TD><A HREF="PanedWindow.html">PanedWindow</A></TD> <TD>Tiled layout manager widget</TD></TR> <TR><TD><A HREF="ButtonBox.html">ButtonBox</A></TD> <TD>Set of buttons with horizontal or vertical layout</TD></TR> <TR><TD><A HREF="PagesManager.html">PagesManager</A></TD> <TD>Pages manager widget</TD></TR> <TR><TD><A HREF="NoteBook.html">NoteBook</A></TD> <TD>Notebook manager widget</TD></TR> <TR><TD><A HREF="Dialog.html">Dialog</A></TD> <TD>Dialog abstraction with custom buttons</TD></TR> </TABLE> <BR><BR><DT><B>Composite Widgets</B> <DD><TABLE BORDER=0 CELLSPACING=0> <TR><TD><A HREF="LabelEntry.html">LabelEntry</A></TD> <TD> LabelFrame containing an Entry widget. </TD></TR> <TR><TD><A HREF="ComboBox.html">ComboBox</A></TD> <TD>ComboBox widget</TD></TR> <TR><TD><A HREF="SpinBox.html">SpinBox</A></TD> <TD>SpinBox widget</TD></TR> <TR><TD><A HREF="Tree.html">Tree</A></TD> <TD>Tree widget</TD></TR> <TR><TD><A HREF="ListBox.html">ListBox</A></TD> <TD>ListBox widget</TD></TR> <TR><TD><A HREF="MessageDlg.html">MessageDlg</A></TD> <TD>Message dialog box</TD></TR> <TR><TD><A HREF="ProgressDlg.html">ProgressDlg</A></TD> <TD>Progress indicator dialog box</TD></TR> <TR><TD><A HREF="PasswdDlg.html">PasswdDlg</A></TD> <TD>Login/Password dialog box</TD></TR> <TR><TD><A HREF="SelectFont.html">SelectFont</A></TD> <TD>Font selection widget</TD></TR> <TR><TD><A HREF="SelectColor.html">SelectColor</A></TD> <TD>Color selection widget</TD></TR> </TABLE> <BR><BR><DT><B>Commands Classes</B> <DD><TABLE BORDER=0 CELLSPACING=0> <TR><TD><A HREF="Widget.html">Widget</A></TD> <TD>The Widget base class</TD></TR> <TR><TD><A HREF="DynamicHelp.html">DynamicHelp</A></TD> <TD>Provide help to Tk widget or BWidget</TD></TR> <TR><TD><A HREF="DragSite.html">DragSite</A></TD> <TD>Commands set for Drag facilities</TD></TR> <TR><TD><A HREF="DropSite.html">DropSite</A></TD> <TD>Commands set for Drop facilities</TD></TR> <TR><TD><A HREF="BWidget.html">BWidget</A></TD> <TD>Description text</TD></TR> </TABLE> </DD></BODY></HTML> |
Added BWman/index.html.
> > > > > > > | 1 2 3 4 5 6 7 | <HTML> <HEAD><TITLE>BWidget Manual Pages</TITLE></HEAD> <FRAMESET COLS="180,*" BORDER=0> <FRAME SRC=navtree.html NAME="Menu" SCROLLING=AUTO> <FRAME SRC=contents.html NAME="Manual" SCROLLING=AUTO> </FRAMESET> </HTML> |
Added BWman/navtree.html.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <HTML><BODY BGCOLOR=white> <FONT SIZE=1><STRONG><A HREF="contents.html" TARGET=Manual>Brief description</A></STRONG></FONT><BR> <FONT SIZE=1><STRONG>Simple Widgets</STRONG></FONT><BR> <FONT SIZE=1><A HREF="Label.html" TARGET=Manual>Label</A></FONT><BR> <FONT SIZE=1><A HREF="Entry.html" TARGET=Manual>Entry</A></FONT><BR> <FONT SIZE=1><A HREF="Button.html" TARGET=Manual>Button</A></FONT><BR> <FONT SIZE=1><A HREF="ArrowButton.html" TARGET=Manual>ArrowButton</A></FONT><BR> <FONT SIZE=1><A HREF="ProgressBar.html" TARGET=Manual>ProgressBar</A></FONT><BR> <FONT SIZE=1><A HREF="ScrollView.html" TARGET=Manual>ScrollView</A></FONT><BR> <FONT SIZE=1><A HREF="Separator.html" TARGET=Manual>Separator</A></FONT><BR> <FONT SIZE=1><STRONG>Manager Widgets</STRONG></FONT><BR> <FONT SIZE=1><A HREF="MainFrame.html" TARGET=Manual>MainFrame</A></FONT><BR> <FONT SIZE=1><A HREF="LabelFrame.html" TARGET=Manual>LabelFrame</A></FONT><BR> <FONT SIZE=1><A HREF="TitleFrame.html" TARGET=Manual>TitleFrame</A></FONT><BR> <FONT SIZE=1><A HREF="ScrolledWindow.html" TARGET=Manual>ScrolledWindow</A></FONT><BR> <FONT SIZE=1><A HREF="ScrollableFrame.html" TARGET=Manual>ScrollableFrame</A></FONT><BR> <FONT SIZE=1><A HREF="PanedWindow.html" TARGET=Manual>PanedWindow</A></FONT><BR> <FONT SIZE=1><A HREF="ButtonBox.html" TARGET=Manual>ButtonBox</A></FONT><BR> <FONT SIZE=1><A HREF="PagesManager.html" TARGET=Manual>PagesManager</A></FONT><BR> <FONT SIZE=1><A HREF="NoteBook.html" TARGET=Manual>NoteBook</A></FONT><BR> <FONT SIZE=1><A HREF="Dialog.html" TARGET=Manual>Dialog</A></FONT><BR> <FONT SIZE=1><STRONG>Composite Widgets</STRONG></FONT><BR> <FONT SIZE=1><A HREF="LabelEntry.html" TARGET=Manual>LabelEntry</A></FONT><BR> <FONT SIZE=1><A HREF="ComboBox.html" TARGET=Manual>ComboBox</A></FONT><BR> <FONT SIZE=1><A HREF="SpinBox.html" TARGET=Manual>SpinBox</A></FONT><BR> <FONT SIZE=1><A HREF="Tree.html" TARGET=Manual>Tree</A></FONT><BR> <FONT SIZE=1><A HREF="ListBox.html" TARGET=Manual>ListBox</A></FONT><BR> <FONT SIZE=1><A HREF="MessageDlg.html" TARGET=Manual>MessageDlg</A></FONT><BR> <FONT SIZE=1><A HREF="ProgressDlg.html" TARGET=Manual>ProgressDlg</A></FONT><BR> <FONT SIZE=1><A HREF="PasswdDlg.html" TARGET=Manual>PasswdDlg</A></FONT><BR> <FONT SIZE=1><A HREF="SelectFont.html" TARGET=Manual>SelectFont</A></FONT><BR> <FONT SIZE=1><A HREF="SelectColor.html" TARGET=Manual>SelectColor</A></FONT><BR> <FONT SIZE=1><STRONG>Commands Classes</STRONG></FONT><BR> <FONT SIZE=1><A HREF="Widget.html" TARGET=Manual>Widget</A></FONT><BR> <FONT SIZE=1><A HREF="DynamicHelp.html" TARGET=Manual>DynamicHelp</A></FONT><BR> <FONT SIZE=1><A HREF="DragSite.html" TARGET=Manual>DragSite</A></FONT><BR> <FONT SIZE=1><A HREF="DropSite.html" TARGET=Manual>DropSite</A></FONT><BR> <FONT SIZE=1><A HREF="BWidget.html" TARGET=Manual>BWidget</A></FONT><BR> </BODY></HTML> |
Added BWman/options.htm.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 | <HTML><HEAD><TITLE>Tk Built-In Commands - options manual page</TITLE></HEAD> <BODY BGCOLOR=white> <DL> <DD><A HREF="options.htm#M2" NAME="L2">NAME</A> <DL><DD>options - Standard options supported by widgets</DL> <DD><A HREF="options.htm#M3" NAME="L3">DESCRIPTION</A> <DL> <DD><A HREF="options.htm#M-activebackground" NAME="L4">-activebackground, activeBackground, Foreground</A> <DD><A HREF="options.htm#M-activeborderwidth" NAME="L5">-activeborderwidth, activeBorderWidth, BorderWidth</A> <DD><A HREF="options.htm#M-activeforeground" NAME="L6">-activeforeground, activeForeground, Background</A> <DD><A HREF="options.htm#M-anchor" NAME="L7">-anchor, anchor, Anchor</A> <DD><A HREF="options.htm#M-background" NAME="L8">-background or -bg, background, Background</A> <DD><A HREF="options.htm#M-bitmap" NAME="L9">-bitmap, bitmap, Bitmap</A> <DD><A HREF="options.htm#M-borderwidth" NAME="L10">-borderwidth or -bd, borderWidth, BorderWidth</A> <DD><A HREF="options.htm#M-cursor" NAME="L11">-cursor, cursor, Cursor</A> <DD><A HREF="options.htm#M-disabledforeground" NAME="L12">-disabledforeground, disabledForeground, DisabledForeground</A> <DD><A HREF="options.htm#M-exportselection" NAME="L13">-exportselection, exportSelection, ExportSelection</A> <DD><A HREF="options.htm#M-font" NAME="L14">-font, font, Font</A> <DD><A HREF="options.htm#M-foreground" NAME="L15">-foreground or -fg, foreground, Foreground</A> <DD><A HREF="options.htm#M-highlightbackground" NAME="L16">-highlightbackground, highlightBackground, HighlightBackground</A> <DD><A HREF="options.htm#M-highlightcolor" NAME="L17">-highlightcolor, highlightColor, HighlightColor</A> <DD><A HREF="options.htm#M-highlightthickness" NAME="L18">-highlightthickness, highlightThickness, HighlightThickness</A> <DD><A HREF="options.htm#M-image" NAME="L19">-image, image, Image</A> <DD><A HREF="options.htm#M-insertbackground" NAME="L20">-insertbackground, insertBackground, Foreground</A> <DD><A HREF="options.htm#M-insertborderwidth" NAME="L21">-insertborderwidth, insertBorderWidth, BorderWidth</A> <DD><A HREF="options.htm#M-insertofftime" NAME="L22">-insertofftime, insertOffTime, OffTime</A> <DD><A HREF="options.htm#M-insertontime" NAME="L23">-insertontime, insertOnTime, OnTime</A> <DD><A HREF="options.htm#M-insertwidth" NAME="L24">-insertwidth, insertWidth, InsertWidth</A> <DD><A HREF="options.htm#M-jump" NAME="L25">-jump, jump, Jump</A> <DD><A HREF="options.htm#M-justify" NAME="L26">-justify, justify, Justify</A> <DD><A HREF="options.htm#M-orient" NAME="L27">-orient, orient, Orient</A> <DD><A HREF="options.htm#M-padx" NAME="L28">-padx, padX, Pad</A> <DD><A HREF="options.htm#M-pady" NAME="L29">-pady, padY, Pad</A> <DD><A HREF="options.htm#M-relief" NAME="L30">-relief, relief, Relief</A> <DD><A HREF="options.htm#M-repeatdelay" NAME="L31">-repeatdelay, repeatDelay, RepeatDelay</A> <DD><A HREF="options.htm#M-repeatinterval" NAME="L32">-repeatinterval, repeatInterval, RepeatInterval</A> <DD><A HREF="options.htm#M-selectbackground" NAME="L33">-selectbackground, selectBackground, Foreground</A> <DD><A HREF="options.htm#M-selectborderwidth" NAME="L34">-selectborderwidth, selectBorderWidth, BorderWidth</A> <DD><A HREF="options.htm#M-selectforeground" NAME="L35">-selectforeground, selectForeground, Background</A> <DD><A HREF="options.htm#M-setgrid" NAME="L36">-setgrid, setGrid, SetGrid</A> <DD><A HREF="options.htm#M-takefocus" NAME="L37">-takefocus, takeFocus, TakeFocus</A> <DD><A HREF="options.htm#M-text" NAME="L38">-text, text, Text</A> <DD><A HREF="options.htm#M-textvariable" NAME="L39">-textvariable, textVariable, Variable</A> <DD><A HREF="options.htm#M-troughcolor" NAME="L40">-troughcolor, troughColor, Background</A> <DD><A HREF="options.htm#M-underline" NAME="L41">-underline, underline, Underline</A> <DD><A HREF="options.htm#M-wraplength" NAME="L42">-wraplength, wrapLength, WrapLength</A> <DD><A HREF="options.htm#M-xscrollcommand" NAME="L43">-xscrollcommand, xScrollCommand, ScrollCommand</A> <DD><A HREF="options.htm#M-yscrollcommand" NAME="L44">-yscrollcommand, yScrollCommand, ScrollCommand</A> </DL> <DD><A HREF="options.htm#M4" NAME="L45">KEYWORDS</A> </DL><HR> <H3><A NAME="M2">NAME</A></H3> options - Standard options supported by widgets <H3><A NAME="M3">DESCRIPTION</A></H3> This manual entry describes the common configuration options supported by widgets in the Tk toolkit. Every widget does not necessarily support every option (see the manual entries for individual widgets for a list of the standard options supported by that widget), but if a widget does support an option with one of the names listed below, then the option has exactly the effect described below. <P> In the descriptions below, ``Command-Line Name'' refers to the switch used in class commands and <B>configure</B> widget commands to set this value. For example, if an option's command-line switch is <B>-foreground</B> and there exists a widget <B>.a.b.c</B>, then the command <PRE><B>.a.b.c configure -foreground black</B></PRE> may be used to specify the value <B>black</B> for the option in the the widget <B>.a.b.c</B>. Command-line switches may be abbreviated, as long as the abbreviation is unambiguous. ``Database Name'' refers to the option's name in the option database (e.g. in .Xdefaults files). ``Database Class'' refers to the option's class value in the option database. <DL> <DT>Command-Line Name: <B><A NAME="M-activebackground">-activebackground</A></B> <DT>Database Name: <B>activeBackground</B> <DT>Database Class: <B>Foreground</B> <DD>Specifies background color to use when drawing active elements. An element (a widget or portion of a widget) is active if the mouse cursor is positioned over the element and pressing a mouse button will cause some action to occur. If strict Motif compliance has been requested by setting the <B>tk_strictMotif</B> variable, this option will normally be ignored; the normal background color will be used instead. For some elements on Windows and Macintosh systems, the active color will only be used while mouse button 1 is pressed over the element. <P><DT>Command-Line Name: <B><A NAME="M-activeborderwidth">-activeborderwidth</A></B> <DT>Database Name: <B>activeBorderWidth</B> <DT>Database Class: <B>BorderWidth</B> <DD>Specifies a non-negative value indicating the width of the 3-D border drawn around active elements. See above for definition of active elements. The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetPixels.htm">Tk_GetPixels</A></B>. This option is typically only available in widgets displaying more than one element at a time (e.g. menus but not buttons). <P><DT>Command-Line Name: <B><A NAME="M-activeforeground">-activeforeground</A></B> <DT>Database Name: <B>activeForeground</B> <DT>Database Class: <B>Background</B> <DD>Specifies foreground color to use when drawing active elements. See above for definition of active elements. <P><DT>Command-Line Name: <B><A NAME="M-anchor">-anchor</A></B> <DT>Database Name: <B>anchor</B> <DT>Database Class: <B>Anchor</B> <DD>Specifies how the information in a widget (e.g. text or a bitmap) is to be displayed in the widget. Must be one of the values <B>n</B>, <B>ne</B>, <B>e</B>, <B>se</B>, <B>s</B>, <B>sw</B>, <B>w</B>, <B>nw</B>, or <B>center</B>. For example, <B>nw</B> means display the information such that its top-left corner is at the top-left corner of the widget. <P><DT>Command-Line Name: <B><A NAME="M-background">-background or -bg</A></B> <DT>Database Name: <B>background</B> <DT>Database Class: <B>Background</B> <DD>Specifies the normal background color to use when displaying the widget. <P><DT>Command-Line Name: <B><A NAME="M-bitmap">-bitmap</A></B> <DT>Database Name: <B>bitmap</B> <DT>Database Class: <B>Bitmap</B> <DD>Specifies a bitmap to display in the widget, in any of the forms acceptable to <B><A HREF="../TkLib/GetBitmap.htm">Tk_GetBitmap</A></B>. The exact way in which the bitmap is displayed may be affected by other options such as <B>anchor</B> or <B>justify</B>. Typically, if this option is specified then it overrides other options that specify a textual value to display in the widget; the <B>bitmap</B> option may be reset to an empty string to re-enable a text display. In widgets that support both <B>bitmap</B> and <B>image</B> options, <B>image</B> will usually override <B>bitmap</B>. <P><DT>Command-Line Name: <B><A NAME="M-borderwidth">-borderwidth or -bd</A></B> <DT>Database Name: <B>borderWidth</B> <DT>Database Class: <B>BorderWidth</B> <DD>Specifies a non-negative value indicating the width of the 3-D border to draw around the outside of the widget (if such a border is being drawn; the <B>relief</B> option typically determines this). The value may also be used when drawing 3-D effects in the interior of the widget. The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetPixels.htm">Tk_GetPixels</A></B>. <P><DT>Command-Line Name: <B><A NAME="M-cursor">-cursor</A></B> <DT>Database Name: <B>cursor</B> <DT>Database Class: <B>Cursor</B> <DD>Specifies the mouse cursor to be used for the widget. The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetCursor.htm">Tk_GetCursor</A></B>. <P><DT>Command-Line Name: <B><A NAME="M-disabledforeground">-disabledforeground</A></B> <DT>Database Name: <B>disabledForeground</B> <DT>Database Class: <B>DisabledForeground</B> <DD>Specifies foreground color to use when drawing a disabled element. If the option is specified as an empty string (which is typically the case on monochrome displays), disabled elements are drawn with the normal foreground color but they are dimmed by drawing them with a stippled fill pattern. <P><DT>Command-Line Name: <B><A NAME="M-exportselection">-exportselection</A></B> <DT>Database Name: <B>exportSelection</B> <DT>Database Class: <B>ExportSelection</B> <DD>Specifies whether or not a selection in the widget should also be the X selection. The value may have any of the forms accepted by <B><A HREF="../TclLib/GetInt.htm">Tcl_GetBoolean</A></B>, such as <B>true</B>, <B>false</B>, <B>0</B>, <B>1</B>, <B>yes</B>, or <B>no</B>. If the selection is exported, then selecting in the widget deselects the current X selection, selecting outside the widget deselects any widget selection, and the widget will respond to selection retrieval requests when it has a selection. The default is usually for widgets to export selections. <P><DT>Command-Line Name: <B><A NAME="M-font">-font</A></B> <DT>Database Name: <B><A HREF="../TkCmd/font.htm">font</A></B> <DT>Database Class: <B><A HREF="../TkCmd/font.htm">Font</A></B> <DD>Specifies the font to use when drawing text inside the widget. <P><DT>Command-Line Name: <B><A NAME="M-foreground">-foreground or -fg</A></B> <DT>Database Name: <B>foreground</B> <DT>Database Class: <B>Foreground</B> <DD>Specifies the normal foreground color to use when displaying the widget. <P><DT>Command-Line Name: <B><A NAME="M-highlightbackground">-highlightbackground</A></B> <DT>Database Name: <B>highlightBackground</B> <DT>Database Class: <B>HighlightBackground</B> <DD>Specifies the color to display in the traversal highlight region when the widget does not have the input focus. <P><DT>Command-Line Name: <B><A NAME="M-highlightcolor">-highlightcolor</A></B> <DT>Database Name: <B>highlightColor</B> <DT>Database Class: <B>HighlightColor</B> <DD>Specifies the color to use for the traversal highlight rectangle that is drawn around the widget when it has the input focus. <P><DT>Command-Line Name: <B><A NAME="M-highlightthickness">-highlightthickness</A></B> <DT>Database Name: <B>highlightThickness</B> <DT>Database Class: <B>HighlightThickness</B> <DD>Specifies a non-negative value indicating the width of the highlight rectangle to draw around the outside of the widget when it has the input focus. The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetPixels.htm">Tk_GetPixels</A></B>. If the value is zero, no focus highlight is drawn around the widget. <P><DT>Command-Line Name: <B><A NAME="M-image">-image</A></B> <DT>Database Name: <B>image</B> <DT>Database Class: <B>Image</B> <DD>Specifies an image to display in the widget, which must have been created with the <B><A HREF="../TkCmd/image.htm">image create</A></B> command. Typically, if the <B>image</B> option is specified then it overrides other options that specify a bitmap or textual value to display in the widget; the <B>image</B> option may be reset to an empty string to re-enable a bitmap or text display. <P><DT>Command-Line Name: <B><A NAME="M-insertbackground">-insertbackground</A></B> <DT>Database Name: <B>insertBackground</B> <DT>Database Class: <B>Foreground</B> <DD>Specifies the color to use as background in the area covered by the insertion cursor. This color will normally override either the normal background for the widget (or the selection background if the insertion cursor happens to fall in the selection). <P><DT>Command-Line Name: <B><A NAME="M-insertborderwidth">-insertborderwidth</A></B> <DT>Database Name: <B>insertBorderWidth</B> <DT>Database Class: <B>BorderWidth</B> <DD>Specifies a non-negative value indicating the width of the 3-D border to draw around the insertion cursor. The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetPixels.htm">Tk_GetPixels</A></B>. <P><DT>Command-Line Name: <B><A NAME="M-insertofftime">-insertofftime</A></B> <DT>Database Name: <B>insertOffTime</B> <DT>Database Class: <B>OffTime</B> <DD>Specifies a non-negative integer value indicating the number of milliseconds the insertion cursor should remain ``off'' in each blink cycle. If this option is zero then the cursor doesn't blink: it is on all the time. <P><DT>Command-Line Name: <B><A NAME="M-insertontime">-insertontime</A></B> <DT>Database Name: <B>insertOnTime</B> <DT>Database Class: <B>OnTime</B> <DD>Specifies a non-negative integer value indicating the number of milliseconds the insertion cursor should remain ``on'' in each blink cycle. <P><DT>Command-Line Name: <B><A NAME="M-insertwidth">-insertwidth</A></B> <DT>Database Name: <B>insertWidth</B> <DT>Database Class: <B>InsertWidth</B> <DD>Specifies a value indicating the total width of the insertion cursor. The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetPixels.htm">Tk_GetPixels</A></B>. If a border has been specified for the insertion cursor (using the <B>insertBorderWidth</B> option), the border will be drawn inside the width specified by the <B>insertWidth</B> option. <P><DT>Command-Line Name: <B><A NAME="M-jump">-jump</A></B> <DT>Database Name: <B>jump</B> <DT>Database Class: <B>Jump</B> <DD>For widgets with a slider that can be dragged to adjust a value, such as scrollbars, this option determines when notifications are made about changes in the value. The option's value must be a boolean of the form accepted by <B><A HREF="../TclLib/GetInt.htm">Tcl_GetBoolean</A></B>. If the value is false, updates are made continuously as the slider is dragged. If the value is true, updates are delayed until the mouse button is released to end the drag; at that point a single notification is made (the value ``jumps'' rather than changing smoothly). <P><DT>Command-Line Name: <B><A NAME="M-justify">-justify</A></B> <DT>Database Name: <B>justify</B> <DT>Database Class: <B>Justify</B> <DD>When there are multiple lines of text displayed in a widget, this option determines how the lines line up with each other. Must be one of <B>left</B>, <B>center</B>, or <B>right</B>. <B>Left</B> means that the lines' left edges all line up, <B>center</B> means that the lines' centers are aligned, and <B>right</B> means that the lines' right edges line up. <P><DT>Command-Line Name: <B><A NAME="M-orient">-orient</A></B> <DT>Database Name: <B>orient</B> <DT>Database Class: <B>Orient</B> <DD>For widgets that can lay themselves out with either a horizontal or vertical orientation, such as scrollbars, this option specifies which orientation should be used. Must be either <B>horizontal</B> or <B>vertical</B> or an abbreviation of one of these. <P><DT>Command-Line Name: <B><A NAME="M-padx">-padx</A></B> <DT>Database Name: <B>padX</B> <DT>Database Class: <B>Pad</B> <DD>Specifies a non-negative value indicating how much extra space to request for the widget in the X-direction. The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetPixels.htm">Tk_GetPixels</A></B>. When computing how large a window it needs, the widget will add this amount to the width it would normally need (as determined by the width of the things displayed in the widget); if the geometry manager can satisfy this request, the widget will end up with extra internal space to the left and/or right of what it displays inside. Most widgets only use this option for padding text: if they are displaying a bitmap or image, then they usually ignore padding options. <P><DT>Command-Line Name: <B><A NAME="M-pady">-pady</A></B> <DT>Database Name: <B>padY</B> <DT>Database Class: <B>Pad</B> <DD>Specifies a non-negative value indicating how much extra space to request for the widget in the Y-direction. The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetPixels.htm">Tk_GetPixels</A></B>. When computing how large a window it needs, the widget will add this amount to the height it would normally need (as determined by the height of the things displayed in the widget); if the geometry manager can satisfy this request, the widget will end up with extra internal space above and/or below what it displays inside. Most widgets only use this option for padding text: if they are displaying a bitmap or image, then they usually ignore padding options. <P><DT>Command-Line Name: <B><A NAME="M-relief">-relief</A></B> <DT>Database Name: <B>relief</B> <DT>Database Class: <B>Relief</B> <DD>Specifies the 3-D effect desired for the widget. Acceptable values are <B>raised</B>, <B>sunken</B>, <B>flat</B>, <B>ridge</B>, <B>solid</B>, and <B>groove</B>. The value indicates how the interior of the widget should appear relative to its exterior; for example, <B>raised</B> means the interior of the widget should appear to protrude from the screen, relative to the exterior of the widget. <P><DT>Command-Line Name: <B><A NAME="M-repeatdelay">-repeatdelay</A></B> <DT>Database Name: <B>repeatDelay</B> <DT>Database Class: <B>RepeatDelay</B> <DD>Specifies the number of milliseconds a button or key must be held down before it begins to auto-repeat. Used, for example, on the up- and down-arrows in scrollbars. <P><DT>Command-Line Name: <B><A NAME="M-repeatinterval">-repeatinterval</A></B> <DT>Database Name: <B>repeatInterval</B> <DT>Database Class: <B>RepeatInterval</B> <DD>Used in conjunction with <B>repeatDelay</B>: once auto-repeat begins, this option determines the number of milliseconds between auto-repeats. <P><DT>Command-Line Name: <B><A NAME="M-selectbackground">-selectbackground</A></B> <DT>Database Name: <B>selectBackground</B> <DT>Database Class: <B>Foreground</B> <DD>Specifies the background color to use when displaying selected items. <P><DT>Command-Line Name: <B><A NAME="M-selectborderwidth">-selectborderwidth</A></B> <DT>Database Name: <B>selectBorderWidth</B> <DT>Database Class: <B>BorderWidth</B> <DD>Specifies a non-negative value indicating the width of the 3-D border to draw around selected items. The value may have any of the forms acceptable to <B><A HREF="../TkLib/GetPixels.htm">Tk_GetPixels</A></B>. <P><DT>Command-Line Name: <B><A NAME="M-selectforeground">-selectforeground</A></B> <DT>Database Name: <B>selectForeground</B> <DT>Database Class: <B>Background</B> <DD>Specifies the foreground color to use when displaying selected items. <P><DT>Command-Line Name: <B><A NAME="M-setgrid">-setgrid</A></B> <DT>Database Name: <B>setGrid</B> <DT>Database Class: <B>SetGrid</B> <DD>Specifies a boolean value that determines whether this widget controls the resizing grid for its top-level window. This option is typically used in text widgets, where the information in the widget has a natural size (the size of a character) and it makes sense for the window's dimensions to be integral numbers of these units. These natural window sizes form a grid. If the <B>setGrid</B> option is set to true then the widget will communicate with the window manager so that when the user interactively resizes the top-level window that contains the widget, the dimensions of the window will be displayed to the user in grid units and the window size will be constrained to integral numbers of grid units. See the section GRIDDED GEOMETRY MANAGEMENT in the <B><A HREF="../TkCmd/wm.htm">wm</A></B> manual entry for more details. <P><DT>Command-Line Name: <B><A NAME="M-takefocus">-takefocus</A></B> <DT>Database Name: <B>takeFocus</B> <DT>Database Class: <B>TakeFocus</B> <DD>Determines whether the window accepts the focus during keyboard traversal (e.g., Tab and Shift-Tab). Before setting the focus to a window, the traversal scripts consult the value of the <B>takeFocus</B> option. A value of <B>0</B> means that the window should be skipped entirely during keyboard traversal. <B>1</B> means that the window should receive the input focus as long as it is viewable (it and all of its ancestors are mapped). An empty value for the option means that the traversal scripts make the decision about whether or not to focus on the window: the current algorithm is to skip the window if it is disabled, if it has no key bindings, or if it is not viewable. If the value has any other form, then the traversal scripts take the value, append the name of the window to it (with a separator space), and evaluate the resulting string as a Tcl script. The script must return <B>0</B>, <B>1</B>, or an empty string: a <B>0</B> or <B>1</B> value specifies whether the window will receive the input focus, and an empty string results in the default decision described above. Note: this interpretation of the option is defined entirely by the Tcl scripts that implement traversal: the widget implementations ignore the option entirely, so you can change its meaning if you redefine the keyboard traversal scripts. <P><DT>Command-Line Name: <B><A NAME="M-text">-text</A></B> <DT>Database Name: <B><A HREF="../TkCmd/text.htm">text</A></B> <DT>Database Class: <B><A HREF="../TkCmd/text.htm">Text</A></B> <DD>Specifies a string to be displayed inside the widget. The way in which the string is displayed depends on the particular widget and may be determined by other options, such as <B>anchor</B> or <B>justify</B>. <P><DT>Command-Line Name: <B><A NAME="M-textvariable">-textvariable</A></B> <DT>Database Name: <B>textVariable</B> <DT>Database Class: <B><A HREF="../TclCmd/variable.htm">Variable</A></B> <DD>Specifies the name of a variable. The value of the variable is a text string to be displayed inside the widget; if the variable value changes then the widget will automatically update itself to reflect the new value. The way in which the string is displayed in the widget depends on the particular widget and may be determined by other options, such as <B>anchor</B> or <B>justify</B>. <P><DT>Command-Line Name: <B><A NAME="M-troughcolor">-troughcolor</A></B> <DT>Database Name: <B>troughColor</B> <DT>Database Class: <B>Background</B> <DD>Specifies the color to use for the rectangular trough areas in widgets such as scrollbars and scales. <P><DT>Command-Line Name: <B><A NAME="M-underline">-underline</A></B> <DT>Database Name: <B>underline</B> <DT>Database Class: <B>Underline</B> <DD>Specifies the integer index of a character to underline in the widget. This option is used by the default bindings to implement keyboard traversal for menu buttons and menu entries. 0 corresponds to the first character of the text displayed in the widget, 1 to the next character, and so on. <P><DT>Command-Line Name: <B><A NAME="M-wraplength">-wraplength</A></B> <DT>Database Name: <B>wrapLength</B> <DT>Database Class: <B>WrapLength</B> <DD>For widgets that can perform word-wrapping, this option specifies the maximum line length. Lines that would exceed this length are wrapped onto the next line, so that no line is longer than the specified length. The value may be specified in any of the standard forms for screen distances. If this value is less than or equal to 0 then no wrapping is done: lines will break only at newline characters in the text. <P><DT>Command-Line Name: <B><A NAME="M-xscrollcommand">-xscrollcommand</A></B> <DT>Database Name: <B>xScrollCommand</B> <DT>Database Class: <B>ScrollCommand</B> <DD>Specifies the prefix for a command used to communicate with horizontal scrollbars. When the view in the widget's window changes (or whenever anything else occurs that could change the display in a scrollbar, such as a change in the total size of the widget's contents), the widget will generate a Tcl command by concatenating the scroll command and two numbers. Each of the numbers is a fraction between 0 and 1, which indicates a position in the document. 0 indicates the beginning of the document, 1 indicates the end, .333 indicates a position one third the way through the document, and so on. The first fraction indicates the first information in the document that is visible in the window, and the second fraction indicates the information just after the last portion that is visible. The command is then passed to the Tcl interpreter for execution. Typically the <B>xScrollCommand</B> option consists of the path name of a scrollbar widget followed by ``set'', e.g. ``.x.scrollbar set'': this will cause the scrollbar to be updated whenever the view in the window changes. If this option is not specified, then no command will be executed. <P><DT>Command-Line Name: <B><A NAME="M-yscrollcommand">-yscrollcommand</A></B> <DT>Database Name: <B>yScrollCommand</B> <DT>Database Class: <B>ScrollCommand</B> <DD>Specifies the prefix for a command used to communicate with vertical scrollbars. This option is treated in the same way as the <B>xScrollCommand</B> option, except that it is used for vertical scrollbars and is provided by widgets that support vertical scrolling. See the description of <B>xScrollCommand</B> for details on how this option is used. </DL> <H3><A NAME="M4">KEYWORDS</A></H3> <A href="../Keywords/C.htm#class">class</A>, <A href="../Keywords/N.htm#name">name</A>, <A href="../Keywords/S.htm#standard option">standard option</A>, <A href="../Keywords/S.htm#switch">switch</A> <HR><PRE> <A HREF="../copyright.htm">Copyright</A> © 1990-1994 The Regents of the University of California. <A HREF="../copyright.htm">Copyright</A> © 1994-1996 Sun Microsystems, Inc. <A HREF="../copyright.htm">Copyright</A> © 1995-1997 Roger E. Critchlow Jr.</PRE> </BODY></HTML> |
Added CHANGES.txt.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 | ____________________________________________________________ BWidget 1.2.1 (07/09/1999) CHANGES FROM 1.2 TO 1.2.1 This version is the first patch of 1.2. It does not introduce incompatibilites. This patch include some new requested features, that I think can't wait for 1.3: - special menu handling (see MainFrame) - tabs bindings in NoteBook - label alignment of LabelFrame - -repeatdelay and -repeatinterval options on SpinBox * Entry - <Destroy> event added to tag BwDisabledEntry - fixed bug when -textvariable use a variable containing space * MainFrame - fixed bug when -textvariable use a variable containing space - menubar entry creation modified to use the menuid as the subpathname to permit special menu (help, system, apple) * LabelFrame - LabelFrame::align command added * ScrollableFrame - fixed typo bug * PagesManager - fixed bug of window size - 'pages' modified to optionally include first and last indices. ('page' is still available but deprecated) * NoteBook - new command 'bindtabs' - fixed bug in handling result of -leavecmd command - 'pages' modified to optionally include first and last indices. ('page' is still available but deprecated) * ComboBox - little border added around the popdown list, which appeared to have no border under windows when popped above a widget with the same background color. * SpinBox - options -repeatdelay and -repeatinterval added. * Tree - fixed strange behaviour when editing: 'selection range' replaced by 'selection from'/'selection to' - widget is redrawn if needed in 'edit' and 'see' - fixed bug in see - nodes modified to optionally include first and last indices. - _subdelete modified to iterative method * ListBox - fixed strange behaviour when editing: 'selection range' replaced by 'selection from'/'selection to' - ListBox is redrawn if needed in 'edit' and 'see' - fixed bug in see - 'items' modified to optionally include first and last indices. ('item' is still available but deprecated) * SelectColor - fixed bug in call to GlobalVar::trace renamed GlobalVar::tracevar * DragSite and DropSite - fixed bug introduced by new button event. * DynamicHelp - restored version of 1.1, due to the bug under windows * BWidget::place - fixed bug when x or y is 0. * es.rc resource file included ____________________________________________________________ BWidget 1.2 (05/21/1999) CHANGES FROM 1.1 TO 1.2 * 4 new widget: - ScrollableFrame - ScrollView - PagesManager - PasswdDlg (contributed by Stephane Lavirotte) * Widget: - Flag option type added - option resource database read while widget creation, not while widget class creation. - better handling of BWidget definition using another BWidget as a top pathname. * MainFrame - more options included for ProgressBar (INCOMPATIBILITY: option -variable renamed -progressvar) - -menu option modified to have tags on entries and menu id on cascad menu (INCOMPATIBILITY of option -menu) - new command: getmenu - new command: setmenustate * DropSite - operations completly reworked - option -droptypes modified (INCOMPATIBILITY) - return code of -dropovercmd modified bit 'ok' and bit 'recall' reverted (INCOMPATIBILITY in -dropovercmd command) - new command: setoperation * DragSite: - Drag now initiates while <ButtonPress-x> followed by <Bx-Motion> of 4 pixels, so it is possible to have a <ButtonPress-x> event and drag event on the same button. - -dragevent option modified: must be the number of the button: 1, 2 or 3 Option is now defaulted to 1, but Entry widget keep it to 3. (INCOMPATIBILITY) - return result of -draginitcmd modified (INCOMPATIBILITY) * ListBox: - edit command improved. new arguments: initial text, and command to verify the text before accept it. (INCOMPATIBILITY in call to edit) - Drag and Drop modified (INCOMPATIBILITY in -dropovercmd command) - new command: reorder * Tree: - edit command improved. new arguments: initial text, and command to verify the text before accept it. (INCOMPATIBILITY in call to edit) - Drag and Drop modified (INCOMPATIBILITY in -dropovercmd command) - new command: reorder - new command: visible - less full-redraw * NoteBook: - relief reworked - added option -leavecmd on pages - option -image implemented - new command: move - delete command now accept an optionnal argument specifying whether the frame of the page should be destroyed or not. If not, this frame is reused by insert command for the same page. * Entry and LabelEntry: - direct access to entry command - bind command added on the entry subwidget * ComboBox: - option -postcommand added - bind command added on the entry subwidget * SpinBox: - bind command added on the entry subwidget - floating point fixed - work needed * ProgressBar: - now can be incremental or not limited ('unknow-time' processing) * Bitmap: - xpm image type added with use of xpm-to-image by Roger E. Critchlow Jr. * Lots of focus problem solved * ...and bugs corrected. INCOMPATIBILITIES Incompatibilities are very localized, so we hope that it will not be painfull to upgrade to 1.2. * MainFrame related imcompatibilities - Upgrade MainFrame -menu option and change -variable option by -progressvar. * Drag and drop related imcompatibilities - Upgrade -dragevent option, and command associated to -draginitcmd and -dropovercmd. - Upgrade -dragendcmd/-dragovercmd command of Tree and ListBox widget * Edition in Tree and ListBox - Verify arguments passed in call to edit command of Tree and ListBox ____________________________________________________________ BWidget 1.1 (03/12/1999) CHANGES FROM 1.0 TO 1.1 WHAT'S NEW The most important change in BWidget 1.1 is the support of tk path command, but the old syntax is always available. configure command now returns a valid configuration information list. (I hope that) All submitted bugs have been corrected. Following widget have been reworked: * ListBox: - ListBox items have now a -indent option. - insert command modified to look more as a tk listbox insert command (see INCOMPATIBILITIES) - item command added to retreive one or more items * Tree: - insert command modified to look more as a listbox insert command (see INCOMPATIBILITIES) * LabelEntry: - -value and -variable options renamed to -text and -textvariable (see INCOMPATIBILITIES) * SpinBox and ComboBox: - -value and -variable options renamed to -text and -textvariable (see INCOMPATIBILITIES) - New command getvalue and setvalue added to manipulate current value by index. * NoteBook: - Pages have now an identifier. - insert command modififed (see INCOMPATIBILITIES) - page command added to retreive one or more pages - getframe command added INCOMPATIBILITIES (sorry for this) * LabelEntry, SpinBox and ComboBox: - -value and -variable options renamed to -text and -textvariable * Entry and LabelEntry: - setfocus doesn't exist anymore. Directly use tk command focus. * NoteBook: - Pages have now an identifier, which modifies insert command: NoteBook::insert $nb index ?option value ...? is now $nb insert index page ?option value ...? * Tree: - insert command modified: Tree::insert $nb $parent $node $index ?option value ...? becomes $tree insert $index $parent $node ?option value ...? * ListBox: - insert command modified: ListBox::insert $list $item $index ?option value ...? becomes $list insert $index $item ?option value ...? ____________________________________________________________ BWidget 1.0 (02/19/1999) First release. |
Added LGPL.txt.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 | GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the library's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. <signature of Ty Coon>, 1 April 1990 Ty Coon, President of Vice That's all there is to it! |
Added LICENSE.txt.
> > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | BWidget ToolKit Copyright (c) 1998-1999 UNIFIX. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
Added README.txt.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 | 07/09/1999 BWidget ToolKit 1.2.1 Copyright (c) 1998-1999 UNIFIX. -------------------------------------------------------------------------- WHAT IS BWIDGET ? The BWidget Toolkit is a high-level Widgets Set for Tcl/Tk built using native Tcl/Tk 8.x namespaces. The BWidgets have a professional look&feel as in other well known Toolkits (Tix or Incr Widget) but the concept is radically different because everything is native so no platform compilation, no compiled extension library are needed. The code is 100% Pure Tcl/Tk. -------------------------------------------------------------------------- WIDGET LIST (1.2.1) Simple Widgets Label Extended Label widget Entry Extended Entry widget Button Extended Button widget ArrowButton Button widget with an arrow shape. ProgressBar Progress indicator widget ScrollView Display the visible area of a scrolled window Separator 3D separator widget Manager Widgets MainFrame Manage toplevel with menu, toolbar and statusbar LabelFrame Frame with a Label TitleFrame Frame with a title ScrolledWindow Generic scrolled widget ScrollableFrame Scrollable frame containing widget PanedWindow Tiled layout manager widget ButtonBox Set of buttons with horizontal or vertical layout PagesManager Pages manager widget NoteBook Notebook manager widget Dialog Dialog abstraction with custom buttons Composite Widgets LabelEntry LabelFrame containing an Entry widget. ComboBox ComboBox widget SpinBox SpinBox widget Tree Tree widget ListBox ListBox widget MessageDlg Message dialog box ProgressDlg Progress indicator dialog box PasswdDlg Login/Password dialog box (contributed by Stephane Lavirotte) SelectFont Font selection widget SelectColor Color selection widget Commands Classes Widget The Widget base class DynamicHelp Provide help to Tk widget or BWidget DragSite Commands set for Drag facilities DropSite Commands set for Drop facilities BWidget Utilities -------------------------------------------------------------------------- INSTALLATION AND USE - On Unix Platform: Uncompress the file BWidget-1.2.1.tar.Z or BWidget-1.2.1.tar.gz To use the BWidget: - If you have uncompressed the archive file under the Tcl Library Path directory, you only need to do: % package require BWidget - If not, you have to specify the BWidget installation path in auto_path global variable: % lappend auto_path <install_path> % package require BWidget To launch the demo, you need to cd into the demo subdirectory: $ cd <install_path>/demo $ wish demo.tcl - On Windows and others Platforms: Uncompress the file BWidget-1.2.1.zip To use the BWidget: - If you uncompressed the archive file under the Tcl Library Path directory, you only need to do: % package require BWidget - If not, you have to specify the BWidget installation path in auto_path global variable: % lappend auto_path your_path % package require BWidget To launch the demo : Double click on demo.tcl in the demo subdirectory Distribution contains these directories: BWidget-1.2 Root directory and BWidget Tcl sources BWman HTML manual pages images images used by BWidget lang Resources for language customization demo Demo sources -------------------------------------------------------------------------- DOCUMENTATION HTML manual pages are available in the BWman subdirectory. Points to index.html for frame version with tree navigation, or to contents.html for no frame version. Look at http://www.unifix-online.com/BWidget for last revision of manual pages. -------------------------------------------------------------------------- LICENSE BWidget ToolKit 1.2.1 Copyright (c) 1998-1999 UNIFIX. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. License is also in LICENSE.txt. You can find LGPL.txt too. -------------------------------------------------------------------------- CONTACTS Mail mailto:[email protected] Home page http://www.unifix-online.com/BWidget/ Bug Report and FAQ : See Home Page |
Added arrow.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 | # ------------------------------------------------------------------------------ # arrow.tcl # This file is part of Unifix BWidget Toolkit # ------------------------------------------------------------------------------ # Index of commands: # Public commands # - ArrowButton::create # - ArrowButton::configure # - ArrowButton::cget # - ArrowButton::invoke # Private commands (redraw commands) # - ArrowButton::_redraw # - ArrowButton::_redraw_state # - ArrowButton::_redraw_relief # - ArrowButton::_redraw_whole # Private commands (event bindings) # - ArrowButton::_destroy # - ArrowButton::_enter # - ArrowButton::_leave # - ArrowButton::_press # - ArrowButton::_release # - ArrowButton::_repeat # ------------------------------------------------------------------------------ namespace eval ArrowButton { Widget::tkinclude ArrowButton button :cmd \ include { -borderwidth -bd -background -bg -relief -highlightbackground -highlightcolor -highlightthickness -takefocus} Widget::declare ArrowButton { {-type Enum button 0 {arrow button}} {-dir Enum top 0 {top bottom left right}} {-width Int 15 0 {=0}} {-height Int 15 0 {=0}} {-ipadx Int 0 0 {=0}} {-ipady Int 0 0 {=0}} {-clean Int 2 0 {=0 =2}} {-activeforeground TkResource "" 0 button} {-activebackground TkResource "" 0 button} {-disabledforeground TkResource "" 0 button} {-foreground TkResource "" 0 button} {-state TkResource "" 0 button} {-troughcolor TkResource "" 0 scrollbar} {-arrowbd Int 1 0 {=1 =2}} {-arrowrelief Enum raised 0 {raised sunken}} {-command String "" 0} {-armcommand String "" 0} {-disarmcommand String "" 0} {-repeatdelay Int 0 0 {=0}} {-repeatinterval Int 0 0 {=0}} {-bd Synonym -borderwidth} {-fg Synonym -foreground} } DynamicHelp::include ArrowButton balloon proc ::ArrowButton { path args } { return [eval ArrowButton::create $path $args] } proc use {} {} bind BwArrowButton <Enter> {ArrowButton::_enter %W} bind BwArrowButton <Leave> {ArrowButton::_leave %W} bind BwArrowButton <ButtonPress-1> {ArrowButton::_press %W} bind BwArrowButton <ButtonRelease-1> {ArrowButton::_release %W} bind BwArrowButton <Key-space> {ArrowButton::invoke %W; break} bind BwArrowButton <Return> {ArrowButton::invoke %W; break} bind BwArrowButton <Configure> {ArrowButton::_redraw_whole %W %w %h} bind BwArrowButton <Destroy> {ArrowButton::_destroy %W} variable _grab variable _moved array set _grab {current "" pressed "" oldstate "" oldrelief ""} } # ------------------------------------------------------------------------------ # Command ArrowButton::create # ------------------------------------------------------------------------------ proc ArrowButton::create { path args } { variable _moved Widget::init ArrowButton $path $args set w [Widget::getoption $path -width] set h [Widget::getoption $path -height] set bd [Widget::getoption $path -borderwidth] set ht [Widget::getoption $path -highlightthickness] set pad [expr {2*($bd+$ht)}] eval canvas $path [Widget::subcget $path :cmd] \ -width [expr {$w-$pad}] -height [expr {$h-$pad}] bindtags $path [list $path BwArrowButton [winfo toplevel $path] all] DynamicHelp::sethelp $path $path 1 set _moved($path) 0 rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval ArrowButton::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command ArrowButton::configure # ------------------------------------------------------------------------------ proc ArrowButton::configure { path args } { set res [Widget::configure $path $args] set ch1 [expr {[Widget::hasChanged $path -width w] | [Widget::hasChanged $path -height h] | [Widget::hasChanged $path -borderwidth bd] | [Widget::hasChanged $path -highlightthickness ht]}] set ch2 [expr {[Widget::hasChanged $path -type val] | [Widget::hasChanged $path -ipadx val] | [Widget::hasChanged $path -ipady val] | [Widget::hasChanged $path -arrowbd val] | [Widget::hasChanged $path -clean val] | [Widget::hasChanged $path -dir val]}] if { $ch1 } { set pad [expr {2*($bd+$ht)}] $path:cmd configure \ -width [expr {$w-$pad}] -height [expr {$h-$pad}] \ -borderwidth $bd -highlightthickness $ht } elseif { $ch2 } { _redraw_whole $path [winfo width $path] [winfo height $path] } else { _redraw_relief $path _redraw_state $path } DynamicHelp::sethelp $path $path return $res } # ------------------------------------------------------------------------------ # Command ArrowButton::cget # ------------------------------------------------------------------------------ proc ArrowButton::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command ArrowButton::invoke # ------------------------------------------------------------------------------ proc ArrowButton::invoke { path } { if { [string compare [Widget::getoption $path -state] "disabled"] } { set oldstate [Widget::getoption $path -state] if { ![string compare [Widget::getoption $path -type] "button"] } { set oldrelief [Widget::getoption $path -relief] configure $path -state active -relief sunken } else { set oldrelief [Widget::getoption $path -arrowrelief] configure $path -state active -arrowrelief sunken } update idletasks if { [set cmd [Widget::getoption $path -armcommand]] != "" } { uplevel \#0 $cmd } after 10 if { ![string compare [Widget::getoption $path -type] "button"] } { configure $path -state $oldstate -relief $oldrelief } else { configure $path -state $oldstate -arrowrelief $oldrelief } if { [set cmd [Widget::getoption $path -disarmcommand]] != "" } { uplevel \#0 $cmd } if { [set cmd [Widget::getoption $path -command]] != "" } { uplevel \#0 $cmd } } } # ------------------------------------------------------------------------------ # Command ArrowButton::_redraw # ------------------------------------------------------------------------------ proc ArrowButton::_redraw { path width height } { variable _moved set _moved($path) 0 set type [Widget::getoption $path -type] set dir [Widget::getoption $path -dir] set bd [expr {[$path:cmd cget -borderwidth] + [$path:cmd cget -highlightthickness] + 1}] set clean [Widget::getoption $path -clean] if { ![string compare $type "arrow"] } { if { [set id [$path:cmd find withtag rect]] == "" } { $path:cmd create rectangle $bd $bd [expr {$width-$bd-1}] [expr {$height-$bd-1}] -tags rect } else { $path:cmd coords $id $bd $bd [expr {$width-$bd-1}] [expr {$height-$bd-1}] } $path:cmd lower rect set arrbd [Widget::getoption $path -arrowbd] set bd [expr {$bd+$arrbd-1}] } else { $path:cmd delete rect } # w and h are max width and max height of arrow set w [expr {$width - 2*([Widget::getoption $path -ipadx]+$bd)}] set h [expr {$height - 2*([Widget::getoption $path -ipady]+$bd)}] if { $w < 2 } {set w 2} if { $h < 2 } {set h 2} if { $clean > 0 } { # arrange for base to be odd if { ![string compare $dir "top"] || ![string compare $dir "bottom"] } { if { !($w % 2) } { incr w -1 } if { $clean == 2 } { # arrange for h = (w+1)/2 set h2 [expr {($w+1)/2}] if { $h2 > $h } { set w [expr {2*$h-1}] } else { set h $h2 } } } else { if { !($h % 2) } { incr h -1 } if { $clean == 2 } { # arrange for w = (h+1)/2 set w2 [expr {($h+1)/2}] if { $w2 > $w } { set h [expr {2*$w-1}] } else { set w $w2 } } } } set x0 [expr {($width-$w)/2}] set y0 [expr {($height-$h)/2}] set x1 [expr {$x0+$w-1}] set y1 [expr {$y0+$h-1}] switch $dir { top { set xd [expr {($x0+$x1)/2}] if { [set id [$path:cmd find withtag poly]] == "" } { $path:cmd create polygon $x0 $y1 $x1 $y1 $xd $y0 -tags poly } else { $path:cmd coords $id $x0 $y1 $x1 $y1 $xd $y0 } if { ![string compare $type "arrow"] } { if { [set id [$path:cmd find withtag bot]] == "" } { $path:cmd create line $x0 $y1 $x1 $y1 $xd $y0 -tags bot } else { $path:cmd coords $id $x0 $y1 $x1 $y1 $xd $y0 } if { [set id [$path:cmd find withtag top]] == "" } { $path:cmd create line $x0 $y1 $xd $y0 -tags top } else { $path:cmd coords $id $x0 $y1 $xd $y0 } $path:cmd itemconfigure top -width $arrbd $path:cmd itemconfigure bot -width $arrbd } else { $path:cmd delete top $path:cmd delete bot } } bottom { set xd [expr {($x0+$x1)/2}] if { [set id [$path:cmd find withtag poly]] == "" } { $path:cmd create polygon $x1 $y0 $x0 $y0 $xd $y1 -tags poly } else { $path:cmd coords $id $x1 $y0 $x0 $y0 $xd $y1 } if { ![string compare $type "arrow"] } { if { [set id [$path:cmd find withtag top]] == "" } { $path:cmd create line $x1 $y0 $x0 $y0 $xd $y1 -tags top } else { $path:cmd coords $id $x1 $y0 $x0 $y0 $xd $y1 } if { [set id [$path:cmd find withtag bot]] == "" } { $path:cmd create line $x1 $y0 $xd $y1 -tags bot } else { $path:cmd coords $id $x1 $y0 $xd $y1 } $path:cmd itemconfigure top -width $arrbd $path:cmd itemconfigure bot -width $arrbd } else { $path:cmd delete top $path:cmd delete bot } } left { set yd [expr {($y0+$y1)/2}] if { [set id [$path:cmd find withtag poly]] == "" } { $path:cmd create polygon $x1 $y0 $x1 $y1 $x0 $yd -tags poly } else { $path:cmd coords $id $x1 $y0 $x1 $y1 $x0 $yd } if { ![string compare $type "arrow"] } { if { [set id [$path:cmd find withtag bot]] == "" } { $path:cmd create line $x1 $y0 $x1 $y1 $x0 $yd -tags bot } else { $path:cmd coords $id $x1 $y0 $x1 $y1 $x0 $yd } if { [set id [$path:cmd find withtag top]] == "" } { $path:cmd create line $x1 $y0 $x0 $yd -tags top } else { $path:cmd coords $id $x1 $y0 $x0 $yd } $path:cmd itemconfigure top -width $arrbd $path:cmd itemconfigure bot -width $arrbd } else { $path:cmd delete top $path:cmd delete bot } } right { set yd [expr {($y0+$y1)/2}] if { [set id [$path:cmd find withtag poly]] == "" } { $path:cmd create polygon $x0 $y1 $x0 $y0 $x1 $yd -tags poly } else { $path:cmd coords $id $x0 $y1 $x0 $y0 $x1 $yd } if { ![string compare $type "arrow"] } { if { [set id [$path:cmd find withtag top]] == "" } { $path:cmd create line $x0 $y1 $x0 $y0 $x1 $yd -tags top } else { $path:cmd coords $id $x0 $y1 $x0 $y0 $x1 $yd } if { [set id [$path:cmd find withtag bot]] == "" } { $path:cmd create line $x0 $y1 $x1 $yd -tags bot } else { $path:cmd coords $id $x0 $y1 $x1 $yd } $path:cmd itemconfigure top -width $arrbd $path:cmd itemconfigure bot -width $arrbd } else { $path:cmd delete top $path:cmd delete bot } } } } # ------------------------------------------------------------------------------ # Command ArrowButton::_redraw_state # ------------------------------------------------------------------------------ proc ArrowButton::_redraw_state { path } { set state [Widget::getoption $path -state] if { ![string compare [Widget::getoption $path -type] "button"] } { switch $state { normal {set bg -background; set fg -foreground} active {set bg -activebackground; set fg -activeforeground} disabled {set bg -background; set fg -disabledforeground} } set fg [Widget::getoption $path $fg] $path:cmd configure -background [Widget::getoption $path $bg] $path:cmd itemconfigure poly -fill $fg -outline $fg } else { switch $state { normal {set stipple ""; set bg [Widget::getoption $path -background] } active {set stipple ""; set bg [Widget::getoption $path -activebackground] } disabled {set stipple gray50; set bg black } } set thrc [Widget::getoption $path -troughcolor] $path:cmd configure -background [Widget::getoption $path -background] $path:cmd itemconfigure rect -fill $thrc -outline $thrc $path:cmd itemconfigure poly -fill $bg -outline $bg -stipple $stipple } } # ------------------------------------------------------------------------------ # Command ArrowButton::_redraw_relief # ------------------------------------------------------------------------------ proc ArrowButton::_redraw_relief { path } { variable _moved if { ![string compare [Widget::getoption $path -type] "button"] } { if { ![string compare [Widget::getoption $path -relief] "sunken"] } { if { !$_moved($path) } { $path:cmd move poly 1 1 set _moved($path) 1 } } else { if { $_moved($path) } { $path:cmd move poly -1 -1 set _moved($path) 0 } } } else { set col3d [BWidget::get3dcolor $path [Widget::getoption $path -background]] switch [Widget::getoption $path -arrowrelief] { raised {set top [lindex $col3d 1]; set bot [lindex $col3d 0]} sunken {set top [lindex $col3d 0]; set bot [lindex $col3d 1]} } $path:cmd itemconfigure top -fill $top $path:cmd itemconfigure bot -fill $bot } } # ------------------------------------------------------------------------------ # Command ArrowButton::_redraw_whole # ------------------------------------------------------------------------------ proc ArrowButton::_redraw_whole { path width height } { _redraw $path $width $height _redraw_relief $path _redraw_state $path } # ------------------------------------------------------------------------------ # Command ArrowButton::_destroy # ------------------------------------------------------------------------------ proc ArrowButton::_destroy { path } { variable _moved Widget::destroy $path unset _moved($path) rename $path {} } # ------------------------------------------------------------------------------ # Command ArrowButton::_enter # ------------------------------------------------------------------------------ proc ArrowButton::_enter { path } { variable _grab set _grab(current) $path if { [string compare [Widget::getoption $path -state] "disabled"] } { set _grab(oldstate) [Widget::getoption $path -state] configure $path -state active if { $_grab(pressed) == $path } { if { ![string compare [Widget::getoption $path -type] "button"] } { set _grab(oldrelief) [Widget::getoption $path -relief] configure $path -relief sunken } else { set _grab(oldrelief) [Widget::getoption $path -arrowrelief] configure $path -arrowrelief sunken } } } } # ------------------------------------------------------------------------------ # Command ArrowButton::_leave # ------------------------------------------------------------------------------ proc ArrowButton::_leave { path } { variable _grab set _grab(current) "" if { [string compare [Widget::getoption $path -state] "disabled"] } { configure $path -state $_grab(oldstate) if { $_grab(pressed) == $path } { if { ![string compare [Widget::getoption $path -type] "button"] } { configure $path -relief $_grab(oldrelief) } else { configure $path -arrowrelief $_grab(oldrelief) } } } } # ------------------------------------------------------------------------------ # Command ArrowButton::_press # ------------------------------------------------------------------------------ proc ArrowButton::_press { path } { variable _grab if { [string compare [Widget::getoption $path -state] "disabled"] } { set _grab(pressed) $path if { ![string compare [Widget::getoption $path -type] "button"] } { set _grab(oldrelief) [Widget::getoption $path -relief] configure $path -relief sunken } else { set _grab(oldrelief) [Widget::getoption $path -arrowrelief] configure $path -arrowrelief sunken } if { [set cmd [Widget::getoption $path -armcommand]] != "" } { uplevel \#0 $cmd if { [set delay [Widget::getoption $path -repeatdelay]] > 0 || [set delay [Widget::getoption $path -repeatinterval]] > 0 } { after $delay "ArrowButton::_repeat $path" } } } } # ------------------------------------------------------------------------------ # Command ArrowButton::_release # ------------------------------------------------------------------------------ proc ArrowButton::_release { path } { variable _grab if { $_grab(pressed) == $path } { set _grab(pressed) "" if { ![string compare [Widget::getoption $path -type] "button"] } { configure $path -relief $_grab(oldrelief) } else { configure $path -arrowrelief $_grab(oldrelief) } if { [set cmd [Widget::getoption $path -disarmcommand]] != "" } { uplevel \#0 $cmd } if { $_grab(current) == $path && [string compare [Widget::getoption $path -state] "disabled"] && [set cmd [Widget::getoption $path -command]] != "" } { uplevel \#0 $cmd } } } # ------------------------------------------------------------------------------ # Command ArrowButton::_repeat # ------------------------------------------------------------------------------ proc ArrowButton::_repeat { path } { variable _grab if { $_grab(current) == $path && $_grab(pressed) == $path && [string compare [Widget::getoption $path -state] "disabled"] && [set cmd [Widget::getoption $path -armcommand]] != "" } { uplevel \#0 $cmd } if { $_grab(pressed) == $path && ([set delay [Widget::getoption $path -repeatinterval]] > 0 || [set delay [Widget::getoption $path -repeatdelay]] > 0) } { after $delay "ArrowButton::_repeat $path" } } |
Added bitmap.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | # ------------------------------------------------------------------------------ # bitmap.tcl # This file is part of Unifix BWidget Toolkit # $Id: bitmap.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - Bitmap::get # - Bitmap::_init # ------------------------------------------------------------------------------ namespace eval Bitmap { variable path variable _bmp variable _types { photo .gif photo .ppm bitmap .xbm photo .xpm } proc use {} {} } # ------------------------------------------------------------------------------ # Command Bitmap::get # ------------------------------------------------------------------------------ proc Bitmap::get { name } { variable path variable _bmp variable _types if {[info exists _bmp($name)]} { return $_bmp($name) } # --- Nom de fichier avec extension ------------------------------------------------------ set ext [file extension $name] if { $ext != "" } { if { ![info exists _bmp($ext)] } { error "$ext not supported" } if { [file exists $name] } { if {![string compare $ext ".xpm"]} { set _bmp($name) [xpm-to-image $name] return $_bmp($name) } if {![catch {set _bmp($name) [image create $_bmp($ext) -file $name]}]} { return $_bmp($name) } } } foreach dir $path { foreach {type ext} $_types { if { [file exists [file join $dir $name$ext]] } { if {![string compare $ext ".xpm"]} { set _bmp($name) [xpm-to-image [file join $dir $name$ext]] return $_bmp($name) } else { if {![catch {set _bmp($name) [image create $type -file [file join $dir $name$ext]]}]} { return $_bmp($name) } } } } } return -code error "$name not found" } # ------------------------------------------------------------------------------ # Command Bitmap::_init # ------------------------------------------------------------------------------ proc Bitmap::_init { } { global env variable path variable _bmp variable _types set path [list "." [file join $env(BWIDGET_LIBRARY) images]] set supp [image types] foreach {type ext} $_types { if { [lsearch $supp $type] != -1} { set _bmp($ext) $type } } } Bitmap::_init |
Added button.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 | # ------------------------------------------------------------------------------ # button.tcl # This file is part of Unifix BWidget Toolkit # ------------------------------------------------------------------------------ # Index of commands: # Public commands # - Button::create # - Button::configure # - Button::cget # - Button::invoke # Private commands (event bindings) # - Button::_destroy # - Button::_enter # - Button::_leave # - Button::_press # - Button::_release # - Button::_repeat # ------------------------------------------------------------------------------ namespace eval Button { Widget::tkinclude Button button :cmd \ remove {-command -relief -text -textvariable -underline} Widget::declare Button { {-name String "" 0} {-text String "" 0} {-textvariable String "" 0} {-underline Int -1 0 {=-1}} {-armcommand String "" 0} {-disarmcommand String "" 0} {-command String "" 0} {-repeatdelay Int 0 0 {=0 ""}} {-repeatinterval Int 0 0 {=0 ""}} {-relief Enum raised 0 {raised sunken flat ridge solid groove link}} } DynamicHelp::include Button balloon Widget::syncoptions Button "" :cmd {-text {} -underline {}} variable _current "" variable _pressed "" bind BwButton <Enter> {Button::_enter %W} bind BwButton <Leave> {Button::_leave %W} bind BwButton <ButtonPress-1> {Button::_press %W} bind BwButton <ButtonRelease-1> {Button::_release %W} bind BwButton <Key-space> {Button::invoke %W; break} bind BwButton <Return> {Button::invoke %W; break} bind BwButton <Destroy> {Widget::destroy %W; rename %W {}} proc ::Button { path args } { return [eval Button::create $path $args] } proc use {} {} } # ------------------------------------------------------------------------------ # Command Button::create # ------------------------------------------------------------------------------ proc Button::create { path args } { Widget::init Button $path $args set relief [Widget::getoption $path -relief] if { ![string compare $relief "link"] } { set relief "flat" } set var [Widget::getoption $path -textvariable] if { ![string length $var] } { set desc [BWidget::getname [Widget::getoption $path -name]] if { [llength $desc] } { set text [lindex $desc 0] set under [lindex $desc 1] Widget::setoption $path -text $text Widget::setoption $path -underline $under } else { set text [Widget::getoption $path -text] set under [Widget::getoption $path -underline] } } else { set under -1 set text "" Widget::setoption $path -underline $under } eval button $path [Widget::subcget $path :cmd] \ [list -relief $relief -text $text -underline $under -textvariable $var] bindtags $path [list $path BwButton [winfo toplevel $path] all] set accel [string tolower [string index $text $under]] if { $accel != "" } { bind [winfo toplevel $path] <Alt-$accel> "Button::invoke $path" } DynamicHelp::sethelp $path $path 1 rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval Button::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command Button::configure # ------------------------------------------------------------------------------ proc Button::configure { path args } { set oldunder [$path:cmd cget -underline] if { $oldunder != -1 } { set oldaccel [string tolower [string index [$path:cmd cget -text] $oldunder]] } else { set oldaccel "" } set res [Widget::configure $path $args] set rc [Widget::hasChanged $path -relief relief] set sc [Widget::hasChanged $path -state state] if { $rc || $sc } { if { ![string compare $relief "link"] } { if { ![string compare $state "active"] } { set relief "raised" } else { set relief "flat" } } $path:cmd configure -relief $relief -state $state } set cv [Widget::hasChanged $path -textvariable var] set cn [Widget::hasChanged $path -name name] set ct [Widget::hasChanged $path -text text] set cu [Widget::hasChanged $path -underline under] if { $cv || $cn || $ct || $cu } { if { ![string length $var] } { set desc [BWidget::getname $name] if { [llength $desc] } { set text [lindex $desc 0] set under [lindex $desc 1] } } else { set under -1 set text "" } set top [winfo toplevel $path] bind $top <Alt-$oldaccel> {} set accel [string tolower [string index $text $under]] if { $accel != "" } { bind $top <Alt-$accel> "Button::invoke $path" } $path:cmd configure -text $text -underline $under -textvariable $var } DynamicHelp::sethelp $path $path return $res } # ------------------------------------------------------------------------------ # Command Button::cget # ------------------------------------------------------------------------------ proc Button::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command Button::invoke # ------------------------------------------------------------------------------ proc Button::invoke { path } { if { [string compare [$path:cmd cget -state] "disabled"] } { $path:cmd configure -state active -relief sunken update idletasks if { [set cmd [Widget::getoption $path -armcommand]] != "" } { uplevel \#0 $cmd } after 100 set relief [Widget::getoption $path -relief] if { ![string compare $relief "link"] } { set relief flat } $path:cmd configure \ -state [Widget::getoption $path -state] \ -relief $relief if { [set cmd [Widget::getoption $path -disarmcommand]] != "" } { uplevel \#0 $cmd } if { [set cmd [Widget::getoption $path -command]] != "" } { uplevel \#0 $cmd } } } # ------------------------------------------------------------------------------ # Command Button::_enter # ------------------------------------------------------------------------------ proc Button::_enter { path } { variable _current variable _pressed set _current $path if { [string compare [$path:cmd cget -state] "disabled"] } { $path:cmd configure -state active if { $_pressed == $path } { $path:cmd configure -relief sunken } elseif { ![string compare [Widget::getoption $path -relief] "link"] } { $path:cmd configure -relief raised } } } # ------------------------------------------------------------------------------ # Command Button::_leave # ------------------------------------------------------------------------------ proc Button::_leave { path } { variable _current variable _pressed set _current "" if { [string compare [$path:cmd cget -state] "disabled"] } { $path:cmd configure -state [Widget::getoption $path -state] set relief [Widget::getoption $path -relief] if { $_pressed == $path } { if { ![string compare $relief "link"] } { set relief raised } $path:cmd configure -relief $relief } elseif { ![string compare $relief "link"] } { $path:cmd configure -relief flat } } } # ------------------------------------------------------------------------------ # Command Button::_press # ------------------------------------------------------------------------------ proc Button::_press { path } { variable _pressed if { [string compare [$path:cmd cget -state] "disabled"] } { set _pressed $path $path:cmd configure -relief sunken if { [set cmd [Widget::getoption $path -armcommand]] != "" } { uplevel \#0 $cmd if { [set delay [Widget::getoption $path -repeatdelay]] > 0 || [set delay [Widget::getoption $path -repeatinterval]] > 0 } { after $delay "Button::_repeat $path" } } } } # ------------------------------------------------------------------------------ # Command Button::_release # ------------------------------------------------------------------------------ proc Button::_release { path } { variable _current variable _pressed if { $_pressed == $path } { set _pressed "" set relief [Widget::getoption $path -relief] if { ![string compare $relief "link"] } { set relief raised } $path:cmd configure -relief $relief if { [set cmd [Widget::getoption $path -disarmcommand]] != "" } { uplevel \#0 $cmd } if { $_current == $path && [string compare [$path:cmd cget -state] "disabled"] && [set cmd [Widget::getoption $path -command]] != "" } { uplevel \#0 $cmd } } } # ------------------------------------------------------------------------------ # Command Button::_repeat # ------------------------------------------------------------------------------ proc Button::_repeat { path } { variable _current variable _pressed if { $_current == $path && $_pressed == $path && [string compare [$path:cmd cget -state] "disabled"] && [set cmd [Widget::getoption $path -armcommand]] != "" } { uplevel \#0 $cmd } if { $_pressed == $path && ([set delay [Widget::getoption $path -repeatinterval]] > 0 || [set delay [Widget::getoption $path -repeatdelay]] > 0) } { after $delay "Button::_repeat $path" } } |
Added buttonbox.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 | # ------------------------------------------------------------------------------ # buttonbox.tcl # This file is part of Unifix BWidget Toolkit # ------------------------------------------------------------------------------ # Index of commands: # - ButtonBox::create # - ButtonBox::configure # - ButtonBox::cget # - ButtonBox::add # - ButtonBox::itemconfigure # - ButtonBox::itemcget # - ButtonBox::setfocus # - ButtonBox::invoke # - ButtonBox::index # - ButtonBox::_destroy # ------------------------------------------------------------------------------ namespace eval ButtonBox { Button::use Widget::declare ButtonBox { {-background TkResource "" 0 frame} {-orient Enum horizontal 1 {horizontal vertical}} {-homogeneous Boolean 1 1} {-spacing Int 10 0 {=0}} {-padx TkResource "" 0 button} {-pady TkResource "" 0 button} {-default Int -1 0 {=-1}} {-bg Synonym -background} } Widget::addmap ButtonBox "" :cmd {-background {}} proc ::ButtonBox { path args } { return [eval ButtonBox::create $path $args] } proc use {} {} } # ------------------------------------------------------------------------------ # Command ButtonBox::create # ------------------------------------------------------------------------------ proc ButtonBox::create { path args } { Widget::init ButtonBox $path $args variable $path upvar 0 $path data eval frame $path [Widget::subcget $path :cmd] -takefocus 0 -highlightthickness 0 set data(default) [Widget::getoption $path -default] set data(nbuttons) 0 set data(max) 0 bind $path <Destroy> "ButtonBox::_destroy $path" rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval ButtonBox::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command ButtonBox::configure # ------------------------------------------------------------------------------ proc ButtonBox::configure { path args } { variable $path upvar 0 $path data set res [Widget::configure $path $args] if { [Widget::hasChanged $path -default val] } { if { $data(default) != -1 && $val != -1 } { set but $path.b$data(default) if { [winfo exists $but] } { $but configure -default normal } set but $path.b$val if { [winfo exists $but] } { $but configure -default active } set data(default) $val } else { Widget::setoption $path -default $data(default) } } return $res } # ------------------------------------------------------------------------------ # Command ButtonBox::cget # ------------------------------------------------------------------------------ proc ButtonBox::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command ButtonBox::add # ------------------------------------------------------------------------------ proc ButtonBox::add { path args } { variable $path upvar 0 $path data set but $path.b$data(nbuttons) set spacing [Widget::getoption $path -spacing] if { $data(nbuttons) == $data(default) } { set style active } elseif { $data(default) == -1 } { set style disabled } else { set style normal } eval Button::create $but \ -background [Widget::getoption $path -background]\ -padx [Widget::getoption $path -padx] \ -pady [Widget::getoption $path -pady] \ $args \ -default $style set idx [expr {2*$data(nbuttons)}] if { ![string compare [Widget::getoption $path -orient] "horizontal"] } { grid $but -column $idx -row 0 -sticky nsew if { [Widget::getoption $path -homogeneous] } { set req [winfo reqwidth $but] if { $req > $data(max) } { for {set i 0} {$i < $data(nbuttons)} {incr i} { grid columnconfigure $path [expr {2*$i}] -minsize $req } set data(max) $req } grid columnconfigure $path $idx -minsize $data(max) -weight 1 } else { grid columnconfigure $path $idx -weight 0 } if { $data(nbuttons) > 0 } { grid columnconfigure $path [expr {$idx-1}] -minsize $spacing } } else { grid $but -column 0 -row $idx -sticky nsew grid rowconfigure $path $idx -weight 0 if { $data(nbuttons) > 0 } { grid rowconfigure $path [expr {$idx-1}] -minsize $spacing } } incr data(nbuttons) return $but } # ------------------------------------------------------------------------------ # Command ButtonBox::itemconfigure # ------------------------------------------------------------------------------ proc ButtonBox::itemconfigure { path index args } { if { [set idx [lsearch $args -default]] != -1 } { set args [lreplace $args $idx [expr {$idx+1}]] } return [eval Button::configure $path.b[index $path $index] $args] } # ------------------------------------------------------------------------------ # Command ButtonBox::itemcget # ------------------------------------------------------------------------------ proc ButtonBox::itemcget { path index option } { return [Button::cget $path.b[index $path $index] $option] } # ------------------------------------------------------------------------------ # Command ButtonBox::setfocus # ------------------------------------------------------------------------------ proc ButtonBox::setfocus { path index } { set but $path.b[index $path $index] if { [winfo exists $but] } { focus $but } } # ------------------------------------------------------------------------------ # Command ButtonBox::invoke # ------------------------------------------------------------------------------ proc ButtonBox::invoke { path index } { set but $path.b[index $path $index] if { [winfo exists $but] } { Button::invoke $but } } # ------------------------------------------------------------------------------ # Command ButtonBox::index # ------------------------------------------------------------------------------ proc ButtonBox::index { path index } { if { ![string compare $index "default"] } { set res [Widget::getoption $path -default] } elseif { ![string compare $index "end"] || ![string compare $index "last"] } { variable $path upvar 0 $path data set res [expr {$data(nbuttons)-1}] } else { set res $index } return $res } # ------------------------------------------------------------------------------ # Command ButtonBox::_destroy # ------------------------------------------------------------------------------ proc ButtonBox::_destroy { path } { variable $path upvar 0 $path data Widget::destroy $path unset data rename $path {} } |
Added color.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 | # ------------------------------------------------------------------------------ # color.tcl # This file is part of Unifix BWidget Toolkit # ------------------------------------------------------------------------------ # Index of commands: # - SelectColor::create # - SelectColor::setcolor # - SelectColor::_destroy # - SelectColor::_update_var # - SelectColor::_post_menu # - SelectColor::_tk_choose_color # - SelectColor::_activate # ------------------------------------------------------------------------------ namespace eval SelectColor { Widget::declare SelectColor { {-title String "" 0} {-parent String "" 0} {-type Enum dialog 1 {dialog menubutton}} {-command String "" 0} {-color TkResource "" 0 {label -background}} {-variable String "" 0} {-width TkResource 15 0 frame} {-height TkResource 15 0 frame} } Widget::addmap SelectColor "" :cmd {-width {} -height {}} Widget::syncoptions SelectColor "" :cmd {-color -background} variable _tabcolors { \#0000ff \#000099 \#000000 white \#00ff00 \#009900 \#333333 white \#00ffff \#009999 \#666666 white \#ff0000 \#990000 \#999999 white \#ff00ff \#990099 \#cccccc white \#ffff00 \#999900 \#ffffff } # bindings bind SelectColor <ButtonPress-1> {SelectColor::_post_menu %W %X %Y} bind SelectColor <Destroy> {SelectColor::_destroy %W} variable _widget proc ::SelectColor { path args } { return [eval SelectColor::create $path $args] } proc use {} {} } # ------------------------------------------------------------------------------ # Command SelectColor::create # ------------------------------------------------------------------------------ proc SelectColor::create { path args } { variable _tabcolors variable _widget Widget::init SelectColor $path $args if { ![string compare [Widget::getoption $path -type] "menubutton"] } { if { [set var [Widget::getoption $path -variable]] != "" } { set _widget($path,var) $var if { [GlobalVar::exists $var] } { Widget::setoption $path -color [GlobalVar::getvar $var] } else { GlobalVar::setvar $var [Widget::getoption $path -color] } GlobalVar::tracevar variable $var w "SelectColor::_update_var $path" } else { set _widget($path,var) "" } eval frame $path [Widget::subcget $path :cmd] \ -background [Widget::getoption $path -color] \ -relief raised -borderwidth 2 -highlightthickness 0 bindtags $path [list $path SelectColor . all] set _widget($path,idx) 0 rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval SelectColor::\$cmd $path \$args\]" } else { set parent [Widget::getoption $path -parent] set title [Widget::getoption $path -title] set lopt [list -initialcolor [Widget::getoption $path -color]] if { [winfo exists $parent] } { lappend lopt -parent $parent } if { $title != "" } { lappend lopt -title $title } set col [eval tk_chooseColor $lopt] Widget::destroy $path return $col } return $path } # ------------------------------------------------------------------------------ # Command SelectColor::configure # ------------------------------------------------------------------------------ proc SelectColor::configure { path args } { variable _widget set res [Widget::configure $path $args] if { [Widget::hasChanged $path -variable var] } { if { [string length $_widget($path,var)] } { GlobalVar::tracevar vdelete $_widget($path,var) w "SelectColor::_update_var $path" } set _widget($path,var) $var if { [string length $_widget($path,var)] } { Widget::hasChanged $path -color curval if { [GlobalVar::exists $_widget($path,var)] } { Widget::setoption $path -color [set curval [GlobalVar::getvar $_widget($path,var)]] } else { GlobalVar::setvar $_widget($path,var) $curval } GlobalVar::tracevar variable $_widget($path,var) w "SelectColor::_update_var $path" $path:cmd configure -background $curval } } if { [Widget::hasChanged $path -color curval] } { if { [string length $_widget($path,var)] } { Widget::setoption $path -color [GlobalVar::getvar $_widget($path,var)] } else { $path:cmd configure -background $curval } } return $res } # ------------------------------------------------------------------------------ # Command SelectColor::cget # ------------------------------------------------------------------------------ proc SelectColor::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command SelectColor::setcolor # ------------------------------------------------------------------------------ proc SelectColor::setcolor { index color } { variable _tabcolors variable _widget if { $index >= 1 && $index <= 5 } { set idx [expr {int($idx) * 3}] set _tabcolors [lreplace $_tabcolors $idx $idx $color] return 1 } return 0 } # ------------------------------------------------------------------------------ # Command SelectColor::_destroy # ------------------------------------------------------------------------------ proc SelectColor::_destroy { path } { variable _widget if { [string length $_widget($path,var)] } { GlobalVar::tracevar vdelete $_widget($path,var) w "SelectColor::_update_var $path" } unset _widget($path,var) unset _widget($path,idx) Widget::destroy $path rename $path {} } # ------------------------------------------------------------------------------ # Command SelectColor::_update_var # ------------------------------------------------------------------------------ proc SelectColor::_update_var { path args } { variable _tabcolors variable _widget set col [GlobalVar::getvar $_widget($path,var)] $path:cmd configure -background $col Widget::setoption $path -color $col set _widget($path,idx) [lsearch $_tabcolors $col] if { $_widget($path,idx) == -1 } { set _widget($path,idx) 0 } } # ------------------------------------------------------------------------------ # Command SelectColor::_post_menu # ------------------------------------------------------------------------------ proc SelectColor::_post_menu { path X Y } { global env variable _tabcolors variable _widget if { [winfo exists $path.menu] } { if { [string compare [winfo containing $X $Y] $path] } { BWidget::grab release $path destroy $path.menu } return } set top [menu $path.menu] wm withdraw $top wm transient $top [winfo toplevel $path] set col 0 set row 0 set count 0 set frame [frame $top.frame -highlightthickness 0 -relief raised -borderwidth 2] foreach color $_tabcolors { set f [frame $frame.c$count \ -relief flat -bd 0 -highlightthickness 1 \ -width 16 -height 16 -background $color] bind $f <ButtonRelease-1> "SelectColor::_activate $path %W" bind $f <Enter> {focus %W} grid $f -column $col -row $row -padx 1 -pady 1 bindtags $f $f incr row incr count if { $row == 4 } { set row 0 incr col } } set f [label $frame.c$count \ -relief flat -bd 0 -highlightthickness 1 \ -width 16 -height 16 -image [Bitmap::get palette]] grid $f -column $col -row $row -padx 1 -pady 1 bind $f <ButtonRelease-1> "SelectColor::_tk_choose_color $path" bind $f <Enter> {focus %W} pack $frame BWidget::place $top 0 0 below $path wm deiconify $top raise $top focus $frame focus $top.frame.c$_widget($path,idx) BWidget::grab set $path } # ------------------------------------------------------------------------------ # Command SelectColor::_tk_choose_color # ------------------------------------------------------------------------------ proc SelectColor::_tk_choose_color { path } { variable _tabcolors variable _widget BWidget::grab release $path destroy $path.menu set parent [Widget::getoption $path -parent] set title [Widget::getoption $path -title] set lopt [list -initialcolor [$path:cmd cget -background]] if { [winfo exists $parent] } { lappend lopt -parent $parent } if { $title != "" } { lappend lopt -title $title } set col [eval tk_chooseColor $lopt] if { $col != "" } { if { $_widget($path,idx) % 4 == 3 } { set idx $_widget($path,idx) } else { set idx -1 for {set i 3} {$i < 15} {incr i 4} { if { [lindex $_tabcolors $i] == "white" } { set idx $i break } } } if { $idx != -1 } { set _tabcolors [lreplace $_tabcolors $idx $idx $col] set _widget($path,idx) $idx } if { [info exists _widget($path,var)] } { GlobalVar::setvar $_widget($path,var) $col } if { [set cmd [Widget::getoption $path -command]] != "" } { uplevel \#0 $cmd } $path:cmd configure -background $col } } # ------------------------------------------------------------------------------ # Command SelectColor::_activate # ------------------------------------------------------------------------------ proc SelectColor::_activate { path cell } { variable _tabcolors variable _widget BWidget::grab release $path set col [$cell cget -background] destroy $path.menu if { [string length $_widget($path,var)] } { GlobalVar::setvar $_widget($path,var) $col } Widget::setoption $path -color $col $path:cmd configure -background $col if { [set cmd [Widget::getoption $path -command]] != "" } { uplevel \#0 $cmd } set _widget($path,idx) [string range [lindex [split $cell "."] end] 1 end] } |
Added combobox.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 | # ------------------------------------------------------------------------------ # combobox.tcl # This file is part of Unifix BWidget Toolkit # $Id: combobox.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - ComboBox::create # - ComboBox::configure # - ComboBox::cget # - ComboBox::setvalue # - ComboBox::getvalue # - ComboBox::_create_popup # - ComboBox::_mapliste # - ComboBox::_unmapliste # - ComboBox::_select # - ComboBox::_modify_value # ------------------------------------------------------------------------------ namespace eval ComboBox { ArrowButton::use Entry::use LabelFrame::use Widget::bwinclude ComboBox LabelFrame .labf \ rename {-text -label} \ remove {-focus} \ prefix {label -justify -width -anchor -height -font} \ initialize {-relief sunken -borderwidth 2} Widget::bwinclude ComboBox Entry .e \ remove {-relief -bd -borderwidth -bg -fg} \ rename {-foreground -entryfg -background -entrybg} Widget::declare ComboBox { {-height TkResource 0 0 listbox} {-values String "" 0} {-modifycmd String "" 0} {-postcommand String "" 0} } Widget::addmap ComboBox "" :cmd {-background {}} Widget::addmap ComboBox ArrowButton .a \ {-foreground {} -background {} -disabledforeground {} -state {}} Widget::syncoptions ComboBox Entry .e {-text {}} Widget::syncoptions ComboBox LabelFrame .labf {-label -text -underline {}} ::bind BwComboBox <FocusIn> {focus %W.labf} ::bind BwComboBox <Destroy> {Widget::destroy %W; rename %W {}} proc ::ComboBox { path args } { return [eval ComboBox::create $path $args] } proc use {} {} } # ------------------------------------------------------------------------------ # Command ComboBox::create # ------------------------------------------------------------------------------ proc ComboBox::create { path args } { Widget::init ComboBox $path $args frame $path -background [Widget::getoption $path -background] \ -highlightthickness 0 -bd 0 -relief flat -takefocus 0 bindtags $path [list $path BwComboBox [winfo toplevel $path] all] set labf [eval LabelFrame::create $path.labf [Widget::subcget $path .labf] \ -focus $path.e] set entry [eval Entry::create $path.e [Widget::subcget $path .e] \ -relief flat -borderwidth 0] set width 11 set height [winfo reqheight $entry] set arrow [eval ArrowButton::create $path.a [Widget::subcget $path .a] \ -width $width -height $height \ -highlightthickness 0 -borderwidth 1 -takefocus 0 \ -dir bottom \ -type button \ -command [list "ComboBox::_mapliste $path"]] set frame [LabelFrame::getframe $labf] pack $arrow -in $frame -side right -fill y pack $entry -in $frame -side left -fill both -expand yes pack $labf -fill x -expand yes if { [Widget::getoption $path -editable] == 0 } { ::bind $entry <ButtonPress-1> "ArrowButton::invoke $path.a" } else { ::bind $entry <ButtonPress-1> "ComboBox::_unmapliste $path" } ::bind $path <ButtonPress-1> "ComboBox::_unmapliste $path" ::bind $entry <Key-Up> "ComboBox::_modify_value $path previous" ::bind $entry <Key-Down> "ComboBox::_modify_value $path next" ::bind $entry <Key-Prior> "ComboBox::_modify_value $path first" ::bind $entry <Key-Next> "ComboBox::_modify_value $path last" rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval ComboBox::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command ComboBox::configure # ------------------------------------------------------------------------------ proc ComboBox::configure { path args } { set res [Widget::configure $path $args] if { [Widget::hasChanged $path -values values] | [Widget::hasChanged $path -height h] | [Widget::hasChanged $path -font f] } { destroy $path.shell.listb } if { [Widget::hasChanged $path -editable ed] } { if { $ed } { ::bind $path.e <ButtonPress-1> "ComboBox::_unmapliste $path" } else { ::bind $path.e <ButtonPress-1> "ArrowButton::invoke $path.a" } } return $res } # ------------------------------------------------------------------------------ # Command ComboBox::cget # ------------------------------------------------------------------------------ proc ComboBox::cget { path option } { Widget::setoption $path -text [Entry::cget $path.e -text] return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command ComboBox::setvalue # ------------------------------------------------------------------------------ proc ComboBox::setvalue { path index } { set values [Widget::getoption $path -values] set value [Entry::cget $path.e -text] switch -- $index { next { if { [set idx [lsearch $values $value]] != -1 } { incr idx } else { set idx [lsearch $values "$value*"] } } previous { if { [set idx [lsearch $values $value]] != -1 } { incr idx -1 } else { set idx [lsearch $values "$value*"] } } first { set idx 0 } last { set idx [expr {[llength $values]-1}] } default { if { [string index $index 0] == "@" } { set idx [string range $index 1 end] if { [catch {string compare [expr {int($idx)}] $idx} res] || $res != 0 } { return -code error "bad index \"$index\"" } } else { return -code error "bad index \"$index\"" } } } if { $idx >= 0 && $idx < [llength $values] } { set newval [lindex $values $idx] Widget::setoption $path -text $newval if { [set varname [Entry::cget $path.e -textvariable]] != "" } { GlobalVar::setvar $varname $newval } else { Entry::configure $path.e -text $newval } return 1 } return 0 } # ------------------------------------------------------------------------------ # Command ComboBox::getvalue # ------------------------------------------------------------------------------ proc ComboBox::getvalue { path } { set values [Widget::getoption $path -values] set value [Entry::cget $path.e -text] return [lsearch $values $value] } # ------------------------------------------------------------------------------ # Command ComboBox::bind # ------------------------------------------------------------------------------ proc ComboBox::bind { path args } { return [eval ::bind $path.e $args] } # ------------------------------------------------------------------------------ # Command ComboBox::_create_popup # ------------------------------------------------------------------------------ proc ComboBox::_create_popup { path } { set shell [menu $path.shell -tearoff 0 -relief flat -bd 0] wm overrideredirect $shell 1 wm withdraw $shell wm transient $shell [winfo toplevel $path] wm group $shell [winfo toplevel $path] set lval [Widget::getoption $path -values] set h [Widget::getoption $path -height] set sb 0 if { $h <= 0 } { set len [llength $lval] if { $len < 3 } { set h 3 } elseif { $len > 10 } { set h 10 set sb 1 } } set frame [frame $shell.frame -relief sunken -bd 2] set listb [listbox $shell.listb -relief flat -bd 0 -highlightthickness 0 \ -exportselection false \ -font [Widget::getoption $path -font] \ -height $h] if { $sb } { set scroll [scrollbar $shell.scroll \ -orient vertical \ -command "$shell.listb yview" \ -highlightthickness 0 -takefocus 0 -width 9] $listb configure -yscrollcommand "$scroll set" } $listb delete 0 end foreach val $lval { $listb insert end $val } if { $sb } { pack $scroll -in $frame -side right -fill y } pack $listb -in $frame -side left -fill both -expand yes pack $frame -fill both -expand yes -padx 1 -padx 1 ::bind $listb <ButtonRelease-1> "ComboBox::_select $path @%x,%y" ::bind $listb <Return> "ComboBox::_select $path active" ::bind $listb <Escape> "ComboBox::_unmapliste $path" } # ------------------------------------------------------------------------------ # Command ComboBox::_mapliste # ------------------------------------------------------------------------------ proc ComboBox::_mapliste { path } { set listb $path.shell.listb if { [winfo exists $path.shell] } { _unmapliste $path return } if { [Widget::getoption $path -state] == "disabled" } { return } if { [set cmd [Widget::getoption $path -postcommand]] != "" } { uplevel \#0 $cmd } if { ![llength [Widget::getoption $path -values]] } { return } _create_popup $path ArrowButton::configure $path.a -dir top $listb selection clear 0 end set values [$listb get 0 end] set curval [Entry::cget $path.e -text] if { [set idx [lsearch $values $curval]] != -1 || [set idx [lsearch $values "$curval*"]] != -1 } { $listb selection set $idx $listb activate $idx $listb see $idx } else { $listb activate 0 $listb see 0 } set frame [LabelFrame::getframe $path.labf] BWidget::place $path.shell [winfo width $frame] 0 below $frame wm deiconify $path.shell raise $path.shell BWidget::grab global $path } # ------------------------------------------------------------------------------ # Command ComboBox::_unmapliste # ------------------------------------------------------------------------------ proc ComboBox::_unmapliste { path } { BWidget::grab release $path destroy $path.shell ArrowButton::configure $path.a -dir bottom } # ------------------------------------------------------------------------------ # Command ComboBox::_select # ------------------------------------------------------------------------------ proc ComboBox::_select { path index } { set index [$path.shell.listb index $index] _unmapliste $path if { $index != -1 } { if { [setvalue $path @$index] } { if { [set cmd [Widget::getoption $path -modifycmd]] != "" } { uplevel \#0 $cmd } } } return -code break } # ------------------------------------------------------------------------------ # Command ComboBox::_modify_value # ------------------------------------------------------------------------------ proc ComboBox::_modify_value { path direction } { if { [setvalue $path $direction] } { if { [set cmd [Widget::getoption $path -modifycmd]] != "" } { uplevel \#0 $cmd } } } |
Added demo/basic.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 | namespace eval DemoBasic { variable var variable count 0 variable id "" } proc DemoBasic::create { nb } { set frame [$nb insert end demoBasic -text "Basic"] set topf [frame $frame.topf] set titf1 [TitleFrame $topf.titf1 -text "Label"] set titf2 [TitleFrame $topf.titf2 -text "Entry"] set titf3 [TitleFrame $frame.titf3 -text "Button and ArrowButton"] _label [$titf1 getframe] _entry [$titf2 getframe] _button [$titf3 getframe] pack $titf1 $titf2 -side left -fill both -padx 4 -expand yes pack $topf -pady 2 -fill x pack $titf3 -pady 2 -padx 4 -fill x return $frame } proc DemoBasic::_label { parent } { variable var set lab [Label $parent.label -text "This is a Label widget" \ -helptext "Label widget"] set chk [checkbutton $parent.chk -text "Disabled" \ -variable DemoBasic::var($lab,-state) \ -onvalue disabled -offvalue normal \ -command "$lab configure -state \$DemoBasic::var($lab,-state)"] pack $lab -anchor w -pady 4 pack $chk -anchor w } proc DemoBasic::_entry { parent } { set ent [Entry $parent.entry -text "Press enter" \ -command {set DemoBasic::var(entcmd) "-command called"; after 500 {set DemoBasic::var(entcmd) ""}} \ -helptext "Entry widget"] set chk1 [checkbutton $parent.chk1 -text "Disabled" \ -variable DemoBasic::var($ent,state) \ -onvalue disabled -offvalue normal \ -command "$ent configure -state \$DemoBasic::var($ent,state)"] set chk2 [checkbutton $parent.chk2 -text "Non editable" \ -variable DemoBasic::var($ent,editable) \ -onvalue false -offvalue true \ -command "$ent configure -editable \$DemoBasic::var($ent,editable)"] set lab [label $parent.cmd -textvariable DemoBasic::var(entcmd) -foreground red] pack $ent -pady 4 -anchor w pack $chk1 $chk2 -anchor w pack $lab -pady 4 } proc DemoBasic::_button { parent } { variable var set frame [frame $parent.butfr] set but [Button $frame.but -text "Press me!" \ -repeatdelay 300 \ -command "DemoBasic::_butcmd command" \ -helptext "This is a Button widget"] set sep1 [Separator $frame.sep1 -orient vertical] set arr1 [ArrowButton $frame.arr1 -type button \ -width 25 -height 25 \ -repeatdelay 300 \ -command "DemoBasic::_butcmd command" \ -helptext "This is an ArrowButton widget\nof type button"] set sep2 [Separator $frame.sep2 -orient vertical] set arr2 [ArrowButton $frame.arr2 -type arrow \ -width 25 -height 25 -relief sunken -ipadx 0 -ipady 0 \ -repeatdelay 300 \ -command "DemoBasic::_butcmd command" \ -helptext "This is an ArrowButton widget\nof type arrow"] pack $but -side left -padx 4 pack $sep1 -side left -padx 4 -fill y pack $arr1 -side left -padx 4 pack $sep2 -side left -padx 4 -fill y pack $arr2 -side left -padx 4 pack $frame set sep3 [Separator $parent.sep3 -orient horizontal] pack $sep3 -fill x -pady 10 set labf1 [LabelFrame $parent.labf1 -text "Command" -side top \ -anchor w -relief sunken -borderwidth 1] set subf [$labf1 getframe] set chk1 [checkbutton $subf.chk1 -text "Disabled" \ -variable DemoBasic::var(bstate) -onvalue disabled -offvalue normal \ -command "DemoBasic::_bstate \$DemoBasic::var(bstate) $but $arr1 $arr2"] set chk2 [checkbutton $subf.chk2 -text "Use -armcommand/\n-disarmcommand" \ -justify left \ -variable DemoBasic::var(barmcmd) \ -command "DemoBasic::_barmcmd \$DemoBasic::var(barmcmd) $but $arr1 $arr2"] pack $chk1 $chk2 -anchor w set label [label $parent.label -textvariable DemoBasic::var(butcmd) -foreground red] pack $label -side bottom -pady 4 set labf2 [LabelFrame $parent.labf2 -text "Direction" -side top \ -anchor w -relief sunken -borderwidth 1] set subf [$labf2 getframe] set var(bside) top foreach dir {top left bottom right} { set rad [radiobutton $subf.$dir -text "$dir arrow" \ -variable DemoBasic::var(bside) -value $dir \ -command "DemoBasic::_bside \$DemoBasic::var(bside) $arr1 $arr2"] pack $rad -anchor w } set labf3 [LabelFrame $parent.labf3 -text "Relief" -side top \ -anchor w -relief sunken -borderwidth 1] set subf [$labf3 getframe] set var(brelief) raised foreach {f lrelief} {f1 {raised sunken ridge groove} f2 {flat solid link}} { set f [frame $subf.$f] foreach relief $lrelief { set rad [radiobutton $f.$relief -text $relief \ -variable DemoBasic::var(brelief) -value $relief \ -command "DemoBasic::_brelief \$DemoBasic::var(brelief) $but $arr1 $arr2"] pack $rad -anchor w } pack $f -side left -padx 2 -anchor n } pack $labf1 $labf2 $labf3 -side left -fill y -padx 4 } proc DemoBasic::_bstate { state but arr1 arr2 } { foreach but [list $but $arr1 $arr2] { $but configure -state $state } } proc DemoBasic::_brelief { relief but arr1 arr2 } { $but configure -relief $relief if { $relief != "link" } { foreach arr [list $arr1 $arr2] { $arr configure -relief $relief } } } proc DemoBasic::_bside { side args } { foreach arr $args { $arr configure -dir $side } } proc DemoBasic::_barmcmd { value but arr1 arr2 } { if { $value } { $but configure \ -armcommand "DemoBasic::_butcmd arm" \ -disarmcommand "DemoBasic::_butcmd disarm" \ -command {} foreach arr [list $arr1 $arr2] { $arr configure \ -armcommand "DemoBasic::_butcmd arm" \ -disarmcommand "DemoBasic::_butcmd disarm" \ -command {} } } else { $but configure -armcommand {} -disarmcommand {} \ -command "DemoBasic::_butcmd command" foreach arr [list $arr1 $arr2] { $arr configure -armcommand {} -disarmcommand {} \ -command "DemoBasic::_butcmd command" } } } proc DemoBasic::_butcmd { reason } { variable count variable id catch {after cancel $id} if { $reason == "arm" } { incr count set DemoBasic::var(butcmd) "$reason command called ($count)" } else { set count 0 set DemoBasic::var(butcmd) "$reason command called" } set id [after 500 {set DemoBasic::var(butcmd) ""}] } |
Added demo/bwidget.xbm.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #define bwidget_width 76 #define bwidget_height 64 static char bwidget_bits[] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf0,0x00,0xb6,0x6d,0xdb,0x16,0x00,0x00,0x00,0x00,0xf0, 0x00,0xdb,0xb6,0x6d,0xab,0x00,0x00,0x00,0x00,0xf0,0x00,0x55,0x55,0x55,0x75, 0x01,0x00,0x00,0x00,0xf0,0x00,0x6d,0xdb,0xb6,0xad,0x02,0x00,0x00,0x00,0xf0, 0x00,0xb6,0x6d,0xdb,0xb6,0x05,0x00,0x00,0x00,0xf0,0x00,0x55,0x55,0x55,0x55, 0x05,0x00,0x00,0x00,0xf0,0x00,0xda,0xb6,0xad,0x6d,0x0b,0x00,0x00,0x00,0xf0, 0x00,0x6b,0x03,0xc0,0xb6,0x05,0x00,0x00,0x00,0xf0,0x00,0x56,0x05,0x00,0x55, 0x0d,0x00,0x00,0x00,0xf0,0x00,0xbb,0x05,0x80,0xdb,0x06,0x00,0x00,0x00,0xf0, 0x00,0xca,0x06,0x00,0x6c,0x0b,0x00,0x00,0x00,0xf0,0x00,0xb6,0x02,0x00,0xaa, 0x0a,0x00,0x00,0x00,0xf0,0x00,0xab,0x05,0x00,0x6c,0x0b,0x00,0x00,0x00,0xf0, 0x00,0xdd,0x06,0x00,0xb6,0x05,0x00,0x00,0x00,0xf0,0x00,0xaa,0x02,0x00,0x55, 0x05,0x00,0x00,0x00,0xf0,0x00,0xb7,0x05,0xc0,0xda,0x02,0x00,0x00,0x00,0xf0, 0x00,0xd9,0x06,0x50,0x6b,0x01,0x00,0x00,0x00,0xf0,0x00,0x56,0xb5,0xad,0xad, 0x00,0x00,0x00,0x00,0xf0,0x00,0xdb,0xd6,0x76,0x15,0x00,0x00,0x00,0x00,0xf0, 0x00,0x6a,0xab,0xaa,0x2d,0x00,0x00,0x00,0x00,0xf0,0x00,0x56,0x75,0xad,0xb6, 0x02,0x00,0x00,0x00,0xf0,0x00,0xbb,0xad,0xd6,0xaa,0x05,0x00,0x00,0x00,0xf0, 0x00,0xca,0xb6,0x6b,0xdb,0x2a,0x00,0x00,0x00,0xf0,0x00,0x77,0xd5,0x5c,0x6d, 0x2d,0x00,0x00,0x00,0xf0,0x00,0x99,0x05,0x00,0xaa,0x56,0x00,0x00,0x00,0xf0, 0x00,0xee,0x06,0x00,0x6c,0xbb,0x00,0x00,0x00,0xf0,0x00,0xaa,0x02,0x00,0xb0, 0x55,0x00,0x00,0x00,0xf0,0x00,0x55,0x05,0x00,0xa8,0xd6,0x00,0x00,0x00,0xf0, 0x00,0xee,0x06,0x00,0xd0,0x6a,0x00,0x00,0x00,0xf0,0x00,0x55,0x03,0x00,0x68, 0xb7,0xfc,0x00,0x7e,0xf0,0x00,0x6d,0x05,0x00,0xa8,0xaa,0xfc,0x80,0x7e,0xf0, 0x00,0xb6,0x05,0x00,0x50,0xbb,0xfe,0x01,0x7e,0xf0,0x00,0x55,0x05,0x00,0x78, 0xad,0xfe,0x81,0x1f,0xf0,0x00,0xb6,0x05,0x00,0xa4,0xb5,0xfe,0x81,0x1f,0xf0, 0x00,0x5b,0x05,0x80,0xba,0x56,0xfe,0x83,0x1f,0xf0,0x00,0xaa,0x6b,0x5b,0xd5, 0x5a,0xff,0x85,0x1f,0xf0,0x00,0xdb,0x5a,0xad,0x57,0x2b,0xff,0xc7,0x0f,0xf0, 0x00,0x6d,0xad,0xd5,0x6a,0x0d,0xff,0xc7,0x0f,0xf0,0x00,0xaa,0xd6,0xb6,0xba, 0x05,0xdf,0xc7,0x0f,0xf0,0x00,0xb7,0xb5,0x5a,0xab,0x8a,0xdf,0xcf,0x0f,0xf0, 0x00,0xd9,0x5a,0xab,0x6d,0x8f,0xcf,0xef,0x07,0xf0,0x00,0x56,0xad,0x75,0xb5, 0xaf,0x8f,0xef,0x07,0xf0,0x00,0xb5,0xeb,0x5a,0x00,0x9f,0xcf,0xef,0x07,0xf0, 0x00,0x00,0x00,0x00,0x00,0xff,0x8f,0xff,0x07,0xf0,0x00,0x00,0x00,0x00,0x00, 0xfe,0x87,0xff,0x03,0xf0,0x00,0x00,0x00,0x00,0x00,0xff,0x03,0xff,0x03,0xf0, 0x00,0x00,0x00,0x00,0x00,0xfe,0x03,0xff,0x03,0xf0,0x00,0x00,0x00,0x00,0x00, 0xfe,0x03,0xff,0x01,0xf0,0x00,0x00,0x00,0x00,0x00,0xfc,0x01,0xff,0x03,0xf0, 0x00,0x00,0x00,0x00,0x00,0xfe,0x01,0xfe,0x01,0xf0,0x00,0x00,0x00,0x00,0x00, 0xfc,0x01,0xfe,0x01,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0}; |
Added demo/demo.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 | source manager.tcl source basic.tcl source select.tcl source dnd.tcl source tree.tcl source tmpldlg.tcl namespace eval Demo { variable _wfont variable notebook variable mainframe variable status variable prgtext variable prgindic variable font variable font_name variable toolbar1 1 variable toolbar2 1 } proc Demo::create { } { global tcl_platform global tk_patchLevel variable _wfont variable notebook variable mainframe variable font variable prgtext variable prgindic set prgtext "Please wait while loading font..." set prgindic -1 _create_intro update SelectFont::loadfont # Menu description set descmenu { "&File" all file 0 { {command "E&xit" {} "Exit BWidget demo" {} -command exit} } "&Options" all options 0 { {checkbutton "Toolbar &1" {all option} "Show/hide toolbar 1" {} -variable Demo::toolbar1 -command {$Demo::mainframe showtoolbar 0 $Demo::toolbar1} } {checkbutton "Toolbar &2" {all option} "Show/hide toolbar 2" {} -variable Demo::toolbar2 -command {$Demo::mainframe showtoolbar 1 $Demo::toolbar2} } } } set prgtext "Creating MainFrame..." set prgindic 0 set mainframe [MainFrame .mainframe \ -menu $descmenu \ -textvariable Demo::status \ -progressvar Demo::prgindic] # toolbar 1 creation incr prgindic set tb1 [$mainframe addtoolbar] set bbox [ButtonBox $tb1.bbox1 -spacing 0 -padx 1 -pady 1] $bbox add -image [Bitmap::get new] \ -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \ -helptext "Create a new file" $bbox add -image [Bitmap::get open] \ -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \ -helptext "Open an existing file" $bbox add -image [Bitmap::get save] \ -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \ -helptext "Save file" pack $bbox -side left -anchor w set sep [Separator $tb1.sep -orient vertical] pack $sep -side left -fill y -padx 4 -anchor w incr prgindic set bbox [ButtonBox $tb1.bbox2 -spacing 0 -padx 1 -pady 1] $bbox add -image [Bitmap::get cut] \ -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \ -helptext "Cut selection" $bbox add -image [Bitmap::get copy] \ -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \ -helptext "Copy selection" $bbox add -image [Bitmap::get paste] \ -highlightthickness 0 -takefocus 0 -relief link -borderwidth 1 -padx 1 -pady 1 \ -helptext "Paste selection" pack $bbox -side left -anchor w # toolbar 2 creation incr prgindic set tb2 [$mainframe addtoolbar] set _wfont [SelectFont $tb2.font -type toolbar \ -command "Demo::update_font \[$tb2.font cget -font\]"] set font [$_wfont cget -font] pack $_wfont -side left -anchor w $mainframe addindicator -text "BWidget [package version BWidget]" $mainframe addindicator -textvariable tk_patchLevel # NoteBook creation set frame [$mainframe getframe] set notebook [NoteBook $frame.nb] set prgtext "Creating Manager..." incr prgindic set f0 [DemoManager::create $notebook] set prgtext "Creating Basic..." incr prgindic set f1 [DemoBasic::create $notebook] set prgtext "Creating Select..." incr prgindic set f2 [DemoSelect::create $notebook] set prgtext "Creating Dialog..." incr prgindic set f3b [DemoDlg::create $notebook] set prgtext "Creating Drag and Drop..." incr prgindic set f4 [DemoDnd::create $notebook] set prgtext "Creating Tree..." incr prgindic set f5 [DemoTree::create $notebook] set prgtext "Done" incr prgindic $notebook compute_size pack $notebook -fill both -expand yes -padx 4 -pady 4 $notebook raise [$notebook page 0] pack $mainframe -fill both -expand yes update idletasks destroy .intro } proc Demo::update_font { newfont } { variable _wfont variable notebook variable font variable font_name . configure -cursor watch if { $font != $newfont } { $_wfont configure -font $newfont $notebook configure -font $newfont set font $newfont } . configure -cursor "" } proc Demo::_create_intro { } { global tcl_platform set top [toplevel .intro -relief raised -borderwidth 2] wm withdraw $top wm overrideredirect $top 1 set ximg [label $top.x -bitmap @x1.xbm -foreground grey90 -background white] set bwimg [label $ximg.bw -bitmap @bwidget.xbm -foreground grey90 -background white] set frame [frame $ximg.f -background white] set lab1 [label $frame.lab1 -text "Loading demo" -background white -font {times 8}] set lab2 [label $frame.lab2 -textvariable Demo::prgtext -background white -font {times 8} -width 35] set prg [ProgressBar $frame.prg -width 50 -height 10 -background white \ -variable Demo::prgindic -maximum 10] pack $lab1 $lab2 $prg place $frame -x 0 -y 0 -anchor nw place $bwimg -relx 1 -rely 1 -anchor se pack $ximg BWidget::place $top 0 0 center wm deiconify $top } proc main {} { global tcl_platform global auto_path lappend auto_path .. package require BWidget option add *TitleFrame.font {helvetica 11 bold italic} wm withdraw . wm title . "BWidget demo" Demo::create BWidget::place . 0 0 center wm deiconify . raise . focus -force . } main wm geom . [wm geom .] |
Added demo/dnd.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | namespace eval DemoDnd { } proc DemoDnd::create { nb } { set frame [$nb insert end demoDnd -text "Drag and Drop"] set titf1 [TitleFrame $frame.titf1 -text "Drag sources"] set subf [$titf1 getframe] set ent1 [LabelEntry $subf.e1 -label "Entry" -labelwidth 14 -dragenabled 1 -dragevent 3] set labf1 [LabelFrame $subf.f1 -text "Label (text)" -width 14] set f [$labf1 getframe] set lab [Label $f.l -text "Drag this text" -dragenabled 1 -dragevent 3] pack $lab set labf2 [LabelFrame $subf.f2 -text "Label (bitmap)" -width 14] set f [$labf2 getframe] set lab [Label $f.l -bitmap info -dragenabled 1 -dragevent 3] pack $lab pack $ent1 $labf1 $labf2 -side top -fill x -pady 4 set titf2 [TitleFrame $frame.titf2 -text "Drop targets"] set subf [$titf2 getframe] set ent1 [LabelEntry $subf.e1 -label "Entry" -labelwidth 14 -dropenabled 1] set labf1 [LabelFrame $subf.f1 -text "Label" -width 14] set f [$labf1 getframe] set lab [Label $f.l -dropenabled 1 -highlightthickness 1] pack $lab -fill x pack $ent1 $labf1 -side top -fill x -pady 4 pack $titf1 $titf2 -pady 4 return $frame } |
Added demo/manager.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | namespace eval DemoManager { variable _progress 0 variable _afterid "" variable _status "Compute in progress..." variable _homogeneous 0 } proc DemoManager::create { nb } { set frame [$nb insert end demoManager -text "Manager"] set topf [frame $frame.topf] set titf1 [TitleFrame $topf.titf1 -text "MainFrame"] set titf2 [TitleFrame $topf.titf2 -text "NoteBook"] set titf3 [TitleFrame $frame.titf3 -text "Paned & ScrolledWindow"] _mainframe [$titf1 getframe] _notebook [$titf2 getframe] _paned [$titf3 getframe] pack $titf1 $titf2 -padx 4 -side left -fill both -expand yes pack $topf -fill x -pady 2 pack $titf3 -pady 2 -padx 4 -fill both -expand yes return $frame } proc DemoManager::_mainframe { parent } { set labf1 [LabelFrame $parent.labf1 -text "Toolbar" -side top -anchor w \ -relief sunken -borderwidth 2] set subf [$labf1 getframe] checkbutton $subf.chk1 -text "View toolbar 1" -variable Demo::toolbar1 \ -command {$Demo::mainframe showtoolbar 0 $Demo::toolbar1} checkbutton $subf.chk2 -text "View toolbar 2" -variable Demo::toolbar2 \ -command {$Demo::mainframe showtoolbar 1 $Demo::toolbar2} pack $subf.chk1 $subf.chk2 -anchor w -fill x pack $labf1 -fill both set labf2 [LabelFrame $parent.labf2 -text "Status bar" -side top -anchor w \ -relief sunken -borderwidth 2] set subf [$labf2 getframe] checkbutton $subf.chk1 -text "Show Progress\nindicator" -justify left \ -variable DemoManager::_progress \ -command {DemoManager::_show_progress} pack $subf.chk1 -anchor w -fill x pack $labf1 $labf2 -side left -padx 4 -fill both } proc DemoManager::_notebook { parent } { checkbutton $parent.chk1 -text "Homogeneous label" \ -variable DemoManager::_homogeneous \ -command {$Demo::notebook configure -homogeneous $DemoManager::_homogeneous} pack $parent.chk1 -side left -anchor n -fill x } proc DemoManager::_paned { parent } { set pw1 [PanedWindow $parent.pw -side top] set pane [$pw1 add -minsize 100] set pw2 [PanedWindow $pane.pw -side left] set pane1 [$pw2 add -minsize 100] set pane2 [$pw2 add -minsize 100] set pane3 [$pw1 add -minsize 100] foreach pane [list $pane1 $pane2] { set sw [ScrolledWindow $pane.sw] set lb [listbox $sw.lb -height 8 -width 20 -highlightthickness 0] for {set i 1} {$i <= 8} {incr i} { $lb insert end "Value $i" } $sw setwidget $lb pack $sw -fill both -expand yes } set sw [ScrolledWindow $pane3.sw -relief sunken -borderwidth 2] set sf [ScrollableFrame $sw.f] $sw setwidget $sf set subf [$sf getframe] set lab [label $subf.lab -text "This is a ScrollableFrame"] set chk [checkbutton $subf.chk -text "Constrained width" \ -variable DemoManager::_constw \ -command "$sf configure -constrainedwidth \$DemoManager::_constw"] pack $lab pack $chk -anchor w bind $chk <FocusIn> "$sf see $chk" for {set i 0} {$i <= 20} {incr i} { pack [entry $subf.ent$i -width 50] -fill x -pady 4 bind $subf.ent$i <FocusIn> "$sf see $subf.ent$i" $subf.ent$i insert end "Text field $i" } pack $sw $pw2 $pw1 -fill both -expand yes } proc DemoManager::_show_progress { } { variable _progress variable _afterid variable _status if { $_progress } { set Demo::status "Compute in progress..." set Demo::prgindic 0 $Demo::mainframe showstatusbar progression if { $_afterid == "" } { set _afterid [after 30 DemoManager::_update_progress] } } else { set Demo::status "" $Demo::mainframe showstatusbar status set _afterid "" } } proc DemoManager::_update_progress { } { variable _progress variable _afterid if { $_progress } { if { $Demo::prgindic < 100 } { incr Demo::prgindic 5 set _afterid [after 30 DemoManager::_update_progress] } else { set _progress 0 $Demo::mainframe showstatusbar status set Demo::status "Done" set _afterid "" after 500 {set Demo::status ""} } } else { set _afterid "" } } |
Added demo/select.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | namespace eval DemoSelect { variable var } proc DemoSelect::create { nb } { set frame [$nb insert end demoSelect -text "Spin & Combo"] set titf1 [TitleFrame $frame.titf1 -text SpinBox] set subf [$titf1 getframe] set spin [SpinBox $subf.spin -label "spinbox" -underline 0 \ -labelwidth 10 -labelanchor w \ -range {1 100 1} -textvariable DemoSelect::var(spin,var) \ -helptext "This is the SpinBox"] set ent [LabelEntry $subf.ent -label "Linked var" -labelwidth 10 -labelanchor w \ -textvariable DemoSelect::var(spin,var) -editable 0 \ -helptext "This is an Entry reflecting\nthe linked var of SpinBox"] set labf [LabelFrame $subf.options -text "Options" -side top -anchor w \ -relief sunken -borderwidth 1 \ -helptext "Modify some options of SpinBox"] set subf [$labf getframe] set chk1 [checkbutton $subf.chk1 -text "Non editable" \ -variable DemoSelect::var(spin,editable) -onvalue false -offvalue true \ -command "$spin configure -editable \$DemoSelect::var(spin,editable)"] set chk2 [checkbutton $subf.chk2 -text "Disabled" \ -variable DemoSelect::var(spin,state) -onvalue disabled -offvalue normal \ -command "$spin configure -state \$DemoSelect::var(spin,state)"] pack $chk1 $chk2 -side left -anchor w pack $spin $ent $labf -pady 4 -fill x pack $titf1 set titf2 [TitleFrame $frame.titf2 -text ComboBox] set subf [$titf2 getframe] set combo [ComboBox $subf.combo -label "combobox" -underline 0 \ -labelwidth 10 -labelanchor w \ -textvariable DemoSelect::var(combo,var) \ -values {"first value" "second value" "third value" "fourth value" "fifth value"} \ -helptext "This is the ComboBox"] set ent [LabelEntry $subf.ent -label "Linked var" -labelwidth 10 -labelanchor w \ -textvariable DemoSelect::var(combo,var) -editable 0 \ -helptext "This is an Entry reflecting\nthe linked var of ComboBox"] set labf [LabelFrame $subf.options -text "Options" -side top -anchor w \ -relief sunken -borderwidth 1 \ -helptext "Modify some options of SpinBox"] set subf [$labf getframe] set chk1 [checkbutton $subf.chk1 -text "Non editable" \ -variable DemoSelect::var(combo,editable) -onvalue false -offvalue true \ -command "$combo configure -editable \$DemoSelect::var(combo,editable)"] set chk2 [checkbutton $subf.chk2 -text "Disabled" \ -variable DemoSelect::var(combo,state) -onvalue disabled -offvalue normal \ -command "$combo configure -state \$DemoSelect::var(combo,state)"] pack $chk1 $chk2 -side left -anchor w pack $combo $ent $labf -pady 4 -fill x pack $titf1 $titf2 -pady 4 return $frame } |
Added demo/tmpldlg.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 | namespace eval DemoDlg { variable tmpl variable msg variable progmsg variable progval variable resources "en" } proc DemoDlg::create { nb } { set frame [$nb insert end demoDlg -text "Dialog"] set titf1 [TitleFrame $frame.titf1 -text "Resources"] set titf2 [TitleFrame $frame.titf2 -text "Template Dialog"] set titf3 [TitleFrame $frame.titf3 -text "Message Dialog"] set titf4 [TitleFrame $frame.titf4 -text "Other dialog"] set subf [$titf1 getframe] set cmd {option read [file join $env(BWIDGET_LIBRARY) "lang" $DemoDlg::resources.rc]} set rad1 [radiobutton $subf.rad1 -text "English" \ -variable DemoDlg::resources -value en \ -command $cmd] set rad2 [radiobutton $subf.rad2 -text "French" \ -variable DemoDlg::resources -value fr \ -command $cmd] set rad3 [radiobutton $subf.rad3 -text "German" \ -variable DemoDlg::resources -value de \ -command $cmd] pack $rad1 $rad2 $rad3 -side left _tmpldlg [$titf2 getframe] _msgdlg [$titf3 getframe] _stddlg [$titf4 getframe] pack $titf1 -fill x -pady 2 -padx 2 pack $titf4 -side bottom -fill x -pady 2 -padx 2 pack $titf2 $titf3 -side left -padx 2 -fill both -expand yes } proc DemoDlg::_tmpldlg { parent } { variable tmpl set tmpl(side) bottom set tmpl(anchor) c set labf1 [LabelFrame $parent.labf1 -text "Button side" -side top \ -anchor w -relief sunken -borderwidth 1] set subf [$labf1 getframe] radiobutton $subf.rad1 -text "Bottom" \ -variable DemoDlg::tmpl(side) -value bottom -anchor w radiobutton $subf.rad2 -text "Left" \ -variable DemoDlg::tmpl(side) -value left -anchor w radiobutton $subf.rad3 -text "Right" \ -variable DemoDlg::tmpl(side) -value right -anchor w radiobutton $subf.rad4 -text "Top" \ -variable DemoDlg::tmpl(side) -value top -anchor w pack $subf.rad1 $subf.rad2 $subf.rad3 $subf.rad4 -fill x -anchor w set labf2 [LabelFrame $parent.labf2 -text "Button anchor" -side top \ -anchor w -relief sunken -borderwidth 1] set subf [$labf2 getframe] radiobutton $subf.rad1 -text "North" \ -variable DemoDlg::tmpl(anchor) -value n -anchor w radiobutton $subf.rad2 -text "West" \ -variable DemoDlg::tmpl(anchor) -value w -anchor w radiobutton $subf.rad3 -text "East" \ -variable DemoDlg::tmpl(anchor) -value e -anchor w radiobutton $subf.rad4 -text "South" \ -variable DemoDlg::tmpl(anchor) -value s -anchor w radiobutton $subf.rad5 -text "Center" \ -variable DemoDlg::tmpl(anchor) -value c -anchor w pack $subf.rad1 $subf.rad2 $subf.rad3 $subf.rad4 $subf.rad5 -fill x -anchor w set sep [Separator $parent.sep -orient horizontal] set button [button $parent.but -text "Show" -command DemoDlg::_show_tmpldlg] pack $button -side bottom pack $sep -side bottom -fill x -pady 10 pack $labf1 $labf2 -side left -padx 4 -anchor n } proc DemoDlg::_msgdlg { parent } { variable msg set msg(type) ok set msg(icon) info set labf1 [LabelFrame $parent.labf1 -text "Type" -side top \ -anchor w -relief sunken -borderwidth 1] set subf [$labf1 getframe] radiobutton $subf.rad1 -text "Ok" -variable DemoDlg::msg(type) -value ok -anchor w radiobutton $subf.rad2 -text "Ok, Cancel" -variable DemoDlg::msg(type) -value okcancel -anchor w radiobutton $subf.rad3 -text "Retry, Cancel" -variable DemoDlg::msg(type) -value retrycancel -anchor w radiobutton $subf.rad4 -text "Yes, No" -variable DemoDlg::msg(type) -value yesno -anchor w radiobutton $subf.rad5 -text "Yes, No, Cancel" -variable DemoDlg::msg(type) -value yesnocancel -anchor w radiobutton $subf.rad6 -text "Abort, Retry, Ignore" -variable DemoDlg::msg(type) -value abortretryignore -anchor w radiobutton $subf.rad7 -text "User" -variable DemoDlg::msg(type) -value user -anchor w Entry $subf.user -textvariable DemoDlg::msg(buttons) pack $subf.rad1 $subf.rad2 $subf.rad3 $subf.rad4 $subf.rad5 $subf.rad6 -fill x -anchor w pack $subf.rad7 $subf.user -side left set labf2 [LabelFrame $parent.labf2 -text "Icon" -side top -anchor w -relief sunken -borderwidth 1] set subf [$labf2 getframe] radiobutton $subf.rad1 -text "Information" -variable DemoDlg::msg(icon) -value info -anchor w radiobutton $subf.rad2 -text "Question" -variable DemoDlg::msg(icon) -value question -anchor w radiobutton $subf.rad3 -text "Warning" -variable DemoDlg::msg(icon) -value warning -anchor w radiobutton $subf.rad4 -text "Error" -variable DemoDlg::msg(icon) -value error -anchor w pack $subf.rad1 $subf.rad2 $subf.rad3 $subf.rad4 -fill x -anchor w set sep [Separator $parent.sep -orient horizontal] set button [button $parent.but -text "Show" -command DemoDlg::_show_msgdlg] pack $button -side bottom pack $sep -side bottom -fill x -pady 10 pack $labf1 $labf2 -side left -padx 4 -anchor n } proc DemoDlg::_stddlg { parent } { set labf [LabelFrame $parent.f -text "Select a color "] set color [SelectColor [$labf getframe].col -type menubutton] set but1 [button $parent.but1 \ -text "Font selector dialog" \ -command DemoDlg::_show_fontdlg] set but2 [button $parent.but2 \ -text "Progression dialog" \ -command DemoDlg::_show_progdlg] set but3 [button $parent.but3 \ -text "Password dialog" \ -command DemoDlg::_show_passdlg] pack $color pack $labf $but1 $but2 $but3 -side left -padx 5 -anchor w } proc DemoDlg::_show_tmpldlg { } { variable tmpl set dlg [Dialog .tmpldlg -parent . -modal local \ -separator 1 \ -title "Template dialog" \ -side $tmpl(side) \ -anchor $tmpl(anchor) \ -default 0 -cancel 1] $dlg add -name ok $dlg add -name cancel set msg [message [$dlg getframe].msg -text "Template\nDialog" -justify center -anchor c] pack $msg -fill both -expand yes -padx 100 -pady 100 $dlg draw destroy $dlg } proc DemoDlg::_show_msgdlg { } { variable msg destroy .msgdlg MessageDlg .msgdlg -parent . \ -message "Message for MessageBox" \ -type $msg(type) \ -icon $msg(icon) \ -buttons $msg(buttons) } proc DemoDlg::_show_fontdlg { } { set font [SelectFont .fontdlg -parent . -font $Demo::font] if { $font != "" } { Demo::update_font $font } } proc DemoDlg::_show_progdlg { } { set DemoDlg::progmsg "Compute in progress..." set DemoDlg::progval 0 ProgressDlg .progress -parent . -title "Wait..." \ -type infinite \ -width 20 \ -textvariable DemoDlg::progmsg \ -variable DemoDlg::progval \ -stop "Stop" \ -command {destroy .progress} _update_progdlg } proc DemoDlg::_update_progdlg { } { if { [winfo exists .progress] } { set DemoDlg::progval 2 after 20 DemoDlg::_update_progdlg } } proc DemoDlg::_show_passdlg { } { PasswdDlg .passwd -parent . } |
Added demo/tree.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 | namespace eval DemoTree { variable count variable dblclick } proc DemoTree::create { nb } { set frame [$nb insert end demoTree -text "Tree"] set pw [PanedWindow $frame.pw -side top] set pane [$pw add -weight 1] set title [TitleFrame $pane.lf -text "Directory tree"] set sw [ScrolledWindow [$title getframe].sw \ -relief sunken -borderwidth 2] set tree [Tree $sw.tree \ -relief flat -borderwidth 0 -width 15 -highlightthickness 0\ -redraw 0 -dropenabled 1 -dragenabled 1 \ -dragevent 3 \ -droptypes { TREE_NODE {copy {} move {} link {}} LISTBOX_ITEM {copy {} move {} link {}} } \ -opencmd "DemoTree::moddir 1 $sw.tree" \ -closecmd "DemoTree::moddir 0 $sw.tree"] $sw setwidget $tree pack $sw -side top -expand yes -fill both pack $title -fill both -expand yes set pane [$pw add -weight 2] set lf [TitleFrame $pane.lf -text "Content"] set sw [ScrolledWindow [$lf getframe].sw \ -scrollbar horizontal -auto none -relief sunken -borderwidth 2] set list [ListBox::create $sw.lb \ -relief flat -borderwidth 0 \ -dragevent 3 \ -dropenabled 1 -dragenabled 1 \ -width 20 -highlightthickness 0 -multicolumn true \ -redraw 0 -dragenabled 1 \ -droptypes { TREE_NODE {copy {} move {} link {}} LISTBOX_ITEM {copy {} move {} link {}}}] $sw setwidget $list pack $sw $lf -fill both -expand yes pack $pw -fill both -expand yes $tree bindText <ButtonPress-1> "DemoTree::select tree 1 $tree $list" $tree bindText <Double-ButtonPress-1> "DemoTree::select tree 2 $tree $list" $list bindText <ButtonPress-1> "DemoTree::select list 1 $tree $list" $list bindText <Double-ButtonPress-1> "DemoTree::select list 2 $tree $list" $list bindImage <Double-ButtonPress-1> "DemoTree::select list 2 $tree $list" $nb itemconfigure demoTree \ -createcmd "DemoTree::init $tree $list" \ -raisecmd { regexp {[0-9]+x[0-9]+([+-][0-9]+)([+-][0-9]+)} [wm geom .] \ global_foo global_w global_h BWidget::place .top 0 0 at [expr {$global_w-[winfo screenwidth .]}] $global_h wm deiconify .top bind . <Unmap> {wm withdraw .top} bind . <Map> {wm deiconify .top} bind . <Configure> { if { ![string compare %W "."] } { regexp {[0-9]+x[0-9]+([+-][0-9]+)([+-][0-9]+)} [wm geom .] \ global_foo global_w global_h BWidget::place .top 0 0 at [expr {$global_w-[winfo screenwidth .]}] $global_h } } } \ -leavecmd { wm withdraw .top bind . <Unmap> {} bind . <Map> {} bind . <Configure> {} return 1 } } proc DemoTree::init { tree list args } { global tcl_platform variable count set count 0 if { $tcl_platform(platform) == "unix" } { set rootdir [glob "~"] } else { set rootdir "c:\\" } $tree insert end root home -text $rootdir -data $rootdir -open 1 \ -image [Bitmap::get openfold] getdir $tree home $rootdir DemoTree::select tree 1 $tree $list home $tree configure -redraw 1 $list configure -redraw 1 # ScrollView toplevel .top -relief raised -borderwidth 2 wm protocol .top WM_DELETE_WINDOW { # don't kill me } wm overrideredirect .top 1 wm withdraw .top wm transient .top . ScrollView .top.sv -window $tree -fill black pack .top.sv -fill both -expand yes } proc DemoTree::getdir { tree node path } { variable count set lentries [glob -nocomplain [file join $path "*"]] set lfiles {} foreach f $lentries { set tail [file tail $f] if { [file isdirectory $f] } { $tree insert end $node n:$count \ -text $tail \ -image [Bitmap::get folder] \ -drawcross allways \ -data $f incr count } else { lappend lfiles $tail } } $tree itemconfigure $node -drawcross auto -data $lfiles } proc DemoTree::moddir { idx tree node } { if { $idx && [$tree itemcget $node -drawcross] == "allways" } { getdir $tree $node [$tree itemcget $node -data] if { [llength [$tree nodes $node]] } { $tree itemconfigure $node -image [Bitmap::get openfold] } else { $tree itemconfigure $node -image [Bitmap::get folder] } } else { $tree itemconfigure $node -image [Bitmap::get [lindex {folder openfold} $idx]] } } proc DemoTree::select { where num tree list node } { variable dblclick set dblclick 1 if { $num == 1 } { if { $where == "tree" && [lsearch [$tree selection get] $node] != -1 } { unset dblclick after 500 "DemoTree::edit tree $tree $list $node" return } if { $where == "list" && [lsearch [$list selection get] $node] != -1 } { unset dblclick after 500 "DemoTree::edit list $tree $list $node" return } if { $where == "tree" } { select_node $tree $list $node } else { $list selection set $node } } elseif { $where == "list" && [$tree exists $node] } { set parent [$tree parent $node] while { $parent != "root" } { $tree itemconfigure $parent -open 1 set parent [$tree parent $parent] } select_node $tree $list $node } } proc DemoTree::select_node { tree list node } { $tree selection set $node update eval $list delete [$list item 0 end] set dir [$tree itemcget $node -data] if { [$tree itemcget $node -drawcross] == "allways" } { getdir $tree $node $dir set dir [$tree itemcget $node -data] } foreach subnode [$tree nodes $node] { $list insert end $subnode \ -text [$tree itemcget $subnode -text] \ -image [Bitmap::get folder] } set num 0 foreach f $dir { $list insert end f:$num \ -text $f \ -image [Bitmap::get file] incr num } } proc DemoTree::edit { where tree list node } { variable dblclick if { [info exists dblclick] } { return } if { $where == "tree" && [lsearch [$tree selection get] $node] != -1 } { set res [$tree edit $node [$tree itemcget $node -text]] if { $res != "" } { $tree itemconfigure $node -text $res if { [$list exists $node] } { $list itemconfigure $node -text $res } $tree selection set $node } return } if { $where == "list" } { set res [$list edit $node [$list itemcget $node -text]] if { $res != "" } { $list itemconfigure $node -text $res if { [$tree exists $node] } { $tree itemconfigure $node -text $res } else { set cursel [$tree selection get] set index [expr {[$list index $node]-[llength [$tree nodes $cursel]]}] set data [$tree itemcget $cursel -data] set data [lreplace $data $index $index $res] $tree itemconfigure $cursel -data $data } $list selection set $node } } } proc DemoTree::expand { tree but } { if { [set cur [$tree selection get]] != "" } { if { $but == 0 } { $tree opentree $cur } else { $tree closetree $cur } } } |
Added demo/x1.xbm.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 | #define x1_width 626 #define x1_height 428 static char x1_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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xff,0xff,0xff,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,0xfc,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,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfc,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,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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, 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfc,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,0x00,0x00,0x00,0x00,0x80,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfc,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,0x00,0x00,0x00, 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfc,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,0x00,0x00,0xf0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0x00,0x00, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, 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,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,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,0xf0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,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,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfc,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,0xc0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfc,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,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfc,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,0xfe,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0xc0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfc,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,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0xe0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0xfc,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, 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, 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,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,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0x80,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,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, 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfc,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,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0x80,0xff,0x03,0x80,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xe0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0x20,0x00,0x00,0x00, 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00, 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfc,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,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfc,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,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0xc0, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x80,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00, 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00, 0x00,0x00,0xfc,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,0xf0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0xc0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff, 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,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,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, 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,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,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,0xf0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff, 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0xfc,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,0xc0, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff, 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0xfc,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,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00, 0xfc,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,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00, 0x00,0x00,0x00,0x00,0xfc,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,0x00,0xfc,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff, 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0xfc,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, 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,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,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00, 0x00,0xfc,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,0x00,0xc0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x03,0x00,0x00,0x00,0x00,0xfc,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,0x00,0x80,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff, 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xfc,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,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfc,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,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00, 0x00,0x00,0xfc,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,0x00,0x00,0xf8,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff, 0xff,0x3f,0x00,0x00,0x00,0x00,0xfc,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,0x00,0x00, 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff, 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfc,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,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfc, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01, 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xfc,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00, 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x1f,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xfc,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x0f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfe,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfc,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03, 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x03,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x07,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x01,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xfc,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xfc, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x1f,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x7f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x3f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xfc,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf0,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfc,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x07, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xfc,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xe0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03, 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x03,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x03,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xfc,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xfc,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x0f,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x0f,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x7f,0x00,0x00,0x00, 0x00,0xf8,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xfc,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff, 0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xfc, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfe,0xff,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,0xff,0x03,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x3f,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xe0,0xff,0xff, 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x1f,0x00,0x00, 0x00,0xf0,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xfc,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, 0xff,0x1f,0x00,0x00,0x00,0xfc,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00, 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xf0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfe,0xff,0xff,0x3f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfe,0xff, 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x0f,0x00, 0x00,0x00,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xfc,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff, 0xff,0xff,0x07,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x01,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x03,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xe0,0xff, 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00, 0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xfc,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x03, 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01, 0x00,0x00,0x00,0x00,0xfe,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xfc,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff, 0xff,0xff,0xff,0x01,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x80,0xff,0x07,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x07,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xf0,0xff,0xff,0xff,0xff, 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xc0,0xff,0x07,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x07,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xf8, 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00, 0xe0,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xfc,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff, 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, 0x00,0x00,0x00,0x00,0xf8,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xfc, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff, 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x3f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff, 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xfc,0xff,0x0f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x0f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0xfc,0xff,0xff,0xff, 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00, 0xfe,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00, 0x00,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfc,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, 0x7f,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff, 0x07,0x00,0x00,0x00,0x80,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f, 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff, 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff, 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xc0,0xff,0xff,0x1f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x1f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xff,0xff,0xff, 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xe0,0xff,0xff, 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00, 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00, 0x00,0xf0,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff, 0xff,0x3f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff, 0xff,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x3f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8, 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x1f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x80,0xff,0xff, 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xfe,0xff, 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00, 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x3f,0x00,0x00, 0x00,0x00,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff, 0xff,0xff,0x1f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff, 0xff,0x1f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff, 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf0,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x1f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,0xff, 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xe0,0xff, 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x07,0x00, 0x00,0x00,0xe0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff, 0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, 0xff,0xff,0x03,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff, 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xe0,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x1f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xf0, 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfc, 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x07,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x00, 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xfd,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff, 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xf0,0xff,0xff,0xff, 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x80,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff, 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00, 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x80, 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x07,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x1f, 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff, 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff, 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0xff,0xff, 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00, 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x07,0x00,0x00,0x00, 0xf8,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff, 0x03,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0xfe,0xff,0xff, 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03, 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00, 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff, 0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,0xff, 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x1f,0x00,0x00, 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0, 0xff,0x1f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xf0,0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff, 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00, 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x07,0x00,0x00,0x00,0xf8,0xff, 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x07,0x00, 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00, 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xe0,0xff,0x03,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00, 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfe,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xe0,0xff,0x01,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00, 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x01,0x00,0x00,0x00,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x07,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x00, 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00, 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0x7f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x03,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xfe,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0x7f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07, 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3f,0x00,0x00,0x00,0xe0, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x80,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x0f,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f, 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x80,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x07,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x80,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0xf8,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x1f,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0x00,0x00, 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x3f,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x06,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xf0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xfc, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00, 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00, 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00, 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd, 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00,0x00,0x00,0xc0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfd,0x00,0x00,0x00, 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xfd,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0xf8, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00, 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00, 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xfc,0x00,0x00,0x00,0x00, 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc, 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x3f,0xfc,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc,0x00,0x00,0x00,0x00,0xf8,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xfc,0x00,0x00,0x00, 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f, 0xfc,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x1f,0xfc,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0xfc,0x00,0x00,0x00,0x00,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0xfc,0x00,0x00, 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x0f,0xfc,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x0f,0xfc,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0xfc,0x00,0x00,0x00,0xe0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0xfc,0x00, 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x07,0xfc,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x07,0xfc,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xfc,0x00,0x00,0x00,0xf8, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0xfc, 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x03,0xfc,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xfc,0x00,0x00,0x00,0xfe,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xfc,0x00,0x00,0x00, 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00, 0xfc,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x00,0xfc,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xfc,0x00,0x00,0x80,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0xfc,0x00,0x00, 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0x00,0xfc,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x3f,0x00,0xfc,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfc,0x00,0x00,0xe0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfc,0x00, 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x1f,0x00,0xfc,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x1f,0x00,0xfc,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xfc,0x00,0x00,0xf8,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xfc, 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x0f,0x00,0xfc,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xfc,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xfc,0x00,0x00,0xfe, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00, 0xfc,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x03,0x00,0xfc,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xfc,0x00,0x80,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xfc,0x00,0x80, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00, 0x00,0xfc,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x00,0x00,0xfc,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xfc,0x00,0xe0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0xfc,0x00, 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, 0x00,0x00,0xfc,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x3f,0x00,0x00,0xfc,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xfc,0x00,0xf0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xfc, 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x0f,0x00,0x00,0xfc,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xfc,0x00,0xf8,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xfc,0x00,0xfc,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00, 0xfc,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x03,0x00,0x00,0xfc,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfc,0x00,0xfe,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xfc,0x00,0xfe, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00, 0x00,0xfc,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x7f,0x00,0x00,0x00,0xfc,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xfc,0x00,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xfc,0x80, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00, 0x00,0x00,0xfc,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x1f,0x00,0x00,0x00,0xfc,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfc,0xc0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfc, 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07, 0x00,0x00,0x00,0xfc,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0xc0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0xe0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00, 0xfc,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x01,0x00,0x00,0x00,0xfc,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfc,0xf0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfc,0xf0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00, 0x00,0xfc,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x3f,0x00,0x00,0x00,0x00,0xfc,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfc,0xf8, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00, 0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x07,0x00,0x00,0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xfc,0xf8,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0xfc, 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00, 0x00,0x00,0x00,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00, 0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00, 0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00, 0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07, 0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00, 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x7f,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0xfc,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x7f,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0xf8, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x0f,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00, 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0xe0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x01,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00, 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00, 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x03,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0xc0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x07, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00, 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00, 0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xc0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x7f,0x00,0x00,0x00,0xc0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01, 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xc0,0x0f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x01,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xe0, 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x80,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f, 0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x80,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xf8,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xfc,0x3f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00, 0xfc,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x80,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x01,0x00,0x00,0x00,0xfe,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x80, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xff,0x7f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff, 0x7f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x80,0xff,0x7f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff, 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00, 0x80,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x80,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x3f,0x00,0x00,0x00,0xc0,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xe0,0xff,0xff,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff, 0xff,0x7f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0xff, 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8, 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00, 0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x07,0x00,0x00,0x00,0xf8,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00, 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0xff,0xff,0x03,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff, 0xff,0xff,0x3f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xfe,0xff, 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00, 0x00,0x00,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xc0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff, 0xff,0x7f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x1f, 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff, 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x0f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, 0xff,0xff,0xff,0x1f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff, 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00, 0x00,0x00,0xe0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe0, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff, 0xff,0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff, 0x0f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0, 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0x1f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff, 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xf8, 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0xe0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x01, 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x07,0x00,0x00, 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff, 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x3f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff, 0xff,0x07,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf0,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff, 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00, 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0xf0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x1f, 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x03,0x00, 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff, 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff, 0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xe0,0xff,0xff,0xff, 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xe0,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff, 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xfc, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00, 0xe0,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xf8,0xff, 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff, 0x03,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x00, 0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff, 0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x01, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff, 0xff,0xff,0xff,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xf8,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xfc,0xff,0xff, 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff, 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00, 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x3f,0x00,0x00,0x00,0xfc, 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff, 0x3f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x3f, 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xf0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, 0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff, 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf8,0xff,0xff,0x1f,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x0f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xf0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x80,0xff,0xff, 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x0f,0x00,0x00,0x00,0xfe,0xff,0xff,0xff, 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x07,0x00,0x00, 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00, 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfc,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff, 0xff,0x01,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff, 0x01,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xe0,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff, 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfe,0x7f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0x7f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xc0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xf8,0xff, 0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x1f,0x00,0x00,0x00,0x80,0xff,0xff,0xff, 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfc,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x3f,0x00,0x00, 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfc,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff, 0xff,0x1f,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x80,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, 0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0x03, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x80, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfc,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0x03,0x00, 0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, 0xff,0xff,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xc0,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x1f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0xf0, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff, 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x1f,0x00, 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xfe,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff, 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xfc,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xe0,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0x7f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00, 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfc,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0x7f,0x00, 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xf8,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x07,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xf0, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff, 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfc,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x01,0x00,0x00,0x00,0x00, 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x7f,0x00, 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xe0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfe,0x1f,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x1f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, 0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff, 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfc,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xc0,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x80,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0x7f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff, 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xf8,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, 0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xfc, 0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x01,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff, 0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x1f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfe,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xf0,0xff,0xff,0xff, 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00, 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0x07,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfc,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff, 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff, 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xc0,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0xc0,0xff,0xff, 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x0f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfc,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8, 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff, 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xf8,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xfe, 0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x7f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x1f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xf0,0xff,0xff,0xff, 0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x80,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00, 0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff, 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf0,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x80,0xff,0xff, 0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf8,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00, 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfc,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff, 0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xf8, 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00, 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x7f,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff, 0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00, 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc, 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff, 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xf8,0xff, 0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x07,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,0xfc,0x00,0x00,0x00, 0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,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, 0xfc,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0x7f,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,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,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff, 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x7f,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x80, 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,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,0xfc,0x00,0x00, 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x1f, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x0f,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff, 0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x7f,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,0xfc,0x00,0x00,0x00,0x00,0x00, 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,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,0xfc,0x00, 0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0x00, 0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00, 0x00,0x00,0x00,0x00,0x00,0x01,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff, 0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x30,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe, 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x80,0x0f,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,0xfc,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xc0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x80, 0xff,0x01,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,0xfc, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x7f,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,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,0xfc,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x7f,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, 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,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,0xfc,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0x03,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,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,0xfc,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,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,0xfc,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x01,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x7f,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,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,0xfc,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,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,0xfc, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,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,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x03,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,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,0xfc,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,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, 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0x0f,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0x01,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,0xfc,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,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,0x00,0x00,0x00, 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,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,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,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,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x01,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,0x00,0xfc,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,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,0x00,0x00,0x00,0x00, 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,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,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x0f,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,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0x7f,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,0x00,0x00,0x00,0x00,0xfc, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,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,0x00, 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,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,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,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,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0x03,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,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,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, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0xfc}; |
Added dialog.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 | # ------------------------------------------------------------------------------ # dialog.tcl # This file is part of Unifix BWidget Toolkit # $Id: dialog.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - Dialog::create # - Dialog::configure # - Dialog::cget # - Dialog::getframe # - Dialog::add # - Dialog::itemconfigure # - Dialog::itemcget # - Dialog::invoke # - Dialog::setfocus # - Dialog::enddialog # - Dialog::draw # - Dialog::withdraw # - Dialog::_destroy # ------------------------------------------------------------------------------ namespace eval Dialog { ButtonBox::use Widget::bwinclude Dialog ButtonBox .bbox \ remove {-orient} \ initialize {-spacing 10 -padx 10} Widget::declare Dialog { {-title String "" 0} {-modal Enum local 0 {none local global}} {-bitmap TkResource "" 1 label} {-image TkResource "" 1 label} {-separator Boolean 0 1} {-cancel Int -1 0 {=-1 ""}} {-parent String "" 0} {-side Enum bottom 1 {bottom left top right}} {-anchor Enum c 1 {n e w s c}} } Widget::addmap Dialog "" :cmd {-background {}} Widget::addmap Dialog "" .frame {-background {}} proc ::Dialog { path args } { return [eval Dialog::create $path $args] } proc use {} {} bind BwDialog <Destroy> {Dialog::enddialog %W -1; Dialog::_destroy %W} variable _widget } # ------------------------------------------------------------------------------ # Command Dialog::create # ------------------------------------------------------------------------------ proc Dialog::create { path args } { global tcl_platform variable _widget Widget::init Dialog $path $args set bg [Widget::getoption $path -background] if { ![string compare $tcl_platform(platform) "unix"] } { toplevel $path -relief raised -borderwidth 1 -background $bg } else { toplevel $path -relief flat -borderwidth 0 -background $bg } bindtags $path [list $path BwDialog all] wm overrideredirect $path 1 wm title $path [Widget::getoption $path -title] set parent [Widget::getoption $path -parent] if { ![winfo exists $parent] } { set parent [winfo parent $path] } wm transient $path [winfo toplevel $parent] wm withdraw $path set side [Widget::getoption $path -side] if { ![string compare $side "left"] || ![string compare $side "right"] } { set orient vertical } else { set orient horizontal } set bbox [eval ButtonBox::create $path.bbox [Widget::subcget $path .bbox] \ -orient $orient] set frame [frame $path.frame -relief flat -borderwidth 0 -background $bg] if { [set bitmap [Widget::getoption $path -image]] != "" } { set label [label $path.label -image $bitmap -background $bg] } elseif { [set bitmap [Widget::getoption $path -bitmap]] != "" } { set label [label $path.label -bitmap $bitmap -background $bg] } if { [Widget::getoption $path -separator] } { Separator::create $path.sep -orient $orient -background $bg } set _widget($path,realized) 0 set _widget($path,nbut) 0 bind $path <Escape> "ButtonBox::invoke $path.bbox [Widget::getoption $path -cancel]" bind $path <Return> "ButtonBox::invoke $path.bbox default" rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval Dialog::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command Dialog::configure # ------------------------------------------------------------------------------ proc Dialog::configure { path args } { set res [Widget::configure $path $args] if { [Widget::hasChanged $path -title title] } { wm title $path $title } if { [Widget::hasChanged $path -background bg] } { if { [winfo exists $path.label] } { $path.label configure -background $bg } if { [winfo exists $path.sep] } { Separator::configure $path.sep -background $bg } } return $res } # ------------------------------------------------------------------------------ # Command Dialog::cget # ------------------------------------------------------------------------------ proc Dialog::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command Dialog::getframe # ------------------------------------------------------------------------------ proc Dialog::getframe { path } { return $path.frame } # ------------------------------------------------------------------------------ # Command Dialog::add # ------------------------------------------------------------------------------ proc Dialog::add { path args } { variable _widget set res [eval ButtonBox::add $path.bbox \ -command [list "Dialog::enddialog $path $_widget($path,nbut)"] $args] incr _widget($path,nbut) return $res } # ------------------------------------------------------------------------------ # Command Dialog::itemconfigure # ------------------------------------------------------------------------------ proc Dialog::itemconfigure { path index args } { return [eval ButtonBox::itemconfigure $path.bbox $index $args] } # ------------------------------------------------------------------------------ # Command Dialog::itemcget # ------------------------------------------------------------------------------ proc Dialog::itemcget { path index option } { return [ButtonBox::itemcget $path.bbox $index $option] } # ------------------------------------------------------------------------------ # Command Dialog::invoke # ------------------------------------------------------------------------------ proc Dialog::invoke { path index } { ButtonBox::invoke $path.bbox $index } # ------------------------------------------------------------------------------ # Command Dialog::setfocus # ------------------------------------------------------------------------------ proc Dialog::setfocus { path index } { ButtonBox::setfocus $path.bbox $index } # ------------------------------------------------------------------------------ # Command Dialog::enddialog # ------------------------------------------------------------------------------ proc Dialog::enddialog { path result } { variable _widget set _widget($path,result) $result } # ------------------------------------------------------------------------------ # Command Dialog::draw # ------------------------------------------------------------------------------ proc Dialog::draw { path {focus ""}} { variable _widget set parent [Widget::getoption $path -parent] if { !$_widget($path,realized) } { set _widget($path,realized) 1 if { [llength [winfo children $path.bbox]] } { set side [Widget::getoption $path -side] if { ![string compare $side "left"] || ![string compare $side "right"] } { set pad -padx set fill y } else { set pad -pady set fill x } pack $path.bbox -side $side -anchor [Widget::getoption $path -anchor] -padx 1m -pady 1m if { [winfo exists $path.sep] } { pack $path.sep -side $side -fill $fill $pad 2m } } if { [winfo exists $path.label] } { pack $path.label -side left -anchor n -padx 3m -pady 3m } pack $path.frame -padx 1m -pady 1m -fill both -expand yes } if { [winfo exists $parent] } { BWidget::place $path 0 0 center $parent } else { BWidget::place $path 0 0 center } update idletasks wm overrideredirect $path 0 wm deiconify $path tkwait visibility $path BWidget::focus set $path if { [winfo exists $focus] } { focus -force $focus } else { ButtonBox::setfocus $path.bbox default } if { [set grab [Widget::getoption $path -modal]] != "none" } { BWidget::grab $grab $path catch {unset _widget($path,result)} tkwait variable Dialog::_widget($path,result) if { [info exists _widget($path,result)] } { set res $_widget($path,result) unset _widget($path,result) } else { set res -1 } withdraw $path return $res } return "" } # ------------------------------------------------------------------------------ # Command Dialog::withdraw # ------------------------------------------------------------------------------ proc Dialog::withdraw { path } { BWidget::grab release $path BWidget::focus release $path if { [winfo exists $path] } { wm withdraw $path } } # ------------------------------------------------------------------------------ # Command Dialog::_destroy # ------------------------------------------------------------------------------ proc Dialog::_destroy { path } { variable _widget BWidget::grab release $path BWidget::focus release $path catch {unset _widget($path,result)} unset _widget($path,realized) unset _widget($path,nbut) Widget::destroy $path rename $path {} } |
Added dragsite.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 | # ------------------------------------------------------------------------------ # dragsite.tcl # This file is part of Unifix BWidget Toolkit # $Id: dragsite.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - DragSite::include # - DragSite::setdrag # - DragSite::register # - DragSite::_begin_drag # - DragSite::_init_drag # - DragSite::_end_drag # - DragSite::_update_operation # ------------------------------------------------------------------------------ namespace eval DragSite { Widget::declare DragSite { {-dragevent Enum 1 0 {1 2 3}} {-draginitcmd String "" 0} {-dragendcmd String "" 0} } variable _topw ".drag" variable _tabops variable _state variable _x0 variable _y0 bind BwDrag1 <ButtonPress-1> {DragSite::_begin_drag press %W %s %X %Y} bind BwDrag1 <B1-Motion> {DragSite::_begin_drag motion %W %s %X %Y} bind BwDrag2 <ButtonPress-2> {DragSite::_begin_drag press %W %s %X %Y} bind BwDrag2 <B2-Motion> {DragSite::_begin_drag motion %W %s %X %Y} bind BwDrag3 <ButtonPress-3> {DragSite::_begin_drag press %W %s %X %Y} bind BwDrag3 <B3-Motion> {DragSite::_begin_drag motion %W %s %X %Y} proc use {} {} } # ------------------------------------------------------------------------------ # Command DragSite::include # ------------------------------------------------------------------------------ proc DragSite::include { class type event } { set dragoptions { {-dragenabled Boolean 0 0} {-draginitcmd String "" 0} {-dragendcmd String "" 0} } lappend dragoptions \ [list -dragtype String $type 0] \ [list -dragevent Enum $event 0 {1 2 3}] Widget::declare $class $dragoptions } # ------------------------------------------------------------------------------ # Command DragSite::setdrag # Widget interface to register # ------------------------------------------------------------------------------ proc DragSite::setdrag { path subpath initcmd endcmd {force 0}} { set cen [Widget::hasChanged $path -dragenabled en] set cdragevt [Widget::hasChanged $path -dragevent dragevt] if { $en } { if { $force || $cen || $cdragevt } { register $subpath \ -draginitcmd $initcmd \ -dragendcmd $endcmd \ -dragevent $dragevt } } else { register $subpath } } # ------------------------------------------------------------------------------ # Command DragSite::register # ------------------------------------------------------------------------------ proc DragSite::register { path args } { upvar \#0 DragSite::$path drag if { [info exists drag] } { bind $path $drag(evt) {} unset drag } Widget::init DragSite .drag$path $args set event [Widget::getoption .drag$path -dragevent] set initcmd [Widget::getoption .drag$path -draginitcmd] set endcmd [Widget::getoption .drag$path -dragendcmd] set tags [bindtags $path] set idx [lsearch $tags "BwDrag*"] Widget::destroy .drag$path if { $initcmd != "" } { if { $idx != -1 } { bindtags $path [lreplace $tags $idx $idx BwDrag$event] } else { bindtags $path [concat $tags BwDrag$event] } set drag(initcmd) $initcmd set drag(endcmd) $endcmd set drag(evt) $event } elseif { $idx != -1 } { bindtags $path [lreplace $tags $idx $idx] } } # ------------------------------------------------------------------------------ # Command DragSite::_begin_drag # ------------------------------------------------------------------------------ proc DragSite::_begin_drag { event source state X Y } { variable _x0 variable _y0 variable _state switch -- $event { press { set _x0 $X set _y0 $Y set _state "press" } motion { if { ![string compare $_state "press"] } { if { abs($_x0-$X) > 3 || abs($_y0-$Y) > 3 } { set _state "done" _init_drag $source $state $X $Y } } } } } # ------------------------------------------------------------------------------ # Command DragSite::_init_drag # ------------------------------------------------------------------------------ proc DragSite::_init_drag { source state X Y } { variable _topw upvar \#0 DragSite::$source drag destroy $_topw toplevel $_topw wm withdraw $_topw wm overrideredirect $_topw 1 set info [uplevel \#0 $drag(initcmd) [list $source $X $Y .drag]] if { $info != "" } { set type [lindex $info 0] set ops [lindex $info 1] set data [lindex $info 2] if { [winfo children $_topw] == "" } { if { ![string compare $type "BITMAP"] || ![string compare $type "IMAGE"] } { label $_topw.l -image [Bitmap::get dragicon] -relief flat -bd 0 } else { label $_topw.l -image [Bitmap::get dragfile] -relief flat -bd 0 } pack $_topw.l } wm geometry $_topw +[expr $X+1]+[expr $Y+1] wm deiconify $_topw tkwait visibility $_topw BWidget::grab set $_topw BWidget::focus set $_topw bindtags $_topw [list $_topw DragTop] DropSite::_init_drag $_topw $drag(evt) $source $state $X $Y $type $ops $data } else { destroy $_topw } } # ------------------------------------------------------------------------------ # Command DragSite::_end_drag # ------------------------------------------------------------------------------ proc DragSite::_end_drag { source target op type data result } { variable _topw upvar \#0 DragSite::$source drag BWidget::grab release $_topw BWidget::focus release $_topw destroy $_topw if { $drag(endcmd) != "" } { uplevel \#0 $drag(endcmd) [list $source $target $op $type $data $result] } } |
Added dropsite.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 | # ------------------------------------------------------------------------------ # dropsite.tcl # This file is part of Unifix BWidget Toolkit # $Id: dropsite.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - DropSite::include # - DropSite::setdrop # - DropSite::register # - DropSite::setcursor # - DropSite::setoperation # - DropSite::_update_operation # - DropSite::_compute_operation # - DropSite::_draw_operation # - DropSite::_init_drag # - DropSite::_motion # - DropSite::_release # ------------------------------------------------------------------------------ namespace eval DropSite { Widget::declare DropSite { {-dropovercmd String "" 0} {-dropcmd String "" 0} {-droptypes String "" 0} } proc use { } {} variable _top ".drag" variable _opw ".drag.\#op" variable _target "" variable _status 0 variable _tabops variable _defops variable _source variable _type variable _data variable _evt # key win unix # shift 1 | 1 -> 1 # control 4 | 4 -> 4 # alt 8 | 16 -> 24 # meta | 64 -> 88 array set _tabops { mod,none 0 mod,shift 1 mod,control 4 mod,alt 24 ops,copy 1 ops,move 1 ops,link 1 } if { $tcl_platform(platform) == "unix" } { set _tabops(mod,alt) 8 } else { set _tabops(mod,alt) 16 } array set _defops \ [list \ copy,mod shift \ move,mod control \ link,mod alt \ copy,img @[file join $env(BWIDGET_LIBRARY) "images" "opcopy.xbm"] \ move,img @[file join $env(BWIDGET_LIBRARY) "images" "opmove.xbm"] \ link,img @[file join $env(BWIDGET_LIBRARY) "images" "oplink.xbm"]] bind DragTop <KeyPress-Shift_L> {DropSite::_update_operation [expr %s | 1]} bind DragTop <KeyPress-Shift_R> {DropSite::_update_operation [expr %s | 1]} bind DragTop <KeyPress-Control_L> {DropSite::_update_operation [expr %s | 4]} bind DragTop <KeyPress-Control_R> {DropSite::_update_operation [expr %s | 4]} if { $tcl_platform(platform) == "unix" } { bind DragTop <KeyPress-Alt_L> {DropSite::_update_operation [expr %s | 8]} bind DragTop <KeyPress-Alt_R> {DropSite::_update_operation [expr %s | 8]} } else { bind DragTop <KeyPress-Alt_L> {DropSite::_update_operation [expr %s | 16]} bind DragTop <KeyPress-Alt_R> {DropSite::_update_operation [expr %s | 16]} } bind DragTop <KeyRelease-Shift_L> {DropSite::_update_operation [expr %s & ~1]} bind DragTop <KeyRelease-Shift_R> {DropSite::_update_operation [expr %s & ~1]} bind DragTop <KeyRelease-Control_L> {DropSite::_update_operation [expr %s & ~4]} bind DragTop <KeyRelease-Control_R> {DropSite::_update_operation [expr %s & ~4]} if { $tcl_platform(platform) == "unix" } { bind DragTop <KeyRelease-Alt_L> {DropSite::_update_operation [expr %s & ~8]} bind DragTop <KeyRelease-Alt_R> {DropSite::_update_operation [expr %s & ~8]} } else { bind DragTop <KeyRelease-Alt_L> {DropSite::_update_operation [expr %s & ~16]} bind DragTop <KeyRelease-Alt_R> {DropSite::_update_operation [expr %s & ~16]} } } # ------------------------------------------------------------------------------ # Command DropSite::include # ------------------------------------------------------------------------------ proc DropSite::include { class types } { set dropoptions { {-dropenabled Boolean 0 0} {-dropovercmd String "" 0} {-dropcmd String "" 0} } lappend dropoptions [list -droptypes String $types 0] Widget::declare $class $dropoptions } # ------------------------------------------------------------------------------ # Command DropSite::setdrop # Widget interface to register # ------------------------------------------------------------------------------ proc DropSite::setdrop { path subpath dropover drop {force 0}} { set cen [Widget::hasChanged $path -dropenabled en] set ctypes [Widget::hasChanged $path -droptypes types] if { $en } { if { $force || $cen || $ctypes } { register $subpath \ -droptypes $types \ -dropcmd $drop \ -dropovercmd $dropover } } else { register $subpath } } # ------------------------------------------------------------------------------ # Command DropSite::register # ------------------------------------------------------------------------------ proc DropSite::register { path args } { variable _tabops variable _defops upvar \#0 DropSite::$path drop Widget::init DropSite .drop$path $args if { [info exists drop] } { unset drop } set dropcmd [Widget::getoption .drop$path -dropcmd] set types [Widget::getoption .drop$path -droptypes] set overcmd [Widget::getoption .drop$path -dropovercmd] Widget::destroy .drop$path if { $dropcmd != "" && $types != "" } { set drop(dropcmd) $dropcmd set drop(overcmd) $overcmd foreach {type ops} $types { set drop($type,ops) {} foreach {descop lmod} $ops { if { ![llength $descop] || [llength $descop] > 3 } { return -code error "invalid operation description \"$descop\"" } foreach {subop baseop imgop} $descop { set subop [string trim $subop] if { ![string length $subop] } { return -code error "sub operation is empty" } if { ![string length $baseop] } { set baseop $subop } if { [info exists drop($type,ops,$subop)] } { return -code error "operation \"$subop\" already defined" } if { ![info exists _tabops(ops,$baseop)] } { return -code error "invalid base operation \"$baseop\"" } if { [string compare $subop $baseop] && [info exists _tabops(ops,$subop)] } { return -code error "sub operation \"$subop\" is a base operation" } if { ![string length $imgop] } { set imgop $_defops($baseop,img) } } if { ![string compare $lmod "program"] } { set drop($type,ops,$subop) $baseop set drop($type,img,$subop) $imgop } else { if { ![string length $lmod] } { set lmod $_defops($baseop,mod) } set mask 0 foreach mod $lmod { if { ![info exists _tabops(mod,$mod)] } { return -code error "invalid modifier \"$mod\"" } set mask [expr {$mask | $_tabops(mod,$mod)}] } if { ($mask == 0) != ([string compare $subop "default"] == 0) } { return -code error "sub operation default can only be used with modifier \"none\"" } set drop($type,mod,$mask) $subop set drop($type,ops,$subop) $baseop set drop($type,img,$subop) $imgop lappend masklist $mask } } if { ![info exists drop($type,mod,0)] } { set drop($type,mod,0) default set drop($type,ops,default) copy set drop($type,img,default) $_defops(copy,img) lappend masklist 0 } set drop($type,ops,force) copy set drop($type,img,force) $_defops(copy,img) foreach mask [lsort -integer -decreasing $masklist] { lappend drop($type,ops) $mask $drop($type,mod,$mask) } } } } # ------------------------------------------------------------------------------ # Command DropSite::setcursor # ------------------------------------------------------------------------------ proc DropSite::setcursor { cursor } { catch {.drag configure -cursor $cursor} } # ------------------------------------------------------------------------------ # Command DropSite::setoperation # ------------------------------------------------------------------------------ proc DropSite::setoperation { op } { variable _curop variable _dragops variable _target variable _type upvar \#0 DropSite::$_target drop if { [info exist drop($_type,ops,$op)] && $_dragops($drop($_type,ops,$op)) } { set _curop $op } else { # force to a copy operation set _curop force } } # ------------------------------------------------------------------------------ # Command DropSite::_init_drag # ------------------------------------------------------------------------------ proc DropSite::_init_drag { top evt source state X Y type ops data } { variable _top variable _source variable _type variable _data variable _target variable _status variable _state variable _dragops variable _opw variable _evt catch {unset _dragops} array set _dragops {copy 1 move 0 link 0} foreach op $ops { set _dragops($op) 1 } set _target "" set _status 0 set _top $top set _source $source set _type $type set _data $data label $_opw -relief flat -bd 0 -highlightthickness 0 \ -foreground black -background white bind $top <ButtonRelease-$evt> {DropSite::_release %X %Y} bind $top <B$evt-Motion> {DropSite::_motion %X %Y} bind $top <Motion> {DropSite::_release %X %Y} set _state $state set _evt $evt _motion $X $Y } # ------------------------------------------------------------------------------ # Command DropSite::_update_operation # ------------------------------------------------------------------------------ proc DropSite::_update_operation { state } { variable _top variable _status variable _state if { $_status & 3 } { set _state $state _motion [winfo pointerx $_top] [winfo pointery $_top] } } # ------------------------------------------------------------------------------ # Command DropSite::_compute_operation # ------------------------------------------------------------------------------ proc DropSite::_compute_operation { target state type } { variable _curop variable _dragops upvar \#0 DropSite::$target drop foreach {mask op} $drop($type,ops) { if { ($state & $mask) == $mask } { if { $_dragops($drop($type,ops,$op)) } { set _curop $op return } } } set _curop force } # ------------------------------------------------------------------------------ # Command DropSite::_draw_operation # ------------------------------------------------------------------------------ proc DropSite::_draw_operation { target type } { variable _opw variable _curop variable _dragops variable _tabops variable _status upvar \#0 DropSite::$target drop if { !($_status & 1) } { catch {place forget $_opw} return } if { 0 } { if { ![info exist drop($type,ops,$_curop)] || !$_dragops($drop($type,ops,$_curop)) } { # force to a copy operation set _curop copy catch { $_opw configure -bitmap $_tabops(img,copy) place $_opw -relx 1 -rely 1 -anchor se } } } elseif { ![string compare $_curop "default"] } { catch {place forget $_opw} } else { catch { $_opw configure -bitmap $drop($type,img,$_curop) place $_opw -relx 1 -rely 1 -anchor se } } } # ------------------------------------------------------------------------------ # Command DropSite::_motion # ------------------------------------------------------------------------------ proc DropSite::_motion { X Y } { variable _top variable _target variable _status variable _state variable _curop variable _type variable _data variable _source variable _evt set script [bind $_top <B$_evt-Motion>] bind $_top <B$_evt-Motion> {} bind $_top <Motion> {} wm geometry $_top "+[expr {$X+1}]+[expr {$Y+1}]" update if { ![winfo exists $_top] } { return } set path [winfo containing $X $Y] if { [string compare $path $_target] } { # path != current target if { $_status & 2 } { # current target is valid and has recall status # generate leave event upvar \#0 DropSite::$_target drop uplevel \#0 $drop(overcmd) [list $_target $_source leave $X $Y $_curop $_type $_data] } set _target $path upvar \#0 DropSite::$_target drop if { [info exists drop($_type,ops)] } { # path is a valid target _compute_operation $_target $_state $_type if { $drop(overcmd) != "" } { set arg [list $_target $_source enter $X $Y $_curop $_type $_data] set _status [uplevel \#0 $drop(overcmd) $arg] } else { set _status 1 catch {$_top configure -cursor based_arrow_down} } _draw_operation $_target $_type update catch { bind $_top <B$_evt-Motion> {DropSite::_motion %X %Y} bind $_top <Motion> {DropSite::_release %X %Y} } return } else { set _status 0 catch {$_top configure -cursor dot} _draw_operation "" "" } } elseif { $_status & 2 } { upvar \#0 DropSite::$_target drop _compute_operation $_target $_state $_type set arg [list $_target $_source motion $X $Y $_curop $_type $_data] set _status [uplevel \#0 $drop(overcmd) $arg] _draw_operation $_target $_type } update catch { bind $_top <B$_evt-Motion> {DropSite::_motion %X %Y} bind $_top <Motion> {DropSite::_release %X %Y} } } # ------------------------------------------------------------------------------ # Command DropSite::_release # ------------------------------------------------------------------------------ proc DropSite::_release { X Y } { variable _target variable _status variable _curop variable _source variable _type variable _data if { $_status & 1 } { upvar \#0 DropSite::$_target drop set res [uplevel \#0 $drop(dropcmd) [list $_target $_source $X $Y $_curop $_type $_data]] DragSite::_end_drag $_source $_target $drop($_type,ops,$_curop) $_type $_data $res } else { if { $_status & 2 } { # notify leave event upvar \#0 DropSite::$_target drop uplevel \#0 $drop(overcmd) [list $_target $_source leave $X $Y $_curop $_type $_data] } DragSite::_end_drag $_source "" "" $_type $_data 0 } } |
Added dynhelp.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 | # ------------------------------------------------------------------------------ # dynhelp.tcl # This file is part of Unifix BWidget Toolkit # $Id: dynhelp.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - DynamicHelp::configure # - DynamicHelp::include # - DynamicHelp::sethelp # - DynamicHelp::register # - DynamicHelp::_motion_balloon # - DynamicHelp::_motion_info # - DynamicHelp::_leave_info # - DynamicHelp::_menu_info # - DynamicHelp::_show_help # - DynamicHelp::_init # ------------------------------------------------------------------------------ namespace eval DynamicHelp { Widget::declare DynamicHelp { {-foreground TkResource black 0 label} {-background TkResource "#FFFFC0" 0 label} {-borderwidth TkResource 1 0 label} {-justify TkResource left 0 label} {-font TkResource "helvetica 8" 0 label} {-delay Int 600 0 {=100 =2000}} {-bd Synonym -borderwidth} {-bg Synonym -background} {-fg Synonym -foreground} } proc use {} {} variable _registered variable _top ".help_shell" variable _id "" variable _delay 600 variable _current "" variable _saved Widget::init DynamicHelp $_top {} bind BwHelpBalloon <Enter> {DynamicHelp::_motion_balloon enter %W %X %Y} bind BwHelpBalloon <Motion> {DynamicHelp::_motion_balloon motion %W %X %Y} bind BwHelpBalloon <Leave> {DynamicHelp::_motion_balloon leave %W %X %Y} bind BwHelpBalloon <Button> {DynamicHelp::_motion_balloon button %W %X %Y} bind BwHelpBalloon <Destroy> {catch {unset DynamicHelp::_registered(%W)}} bind BwHelpVariable <Enter> {DynamicHelp::_motion_info %W} bind BwHelpVariable <Motion> {DynamicHelp::_motion_info %W} bind BwHelpVariable <Leave> {DynamicHelp::_leave_info %W} bind BwHelpVariable <Destroy> {catch {unset DynamicHelp::_registered(%W)}} bind BwHelpMenu <<MenuSelect>> {DynamicHelp::_menu_info select %W} bind BwHelpMenu <Unmap> {DynamicHelp::_menu_info unmap %W} bind BwHelpMenu <Destroy> {catch {unset DynamicHelp::_registered(%W)}} } # ------------------------------------------------------------------------------ # Command DynamicHelp::configure # ------------------------------------------------------------------------------ proc DynamicHelp::configure { args } { variable _top variable _delay set res [Widget::configure $_top $args] if { [Widget::hasChanged $_top -delay val] } { set _delay $val } return $res } # ------------------------------------------------------------------------------ # Command DynamicHelp::include # ------------------------------------------------------------------------------ proc DynamicHelp::include { class type } { set helpoptions { {-helptext String "" 0} {-helpvar String "" 0}} lappend helpoptions [list -helptype Enum $type 0 {balloon variable}] Widget::declare $class $helpoptions } # ------------------------------------------------------------------------------ # Command DynamicHelp::sethelp # ------------------------------------------------------------------------------ proc DynamicHelp::sethelp { path subpath {force 0}} { set ctype [Widget::hasChanged $path -helptype htype] set ctext [Widget::hasChanged $path -helptext htext] set cvar [Widget::hasChanged $path -helpvar hvar] if { $force || $ctype || $ctext || $cvar } { switch $htype { balloon { return [register $subpath balloon $htext] } variable { return [register $subpath variable $hvar $htext] } } return [register $subpath $htype] } } # ------------------------------------------------------------------------------ # Command DynamicHelp::register # ------------------------------------------------------------------------------ proc DynamicHelp::register { path type args } { variable _registered if { [winfo exists $path] } { set evt [bindtags $path] set idx [lsearch $evt "BwHelp*"] set evt [lreplace $evt $idx $idx] switch $type { balloon { set text [lindex $args 0] if { $text != "" } { set _registered($path) $text lappend evt BwHelpBalloon } else { catch {unset _registered($path)} } bindtags $path $evt return 1 } variable { set var [lindex $args 0] set text [lindex $args 1] if { $text != "" && $var != "" } { set _registered($path) [list $var $text] lappend evt BwHelpVariable } else { catch {unset _registered($path)} } bindtags $path $evt return 1 } menu { set cpath [BWidget::clonename $path] if { [winfo exists $cpath] } { set path $cpath } set var [lindex $args 0] if { $var != "" } { set _registered($path) [list $var] lappend evt BwHelpMenu } else { catch {unset _registered($path)} } bindtags $path $evt return 1 } menuentry { set cpath [BWidget::clonename $path] if { [winfo exists $cpath] } { set path $cpath } if { [info exists _registered($path)] } { if { [set index [lindex $args 0]] != "" } { set text [lindex $args 1] set idx [lsearch $_registered($path) [list $index *]] if { $text != "" } { if { $idx == -1 } { lappend _registered($path) [list $index $text] } else { set _registered($path) [lreplace $_registered($path) $idx $idx [list $index $text]] } } else { set _registered($path) [lreplace $_registered($path) $idx $idx] } } return 1 } return 0 } } catch {unset _registered($path)} bindtags $path $evt return 1 } else { catch {unset _registered($path)} return 0 } } # ------------------------------------------------------------------------------ # Command DynamicHelp::_motion_balloon # ------------------------------------------------------------------------------ proc DynamicHelp::_motion_balloon { type path x y } { variable _top variable _id variable _delay variable _current if { $_current != $path && $type == "enter" } { set _current $path set type "motion" destroy $_top } if { $_current == $path } { if { $_id != "" } { after cancel $_id set _id "" } if { $type == "motion" } { if { ![winfo exists $_top] } { set _id [after $_delay "DynamicHelp::_show_help $path $x $y"] } } else { destroy $_top set _current "" } } } # ------------------------------------------------------------------------------ # Command DynamicHelp::_motion_info # ------------------------------------------------------------------------------ proc DynamicHelp::_motion_info { path } { variable _registered variable _current variable _saved if { $_current != $path && [info exists _registered($path)] } { if { ![info exists _saved] } { set _saved [GlobalVar::getvar [lindex $_registered($path) 0]] } GlobalVar::setvar [lindex $_registered($path) 0] [lindex $_registered($path) 1] set _current $path } } # ------------------------------------------------------------------------------ # Command DynamicHelp::_leave_info # ------------------------------------------------------------------------------ proc DynamicHelp::_leave_info { path } { variable _registered variable _current variable _saved if { [info exists _registered($path)] } { GlobalVar::setvar [lindex $_registered($path) 0] $_saved } unset _saved set _current "" } # ------------------------------------------------------------------------------ # Command DynamicHelp::_menu_info # Version of R1v1 restored, due to lack of [winfo ismapped] and <Unmap> # under windows for menu. # ------------------------------------------------------------------------------ proc DynamicHelp::_menu_info { event path } { variable _registered if { [info exists _registered($path)] } { set index [$path index active] if { [string compare $index "none"] && [set idx [lsearch $_registered($path) [list $index *]]] != -1 } { GlobalVar::setvar [lindex $_registered($path) 0] \ [lindex [lindex $_registered($path) $idx] 1] } else { GlobalVar::setvar [lindex $_registered($path) 0] "" } } } # ------------------------------------------------------------------------------ # Command DynamicHelp::_show_help # ------------------------------------------------------------------------------ proc DynamicHelp::_show_help { path x y } { variable _top variable _registered variable _id variable _delay if { [info exists _registered($path)] } { destroy $_top toplevel $_top -relief flat \ -bg [Widget::getoption $_top -foreground] \ -bd [Widget::getoption $_top -borderwidth] wm overrideredirect $_top 1 wm transient $_top wm withdraw $_top label $_top.label -text $_registered($path) \ -relief flat -bd 0 -highlightthickness 0 \ -foreground [Widget::getoption $_top -foreground] \ -background [Widget::getoption $_top -background] \ -font [Widget::getoption $_top -font] \ -justify [Widget::getoption $_top -justify] pack $_top.label -side left update idletasks set scrwidth [winfo vrootwidth .] set scrheight [winfo vrootheight .] set width [winfo reqwidth $_top] set height [winfo reqheight $_top] incr y 12 incr x 8 if { $x+$width > $scrwidth } { set x [expr $scrwidth - $width] } if { $y+$height > $scrheight } { set y [expr $y - 12 - $height] } wm geometry $_top "+$x+$y" update idletasks wm deiconify $_top } } |
Added entry.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 | # ------------------------------------------------------------------------------ # entry.tcl # This file is part of Unifix BWidget Toolkit # $Id: entry.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - Entry::create # - Entry::configure # - Entry::cget # - Entry::_destroy # - Entry::_init_drag_cmd # - Entry::_end_drag_cmd # - Entry::_drop_cmd # - Entry::_over_cmd # - Entry::_auto_scroll # - Entry::_scroll # ------------------------------------------------------------------------------ namespace eval Entry { Widget::tkinclude Entry entry :cmd \ remove {-state -cursor -foreground -textvariable} Widget::declare Entry { {-foreground TkResource "" 0 entry} {-disabledforeground TkResource "" 0 button} {-state Enum normal 0 {normal disabled}} {-text String "" 0} {-textvariable String "" 0} {-editable Boolean 1 0} {-command String "" 0} {-relief TkResource "" 0 entry} {-borderwidth TkResource "" 0 entry} {-fg Synonym -foreground} {-bd Synonym -borderwidth} } DynamicHelp::include Entry balloon DragSite::include Entry "" 3 DropSite::include Entry { TEXT {move {}} FGCOLOR {move {}} BGCOLOR {move {}} COLOR {move {}} } foreach event [bind Entry] { bind BwEntry $event [bind Entry $event] } bind BwEntry <Return> {Entry::invoke %W} bind BwEntry <Destroy> {Entry::_destroy %W} bind BwDisabledEntry <Destroy> {Entry::_destroy %W} proc ::Entry { path args } { return [eval Entry::create $path $args] } proc use {} {} } # ------------------------------------------------------------------------------ # Command Entry::create # ------------------------------------------------------------------------------ proc Entry::create { path args } { variable $path upvar 0 $path data Widget::init Entry $path $args set data(afterid) "" if { [set varname [Widget::getoption $path -textvariable]] != "" } { set data(varname) $varname } else { set data(varname) Entry::$path\(var\) } if { [GlobalVar::exists $data(varname)] } { set curval [GlobalVar::getvar $data(varname)] Widget::setoption $path -text $curval } else { set curval [Widget::getoption $path -text] GlobalVar::setvar $data(varname) $curval } eval entry $path [Widget::subcget $path :cmd] uplevel \#0 $path configure -textvariable [list $data(varname)] set state [Widget::getoption $path -state] set editable [Widget::getoption $path -editable] if { $editable && ![string compare $state "normal"] } { bindtags $path [list $path BwEntry [winfo toplevel $path] all] $path configure -takefocus 1 } else { bindtags $path [list $path BwDisabledEntry [winfo toplevel $path] all] $path configure -takefocus 0 } if { $editable == 0 } { $path configure -cursor left_ptr } if { ![string compare $state "disabled"] } { $path configure -foreground [Widget::getoption $path -disabledforeground] } DragSite::setdrag $path $path Entry::_init_drag_cmd Entry::_end_drag_cmd 1 DropSite::setdrop $path $path Entry::_over_cmd Entry::_drop_cmd 1 DynamicHelp::sethelp $path $path 1 rename $path ::$path:cmd proc ::$path { cmd args } "return \[Entry::_path_command $path \$cmd \$args\]" return $path } # ------------------------------------------------------------------------------ # Command Entry::configure # ------------------------------------------------------------------------------ proc Entry::configure { path args } { variable $path upvar 0 $path data Widget::setoption $path -text [$path:cmd get] set res [Widget::configure $path $args] set chstate [Widget::hasChanged $path -state state] set cheditable [Widget::hasChanged $path -editable editable] set chfg [Widget::hasChanged $path -foreground fg] set chdfg [Widget::hasChanged $path -disabledforeground dfg] if { $chstate || $cheditable } { set btags [bindtags $path] if { $editable && ![string compare $state "normal"] } { set idx [lsearch $btags BwDisabledEntry] if { $idx != -1 } { bindtags $path [lreplace $btags $idx $idx BwEntry] } $path:cmd configure -takefocus 1 } else { set idx [lsearch $btags BwEntry] if { $idx != -1 } { bindtags $path [lreplace $btags $idx $idx BwDisabledEntry] } $path:cmd configure -takefocus 0 if { ![string compare [focus] $path] } { focus . } } } if { $chstate || $chfg || $chdfg } { if { ![string compare $state "disabled"] } { $path:cmd configure -fg $dfg } else { $path:cmd configure -fg $fg } } if { $cheditable } { if { $editable } { $path:cmd configure -cursor xterm } else { $path:cmd configure -cursor left_ptr } } if { [Widget::hasChanged $path -textvariable varname] } { if { [string length $varname] } { set data(varname) $varname } else { catch {unset data(var)} set data(varname) Entry::$path\(var\) } if { [GlobalVar::exists $data(varname)] } { set curval [GlobalVar::getvar $data(varname)] Widget::setoption $path -text $curval } else { Widget::hasChanged $path -text curval GlobalVar::setvar $data(varname) $curval } uplevel \#0 $path:cmd configure -textvariable [list $data(varname)] } if { [Widget::hasChanged $path -text curval] } { if { [Widget::getoption $path -textvariable] == "" } { GlobalVar::setvar $data(varname) $curval } else { Widget::setoption $path -text [GlobalVar::getvar $data(varname)] } } DragSite::setdrag $path $path Entry::_init_drag_cmd Entry::_end_drag_cmd DropSite::setdrop $path $path Entry::_over_cmd Entry::_drop_cmd DynamicHelp::sethelp $path $path return $res } # ------------------------------------------------------------------------------ # Command Entry::cget # ------------------------------------------------------------------------------ proc Entry::cget { path option } { Widget::setoption $path -text [$path:cmd get] return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command Entry::invoke # ------------------------------------------------------------------------------ proc Entry::invoke { path } { if { [set cmd [Widget::getoption $path -command]] != "" } { uplevel \#0 $cmd } } # ------------------------------------------------------------------------------ # Command Entry::_path_command # ------------------------------------------------------------------------------ proc Entry::_path_command { path cmd larg } { if { ![string compare $cmd "configure"] || ![string compare $cmd "cget"] } { return [eval Entry::$cmd $path $larg] } else { return [eval $path:cmd $cmd $larg] } } # ------------------------------------------------------------------------------ # Command Entry::_destroy # ------------------------------------------------------------------------------ proc Entry::_destroy { path } { variable $path upvar 0 $path data Widget::destroy $path rename $path {} unset data } # ------------------------------------------------------------------------------ # Command Entry::_init_drag_cmd # ------------------------------------------------------------------------------ proc Entry::_init_drag_cmd { path X Y top } { variable $path upvar 0 $path data if { [set cmd [Widget::getoption $path -draginitcmd]] != "" } { return [uplevel \#0 $cmd [list $path $X $Y $top]] } set type [Widget::getoption $path -dragtype] if { $type == "" } { set type "TEXT" } if { [set drag [$path get]] != "" } { if { [$path:cmd selection present] } { set idx [$path:cmd index @[expr $X-[winfo rootx $path]]] set sel0 [$path:cmd index sel.first] set sel1 [expr [$path:cmd index sel.last]-1] if { $idx >= $sel0 && $idx <= $sel1 } { set drag [string range $drag $sel0 $sel1] set data(dragstart) $sel0 set data(dragend) [expr {$sel1+1}] if { ![Widget::getoption $path -editable] || [Widget::getoption $path -state] == "disabled" } { return [list $type {copy} $drag] } else { return [list $type {copy move} $drag] } } } else { set data(dragstart) 0 set data(dragend) end if { ![Widget::getoption $path -editable] || [Widget::getoption $path -state] == "disabled" } { return [list $type {copy} $drag] } else { return [list $type {copy move} $drag] } } } } # ------------------------------------------------------------------------------ # Command Entry::_end_drag_cmd # ------------------------------------------------------------------------------ proc Entry::_end_drag_cmd { path target op type dnddata result } { variable $path upvar 0 $path data if { [set cmd [Widget::getoption $path -dragendcmd]] != "" } { return [uplevel \#0 $cmd [list $path $target $op $type $dnddata $result]] } if { $result && $op == "move" && $path != $target } { $path:cmd delete $data(dragstart) $data(dragend) } } # ------------------------------------------------------------------------------ # Command Entry::_drop_cmd # ------------------------------------------------------------------------------ proc Entry::_drop_cmd { path source X Y op type dnddata } { variable $path upvar 0 $path data if { $data(afterid) != "" } { after cancel $data(afterid) set data(afterid) "" } if { [set cmd [Widget::getoption $path -dropcmd]] != "" } { set idx [$path:cmd index @[expr $X-[winfo rootx $path]]] return [uplevel \#0 $cmd [list $path $source $idx $op $type $dnddata]] } if { $type == "COLOR" || $type == "FGCOLOR" } { configure $path -foreground $dnddata } elseif { $type == "BGCOLOR" } { configure $path -background $dnddata } else { $path:cmd icursor @[expr $X-[winfo rootx $path]] if { $op == "move" && $path == $source } { $path:cmd delete $data(dragstart) $data(dragend) } set sel0 [$path index insert] $path:cmd insert insert $dnddata set sel1 [$path index insert] $path:cmd selection range $sel0 $sel1 } return 1 } # ------------------------------------------------------------------------------ # Command Entry::_over_cmd # ------------------------------------------------------------------------------ proc Entry::_over_cmd { path source event X Y op type dnddata } { variable $path upvar 0 $path data set x [expr $X-[winfo rootx $path]] if { ![string compare $event "leave"] } { if { [string length $data(afterid)] } { after cancel $data(afterid) set data(afterid) "" } } elseif { [_auto_scroll $path $x] } { return 2 } if { [set cmd [Widget::getoption $path -dropovercmd]] != "" } { set x [expr $X-[winfo rootx $path]] set idx [$path:cmd index @$x] set res [uplevel \#0 $cmd [list $path $source $event $idx $op $type $dnddata]] return $res } if { ![string compare $type "COLOR"] || ![string compare $type "FGCOLOR"] || ![string compare $type "BGCOLOR"] } { DropSite::setcursor based_arrow_down return 1 } if { [Widget::getoption $path -editable] && ![string compare [Widget::getoption $path -state] "normal"] } { if { [string compare $event "leave"] } { $path:cmd selection clear $path:cmd icursor @$x DropSite::setcursor based_arrow_down return 3 } } DropSite::setcursor dot return 0 } # ------------------------------------------------------------------------------ # Command Entry::_auto_scroll # ------------------------------------------------------------------------------ proc Entry::_auto_scroll { path x } { variable $path upvar 0 $path data set xmax [winfo width $path] if { $x <= 10 && [$path:cmd index @0] > 0 } { if { $data(afterid) == "" } { set data(afterid) [after 100 "Entry::_scroll $path -1 $x $xmax"] DropSite::setcursor sb_left_arrow } return 1 } else { if { $x >= $xmax-10 && [$path:cmd index @$xmax] < [$path:cmd index end] } { if { $data(afterid) == "" } { set data(afterid) [after 100 "Entry::_scroll $path 1 $x $xmax"] DropSite::setcursor sb_right_arrow } return 1 } else { if { $data(afterid) != "" } { after cancel $data(afterid) set data(afterid) "" } } } return 0 } # ------------------------------------------------------------------------------ # Command Entry::_scroll # ------------------------------------------------------------------------------ proc Entry::_scroll { path dir x xmax } { variable $path upvar 0 $path data $path:cmd xview scroll $dir units $path:cmd icursor @$x if { ($dir == -1 && [$path:cmd index @0] > 0) || ($dir == 1 && [$path:cmd index @$xmax] < [$path:cmd index end]) } { set data(afterid) [after 100 "Entry::_scroll $path $dir $x $xmax"] } else { set data(afterid) "" DropSite::setcursor dot } } |
Added font.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 | # ------------------------------------------------------------------------------ # font.tcl # This file is part of Unifix BWidget Toolkit # ------------------------------------------------------------------------------ # Index of commands: # - SelectFont::create # - SelectFont::configure # - SelectFont::cget # - SelectFont::_draw # - SelectFont::_destroy # - SelectFont::_modstyle # - SelectFont::_update # - SelectFont::_getfont # - SelectFont::_init # ------------------------------------------------------------------------------ namespace eval SelectFont { Dialog::use LabelFrame::use ScrolledWindow::use Widget::declare SelectFont { {-title String "Font selection" 0} {-parent String "" 0} {-background TkResource "" 0 frame} {-type Enum dialog 0 {dialog toolbar}} {-font TkResource "" 0 label} {-command String "" 0} {-sampletext String "Sample Text" 0} {-bg Synonym -background} } proc ::SelectFont { path args } { return [eval SelectFont::create $path $args] } proc use {} {} variable _families variable _styles {bold italic underline overstrike} variable _sizes {4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24} variable _widget } # ------------------------------------------------------------------------------ # Command SelectFont::create # ------------------------------------------------------------------------------ proc SelectFont::create { path args } { variable _families variable _sizes variable _styles variable $path upvar 0 $path data if { ![info exists _families] } { loadfont } Widget::init SelectFont "$path#SelectFont" $args set bg [Widget::getoption "$path#SelectFont" -background] if { [Widget::getoption "$path#SelectFont" -type] == "dialog" } { Dialog::create $path -modal local -default 0 -cancel 1 -background $bg \ -title [Widget::getoption "$path#SelectFont" -title] \ -parent [Widget::getoption "$path#SelectFont" -parent] set frame [Dialog::getframe $path] set topf [frame $frame.topf -relief flat -borderwidth 0 -background $bg] set labf1 [LabelFrame::create $topf.labf1 -text "Font" -name font \ -side top -anchor w -relief flat -background $bg] set sw [ScrolledWindow::create [LabelFrame::getframe $labf1].sw \ -background $bg] set lbf [listbox $sw.lb \ -height 5 -width 25 -exportselection false -selectmode browse] ScrolledWindow::setwidget $sw $lbf LabelFrame::configure $labf1 -focus $lbf eval $lbf insert end $_families set script "set SelectFont::$path\(family\) \[%W curselection\]; SelectFont::_update $path" bind $lbf <ButtonRelease-1> $script bind $lbf <space> $script pack $sw -fill both -expand yes set labf2 [LabelFrame::create $topf.labf2 -text "Size" -name size \ -side top -anchor w -relief flat -background $bg] set sw [ScrolledWindow::create [LabelFrame::getframe $labf2].sw \ -scrollbar vertical -background $bg] set lbs [listbox $sw.lb \ -height 5 -width 6 -exportselection false -selectmode browse] ScrolledWindow::setwidget $sw $lbs LabelFrame::configure $labf2 -focus $lbs eval $lbs insert end $_sizes set script "set SelectFont::$path\(size\) \[%W curselection\]; SelectFont::_update $path" bind $lbs <ButtonRelease-1> $script bind $lbs <space> $script pack $sw -fill both -expand yes set labf3 [LabelFrame::create $topf.labf3 -text "Style" -name style \ -side top -anchor w -relief sunken -bd 1 -background $bg] set subf [LabelFrame::getframe $labf3] foreach st $_styles { set name [lindex [BWidget::getname $st] 0] if { $name == "" } { set name "[string toupper [string index $name 0]][string range $name 1 end]" } checkbutton $subf.$st -text $name \ -variable SelectFont::$path\($st\) \ -background $bg \ -command "SelectFont::_update $path" bind $subf.$st <Return> break pack $subf.$st -anchor w } LabelFrame::configure $labf3 -focus $subf.[lindex $_styles 0] pack $labf1 -side left -anchor n -fill both -expand yes pack $labf2 -side left -anchor n -fill both -expand yes -padx 8 pack $labf3 -side left -anchor n -fill both -expand yes set botf [frame $frame.botf -width 100 -height 50 \ -bg white -bd 0 -relief flat \ -highlightthickness 1 -takefocus 0 \ -highlightbackground black \ -highlightcolor black] set lab [label $botf.label \ -background white -foreground black \ -borderwidth 0 -takefocus 0 -highlightthickness 0 \ -text [Widget::getoption "$path#SelectFont" -sampletext]] place $lab -relx 0.5 -rely 0.5 -anchor c pack $topf -pady 4 -fill both -expand yes pack $botf -pady 4 -fill x Dialog::add $path -name ok Dialog::add $path -name cancel set data(label) $lab set data(lbf) $lbf set data(lbs) $lbs _getfont $path proc ::$path { cmd args } "return \[eval SelectFont::\$cmd $path \$args\]" return [_draw $path] } else { frame $path -relief flat -borderwidth 0 -background $bg bind $path <Destroy> "SelectFont::_destroy $path" set lbf [ComboBox::create $path.font \ -highlightthickness 0 -takefocus 0 -background $bg \ -values $_families \ -textvariable SelectFont::$path\(family\) \ -editable 0 \ -modifycmd "SelectFont::_update $path"] set lbs [ComboBox::create $path.size \ -highlightthickness 0 -takefocus 0 -background $bg \ -width 4 \ -values $_sizes \ -textvariable SelectFont::$path\(size\) \ -editable 0 \ -modifycmd "SelectFont::_update $path"] pack $lbf -side left -anchor w pack $lbs -side left -anchor w -padx 4 foreach st $_styles { button $path.$st \ -highlightthickness 0 -takefocus 0 -padx 0 -pady 0 -bd 2 \ -background $bg \ -image [Bitmap::get $st] \ -command "SelectFont::_modstyle $path $st" pack $path.$st -side left -anchor w } set data(label) "" set data(lbf) $lbf set data(lbs) $lbs _getfont $path rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval SelectFont::\$cmd $path \$args\]" } return $path } # ------------------------------------------------------------------------------ # Command SelectFont::configure # ------------------------------------------------------------------------------ proc SelectFont::configure { path args } { variable _styles set res [Widget::configure "$path#SelectFont" $args] if { [Widget::hasChanged "$path#SelectFont" -font font] } { _getfont $path } if { [Widget::hasChanged "$path#SelectFont" -background bg] } { switch -- [Widget::getoption "$path#SelectFont" -type] { dialog { Dialog::configure $path -background $bg set topf [Dialog::getframe $path].topf $topf configure -background $bg foreach labf {labf1 labf2} { LabelFrame::configure $topf.$labf -background $bg set subf [LabelFrame::getframe $topf.$labf] ScrolledWindow::configure $subf.sw -background $bg $subf.sw.lb configure -background $bg } LabelFrame::configure $topf.labf3 -background $bg set subf [LabelFrame::getframe $topf.labf3] foreach w [winfo children $subf] { $w configure -background $bg } } toolbar { $path configure -background $bg ComboBox::configure $path.font -background $bg ComboBox::configure $path.size -background $bg foreach st $_styles { $path.$st configure -background $bg } } } } return $res } # ------------------------------------------------------------------------------ # Command SelectFont::cget # ------------------------------------------------------------------------------ proc SelectFont::cget { path option } { return [Widget::cget "$path#SelectFont" $option] } # ------------------------------------------------------------------------------ # Command SelectFont::loadfont # ------------------------------------------------------------------------------ proc SelectFont::loadfont { } { variable _families # initialize families set _families {} set lfont [font families] lappend lfont times courier helvetica foreach font $lfont { set family [font actual [list $font] -family] if { [lsearch -exact $_families $family] == -1 } { lappend _families $family } } set _families [lsort $_families] } # ------------------------------------------------------------------------------ # Command SelectFont::_draw # ------------------------------------------------------------------------------ proc SelectFont::_draw { path } { variable $path upvar 0 $path data $data(lbf) selection clear 0 end $data(lbf) selection set $data(family) $data(lbf) activate $data(family) $data(lbf) see $data(family) $data(lbs) selection clear 0 end $data(lbs) selection set $data(size) $data(lbs) activate $data(size) $data(lbs) see $data(size) _update $path if { [Dialog::draw $path] == 0 } { set result [Widget::getoption "$path#SelectFont" -font] } else { set result "" } unset data Widget::destroy "$path#SelectFont" destroy $path return $result } # ------------------------------------------------------------------------------ # Command SelectFont::_destroy # ------------------------------------------------------------------------------ proc SelectFont::_destroy { path } { variable $path upvar 0 $path data unset data Widget::destroy "$path#SelectFont" rename $path {} } # ------------------------------------------------------------------------------ # Command SelectFont::_modstyle # ------------------------------------------------------------------------------ proc SelectFont::_modstyle { path style } { variable $path upvar 0 $path data if { $data($style) == 1 } { $path.$style configure -relief raised set data($style) 0 } else { $path.$style configure -relief sunken set data($style) 1 } _update $path } # ------------------------------------------------------------------------------ # Command SelectFont::_update # ------------------------------------------------------------------------------ proc SelectFont::_update { path } { variable _families variable _sizes variable _styles variable $path upvar 0 $path data set type [Widget::getoption "$path#SelectFont" -type] if { $type == "dialog" } { set curs [$path:cmd cget -cursor] $path:cmd configure -cursor watch } if { [Widget::getoption "$path#SelectFont" -type] == "dialog" } { set font [list \ [lindex $_families $data(family)] \ [lindex $_sizes $data(size)]] } else { set font [list $data(family) $data(size)] } foreach st $_styles { if { $data($st) } { lappend font $st } } Widget::setoption "$path#SelectFont" -font $font if { $type == "dialog" } { $data(label) configure -font $font $path:cmd configure -cursor $curs } elseif { [set cmd [Widget::getoption "$path#SelectFont" -command]] != "" } { uplevel \#0 $cmd } } # ------------------------------------------------------------------------------ # Command SelectFont::_getfont # ------------------------------------------------------------------------------ proc SelectFont::_getfont { path } { variable _families variable _styles variable _sizes variable $path upvar 0 $path data array set font [font actual [Widget::getoption "$path#SelectFont" -font]] set data(bold) [expr {[string compare $font(-weight) "normal"] != 0}] set data(italic) [expr {[string compare $font(-slant) "roman"] != 0}] set data(underline) $font(-underline) set data(overstrike) $font(-overstrike) if { [Widget::getoption "$path#SelectFont" -type] == "dialog" } { set idxf [lsearch $_families $font(-family)] set idxs [lsearch $_sizes $font(-size)] set data(family) [expr {$idxf >= 0 ? $idxf : 0}] set data(size) [expr {$idxs >= 0 ? $idxs : 0}] } else { set data(family) $font(-family) set data(size) $font(-size) foreach st $_styles { $path.$st configure -relief [expr {$data($st) ? "sunken":"raised"}] } } } |
Added images/bold.gif.
cannot compute difference between binary files
Added images/copy.gif.
cannot compute difference between binary files
Added images/cut.gif.
cannot compute difference between binary files
Added images/dragfile.gif.
cannot compute difference between binary files
Added images/dragicon.gif.
cannot compute difference between binary files
Added images/error.gif.
cannot compute difference between binary files
Added images/file.gif.
cannot compute difference between binary files
Added images/folder.gif.
cannot compute difference between binary files
Added images/hourglass.gif.
cannot compute difference between binary files
Added images/info.gif.
cannot compute difference between binary files
Added images/italic.gif.
cannot compute difference between binary files
Added images/minus.xbm.
> > > > > | 1 2 3 4 5 | #define minus_width 9 #define minus_height 9 static char minus_bits[] = { 0xff,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x7d,0x01,0x01,0x01,0x01,0x01,0x01, 0x01,0xff,0x01}; |
Added images/new.gif.
cannot compute difference between binary files
Added images/opcopy.xbm.
> > > > > | 1 2 3 4 5 | #define opcopy_width 11 #define opcopy_height 11 static char opcopy_bits[] = { 0xff,0xff,0x01,0xfc,0x21,0xfc,0x21,0xfc,0x21,0xfc,0xfd,0xfd,0x21,0xfc,0x21, 0xfc,0x21,0xfc,0x01,0xfc,0xff,0xff}; |
Added images/open.gif.
cannot compute difference between binary files
Added images/openfold.gif.
cannot compute difference between binary files
Added images/oplink.xbm.
> > > > > | 1 2 3 4 5 | #define oplink_width 11 #define oplink_height 11 static char oplink_bits[] = { 0xff,0xff,0x01,0xfc,0xf1,0xfc,0xe1,0xfc,0xf1,0xfc,0xb9,0xfc,0x19,0xfc,0x09, 0xfc,0x11,0xfc,0x01,0xfc,0xff,0xff}; |
Added images/opmove.xbm.
> > > > > | 1 2 3 4 5 | #define opmove_width 11 #define opmove_height 11 static char opmove_bits[] = { 0xff,0xff,0x01,0xfc,0x01,0xfc,0x51,0xfc,0x89,0xfc,0xfd,0xfd,0x89,0xfc,0x51, 0xfc,0x01,0xfc,0x01,0xfc,0xff,0xff}; |
Added images/overstrike.gif.
cannot compute difference between binary files
Added images/palette.gif.
cannot compute difference between binary files
Added images/passwd.gif.
cannot compute difference between binary files
Added images/paste.gif.
cannot compute difference between binary files
Added images/plus.xbm.
> > > > > | 1 2 3 4 5 | #define plus_width 9 #define plus_height 9 static char plus_bits[] = { 0xff,0x01,0x01,0x01,0x11,0x01,0x11,0x01,0x7d,0x01,0x11,0x01,0x11,0x01,0x01, 0x01,0xff,0x01}; |
Added images/print.gif.
cannot compute difference between binary files
Added images/question.gif.
cannot compute difference between binary files
Added images/save.gif.
cannot compute difference between binary files
Added images/underline.gif.
cannot compute difference between binary files
Added images/undo.gif.
cannot compute difference between binary files
Added images/warning.gif.
cannot compute difference between binary files
Added init.tcl.
> > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | if { $tcl_platform(platform) == "windows" } { option add *Listbox.background SystemWindow widgetDefault option add *ListBox.background SystemWindow widgetDefault option add *Tree.background SystemWindow widgetDefault option add *Button.padY 0 widgetDefault option add *ButtonBox.padY 0 widgetDefault option add *Dialog.padY 0 widgetDefault option add *Dialog.anchor e widgetDefault } else { option add *Scrollbar.width 12 widgetDefault option add *Scrollbar.borderWidth 1 widgetDefault option add *Dialog.separator 1 widgetDefault option add *MainFrame.relief raised widgetDefault option add *MainFrame.separator none widgetDefault } option read [file join $env(BWIDGET_LIBRARY) "lang" "en.rc"] bind all <Key-Tab> {focus [Widget::focusNext %W]} bind all <Shift-Key-Tab> {focus [Widget::focusPrev %W]} |
Added label.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 | # ------------------------------------------------------------------------------ # label.tcl # This file is part of Unifix BWidget Toolkit # $Id: label.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - Label::create # - Label::configure # - Label::cget # - Label::setfocus # - Label::_drag_cmd # - Label::_drop_cmd # - Label::_over_cmd # ------------------------------------------------------------------------------ namespace eval Label { Widget::tkinclude Label label :cmd \ remove {-foreground -text -textvariable -underline} Widget::declare Label { {-name String "" 0} {-text String "" 0} {-textvariable String "" 0} {-underline Int -1 0 {=-1}} {-focus String "" 0} {-foreground TkResource "" 0 label} {-disabledforeground TkResource "" 0 button} {-state Enum normal 0 {normal disabled}} {-fg Synonym -foreground} } DynamicHelp::include Label balloon DragSite::include Label "" 1 DropSite::include Label { TEXT {move {}} IMAGE {move {}} BITMAP {move {}} FGCOLOR {move {}} BGCOLOR {move {}} COLOR {move {}} } Widget::syncoptions Label "" :cmd {-text {} -underline {}} proc ::Label { path args } { return [eval Label::create $path $args] } proc use {} {} bind BwLabel <FocusIn> {Label::setfocus %W} bind BwLabel <Destroy> {Widget::destroy %W; rename %W {}} } # ------------------------------------------------------------------------------ # Command Label::create # ------------------------------------------------------------------------------ proc Label::create { path args } { Widget::init Label $path $args if { [Widget::getoption $path -state] == "normal" } { set fg [Widget::getoption $path -foreground] } else { set fg [Widget::getoption $path -disabledforeground] } set var [Widget::getoption $path -textvariable] if { $var == "" && [Widget::getoption $path -image] == "" && [Widget::getoption $path -bitmap] == ""} { set desc [BWidget::getname [Widget::getoption $path -name]] if { $desc != "" } { set text [lindex $desc 0] set under [lindex $desc 1] } else { set text [Widget::getoption $path -text] set under [Widget::getoption $path -underline] } } else { set under -1 set text "" } eval label $path [Widget::subcget $path :cmd] \ [list -text $text -textvariable $var -underline $under -foreground $fg] set accel [string tolower [string index $text $under]] if { $accel != "" } { bind [winfo toplevel $path] <Alt-$accel> "Label::setfocus $path" } bindtags $path [list $path Label BwLabel [winfo toplevel $path] all] DragSite::setdrag $path $path Label::_init_drag_cmd [Widget::getoption $path -dragendcmd] 1 DropSite::setdrop $path $path Label::_over_cmd Label::_drop_cmd 1 DynamicHelp::sethelp $path $path 1 rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval Label::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command Label::configure # ------------------------------------------------------------------------------ proc Label::configure { path args } { set oldunder [$path:cmd cget -underline] if { $oldunder != -1 } { set oldaccel [string tolower [string index [$path:cmd cget -text] $oldunder]] } else { set oldaccel "" } set res [Widget::configure $path $args] set cfg [Widget::hasChanged $path -foreground fg] set cdfg [Widget::hasChanged $path -disabledforeground dfg] set cst [Widget::hasChanged $path -state state] if { $cst || $cfg || $cdfg } { if { $state == "normal" } { $path:cmd configure -fg $fg } else { $path:cmd configure -fg $dfg } } set cv [Widget::hasChanged $path -textvariable var] set cb [Widget::hasChanged $path -image img] set ci [Widget::hasChanged $path -bitmap bmp] set cn [Widget::hasChanged $path -name name] set ct [Widget::hasChanged $path -text text] set cu [Widget::hasChanged $path -underline under] if { $cv || $cb || $ci || $cn || $ct || $cu } { if { $var == "" && $img == "" && $bmp == "" } { set desc [BWidget::getname $name] if { $desc != "" } { set text [lindex $desc 0] set under [lindex $desc 1] } } else { set under -1 set text "" } set top [winfo toplevel $path] if { $oldaccel != "" } { bind $top <Alt-$oldaccel> {} } set accel [string tolower [string index $text $under]] if { $accel != "" } { bind $top <Alt-$accel> "Label::setfocus $path" } $path:cmd configure -text $text -underline $under -textvariable $var } set force [Widget::hasChanged $path -dragendcmd dragend] DragSite::setdrag $path $path Label::_init_drag_cmd $dragend $force DropSite::setdrop $path $path Label::_over_cmd Label::_drop_cmd DynamicHelp::sethelp $path $path return $res } # ------------------------------------------------------------------------------ # Command Label::cget # ------------------------------------------------------------------------------ proc Label::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command Label::setfocus # ------------------------------------------------------------------------------ proc Label::setfocus { path } { if { ![string compare [Widget::getoption $path -state] "normal"] } { set w [Widget::getoption $path -focus] if { [winfo exists $w] && [Widget::focusOK $w] } { focus $w } } } # ------------------------------------------------------------------------------ # Command Label::_init_drag_cmd # ------------------------------------------------------------------------------ proc Label::_init_drag_cmd { path X Y top } { if { [set cmd [Widget::getoption $path -draginitcmd]] != "" } { return [uplevel \#0 $cmd [list $path $X $Y $top]] } if { [set data [$path:cmd cget -image]] != "" } { set type "IMAGE" pack [label $top.l -image $data] } elseif { [set data [$path:cmd cget -bitmap]] != "" } { set type "BITMAP" pack [label $top.l -bitmap $data] } else { set data [$path:cmd cget -text] set type "TEXT" } set usertype [Widget::getoption $path -dragtype] if { $usertype != "" } { set type $usertype } return [list $type {copy} $data] } # ------------------------------------------------------------------------------ # Command Label::_drop_cmd # ------------------------------------------------------------------------------ proc Label::_drop_cmd { path source X Y op type data } { if { [set cmd [Widget::getoption $path -dropcmd]] != "" } { return [uplevel \#0 $cmd [list $path $source $X $Y $op $type $data]] } if { $type == "COLOR" || $type == "FGCOLOR" } { configure $path -foreground $data } elseif { $type == "BGCOLOR" } { configure $path -background $data } else { set text "" set image "" set bitmap "" switch -- $type { IMAGE {set image $data} BITMAP {set bitmap $data} default { set text $data if { [set var [$path:cmd cget -textvariable]] != "" } { configure $path -image "" -bitmap "" GlobalVar::setvar $var $data return } } } configure $path -text $text -image $image -bitmap $bitmap } return 1 } # ------------------------------------------------------------------------------ # Command Label::_over_cmd # ------------------------------------------------------------------------------ proc Label::_over_cmd { path source event X Y op type data } { if { [set cmd [Widget::getoption $path -dropovercmd]] != "" } { return [uplevel \#0 $cmd [list $path $source $event $X $Y $op $type $data]] } if { [Widget::getoption $path -state] == "normal" || $type == "COLOR" || $type == "FGCOLOR" || $type == "BGCOLOR" } { DropSite::setcursor based_arrow_down return 1 } DropSite::setcursor dot return 0 } |
Added labelentry.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | # ------------------------------------------------------------------------------ # labelentry.tcl # This file is part of Unifix BWidget Toolkit # $Id: labelentry.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - LabelEntry::create # - LabelEntry::configure # - LabelEntry::cget # - LabelEntry::bind # ------------------------------------------------------------------------------ namespace eval LabelEntry { Entry::use LabelFrame::use Widget::bwinclude LabelEntry LabelFrame .labf \ remove {-relief -borderwidth -focus} \ rename {-text -label} \ prefix {label -justify -width -anchor -height -font} \ Widget::bwinclude LabelEntry Entry .e \ remove {-fg -bg} \ rename {-foreground -entryfg -background -entrybg} Widget::addmap LabelEntry "" :cmd {-background {}} Widget::syncoptions LabelEntry Entry .e {-text {}} Widget::syncoptions LabelEntry LabelFrame .labf {-label -text -underline {}} ::bind BwLabelEntry <FocusIn> {focus %W.labf} ::bind BwLabelEntry <Destroy> {Widget::destroy %W; rename %W {}} proc ::LabelEntry { path args } { return [eval LabelEntry::create $path $args] } proc use { } {} } # ------------------------------------------------------------------------------ # Command LabelEntry::create # ------------------------------------------------------------------------------ proc LabelEntry::create { path args } { Widget::init LabelEntry $path $args eval frame $path [Widget::subcget $path :cmd] \ -relief flat -bd 0 -highlightthickness 0 -takefocus 0 set labf [eval LabelFrame::create $path.labf [Widget::subcget $path .labf] \ -relief flat -borderwidth 0 -focus $path.e] set subf [LabelFrame::getframe $labf] set entry [eval Entry::create $path.e [Widget::subcget $path .e]] pack $entry -in $subf -fill both -expand yes pack $labf -fill both -expand yes bindtags $path [list $path BwLabelEntry [winfo toplevel $path] all] rename $path ::$path:cmd proc ::$path { cmd args } "return \[LabelEntry::_path_command $path \$cmd \$args\]" return $path } # ------------------------------------------------------------------------------ # Command LabelEntry::configure # ------------------------------------------------------------------------------ proc LabelEntry::configure { path args } { return [Widget::configure $path $args] } # ------------------------------------------------------------------------------ # Command LabelEntry::cget # ------------------------------------------------------------------------------ proc LabelEntry::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command LabelEntry::bind # ------------------------------------------------------------------------------ proc LabelEntry::bind { path args } { return [eval ::bind $path.e $args] } #------------------------------------------------------------------------------ # Command LabelEntry::_path_command #------------------------------------------------------------------------------ proc LabelEntry::_path_command { path cmd larg } { if { ![string compare $cmd "configure"] || ![string compare $cmd "cget"] || ![string compare $cmd "bind"] } { return [eval LabelEntry::$cmd $path $larg] } else { return [eval $path.e:cmd $cmd $larg] } } |
Added labelframe.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 | # ------------------------------------------------------------------------------ # labelframe.tcl # This file is part of Unifix BWidget Toolkit # $Id: labelframe.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - LabelFrame::create # - LabelFrame::getframe # - LabelFrame::configure # - LabelFrame::cget # - LabelFrame::align # ------------------------------------------------------------------------------ namespace eval LabelFrame { Label::use Widget::bwinclude LabelFrame Label .l \ remove { -highlightthickness -highlightcolor -highlightbackground -takefocus -relief -borderwidth -bitmap -image -cursor -textvariable -dragenabled -draginitcmd -dragendcmd -dragevent -dragtype -dropenabled -droptypes -dropovercmd -dropcmd} \ initialize {-anchor w} Widget::declare LabelFrame { {-relief TkResource flat 0 frame} {-borderwidth TkResource 0 0 frame} {-side Enum left 1 {left right top bottom}} {-bd Synonym -borderwidth} } Widget::addmap LabelFrame "" :cmd {-background {}} Widget::addmap LabelFrame "" .f {-background {} -relief {} -borderwidth {}} Widget::syncoptions LabelFrame Label .l {-text {} -underline {}} bind BwLabelFrame <FocusIn> {Label::setfocus %W.l} bind BwLabelFrame <Destroy> {Widget::destroy %W; rename %W {}} proc ::LabelFrame { path args } { return [eval LabelFrame::create $path $args] } proc use {} {} } # ------------------------------------------------------------------------------ # Command LabelFrame::create # ------------------------------------------------------------------------------ proc LabelFrame::create { path args } { Widget::init LabelFrame $path $args set path [frame $path -background [Widget::getoption $path -background] \ -relief flat -bd 0 -takefocus 0 -highlightthickness 0] set label [eval Label::create $path.l [Widget::subcget $path .l] \ -takefocus 0 -highlightthickness 0 -relief flat -borderwidth 0 \ -dropenabled 0 -dragenabled 0] set frame [eval frame $path.f [Widget::subcget $path .f] \ -highlightthickness 0 -takefocus 0] switch [Widget::getoption $path -side] { left {set packopt "-side left"} right {set packopt "-side right"} top {set packopt "-side top -fill x"} bottom {set packopt "-side bottom -fill x"} } eval pack $label $packopt pack $frame -fill both -expand yes bindtags $path [list $path BwLabelFrame [winfo toplevel $path] all] rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval LabelFrame::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command LabelFrame::getframe # ------------------------------------------------------------------------------ proc LabelFrame::getframe { path } { return $path.f } # ------------------------------------------------------------------------------ # Command LabelFrame::configure # ------------------------------------------------------------------------------ proc LabelFrame::configure { path args } { return [Widget::configure $path $args] } # ------------------------------------------------------------------------------ # Command LabelFrame::cget # ------------------------------------------------------------------------------ proc LabelFrame::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command LabelFrame::align # This command align label of all widget given by args of class LabelFrame # (or "derived") by setting their width to the max one +1 # ------------------------------------------------------------------------------ proc LabelFrame::align { args } { set maxlen 0 set wlist {} foreach wl $args { foreach w $wl { if { ![info exists Widget::_class($w)] } { continue } set class $Widget::_class($w) if { ![string compare $class "LabelFrame"] } { set textopt -text set widthopt -width } else { upvar 0 Widget::${class}::map classmap set textopt "" set widthopt "" set notdone 2 foreach {option lmap} [array get classmap] { foreach {subpath subclass realopt} $lmap { if { ![string compare $subclass "LabelFrame"] } { if { ![string compare $realopt "-text"] } { set textopt $option incr notdone -1 break } if { ![string compare $realopt "-width"] } { set widthopt $option incr notdone -1 break } } } if { !$notdone } { break } } if { $notdone } { continue } } set len [string length [$w cget $textopt]] if { $len > $maxlen } { set maxlen $len } lappend wlist $w $widthopt } } incr maxlen foreach {w widthopt} $wlist { $w configure $widthopt $maxlen } } |
Added lang/de.rc.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | ! ------------------------------------------------------------------------------ ! de.rc ! This file is part of Unifix BWidget Toolkit ! Definition of german resources ! ------------------------------------------------------------------------------ ! --- symbolic names of buttons ------------------------------------------------ *abortName: &Abbrechen *retryName: &Wiederholen *ignoreName: &Ignorieren *okName: &OK *cancelName: &Abbrechen *yesName: &Ja *noName: &Nein ! --- symbolic names of label of SelectFont dialog ---------------------------- *boldName: Fett *italicName: Kursiv *underlineName: Unterstrichen *overstrikeName: Durchgestrichen *fontName: &Schriftart *sizeName: S&chriftgrad *styleName: Sc&hriftschnitt ! --- symbolic names of label of PasswdDlg dialog ----------------------------- *loginName: &Login *passwordName: &Password ! --- resource for SelectFont dialog ------------------------------------------ *SelectFont.title: Schrift Auswahl *SelectFont.sampletext: Beispieltext ! --- resource for MessageDlg dialog ------------------------------------------ *MessageDlg.noneTitle: Meldung *MessageDlg.infoTitle: Hinweis *MessageDlg.questionTitle: Frage *MessageDlg.warningTitle: Warnung *MessageDlg.errorTitle: Fehler ! --- resource for PasswdDlg dialog ------------------------------------------- *PasswdDlg.title: Enter login and password |
Added lang/en.rc.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | ! ------------------------------------------------------------------------------ ! en.rc ! This file is part of Unifix BWidget Toolkit ! Definition of english resources ! ------------------------------------------------------------------------------ ! --- symbolic names of buttons ------------------------------------------------ *abortName: &Abort *retryName: &Retry *ignoreName: &Ignore *okName: &OK *cancelName: &Cancel *yesName: &Yes *noName: &No ! --- symbolic names of label of SelectFont dialog ---------------------------- *boldName: Bold *italicName: Italic *underlineName: Underline *overstrikeName: Overstrike *fontName: &Font *sizeName: &Size *styleName: St&yle ! --- symbolic names of label of PasswdDlg dialog ----------------------------- *loginName: &Login *passwordName: &Password ! --- resource for SelectFont dialog ------------------------------------------ *SelectFont.title: Font selection *SelectFont.sampletext: Sample text ! --- resource for MessageDlg dialog ------------------------------------------ *MessageDlg.noneTitle: Message *MessageDlg.infoTitle: Information *MessageDlg.questionTitle: Question *MessageDlg.warningTitle: Warning *MessageDlg.errorTitle: Error ! --- resource for PasswdDlg dialog ------------------------------------------- *PasswdDlg.title: Enter login and password |
Added lang/es.rc.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | ! ------------------------------------------------------------------------------ ! es.rc ! This file is part of Unifix BWidget Toolkit ! Definition of spanish resources ! [email protected] ! ------------------------------------------------------------------------------ ! --- symbolic names of buttons ------------------------------------------------ *abortName: A&bortar *retryName: &Reintentar *ignoreName: &Ignorar *okName: &OK *cancelName: &Anular *yesName: &S� *noName: &No ! --- symbolic names of label of SelectFont dialog ---------------------------- *boldName: &Negrita *italicName: &Cursiva *underlineName: &Subrayado *overstrikeName: &Tachado *fontName: &Fuente *sizeName: &Tama�o *styleName: &Estilo ! --- symbolic names of label of PasswdDlg dialog ----------------------------- *loginName: Nombre de &usuario *passwordName: &Contrase�a ! --- resource for SelectFont dialog ------------------------------------------ *SelectFont.title: Selecci�n de fuente *SelectFont.sampletext: Texto de Ejemplo ! --- resource for MessageDlg dialog ------------------------------------------ *MessageDlg.noneTitle: Indicaci�n *MessageDlg.infoTitle: Informaci�n *MessageDlg.questionTitle: Pregunta *MessageDlg.warningTitle: Atenci�n *MessageDlg.errorTitle: Error ! --- resource for PasswdDlg dialog ------------------------------------------- *PasswdDlg.title: Introduzca su nombre de usuario y contrase�a |
Added lang/fr.rc.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | ! ------------------------------------------------------------------------------ ! fr.rc ! This file is part of Unifix BWidget Toolkit ! Definition of french resources ! ------------------------------------------------------------------------------ ! --- symbolic names of buttons ------------------------------------------------ *abortName: A&bandonner *retryName: &R�essayer *ignoreName: &Ignorer *okName: &OK *cancelName: &Annuler *yesName: &Oui *noName: &Non ! --- symbolic names of label of SelectFont dialog ---------------------------- *boldName: &Gras *italicName: &Italique *underlineName: &Soulign� *overstrikeName: &Barr� *fontName: &Police *sizeName: &Taille *styleName: St&yle ! --- symbolic names of label of PasswdDlg dialog ----------------------------- *loginName: Nom de l'&utilisateur *passwordName: Mot de &passe ! --- resource for SelectFont dialog ------------------------------------------ *SelectFont.title: S�lection d'une police *SelectFont.sampletext: Texte d'exemple ! --- resource for MessageDlg dialog ------------------------------------------ *MessageDlg.noneTitle: Message *MessageDlg.infoTitle: Information *MessageDlg.questionTitle: Question *MessageDlg.warningTitle: Attention *MessageDlg.errorTitle: Erreur ! --- resource for PasswdDlg dialog ------------------------------------------- *PasswdDlg.title: Entrez le login et le mot de passe |
Added listbox.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 | # ------------------------------------------------------------------------------ # listbox.tcl # This file is part of Unifix BWidget Toolkit # $Id: listbox.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - ListBox::create # - ListBox::configure # - ListBox::cget # - ListBox::insert # - ListBox::itemconfigure # - ListBox::itemcget # - ListBox::bindText # - ListBox::bindImage # - ListBox::delete # - ListBox::move # - ListBox::reorder # - ListBox::selection # - ListBox::exists # - ListBox::index # - ListBox::item - deprecated # - ListBox::items # - ListBox::see # - ListBox::edit # - ListBox::xview # - ListBox::yview # - ListBox::_update_edit_size # - ListBox::_destroy # - ListBox::_see # - ListBox::_update_scrollregion # - ListBox::_draw_item # - ListBox::_redraw_items # - ListBox::_redraw_selection # - ListBox::_redraw_listbox # - ListBox::_redraw_idle # - ListBox::_resize # - ListBox::_init_drag_cmd # - ListBox::_drop_cmd # - ListBox::_over_cmd # - ListBox::_auto_scroll # - ListBox::_scroll # ------------------------------------------------------------------------------ namespace eval ListBox { namespace eval Item { Widget::declare ListBox::Item { {-indent Int 0 0 {=0}} {-text String "" 0} {-font TkResource "" 0 listbox} {-image TkResource "" 0 label} {-window String "" 0} {-fill TkResource black 0 {listbox -foreground}} {-data String "" 0} } } Widget::tkinclude ListBox canvas :cmd \ remove {-insertwidth -insertbackground -insertborderwidth -insertofftime \ -insertontime -selectborderwidth -closeenough -confine -scrollregion \ -xscrollincrement -yscrollincrement -width -height} \ initialize {-relief sunken -borderwidth 2 -takefocus 1 \ -highlightthickness 1 -width 200} Widget::declare ListBox { {-deltax Int 10 0 {=0 ""}} {-deltay Int 15 0 {=0 ""}} {-padx Int 20 0 {=0 ""}} {-background TkResource "" 0 listbox} {-selectbackground TkResource "" 0 listbox} {-selectforeground TkResource "" 0 listbox} {-width TkResource "" 0 listbox} {-height TkResource "" 0 listbox} {-redraw Boolean 1 0} {-multicolumn Boolean 0 0} {-dropovermode Flag "wpi" 0 "wpi"} {-bg Synonym -background} } DragSite::include ListBox "LISTBOX_ITEM" 1 DropSite::include ListBox { LISTBOX_ITEM {copy {} move {}} } Widget::addmap ListBox "" :cmd {-deltay -yscrollincrement} proc ::ListBox { path args } { return [eval ListBox::create $path $args] } proc use {} {} variable _edit } # ------------------------------------------------------------------------------ # Command ListBox::create # ------------------------------------------------------------------------------ proc ListBox::create { path args } { Widget::init ListBox $path $args variable $path upvar 0 $path data # widget informations set data(nrows) -1 # items informations set data(items) {} set data(selitems) {} # update informations set data(upd,level) 0 set data(upd,afterid) "" set data(upd,level) 0 set data(upd,delete) {} # drag and drop informations set data(dnd,scroll) "" set data(dnd,afterid) "" set data(dnd,item) "" eval canvas $path [Widget::subcget $path :cmd] \ -width [expr {[Widget::getoption $path -width]*8}] \ -height [expr {[Widget::getoption $path -height]*[Widget::getoption $path -deltay]}] \ -xscrollincrement 8 bind $path <Configure> "ListBox::_resize $path" bind $path <Destroy> "ListBox::_destroy $path" DragSite::setdrag $path $path ListBox::_init_drag_cmd [Widget::getoption $path -dragendcmd] 1 DropSite::setdrop $path $path ListBox::_over_cmd ListBox::_drop_cmd 1 rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval ListBox::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command ListBox::configure # ------------------------------------------------------------------------------ proc ListBox::configure { path args } { set res [Widget::configure $path $args] set ch1 [expr {[Widget::hasChanged $path -deltay dy] | [Widget::hasChanged $path -padx val] | [Widget::hasChanged $path -multicolumn val]}] set ch2 [expr {[Widget::hasChanged $path -selectbackground val] | [Widget::hasChanged $path -selectforeground val]}] set redraw 0 if { [Widget::hasChanged $path -height h] } { $path:cmd configure -height [expr {$h*$dy}] set redraw 1 } if { [Widget::hasChanged $path -width w] } { $path:cmd configure -width [expr {$w*8}] set redraw 1 } if { !$redraw } { if { $ch1 } { _redraw_idle $path 2 } elseif { $ch2 } { _redraw_idle $path 1 } } if { [Widget::hasChanged $path -redraw bool] && $bool } { variable $path upvar 0 $path data set lvl $data(upd,level) set data(upd,level) 0 _redraw_idle $path $lvl } set force [Widget::hasChanged $path -dragendcmd dragend] DragSite::setdrag $path $path ListBox::_init_drag_cmd $dragend $force DropSite::setdrop $path $path ListBox::_over_cmd ListBox::_drop_cmd return $res } # ------------------------------------------------------------------------------ # Command ListBox::cget # ------------------------------------------------------------------------------ proc ListBox::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command ListBox::insert # ------------------------------------------------------------------------------ proc ListBox::insert { path index item args } { variable $path upvar 0 $path data if { [lsearch $data(items) $item] != -1 } { return -code error "item \"$item\" already exists" } Widget::init ListBox::Item $path.$item $args if { ![string compare $index "end"] } { lappend data(items) $item } else { set data(items) [linsert $data(items) $index $item] } set data(upd,create,$item) $item _redraw_idle $path 2 return $item } # ------------------------------------------------------------------------------ # Command ListBox::itemconfigure # ------------------------------------------------------------------------------ proc ListBox::itemconfigure { path item args } { variable $path upvar 0 $path data if { [lsearch $data(items) $item] == -1 } { return -code error "item \"$item\" does not exist" } set oldind [Widget::getoption $path.$item -indent] set res [Widget::configure $path.$item $args] set chind [Widget::hasChanged $path.$item -indent indent] set chw [Widget::hasChanged $path.$item -window win] set chi [Widget::hasChanged $path.$item -image img] set cht [Widget::hasChanged $path.$item -text txt] set chf [Widget::hasChanged $path.$item -font fnt] set chfg [Widget::hasChanged $path.$item -fill fg] set idn [$path:cmd find withtag n:$item] if { $idn == "" } { # item is not drawn yet _redraw_idle $path 2 return $res } set oldb [$path:cmd bbox $idn] set coords [$path:cmd coords $idn] set padx [Widget::getoption $path -padx] set x0 [expr {[lindex $coords 0]-$padx-$oldind+$indent}] set y0 [lindex $coords 1] if { $chw || $chi } { # -window or -image modified set idi [$path:cmd find withtag i:$item] set type [lindex [$path:cmd gettags $idi] 0] if { [string length $win] } { if { ![string compare $type "win"] } { $path:cmd itemconfigure $idi -window $win } else { $path:cmd delete $idi $path:cmd create window $x0 $y0 -window $win -anchor w -tags "win i:$item" } } elseif { [string length $img] } { if { ![string compare $type "img"] } { $path:cmd itemconfigure $idi -image $img } else { $path:cmd delete $idi $path:cmd create image $x0 $y0 -image $img -anchor w -tags "img i:$item" } } else { $path:cmd delete $idi } } if { $cht || $chf || $chfg } { # -text or -font modified, or -fill modified $path:cmd itemconfigure $idn -text $txt -font $fnt -fill $fg _redraw_idle $path 1 } if { $chind } { # -indent modified $path:cmd coords $idn [expr {$x0+$padx}] $y0 $path:cmd coords i:$item $x0 $y0 _redraw_idle $path 1 } if { [Widget::getoption $path -multicolumn] && ($cht || $chf || $chind) } { set bbox [$path:cmd bbox $idn] if { [lindex $bbox 2] > [lindex $oldb 2] } { _redraw_idle $path 2 } } return $res } # ------------------------------------------------------------------------------ # Command ListBox::itemcget # ------------------------------------------------------------------------------ proc ListBox::itemcget { path item option } { return [Widget::cget $path.$item $option] } # ------------------------------------------------------------------------------ # Command ListBox::bindText # ------------------------------------------------------------------------------ proc ListBox::bindText { path event script } { if { $script != "" } { $path:cmd bind "item" $event \ "$script \[string range \[lindex \[$path:cmd gettags current\] 1\] 2 end\]" } else { $path:cmd bind "item" $event {} } } # ------------------------------------------------------------------------------ # Command ListBox::bindImage # ------------------------------------------------------------------------------ proc ListBox::bindImage { path event script } { if { $script != "" } { $path:cmd bind "img" $event \ "$script \[string range \[lindex \[$path:cmd gettags current\] 1\] 2 end\]" } else { $path:cmd bind "img" $event {} } } # ------------------------------------------------------------------------------ # Command ListBox::delete # ------------------------------------------------------------------------------ proc ListBox::delete { path args } { variable $path upvar 0 $path data foreach litems $args { foreach item $litems { set idx [lsearch $data(items) $item] if { $idx != -1 } { set data(items) [lreplace $data(items) $idx $idx] Widget::destroy $path.$item if { [info exists data(upd,create,$item)] } { unset data(upd,create,$item) } else { lappend data(upd,delete) $item } } } } set sel $data(selitems) set data(selitems) {} eval selection $path set $sel _redraw_idle $path 2 } # ------------------------------------------------------------------------------ # Command ListBox::move # ------------------------------------------------------------------------------ proc ListBox::move { path item index } { variable $path upvar 0 $path data if { [set idx [lsearch $data(items) $item]] == -1 } { return -code error "item \"$item\" does not exist" } set data(items) [lreplace $data(items) $idx $idx] if { ![string compare $index "end"] } { lappend data($path,item) $item } else { set data(items) [linsert $data(items) $index $item] } _redraw_idle $path 2 } # ------------------------------------------------------------------------------ # Command ListBox::reorder # ------------------------------------------------------------------------------ proc ListBox::reorder { path neworder } { variable $path upvar 0 $path data set data(items) [BWidget::lreorder $data(items) $neworder] _redraw_idle $path 2 } # ------------------------------------------------------------------------------ # Command ListBox::selection # ------------------------------------------------------------------------------ proc ListBox::selection { path cmd args } { variable $path upvar 0 $path data switch -- $cmd { set { set data(selitems) {} foreach item $args { if { [lsearch $data(selitems) $item] == -1 } { if { [lsearch $data(items) $item] != -1 } { lappend data(selitems) $item } } } } add { foreach item $args { if { [lsearch $data(selitems) $item] == -1 } { if { [lsearch $data(items) $item] != -1 } { lappend data(selitems) $item } } } } remove { foreach item $args { if { [set idx [lsearch $data(selitems) $item]] != -1 } { set data(selitems) [lreplace $data(selitems) $idx $idx] } } } clear { set data(selitems) {} } get { return $data(selitems) } default { return } } _redraw_idle $path 1 } # ------------------------------------------------------------------------------ # Command ListBox::exists # ------------------------------------------------------------------------------ proc ListBox::exists { path item } { variable $path upvar 0 $path data return [expr {[lsearch $data(items) $item] != -1}] } # ------------------------------------------------------------------------------ # Command ListBox::index # ------------------------------------------------------------------------------ proc ListBox::index { path item } { variable $path upvar 0 $path data return [lsearch $data(items) $item] } # ------------------------------------------------------------------------------ # Command ListBox::item - deprecated # ------------------------------------------------------------------------------ proc ListBox::item { path first {last ""} } { variable $path upvar 0 $path data if { ![string length $last] } { return [lindex $data(items) $first] } else { return [lrange $data(items) $first $last] } } # ------------------------------------------------------------------------------ # Command ListBox::items # ------------------------------------------------------------------------------ proc ListBox::items { path {first ""} {last ""}} { variable $path upvar 0 $path data if { ![string length $first] } { return $data(items) } if { ![string length $last] } { return [lindex $data(items) $first] } else { return [lrange $data(items) $first $last] } } # ------------------------------------------------------------------------------ # Command ListBox::see # ------------------------------------------------------------------------------ proc ListBox::see { path item } { variable $path upvar 0 $path data if { [Widget::getoption $path -redraw] && $data(upd,afterid) != "" } { after cancel $data(upd,afterid) _redraw_listbox $path } set idn [$path:cmd find withtag n:$item] if { $idn != "" } { ListBox::_see $path $idn right ListBox::_see $path $idn left } } # ------------------------------------------------------------------------------ # Command ListBox::edit # ------------------------------------------------------------------------------ proc ListBox::edit { path item text {verifycmd ""} {clickres 0} {select 1}} { variable _edit variable $path upvar 0 $path data if { [Widget::getoption $path -redraw] && $data(upd,afterid) != "" } { after cancel $data(upd,afterid) _redraw_listbox $path } set idn [$path:cmd find withtag n:$item] if { $idn != "" } { ListBox::_see $path $idn right ListBox::_see $path $idn left set oldfg [$path:cmd itemcget $idn -fill] set sbg [Widget::getoption $path -selectbackground] set coords [$path:cmd coords $idn] set x [lindex $coords 0] set y [lindex $coords 1] set bd [expr {[$path:cmd cget -borderwidth]+[$path:cmd cget -highlightthickness]}] set w [expr {[winfo width $path] - 2*$bd}] set wmax [expr {[$path:cmd canvasx $w]-$x}] $path:cmd itemconfigure $idn -fill [Widget::getoption $path -background] $path:cmd itemconfigure s:$item -fill {} -outline {} set _edit(text) $text set _edit(wait) 0 set frame [frame $path.edit \ -relief flat -borderwidth 0 -highlightthickness 0 \ -background [Widget::getoption $path -background]] set ent [entry $frame.edit \ -width 0 \ -relief solid \ -borderwidth 1 \ -highlightthickness 0 \ -foreground [Widget::getoption $path.$item -fill] \ -background [Widget::getoption $path -background] \ -selectforeground [Widget::getoption $path -selectforeground] \ -selectbackground $sbg \ -font [Widget::getoption $path.$item -font] \ -textvariable ListBox::_edit(text)] pack $ent -ipadx 8 -anchor w set idw [$path:cmd create window $x $y -window $frame -anchor w] trace variable ListBox::_edit(text) w "ListBox::_update_edit_size $path $ent $idw $wmax" tkwait visibility $ent grab $frame BWidget::focus set $ent _update_edit_size $path $ent $idw $wmax update if { $select } { $ent selection range 0 end $ent icursor end $ent xview end } bind $ent <Escape> {set ListBox::_edit(wait) 0} bind $ent <Return> {set ListBox::_edit(wait) 1} if { $clickres == 0 || $clickres == 1 } { bind $frame <Button> "set ListBox::_edit(wait) $clickres" } set ok 0 while { !$ok } { tkwait variable ListBox::_edit(wait) if { !$_edit(wait) || $verifycmd == "" || [uplevel \#0 $verifycmd [list $_edit(text)]] } { set ok 1 } } trace vdelete ListBox::_edit(text) w "ListBox::_update_edit_size $path $ent $idw $wmax" grab release $frame BWidget::focus release $ent destroy $frame $path:cmd delete $idw $path:cmd itemconfigure $idn -fill $oldfg $path:cmd itemconfigure s:$item -fill $sbg -outline $sbg if { $_edit(wait) } { return $_edit(text) } } return "" } # ------------------------------------------------------------------------------ # Command ListBox::xview # ------------------------------------------------------------------------------ proc ListBox::xview { path args } { return [eval $path:cmd xview $args] } # ------------------------------------------------------------------------------ # Command ListBox::yview # ------------------------------------------------------------------------------ proc ListBox::yview { path args } { return [eval $path:cmd yview $args] } # ------------------------------------------------------------------------------ # Command ListBox::_update_edit_size # ------------------------------------------------------------------------------ proc ListBox::_update_edit_size { path entry idw wmax args } { set entw [winfo reqwidth $entry] if { $entw >= $wmax } { $path:cmd itemconfigure $idw -width $wmax } else { $path:cmd itemconfigure $idw -width 0 } } # ------------------------------------------------------------------------------ # Command ListBox::_destroy # ------------------------------------------------------------------------------ proc ListBox::_destroy { path } { variable $path upvar 0 $path data if { $data(upd,afterid) != "" } { after cancel $data(upd,afterid) } if { $data(dnd,afterid) != "" } { after cancel $data(dnd,afterid) } foreach item $data(items) { Widget::destroy $path.$item } Widget::destroy $path unset data rename $path {} } # ------------------------------------------------------------------------------ # Command ListBox::_see # ------------------------------------------------------------------------------ proc ListBox::_see { path idn side } { set bbox [$path:cmd bbox $idn] set scrl [$path:cmd cget -scrollregion] set ymax [lindex $scrl 3] set dy [$path:cmd cget -yscrollincrement] set yv [$path:cmd yview] set yv0 [expr {round([lindex $yv 0]*$ymax/$dy)}] set yv1 [expr {round([lindex $yv 1]*$ymax/$dy)}] set y [expr {int([lindex [$path:cmd coords $idn] 1]/$dy)}] if { $y < $yv0 } { $path:cmd yview scroll [expr {$y-$yv0}] units } elseif { $y >= $yv1 } { $path:cmd yview scroll [expr {$y-$yv1+1}] units } set xmax [lindex $scrl 2] set dx [$path:cmd cget -xscrollincrement] set xv [$path:cmd xview] if { ![string compare $side "right"] } { set xv1 [expr {round([lindex $xv 1]*$xmax/$dx)}] set x1 [expr {int([lindex $bbox 2]/$dx)}] if { $x1 >= $xv1 } { $path:cmd xview scroll [expr {$x1-$xv1+1}] units } } else { set xv0 [expr {round([lindex $xv 0]*$xmax/$dx)}] set x0 [expr {int([lindex $bbox 0]/$dx)}] if { $x0 < $xv0 } { $path:cmd xview scroll [expr {$x0-$xv0}] units } } } # ------------------------------------------------------------------------------ # Command ListBox::_update_scrollregion # ------------------------------------------------------------------------------ proc ListBox::_update_scrollregion { path } { set bd [expr {2*([$path:cmd cget -borderwidth]+[$path:cmd cget -highlightthickness])}] set w [expr {[winfo width $path] - $bd}] set h [expr {[winfo height $path] - $bd}] set xinc [$path:cmd cget -xscrollincrement] set yinc [$path:cmd cget -yscrollincrement] set bbox [$path:cmd bbox all] if { [llength $bbox] } { set xs [lindex $bbox 2] set ys [lindex $bbox 3] if { $w < $xs } { set w [expr {int($xs)}] if { [set r [expr {$w % $xinc}]] } { set w [expr {$w+$xinc-$r}] } } if { $h < $ys } { set h [expr {int($ys)}] if { [set r [expr {$h % $yinc}]] } { set h [expr {$h+$yinc-$r}] } } } $path:cmd configure -scrollregion [list 0 0 $w $h] } # ------------------------------------------------------------------------------ # Command ListBox::_draw_item # ------------------------------------------------------------------------------ proc ListBox::_draw_item { path item x0 x1 y } { set indent [Widget::getoption $path.$item -indent] $path:cmd create text [expr {$x1+$indent}] $y \ -text [Widget::getoption $path.$item -text] \ -fill [Widget::getoption $path.$item -fill] \ -font [Widget::getoption $path.$item -font] \ -anchor w \ -tags "item n:$item" if { [set win [Widget::getoption $path.$item -window]] != "" } { $path:cmd create window [expr {$x0+$indent}] $y \ -window $win -anchor w -tags "win i:$item" } elseif { [set img [Widget::getoption $path.$item -image]] != "" } { $path:cmd create image [expr {$x0+$indent}] $y \ -image $img -anchor w -tags "img i:$item" } } # ------------------------------------------------------------------------------ # Command ListBox::_redraw_items # ------------------------------------------------------------------------------ proc ListBox::_redraw_items { path } { variable $path upvar 0 $path data $path:cmd configure -cursor watch set dx [Widget::getoption $path -deltax] set dy [Widget::getoption $path -deltay] set padx [Widget::getoption $path -padx] set y0 [expr {$dy/2}] set x0 4 set x1 [expr {$x0+$padx}] set nitem 0 set drawn {} set data(xlist) {} if { [Widget::getoption $path -multicolumn] } { set nrows $data(nrows) } else { set nrows [llength $data(items)] } foreach item $data(upd,delete) { $path:cmd delete i:$item n:$item s:$item } foreach item $data(items) { if { [info exists data(upd,create,$item)] } { _draw_item $path $item $x0 $x1 $y0 unset data(upd,create,$item) } else { set indent [Widget::getoption $path.$item -indent] $path:cmd coords n:$item [expr {$x1+$indent}] $y0 $path:cmd coords i:$item [expr {$x0+$indent}] $y0 } incr y0 $dy incr nitem lappend drawn n:$item if { $nitem == $nrows } { set y0 [expr {$dy/2}] set bbox [eval $path:cmd bbox $drawn] set drawn {} set x0 [expr {[lindex $bbox 2]+$dx}] set x1 [expr {$x0+$padx}] set nitem 0 lappend data(xlist) [lindex $bbox 2] } } if { $nitem && $nitem < $nrows } { set bbox [eval $path:cmd bbox $drawn] lappend data(xlist) [lindex $bbox 2] } set data(upd,delete) {} $path:cmd configure -cursor [Widget::getoption $path -cursor] } # ------------------------------------------------------------------------------ # Command ListBox::_redraw_selection # ------------------------------------------------------------------------------ proc ListBox::_redraw_selection { path } { variable $path upvar 0 $path data set selbg [Widget::getoption $path -selectbackground] set selfg [Widget::getoption $path -selectforeground] foreach id [$path:cmd find withtag sel] { set item [string range [lindex [$path:cmd gettags $id] 1] 2 end] $path:cmd itemconfigure "n:$item" -fill [Widget::getoption $path.$item -fill] } $path:cmd delete sel foreach item $data(selitems) { set bbox [$path:cmd bbox "n:$item"] if { [llength $bbox] } { set id [eval $path:cmd create rectangle $bbox -fill $selbg -outline $selbg -tags [list "sel s:$item"]] $path:cmd itemconfigure "n:$item" -fill $selfg $path:cmd lower $id } } } # ------------------------------------------------------------------------------ # Command ListBox::_redraw_listbox # ------------------------------------------------------------------------------ proc ListBox::_redraw_listbox { path } { variable $path upvar 0 $path data if { [Widget::getoption $path -redraw] } { if { $data(upd,level) == 2 } { _redraw_items $path } _redraw_selection $path _update_scrollregion $path set data(upd,level) 0 set data(upd,afterid) "" } } # ------------------------------------------------------------------------------ # Command ListBox::_redraw_idle # ------------------------------------------------------------------------------ proc ListBox::_redraw_idle { path level } { variable $path upvar 0 $path data if { $data(nrows) != -1 } { # widget is realized if { [Widget::getoption $path -redraw] && $data(upd,afterid) == "" } { set data(upd,afterid) [after idle ListBox::_redraw_listbox $path] } } if { $level > $data(upd,level) } { set data(upd,level) $level } return "" } # ------------------------------------------------------------------------------ # Command ListBox::_resize # ------------------------------------------------------------------------------ proc ListBox::_resize { path } { variable $path upvar 0 $path data if { [Widget::getoption $path -multicolumn] } { set bd [expr {[$path:cmd cget -borderwidth]+[$path:cmd cget -highlightthickness]}] set h [expr {[winfo height $path] - 2*$bd}] set nrows [expr {$h/[$path:cmd cget -yscrollincrement]}] if { $nrows == 0 } { set nrows 1 } if { $nrows != $data(nrows) } { set data(nrows) $nrows _redraw_idle $path 2 } else { _update_scrollregion $path } } elseif { $data(nrows) == -1 } { # first Configure event set data(nrows) 0 ListBox::_redraw_listbox $path } else { _update_scrollregion $path } } # ------------------------------------------------------------------------------ # Command ListBox::_init_drag_cmd # ------------------------------------------------------------------------------ proc ListBox::_init_drag_cmd { path X Y top } { set ltags [$path:cmd gettags current] set item [lindex $ltags 0] if { ![string compare $item "item"] || ![string compare $item "img"] || ![string compare $item "win"] } { set item [string range [lindex $ltags 1] 2 end] if { [set cmd [Widget::getoption $path -draginitcmd]] != "" } { return [uplevel \#0 $cmd [list $path $item $top]] } if { [set type [Widget::getoption $path -dragtype]] == "" } { set type "LISTBOX_ITEM" } if { [set img [Widget::getoption $path.$item -image]] != "" } { pack [label $top.l -image $img -padx 0 -pady 0] } return [list $type {copy move link} $item] } return {} } # ------------------------------------------------------------------------------ # Command ListBox::_drop_cmd # ------------------------------------------------------------------------------ proc ListBox::_drop_cmd { path source X Y op type dnddata } { variable $path upvar 0 $path data if { [string length $data(dnd,afterid)] } { after cancel $data(dnd,afterid) set data(dnd,afterid) "" } $path:cmd delete drop set data(dnd,scroll) "" if { [llength $data(dnd,item)] } { if { [set cmd [Widget::getoption $path -dropcmd]] != "" } { return [uplevel \#0 $cmd [list $path $source $data(dnd,item) $op $type $dnddata]] } } return 0 } # ------------------------------------------------------------------------------ # Command ListBox::_over_cmd # ------------------------------------------------------------------------------ proc ListBox::_over_cmd { path source event X Y op type dnddata } { variable $path upvar 0 $path data if { ![string compare $event "leave"] } { # we leave the window listbox $path:cmd delete drop if { [string length $data(dnd,afterid)] } { after cancel $data(dnd,afterid) set data(dnd,afterid) "" } set data(dnd,scroll) "" return 0 } if { ![string compare $event "enter"] } { # we enter the window listbox - dnd data initialization set mode [Widget::getoption $path -dropovermode] set data(dnd,mode) 0 foreach c {w p i} { set data(dnd,mode) [expr {($data(dnd,mode) << 1) | ([string first $c $mode] != -1)}] } } set x [expr {$X-[winfo rootx $path]}] set y [expr {$Y-[winfo rooty $path]}] $path:cmd delete drop set data(dnd,item) "" # test for auto-scroll unless mode is widget only if { $data(dnd,mode) != 4 && [_auto_scroll $path $x $y] != "" } { return 2 } if { $data(dnd,mode) & 4 } { # dropovermode includes widget set target [list widget] set vmode 4 } else { set target [list ""] set vmode 0 } if { $data(dnd,mode) & 3 } { # dropovermode includes item or position # we extract the box (xi,yi,xs,ys) where we can find item around x,y set len [llength $data(items)] set xc [$path:cmd canvasx $x] set yc [$path:cmd canvasy $y] set dy [$path:cmd cget -yscrollincrement] set line [expr {int($yc/$dy)}] set yi [expr {$line*$dy}] set ys [expr {$yi+$dy}] set xi 0 set pos $line if { [Widget::getoption $path -multicolumn] } { set nrows $data(nrows) } else { set nrows $len } if { $line < $nrows } { foreach xs $data(xlist) { if { $xc <= $xs } { break } set xi $xs incr pos $nrows } if { $pos < $len } { set item [lindex $data(items) $pos] if { $data(dnd,mode) & 1 } { # dropovermode includes item lappend target $item set vmode [expr {$vmode | 1}] } else { lappend target "" } if { $data(dnd,mode) & 2 } { # dropovermode includes position if { $yc >= $yi+$dy/2 } { # position is after $item incr pos set yl $ys } else { # position is before $item set yl $yi } lappend target $pos set vmode [expr {$vmode | 2}] } else { lappend target "" } } else { lappend target "" "" } } else { lappend target "" "" } if { ($vmode & 3) == 3 } { # result have both item and position # we compute what is the preferred method if { $yc-$yi <= 3 || $ys-$yc <= 3 } { lappend target "position" } else { lappend target "item" } } } if { $vmode && [set cmd [Widget::getoption $path -dropovercmd]] != "" } { # user-defined dropover command set res [uplevel \#0 $cmd [list $source $target $op $type $dnddata]] set code [lindex $res 0] set vmode 0 if { $code & 1 } { # update vmode set mode [lindex $res 1] if { ![string compare $mode "item"] } { set vmode 1 } elseif { ![string compare $mode "position"] } { set vmode 2 } elseif { ![string compare $mode "widget"] } { set vmode 4 } } } else { if { ($vmode & 3) == 3 } { # result have both item and position # we choose the preferred method if { ![string compare [lindex $target 3] "position"] } { set vmode [expr {$vmode & ~1}] } else { set vmode [expr {$vmode & ~2}] } } if { $data(dnd,mode) == 4 || $data(dnd,mode) == 0 } { # dropovermode is widget or empty - recall is not necessary set code 1 } else { set code 3 } } # draw dnd visual following vmode if { $vmode & 1 } { set data(dnd,item) [list "item" [lindex $target 1]] $path:cmd create rectangle $xi $yi $xs $ys -tags drop } elseif { $vmode & 2 } { set data(dnd,item) [concat "position" [lindex $target 2]] $path:cmd create line $xi $yl $xs $yl -tags drop } elseif { $vmode & 4 } { set data(dnd,item) [list "widget"] } else { set code [expr {$code & 2}] } if { $code & 1 } { DropSite::setcursor based_arrow_down } else { DropSite::setcursor dot } return $code } # ------------------------------------------------------------------------------ # Command ListBox::_auto_scroll # ------------------------------------------------------------------------------ proc ListBox::_auto_scroll { path x y } { variable $path upvar 0 $path data set xmax [winfo width $path] set ymax [winfo height $path] set scroll {} if { $y <= 6 } { if { [lindex [$path:cmd yview] 0] > 0 } { set scroll [list yview -1] DropSite::setcursor sb_up_arrow } } elseif { $y >= $ymax-6 } { if { [lindex [$path:cmd yview] 1] < 1 } { set scroll [list yview 1] DropSite::setcursor sb_down_arrow } } elseif { $x <= 6 } { if { [lindex [$path:cmd xview] 0] > 0 } { set scroll [list xview -1] DropSite::setcursor sb_left_arrow } } elseif { $x >= $xmax-6 } { if { [lindex [$path:cmd xview] 1] < 1 } { set scroll [list xview 1] DropSite::setcursor sb_right_arrow } } if { [string length $data(dnd,afterid)] && [string compare $data(dnd,scroll) $scroll] } { after cancel $data(dnd,afterid) set data(dnd,afterid) "" } set data(dnd,scroll) $scroll if { [llength $scroll] && ![string length $data(dnd,afterid)] } { set data(dnd,afterid) [after 200 ListBox::_scroll $path $scroll] } return $data(dnd,afterid) } # ------------------------------------------------------------------------------ # Command ListBox::_scroll # ------------------------------------------------------------------------------ proc ListBox::_scroll { path cmd dir } { variable $path upvar 0 $path data if { ($dir == -1 && [lindex [$path:cmd $cmd] 0] > 0) || ($dir == 1 && [lindex [$path:cmd $cmd] 1] < 1) } { $path $cmd scroll $dir units set data(dnd,afterid) [after 100 ListBox::_scroll $path $cmd $dir] } else { set data(dnd,afterid) "" DropSite::setcursor dot } } |
Added mainframe.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 | # ------------------------------------------------------------------------------ # mainframe.tcl # This file is part of Unifix BWidget Toolkit # $Id: mainframe.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - MainFrame::create # - MainFrame::configure # - MainFrame::cget # - MainFrame::getframe # - MainFrame::addtoolbar # - MainFrame::gettoolbar # - MainFrame::addindicator # - MainFrame::getindicator # - MainFrame::getmenu # - MainFrame::showtoolbar # - MainFrame::showstatusbar # - MainFrame::_create_menubar # - MainFrame::_create_entries # - MainFrame::_parse_name # - MainFrame::_parse_accelerator # ------------------------------------------------------------------------------ namespace eval MainFrame { ProgressBar::use Widget::bwinclude MainFrame ProgressBar .status.prg \ remove { -fg -bg -bd -troughcolor -background -borderwidth -relief -orient -width -height } \ rename { -maximum -progressmax -variable -progressvar -type -progresstype -foreground -progressfg } Widget::declare MainFrame { {-width TkResource 0 0 frame} {-height TkResource 0 0 frame} {-background TkResource "" 0 frame} {-textvariable String "" 0} {-menu String {} 1} {-separator Enum both 1 {none top bottom both}} {-bg Synonym -background} } Widget::addmap MainFrame "" .frame {-width {} -height {} -background {}} Widget::addmap MainFrame "" .topf {-background {}} Widget::addmap MainFrame "" .botf {-background {}} Widget::addmap MainFrame "" .status {-background {}} Widget::addmap MainFrame "" .status.label {-background {}} Widget::addmap MainFrame "" .status.indf {-background {}} Widget::addmap MainFrame "" .status.prgf {-background {}} Widget::addmap MainFrame ProgressBar .status.prg {-background {} -background -troughcolor} proc ::MainFrame { path args } { return [eval MainFrame::create $path $args] } proc use {} {} variable _widget } # ------------------------------------------------------------------------------ # Command MainFrame::create # ------------------------------------------------------------------------------ proc MainFrame::create { path args } { global tcl_platform variable _widget set path [frame $path -takefocus 0 -highlightthickness 0] set top [winfo parent $path] if { [string compare [winfo toplevel $path] $top] } { destroy $path return -code error "parent must be a toplevel" } Widget::init MainFrame $path $args set bg [Widget::getoption $path -background] if { $tcl_platform(platform) == "unix" } { set relief raised set bd 1 } else { set relief flat set bd 0 } $path configure -background $bg set topframe [frame $path.topf -relief flat -borderwidth 0 -background $bg] set userframe [eval frame $path.frame [Widget::subcget $path .frame] \ -relief $relief -borderwidth $bd] set botframe [frame $path.botf -relief $relief -borderwidth $bd -background $bg] pack $topframe -fill x grid columnconfigure $topframe 0 -weight 1 if { $tcl_platform(platform) != "unix" } { set sepopt [Widget::getoption $path -separator] if { $sepopt == "both" || $sepopt == "top" } { set sep [Separator::create $path.sep -orient horizontal -background $bg] pack $sep -fill x } if { $sepopt == "both" || $sepopt == "bottom" } { set sep [Separator::create $botframe.sep -orient horizontal -background $bg] pack $sep -fill x } } # --- status bar ------------------------------------------------------------------------- set status [frame $path.status -relief flat -borderwidth 0 \ -takefocus 0 -highlightthickness 0 -background $bg] set label [label $status.label -textvariable [Widget::getoption $path -textvariable] \ -takefocus 0 -highlightthickness 0 -background $bg] set indframe [frame $status.indf -relief flat -borderwidth 0 \ -takefocus 0 -highlightthickness 0 -background $bg] set prgframe [frame $status.prgf -relief flat -borderwidth 0 \ -takefocus 0 -highlightthickness 0 -background $bg] place $label -anchor w -x 0 -rely 0.5 place $indframe -anchor e -relx 1 -rely 0.5 pack $prgframe -in $indframe -side left -padx 2 $status configure -height [winfo reqheight $label] set progress [eval ProgressBar::create $status.prg [Widget::subcget $path .status.prg] \ -width 50 \ -height [expr {[winfo reqheight $label]-2}] \ -borderwidth 1 \ -relief sunken] pack $status -in $botframe -fill x -pady 2 pack $botframe -side bottom -fill x pack $userframe -fill both -expand yes set _widget($path,top) $top set _widget($path,ntoolbar) 0 set _widget($path,nindic) 0 set menu [Widget::getoption $path -menu] if { [llength $menu] } { _create_menubar $path $menu } bind $path <Destroy> {MainFrame::_destroy %W} rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval MainFrame::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command MainFrame::configure # ------------------------------------------------------------------------------ proc MainFrame::configure { path args } { variable _widget set res [Widget::configure $path $args] if { [Widget::hasChanged $path -textvariable newv] } { uplevel \#0 $path.status.label configure -textvariable [list $newv] } if { [Widget::hasChanged $path -background bg] } { set listmenu [$_widget($path,top) cget -menu] while { [llength $listmenu] } { set newlist {} foreach menu $listmenu { $menu configure -background $bg set newlist [concat $newlist [winfo children $menu]] } set listmenu $newlist } foreach sep {.sep .botf.sep} { if { [winfo exists $path.$sep] } { Separator::configure $path.$sep -background $bg } } foreach w [winfo children $path.topf] { $w configure -background $bg } } return $res } # ------------------------------------------------------------------------------ # Command MainFrame::cget # ------------------------------------------------------------------------------ proc MainFrame::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command MainFrame::getframe # ------------------------------------------------------------------------------ proc MainFrame::getframe { path } { return $path.frame } # ------------------------------------------------------------------------------ # Command MainFrame::addtoolbar # ------------------------------------------------------------------------------ proc MainFrame::addtoolbar { path } { global tcl_platform variable _widget set index $_widget($path,ntoolbar) set toolframe $path.topf.f$index set toolbar $path.topf.tb$index set bg [Widget::getoption $path -background] if { $tcl_platform(platform) == "unix" } { frame $toolframe -relief raised -borderwidth 1 \ -takefocus 0 -highlightthickness 0 -background $bg } else { frame $toolframe -relief flat -borderwidth 0 -takefocus 0 \ -highlightthickness 0 -background $bg set sep [Separator::create $toolframe.sep -orient horizontal -background $bg] pack $sep -fill x } set toolbar [frame $toolbar -relief flat -borderwidth 2 \ -takefocus 0 -highlightthickness 0 -background $bg] pack $toolbar -in $toolframe -anchor w incr _widget($path,ntoolbar) grid $toolframe -column 0 -row $index -sticky ew return $toolbar } # ------------------------------------------------------------------------------ # Command MainFrame::gettoolbar # ------------------------------------------------------------------------------ proc MainFrame::gettoolbar { path index } { return $path.topf.tb$index } # ------------------------------------------------------------------------------ # Command MainFrame::addindicator # ------------------------------------------------------------------------------ proc MainFrame::addindicator { path args } { variable _widget set index $_widget($path,nindic) set indic $path.status.indf.f$index eval label $indic $args -relief sunken -borderwidth 1 \ -takefocus 0 -highlightthickness 0 pack $indic -side left -anchor w -padx 2 incr _widget($path,nindic) return $indic } # ------------------------------------------------------------------------------ # Command MainFrame::getindicator # ------------------------------------------------------------------------------ proc MainFrame::getindicator { path index } { return $path.status.indf.f$index } # ------------------------------------------------------------------------------ # Command MainFrame::getmenu # ------------------------------------------------------------------------------ proc MainFrame::getmenu { path menuid } { variable _widget if { [info exists _widget($path,menuid,$menuid)] } { return $_widget($path,menuid,$menuid) } return "" } # ------------------------------------------------------------------------------ # Command MainFrame::setmenustate # ------------------------------------------------------------------------------ proc MainFrame::setmenustate { path tag state } { variable _widget if { [info exists _widget($path,tags,$tag)] } { foreach {menu entry} $_widget($path,tags,$tag) { $menu entryconfigure $entry -state $state } } } # ------------------------------------------------------------------------------ # Command MainFrame::showtoolbar # ------------------------------------------------------------------------------ proc MainFrame::showtoolbar { path index bool } { variable _widget set toolframe $path.topf.f$index if { [winfo exists $toolframe] } { if { !$bool && [llength [grid info $toolframe]] } { grid forget $toolframe $path.topf configure -height 1 } elseif { $bool && ![llength [grid info $toolframe]] } { grid $toolframe -column 0 -row $index -sticky ew } } } # ------------------------------------------------------------------------------ # Command MainFrame::showstatusbar # ------------------------------------------------------------------------------ proc MainFrame::showstatusbar { path name } { set status $path.status if { ![string compare $name "none"] } { pack forget $status } else { pack $status -fill x switch -- $name { status { catch {pack forget $status.prg} } progression { pack $status.prg -in $status.prgf } } } } # ------------------------------------------------------------------------------ # Command MainFrame::_destroy # ------------------------------------------------------------------------------ proc MainFrame::_destroy { path } { variable _widget Widget::destroy $path catch {destroy [$_widget($path,top) cget -menu]} $_widget($path,top) configure -menu {} unset _widget($path,top) unset _widget($path,ntoolbar) unset _widget($path,nindic) rename $path {} } # ------------------------------------------------------------------------------ # Command MainFrame::_create_menubar # ------------------------------------------------------------------------------ proc MainFrame::_create_menubar { path descmenu } { variable _widget global tcl_platform set bg [Widget::getoption $path -background] set top $_widget($path,top) if { $tcl_platform(platform) == "unix" } { set menubar [menu $top.menubar -tearoff 0 -background $bg -borderwidth 1] } else { set menubar [menu $top.menubar -tearoff 0 -background $bg] } $top configure -menu $menubar set count 0 foreach {name tags menuid tearoff entries} $descmenu { set opt [_parse_name $name] if { [string length $menuid] && ![info exists _widget($path,menuid,$menuid)] } { # menu has identifier # we use it for its pathname, to enable special menu entries # (help, system, ...) set menu $menubar.$menuid } else { set menu $menubar.menu$count } eval $menubar add cascad $opt -menu $menu menu $menu -tearoff $tearoff -background $bg foreach tag $tags { lappend _widget($path,tags,$tag) $menubar $count } if { [string length $menuid] } { # menu has identifier set _widget($path,menuid,$menuid) $menu } _create_entries $path $menu $bg $entries incr count } } # ------------------------------------------------------------------------------ # Command MainFrame::_create_entries # ------------------------------------------------------------------------------ proc MainFrame::_create_entries { path menu bg entries } { variable _widget set count [$menu cget -tearoff] set registered 0 foreach entry $entries { set len [llength $entry] set type [lindex $entry 0] if { ![string compare $type "separator"] } { $menu add separator incr count continue } # entry name and tags set opt [_parse_name [lindex $entry 1]] set tags [lindex $entry 2] foreach tag $tags { lappend _widget($path,tags,$tag) $menu $count } if { ![string compare $type "cascad"] } { set menuid [lindex $entry 3] set tearoff [lindex $entry 4] set submenu $menu.menu$count eval $menu add cascad $opt -menu $submenu menu $submenu -tearoff $tearoff -background $bg if { [string length $menuid] } { # menu has identifier set _widget($path,menuid,$menuid) $submenu } _create_entries $path $submenu $bg [lindex $entry 5] incr count continue } # entry help description set desc [lindex $entry 3] if { [string length $desc] } { if { !$registered } { DynamicHelp::register $menu menu [Widget::getoption $path -textvariable] set registered 1 } DynamicHelp::register $menu menuentry $count $desc } # entry accelerator set accel [_parse_accelerator [lindex $entry 4]] if { [llength $accel] } { lappend opt -accelerator [lindex $accel 0] bind $_widget($path,top) [lindex $accel 1] "$menu invoke $count" } # user options set useropt [lrange $entry 5 end] if { ![string compare $type "command"] || ![string compare $type "radiobutton"] || ![string compare $type "checkbutton"] } { eval $menu add $type $opt $useropt } else { return -code error "invalid menu type \"$type\"" } incr count } } # ------------------------------------------------------------------------------ # Command MainFrame::_parse_name # ------------------------------------------------------------------------------ proc MainFrame::_parse_name { menuname } { set idx [string first "&" $menuname] if { $idx == -1 } { return [list -label $menuname] } else { set beg [string range $menuname 0 [expr $idx-1]] set end [string range $menuname [expr $idx+1] end] append beg $end return [list -label $beg -underline $idx] } } # ------------------------------------------------------------------------------ # Command MainFrame::_parse_accelerator # ------------------------------------------------------------------------------ proc MainFrame::_parse_accelerator { desc } { if { [llength $desc] == 2 } { set seq [lindex $desc 0] set key [lindex $desc 1] switch -- $seq { Ctrl { set accel "Ctrl+[string toupper $key]" set event "<Control-Key-[string tolower $key]>" } Alt { set accel "Atl+[string toupper $key]" set event "<Alt-Key-[string tolower $key]>" } CtrlAlt { set accel "Ctrl+Alt+[string toupper $key]" set event "<Control-Alt-Key-[string tolower $key]>" } default { return -code error "invalid accelerator code $seq" } } return [list $accel $event] } return {} } |
Added messagedlg.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | # ------------------------------------------------------------------------------ # messagedlg.tcl # This file is part of Unifix BWidget Toolkit # ------------------------------------------------------------------------------ # Index of commands: # - MessageDlg::create # ------------------------------------------------------------------------------ namespace eval MessageDlg { Dialog::use Widget::tkinclude MessageDlg message .frame.msg \ remove {-cursor -highlightthickness -highlightbackground -highlightcolor \ -relief -borderwidth -takefocus -textvariable} \ rename {-text -message} \ initialize {-aspect 800 -anchor c -justify center} Widget::bwinclude MessageDlg Dialog "" \ remove {-modal -image -bitmap -side -anchor -separator \ -homogeneous -padx -pady -spacing} Widget::declare MessageDlg { {-icon Enum info 0 {none error info question warning}} {-type Enum user 0 {abortretryignore ok okcancel retrycancel yesno yesnocancel user}} {-buttons String "" 0} } proc ::MessageDlg { path args } { return [eval MessageDlg::create $path $args] } proc use { } {} } # ------------------------------------------------------------------------------ # Command MessageDlg::create # ------------------------------------------------------------------------------ proc MessageDlg::create { path args } { global tcl_platform Widget::init MessageDlg "$path#Message" $args set type [Widget::getoption "$path#Message" -type] set title [Widget::getoption "$path#Message" -title] set icon [Widget::getoption "$path#Message" -icon] set defb -1 set canb -1 switch -- $type { abortretryignore {set lbut {abort retry ignore}} ok {set lbut {ok}; set defb 0 } okcancel {set lbut {ok cancel}; set defb 0; set canb 1} retrycancel {set lbut {retry cancel}; set defb 0; set canb 1} yesno {set lbut {yes no}; set defb 0; set canb 1} yesnocancel {set lbut {yes no cancel}; set defb 0; set canb 2} user {set lbut [Widget::getoption "$path#Message" -buttons]} } if { [Widget::getoption "$path#Message" -default] == -1 } { Widget::setoption "$path#Message" -default $defb } if { [Widget::getoption "$path#Message" -cancel] == -1 } { Widget::setoption "$path#Message" -cancel $canb } if { $title == "" } { set frame [frame $path -class MessageDlg] set title [option get $frame "${icon}Title" MessageDlg] destroy $frame if { $title == "" } { set title "Message" } } Widget::setoption "$path#Message" -title $title if { $tcl_platform(platform) == "unix" || $type == "user" } { if { $icon != "none" } { set image [Bitmap::get $icon] } else { set image "" } eval Dialog::create $path [Widget::subcget "$path#Message" ""] \ -image $image -modal local -side bottom -anchor c set idbut 0 foreach but $lbut { Dialog::add $path -text $but -name $but } set frame [Dialog::getframe $path] eval message $frame.msg [Widget::subcget "$path#Message" .frame.msg] \ -relief flat -borderwidth 0 -highlightthickness 0 -textvariable {""} pack $frame.msg -side left -padx 3m -pady 1m -fill x -expand yes set res [Dialog::draw $path] } else { set parent [Widget::getoption "$path#Message" -parent] set def [lindex $lbut [Widget::getoption "$path#Message" -default]] set opt [list \ -message [Widget::getoption "$path#Message" -message] \ -type $type \ -title $title] if { [winfo exists $parent] } { lappend opt -parent $parent } if { $def != "" } { lappend opt -default $def } if { $icon != "none" } { lappend opt -icon $icon } set res [eval tk_messageBox $opt] set res [lsearch $lbut $res] } Widget::destroy "$path#Message" destroy $path return $res } |
Added notebook.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 | # ------------------------------------------------------------------------------ # notebook.tcl # This file is part of Unifix BWidget Toolkit # $Id: notebook.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - NoteBook::create # - NoteBook::configure # - NoteBook::cget # - NoteBook::compute_size # - NoteBook::insert # - NoteBook::delete # - NoteBook::itemconfigure # - NoteBook::itemcget # - NoteBook::bindtabs # - NoteBook::raise # - NoteBook::see # - NoteBook::page # - NoteBook::pages # - NoteBook::index # - NoteBook::getframe # - NoteBook::_test_page # - NoteBook::_itemconfigure # - NoteBook::_compute_width # - NoteBook::_get_x_page # - NoteBook::_xview # - NoteBook::_highlight # - NoteBook::_select # - NoteBook::_redraw # - NoteBook::_draw_page # - NoteBook::_draw_arrows # - NoteBook::_draw_area # - NoteBook::_resize # - NoteBook::_realize # ------------------------------------------------------------------------------ namespace eval NoteBook { ArrowButton::use namespace eval Page { Widget::declare NoteBook::Page { {-state Enum normal 0 {normal disabled}} {-createcmd String "" 0} {-raisecmd String "" 0} {-leavecmd String "" 0} {-image TkResource "" 0 label} {-text String "" 0} } } Widget::declare NoteBook { {-foreground TkResource "" 0 button} {-background TkResource "" 0 button} {-activebackground TkResource "" 0 button} {-activeforeground TkResource "" 0 button} {-disabledforeground TkResource "" 0 button} {-font TkResource "" 0 button} {-side Enum top 1 {top bottom}} {-homogeneous Boolean 0 0} {-borderwidth Int 1 0 {=1 =2}} {-width Int 0 0 {=0 ""}} {-height Int 0 0 {=0 ""}} {-repeatdelay BwResource "" 0 ArrowButton} {-repeatinterval BwResource "" 0 ArrowButton} {-fg Synonym -foreground} {-bg Synonym -background} {-bd Synonym -borderwidth} } Widget::addmap NoteBook "" :cmd {-background {}} Widget::addmap NoteBook ArrowButton .fg \ {-foreground {} -background {} -activeforeground {} -activebackground {} \ -borderwidth {} -repeatinterval {} -repeatdelay {} -disabledforeground {}} Widget::addmap NoteBook ArrowButton .fd \ {-foreground {} -background {} -activeforeground {} -activebackground {} \ -borderwidth {} -repeatinterval {} -repeatdelay {} -disabledforeground {}} variable _warrow 12 proc ::NoteBook { path args } { return [eval NoteBook::create $path $args] } proc use {} {} } # ------------------------------------------------------------------------------ # Command NoteBook::create # ------------------------------------------------------------------------------ proc NoteBook::create { path args } { variable $path upvar 0 $path data Widget::init NoteBook $path $args set data(base) 0 set data(select) "" set data(pages) {} set data(pages) {} set data(cpt) 0 set data(realized) 0 set data(wpage) 0 set data(hpage) [expr {[font metrics [Widget::getoption $path -font] -linespace] + 6}] set bg [Widget::getoption $path -background] # --- creation du canvas ----------------------------------------------------------------- set w [expr {[Widget::getoption $path -width]+4}] set h [expr {[Widget::getoption $path -height]+$data(hpage)+4}] canvas $path -relief flat -bd 0 -highlightthickness 0 -bg $bg -width $w -height $h # --- creation des arrow ----------------------------------------------------------------- eval ArrowButton::create $path.fg [Widget::subcget $path .fg] \ -highlightthickness 0 \ -type button -dir left \ -armcommand [list "NoteBook::_xview $path -1"] eval ArrowButton::create $path.fd [Widget::subcget $path .fd] \ -highlightthickness 0 \ -type button -dir right \ -armcommand [list "NoteBook::_xview $path 1"] set col [BWidget::get3dcolor $path $bg] set data(dbg) [lindex $col 0] set data(lbg) [lindex $col 1] bind $path <Configure> "NoteBook::_realize $path" bind $path <Destroy> "NoteBook::_destroy $path" rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval NoteBook::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command NoteBook::configure # ------------------------------------------------------------------------------ proc NoteBook::configure { path args } { variable $path upvar 0 $path data set res [Widget::configure $path $args] set redraw 0 if { [set chf [Widget::hasChanged $path -font font]] || [Widget::hasChanged $path -homogeneous foo] } { if { $chf } { set data(hpage) [expr {[font metrics $font -linespace] + 6}] } _compute_width $path set redraw 1 } if { [Widget::hasChanged $path -background bg] } { set col [BWidget::get3dcolor $path $bg] set data(dbg) [lindex $col 0] set data(lbg) [lindex $col 1] set redraw 1 } if { [Widget::hasChanged $path -foreground fg] || [Widget::hasChanged $path -borderwidth bd] } { set redraw 1 } set wc [Widget::hasChanged $path -width w] set hc [Widget::hasChanged $path -height h] if { $wc || $hc } { $path:cmd configure -width [expr {$w+4}] -height [expr {$h + $data(hpage)+4}] } elseif { $redraw } { _redraw $path } return $res } # ------------------------------------------------------------------------------ # Command NoteBook::cget # ------------------------------------------------------------------------------ proc NoteBook::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command NoteBook::compute_size # ------------------------------------------------------------------------------ proc NoteBook::compute_size { path } { variable $path upvar 0 $path data set wmax 0 set hmax 0 update idletasks foreach page $data(pages) { set w [winfo reqwidth $path.f$page] set h [winfo reqheight $path.f$page] set wmax [expr {$w>$wmax ? $w : $wmax}] set hmax [expr {$h>$hmax ? $h : $hmax}] } configure $path -width $wmax -height $hmax } # ------------------------------------------------------------------------------ # Command NoteBook::insert # ------------------------------------------------------------------------------ proc NoteBook::insert { path index page args } { variable $path upvar 0 $path data if { [lsearch $data(pages) $page] != -1 } { return -code error "page \"$page\" already exists" } Widget::init NoteBook::Page $path.f$page $args set data(pages) [linsert $data(pages) $index $page] if { ![winfo exists $path.f$page] } { frame $path.f$page \ -relief flat -background [Widget::getoption $path -background] -borderwidth 10 set data($page,realized) 0 } _compute_width $path _draw_page $path $page 1 _redraw $path return $path.f$page } # ------------------------------------------------------------------------------ # Command NoteBook::delete # ------------------------------------------------------------------------------ proc NoteBook::delete { path page {destroyframe 1} } { variable $path upvar 0 $path data set pos [_test_page $path $page] set data(pages) [lreplace $data(pages) $pos $pos] _compute_width $path $path:cmd delete p:$page if { $data(select) == $page } { set data(select) "" } if { $pos < $data(base) } { incr data(base) -1 } if { $destroyframe } { destroy $path.f$page } _redraw $path } # ------------------------------------------------------------------------------ # Command NoteBook::itemconfigure # ------------------------------------------------------------------------------ proc NoteBook::itemconfigure { path page args } { _test_page $path $page set res [_itemconfigure $path $page $args] _redraw $path return $res } # ------------------------------------------------------------------------------ # Command NoteBook::itemcget # ------------------------------------------------------------------------------ proc NoteBook::itemcget { path page option } { _test_page $path $page return [Widget::cget $path.f$page $option] } # ------------------------------------------------------------------------------ # Command NoteBook::bindtabs # ------------------------------------------------------------------------------ proc NoteBook::bindtabs { path event script } { if { $script != "" } { $path:cmd bind "page" $event \ "$script \[string range \[lindex \[$path:cmd gettags current\] 1\] 2 end\]" } else { $path:cmd bind "page" $event {} } } # ------------------------------------------------------------------------------ # Command NoteBook::move # ------------------------------------------------------------------------------ proc NoteBook::move { path page index } { variable $path upvar 0 $path data set pos [_test_page $path $page] set data(pages) [linsert [lreplace $data(pages) $pos $pos] $index $page] _redraw $path } # ------------------------------------------------------------------------------ # Command NoteBook::raise # ------------------------------------------------------------------------------ proc NoteBook::raise { path {page ""} } { variable $path upvar 0 $path data if { $page != "" } { _test_page $path $page _select $path $page } return $data(select) } # ------------------------------------------------------------------------------ # Command NoteBook::see # ------------------------------------------------------------------------------ proc NoteBook::see { path page } { variable $path upvar 0 $path data set pos [_test_page $path $page] if { $pos < $data(base) } { set data(base) $pos _redraw $path } else { set w [expr {[winfo width $path]-1}] set fpage [expr {[_get_x_page $path $pos] + $data($page,width) + 6}] set idx $data(base) while { $idx < $pos && $fpage > $w } { set fpage [expr {$fpage - $data([lindex $data(pages) $idx],width)}] incr idx } if { $idx != $data(base) } { set data(base) $idx _redraw $path } } } # ------------------------------------------------------------------------------ # Command NoteBook::page # ------------------------------------------------------------------------------ proc NoteBook::page { path first {last ""} } { variable $path upvar 0 $path data if { $last == "" } { return [lindex $data(pages) $first] } else { return [lrange $data(pages) $first $last] } } # ------------------------------------------------------------------------------ # Command NoteBook::pages # ------------------------------------------------------------------------------ proc NoteBook::pages { path {first ""} {last ""}} { variable $path upvar 0 $path data if { ![string length $first] } { return $data(pages) } if { ![string length $last] } { return [lindex $data(pages) $first] } else { return [lrange $data(pages) $first $last] } } # ------------------------------------------------------------------------------ # Command NoteBook::index # ------------------------------------------------------------------------------ proc NoteBook::index { path page } { variable $path upvar 0 $path data return [lsearch $data(pages) $page] } # ------------------------------------------------------------------------------ # Command NoteBook::_destroy # ------------------------------------------------------------------------------ proc NoteBook::_destroy { path } { variable $path upvar 0 $path data foreach page $data(pages) { Widget::destroy $path.f$page } Widget::destroy $path unset data rename $path {} } # ------------------------------------------------------------------------------ # Command NoteBook::getframe # ------------------------------------------------------------------------------ proc NoteBook::getframe { path page } { return $path.f$page } # ------------------------------------------------------------------------------ # Command NoteBook::_test_page # ------------------------------------------------------------------------------ proc NoteBook::_test_page { path page } { variable $path upvar 0 $path data if { [set pos [lsearch $data(pages) $page]] == -1 } { return -code error "page \"$page\" does not exists" } return $pos } # ------------------------------------------------------------------------------ # Command NoteBook::_itemconfigure # ------------------------------------------------------------------------------ proc NoteBook::_itemconfigure { path page lres } { variable $path upvar 0 $path data set res [Widget::configure $path.f$page $lres] if { [Widget::hasChanged $path.f$page -text foo] } { _compute_width $path } elseif { [Widget::hasChanged $path.f$page -image foo] } { set data(hpage) [expr {[font metrics [Widget::getoption $path -font] -linespace] + 6}] _compute_width $path } if { [Widget::hasChanged $path.f$page -state state] && $state == "disabled" && $data(select) == $page } { set data(select) "" } return $res } # ------------------------------------------------------------------------------ # Command NoteBook::_compute_width # ------------------------------------------------------------------------------ proc NoteBook::_compute_width { path } { variable $path upvar 0 $path data set font [Widget::getoption $path -font] set wmax 0 set hmax $data(hpage) set wtot 0 if { ![info exists data(textid)] } { set data(textid) [$path:cmd create text 0 -100 -font [Widget::getoption $path -font] -anchor nw] } set id $data(textid) $path:cmd itemconfigure $id -font [Widget::getoption $path -font] foreach page $data(pages) { $path:cmd itemconfigure $id -text [Widget::getoption $path.f$page -text] set wtext [expr {[lindex [$path:cmd bbox $id] 2]+20}] if { [set img [Widget::getoption $path.f$page -image]] != "" } { set wtext [expr {$wtext+[image width $img]+4}] set himg [expr {[image height $img]+6}] if { $himg > $hmax } { set hmax $himg } } set wmax [expr {$wtext>$wmax ? $wtext : $wmax}] incr wtot $wtext set data($page,width) $wtext } if { [Widget::getoption $path -homogeneous] } { foreach page $data(pages) { set data($page,width) $wmax } set wtot [expr {$wmax * [llength $data(pages)]}] } set data(hpage) $hmax set data(wpage) $wtot } # ------------------------------------------------------------------------------ # Command NoteBook::_get_x_page # ------------------------------------------------------------------------------ proc NoteBook::_get_x_page { path pos } { variable _warrow variable $path upvar 0 $path data set base $data(base) set x [expr {$_warrow+1}] if { $pos < $base } { foreach page [lrange $data(pages) $pos [expr {$base-1}]] { incr x [expr {-$data($page,width)}] } } elseif { $pos > $base } { foreach page [lrange $data(pages) $base [expr {$pos-1}]] { incr x $data($page,width) } } return $x } # ------------------------------------------------------------------------------ # Command NoteBook::_xview # ------------------------------------------------------------------------------ proc NoteBook::_xview { path inc } { variable $path upvar 0 $path data if { $inc == -1 } { set base [expr {$data(base)-1}] set dx $data([lindex $data(pages) $base],width) } else { set dx [expr {-$data([lindex $data(pages) $data(base)],width)}] set base [expr {$data(base)+1}] } if { $base >= 0 && $base < [llength $data(pages)] } { set data(base) $base $path:cmd move page $dx 0 _draw_area $path _draw_arrows $path } } # ------------------------------------------------------------------------------ # Command NoteBook::_highlight # ------------------------------------------------------------------------------ proc NoteBook::_highlight { type path page } { variable $path upvar 0 $path data if { ![string compare [Widget::getoption $path.f$page -state] "disabled"] } { return } switch -- $type { on { $path:cmd itemconfigure "$page:poly" -fill [Widget::getoption $path -activebackground] $path:cmd itemconfigure "$page:text" -fill [Widget::getoption $path -activeforeground] } off { $path:cmd itemconfigure "$page:poly" -fill [Widget::getoption $path -background] $path:cmd itemconfigure "$page:text" -fill [Widget::getoption $path -foreground] } } } # ------------------------------------------------------------------------------ # Command NoteBook::_select # ------------------------------------------------------------------------------ proc NoteBook::_select { path page } { variable $path upvar 0 $path data if { ![string compare [Widget::getoption $path.f$page -state] "normal"] } { set oldsel $data(select) if { [string compare $page $oldsel] } { if { $oldsel != "" } { if { [set cmd [Widget::getoption $path.f$oldsel -leavecmd]] != "" } { if { [set code [catch {uplevel \#0 $cmd} res]] == 1 || $res == 0 } { return -code $code $res } } set data(select) "" _draw_page $path $oldsel 0 } set data(select) $page if { $page != "" } { if { !$data($page,realized) } { set data($page,realized) 1 if { [set cmd [Widget::getoption $path.f$page -createcmd]] != "" } { uplevel \#0 $cmd } } if { [set cmd [Widget::getoption $path.f$page -raisecmd]] != "" } { uplevel \#0 $cmd } _draw_page $path $page 0 } _draw_area $path } } } # ------------------------------------------------------------------------------ # Command NoteBook::_redraw # ------------------------------------------------------------------------------ proc NoteBook::_redraw { path } { variable $path upvar 0 $path data if { !$data(realized) } { return } foreach page $data(pages) { _draw_page $path $page 0 } _draw_area $path _draw_arrows $path } # ------------------------------------------------------------------------------ # Command NoteBook::_draw_page # ------------------------------------------------------------------------------ proc NoteBook::_draw_page { path page create } { variable $path upvar 0 $path data # --- calcul des coordonnees et des couleurs de l'onglet --------------------------------- set pos [lsearch $data(pages) $page] set bg [Widget::getoption $path -background] set h $data(hpage) set xd [_get_x_page $path $pos] set xf [expr {$xd + $data($page,width)}] set lt [list $xd $h $xd 4 [expr {$xd+3}] 1 $xf 1] set lb [list $xf 1 [expr {$xf+3}] 4 [expr {$xf+3}] [expr {$h-3}] [expr {$xf+6}] $h] set img [Widget::getoption $path.f$page -image] if { $data(select) == $page } { set fgt $data(lbg) set fgb $data(dbg) set ytext [expr {$h/2-1}] if { $img == "" } { set xtext [expr {$xd+9}] } else { set ximg [expr {$xd+9}] set xtext [expr {$ximg+[image width $img]+4}] } set bd [Widget::getoption $path -borderwidth] set fg [Widget::getoption $path -foreground] } else { set fgt $data(dbg) set fgb $fgt set ytext [expr {$h/2}] if { $img == "" } { set xtext [expr {$xd+10}] } else { set ximg [expr {$xd+10}] set xtext [expr {$ximg+[image width $img]+4}] } set bd 1 if { [Widget::getoption $path.f$page -state] == "normal" } { set fg [Widget::getoption $path -foreground] } else { set fg [Widget::getoption $path -disabledforeground] } } # --- creation ou modification de l'onglet ----------------------------------------------- if { $create } { eval $path:cmd create polygon [concat $lt $lb] \ -tag {"page p:$page $page:poly"} \ -outline $bg \ -fill $bg eval $path:cmd create line $lt -tags {"page p:$page $page:top top"} -fill $fgt -width $bd eval $path:cmd create line $lb -tags {"page p:$page $page:bot bot"} -fill $fgb -width $bd $path:cmd create text $xtext $ytext \ -text [Widget::getoption $path.f$page -text] \ -font [Widget::getoption $path -font] \ -fill $fg \ -anchor w \ -tags "page p:$page $page:text" $path:cmd bind p:$page <ButtonPress-1> "NoteBook::_select $path $page" $path:cmd bind p:$page <Enter> "NoteBook::_highlight on $path $page" $path:cmd bind p:$page <Leave> "NoteBook::_highlight off $path $page" } else { eval $path:cmd coords "$page:poly" [concat $lt $lb] eval $path:cmd coords "$page:top" $lt eval $path:cmd coords "$page:bot" $lb $path:cmd coords "$page:text" $xtext $ytext $path:cmd itemconfigure "$page:poly" -fill $bg -outline $bg $path:cmd itemconfigure "$page:top" -fill $fgt -width $bd $path:cmd itemconfigure "$page:bot" -fill $fgb -width $bd $path:cmd itemconfigure "$page:text" \ -text [Widget::getoption $path.f$page -text] \ -font [Widget::getoption $path -font] \ -fill $fg } if { $img != "" } { if { [set id [$path:cmd find withtag $page:img]] == "" } { $path:cmd create image $ximg $ytext \ -image $img \ -anchor w \ -tags "page p:$page $page:img" } else { $path:cmd coords $id $ximg $ytext $path:cmd itemconfigure $id -image $img } } else { $path:cmd delete $page:img } if { $data(select) == $page } { $path:cmd raise p:$page } elseif { $pos == 0 } { if { $data(select) == "" } { $path:cmd raise p:$page } else { $path:cmd lower p:$page p:$data(select) } } else { set pred [lindex $data(pages) [expr {$pos-1}]] if { $data(select) != $pred || $pos == 1 } { $path:cmd lower p:$page p:$pred } else { $path:cmd lower p:$page p:[lindex $data(pages) [expr {$pos-2}]] } } } # ------------------------------------------------------------------------------ # Command NoteBook::_draw_arrows # ------------------------------------------------------------------------------ proc NoteBook::_draw_arrows { path } { variable _warrow variable $path upvar 0 $path data set w [expr {[winfo width $path]-1}] set h [expr {$data(hpage)-1}] set nbpages [llength $data(pages)] set xl 0 set xr [expr {$w-$_warrow+1}] if { $data(base) > 0 } { if { ![llength [$path:cmd find withtag "leftarrow"]] } { $path:cmd create window $xl 1 \ -width $_warrow \ -height $h \ -anchor nw \ -window $path.fg \ -tags "leftarrow" } else { $path:cmd coords "leftarrow" $xl 1 $path:cmd itemconfigure "leftarrow" -width $_warrow -height $h } } else { $path:cmd delete "leftarrow" } if { $data(base) < $nbpages-1 && $data(wpage) + [_get_x_page $path 0] + 6 > $w } { if { ![llength [$path:cmd find withtag "rightarrow"]] } { $path:cmd create window $xr 1 \ -width $_warrow \ -height $h \ -window $path.fd \ -anchor nw \ -tags "rightarrow" } else { $path:cmd coords "rightarrow" $xr 1 $path:cmd itemconfigure "rightarrow" -width $_warrow -height $h } } else { $path:cmd delete "rightarrow" } } # ------------------------------------------------------------------------------ # Command NoteBook::_draw_area # ------------------------------------------------------------------------------ proc NoteBook::_draw_area { path } { variable $path upvar 0 $path data set w [expr {[winfo width $path]-1}] set h [expr {[winfo height $path]-1}] set bd [Widget::getoption $path -borderwidth] set x0 [expr {$bd-1}] set y0 $data(hpage) set y1 $h set dbg $data(dbg) set sel $data(select) if { $sel == "" } { set xd [expr {$w/2}] set xf $xd set lbg $data(dbg) } else { set xd [_get_x_page $path [lsearch $data(pages) $data(select)]] set xf [expr {$xd + $data($sel,width)+6}] set lbg $data(lbg) } if { [llength [$path:cmd find withtag rect]] } { $path:cmd coords "toprect1" $xd $y0 $x0 $y0 $x0 $h $path:cmd coords "toprect2" $w $y0 $xf $y0 $path:cmd coords "botrect" $x0 $h $w $h $w $y0 $path:cmd itemconfigure "toprect1" -fill $lbg -width $bd $path:cmd itemconfigure "toprect2" -fill $lbg -width $bd $path:cmd itemconfigure "botrect" -width $bd $path:cmd raise "rect" } else { $path:cmd create line $xd $y0 $x0 $y0 $x0 $y1 \ -tags "rect toprect1" -fill $lbg -width $bd $path:cmd create line $w $y0 $xf $y0 \ -tags "rect toprect2" -fill $lbg -width $bd $path:cmd create line 1 $h $w $h $w $y0 \ -tags "rect botrect" -fill $dbg -width $bd } if { $sel != "" } { if { [llength [$path:cmd find withtag "window"]] } { $path:cmd coords "window" 2 [expr {$y0+1}] $path:cmd itemconfigure "window" \ -width [expr {$w-3}] \ -height [expr {$h-$y0-3}] \ -window $path.f$sel } else { set y0 $data(hpage) $path:cmd create window 2 [expr {$y0+1}] \ -width [expr {$w-3}] \ -height [expr {$h-$y0-3}] \ -anchor nw \ -tags "window" \ -window $path.f$sel } } else { $path:cmd delete "window" } } # ------------------------------------------------------------------------------ # Command NoteBook::_resize # ------------------------------------------------------------------------------ proc NoteBook::_resize { path } { _draw_area $path _draw_arrows $path } # ------------------------------------------------------------------------------ # Command NoteBook::_realize # ------------------------------------------------------------------------------ proc NoteBook::_realize { path } { variable $path upvar 0 $path data if { [set width [Widget::getoption $path -width]] == 0 || [set height [Widget::getoption $path -height]] == 0 } { compute_size $path } set data(realized) 1 _draw_area $path _draw_arrows $path bind $path <Configure> "NoteBook::_resize $path" } |
Added pagesmgr.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 | # ------------------------------------------------------------------------------ # pagesmgr.tcl # This file is part of Unifix BWidget Toolkit # $Id: pagesmgr.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - PagesManager::create # - PagesManager::configure # - PagesManager::cget # - PagesManager::compute_size # - PagesManager::add # - PagesManager::delete # - PagesManager::raise # - PagesManager::page # - PagesManager::pages # - PagesManager::getframe # - PagesManager::_test_page # - PagesManager::_select # - PagesManager::_redraw # - PagesManager::_draw_area # - PagesManager::_realize # ------------------------------------------------------------------------------ namespace eval PagesManager { Widget::declare PagesManager { {-background TkResource "" 0 frame} {-width Int 0 0 {=0 ""}} {-height Int 0 0 {=0 ""}} } Widget::addmap PagesManager "" :cmd {-width {} -height {}} proc ::PagesManager { path args } { return [eval PagesManager::create $path $args] } proc use {} {} } # ------------------------------------------------------------------------------ # Command PagesManager::create # ------------------------------------------------------------------------------ proc PagesManager::create { path args } { variable $path upvar 0 $path data Widget::init PagesManager $path $args set data(select) "" set data(pages) {} set data(cpt) 0 set data(realized) 0 # --- creation du canvas ----------------------------------------------------------------- set w [Widget::cget $path -width] set h [Widget::cget $path -height] canvas $path -relief flat -bd 0 -highlightthickness 0 -width $w -height $h bind $path <Configure> "PagesManager::_realize $path" bind $path <Destroy> "PagesManager::_destroy $path" rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval PagesManager::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command PagesManager::configure # ------------------------------------------------------------------------------ proc PagesManager::configure { path args } { return [Widget::configure $path $args] } # ------------------------------------------------------------------------------ # Command PagesManager::cget # ------------------------------------------------------------------------------ proc PagesManager::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command PagesManager::compute_size # ------------------------------------------------------------------------------ proc PagesManager::compute_size { path } { variable $path upvar 0 $path data set wmax 0 set hmax 0 update idletasks foreach page $data(pages) { set w [winfo reqwidth $path.f$page] set h [winfo reqheight $path.f$page] set wmax [expr {$w>$wmax ? $w : $wmax}] set hmax [expr {$h>$hmax ? $h : $hmax}] } configure $path -width $wmax -height $hmax } # ------------------------------------------------------------------------------ # Command PagesManager::add # ------------------------------------------------------------------------------ proc PagesManager::add { path page } { variable $path upvar 0 $path data if { [lsearch $data(pages) $page] != -1 } { return -code error "page \"$page\" already exists" } lappend data(pages) $page frame $path.f$page -relief flat -background [Widget::cget $path -background] -borderwidth 0 return $path.f$page } # ------------------------------------------------------------------------------ # Command PagesManager::delete # ------------------------------------------------------------------------------ proc PagesManager::delete { path page } { variable $path upvar 0 $path data set pos [_test_page $path $page] set data(pages) [lreplace $data(pages) $pos $pos] if { $data(select) == $page } { set data(select) "" } destroy $path.f$page _redraw $path } # ------------------------------------------------------------------------------ # Command PagesManager::raise # ------------------------------------------------------------------------------ proc PagesManager::raise { path {page ""} } { variable $path upvar 0 $path data if { $page != "" } { _test_page $path $page _select $path $page } return $data(select) } # ------------------------------------------------------------------------------ # Command PagesManager::page - deprecated, use pages # ------------------------------------------------------------------------------ proc PagesManager::page { path first {last ""} } { variable $path upvar 0 $path data if { $last == "" } { return [lindex $data(pages) $first] } else { return [lrange $data(pages) $first $last] } } # ------------------------------------------------------------------------------ # Command PagesManager::pages # ------------------------------------------------------------------------------ proc PagesManager::pages { path {first ""} {last ""} } { variable $path upvar 0 $path data if { ![string length $first] } { return $data(pages) } if { ![string length $last] } { return [lindex $data(pages) $first] } else { return [lrange $data(pages) $first $last] } } # ------------------------------------------------------------------------------ # Command PagesManager::_destroy # ------------------------------------------------------------------------------ proc PagesManager::_destroy { path } { variable $path upvar 0 $path data Widget::destroy $path unset data rename $path {} } # ------------------------------------------------------------------------------ # Command PagesManager::getframe # ------------------------------------------------------------------------------ proc PagesManager::getframe { path page } { return $path.f$page } # ------------------------------------------------------------------------------ # Command PagesManager::_test_page # ------------------------------------------------------------------------------ proc PagesManager::_test_page { path page } { variable $path upvar 0 $path data if { [set pos [lsearch $data(pages) $page]] == -1 } { return -code error "page \"$page\" does not exists" } return $pos } # ------------------------------------------------------------------------------ # Command PagesManager::_select # ------------------------------------------------------------------------------ proc PagesManager::_select { path page } { variable $path upvar 0 $path data set oldsel $data(select) if { $page != $oldsel } { set data(select) $page _draw_area $path } } # ------------------------------------------------------------------------------ # Command PagesManager::_redraw # ------------------------------------------------------------------------------ proc PagesManager::_redraw { path } { variable $path upvar 0 $path data if { !$data(realized) } { return } _draw_area $path } # ------------------------------------------------------------------------------ # Command PagesManager::_draw_area # ------------------------------------------------------------------------------ proc PagesManager::_draw_area { path } { variable $path upvar 0 $path data set w [winfo width $path] set h [winfo height $path] set sel $data(select) if { $sel != "" } { if { [llength [$path:cmd find withtag "window"]] } { $path:cmd coords "window" 0 0 $path:cmd itemconfigure "window" \ -width $w \ -height $h \ -window $path.f$sel } else { $path:cmd create window 0 0 \ -width $w \ -height $h \ -anchor nw \ -tags "window" \ -window $path.f$sel } } else { $path:cmd delete "window" } } # ------------------------------------------------------------------------------ # Command PagesManager::_realize # ------------------------------------------------------------------------------ proc PagesManager::_realize { path } { variable $path upvar 0 $path data if { [set width [Widget::cget $path -width]] == 0 || [set height [Widget::cget $path -height]] == 0 } { compute_size $path } set data(realized) 1 _draw_area $path bind $path <Configure> "PagesManager::_draw_area $path" } |
Added panedw.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 | # ------------------------------------------------------------------------------ # panedw.tcl # This file is part of Unifix BWidget Toolkit # ------------------------------------------------------------------------------ # Index of commands: # - PanedWindow::create # - PanedWindow::configure # - PanedWindow::cget # - PanedWindow::add # - PanedWindow::getframe # - PanedWindow::_destroy # - PanedWindow::_beg_move_sash # - PanedWindow::_move_sash # - PanedWindow::_end_move_sash # - PanedWindow::_realize # ------------------------------------------------------------------------------ namespace eval PanedWindow { namespace eval Pane { Widget::declare PanedWindow::Pane { {-minsize Int 0 0 {=0}} {-weight Int 1 0 {=0}} } } Widget::declare PanedWindow { {-side Enum top 1 {top left bottom right}} {-width Int 10 1 {=6 ""}} {-pad Int 4 1 {=0 ""}} {-background TkResource "" 0 frame} {-bg Synonym -background} } variable _panedw proc ::PanedWindow { path args } { return [eval PanedWindow::create $path $args] } proc use {} {} } # ------------------------------------------------------------------------------ # Command PanedWindow::create # ------------------------------------------------------------------------------ proc PanedWindow::create { path args } { variable _panedw Widget::init PanedWindow $path $args frame $path -background [Widget::getoption $path -background] set _panedw($path,nbpanes) 0 bind $path <Configure> "PanedWindow::_realize $path %w %h" bind $path <Destroy> "PanedWindow::_destroy $path" rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval PanedWindow::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command PanedWindow::configure # ------------------------------------------------------------------------------ proc PanedWindow::configure { path args } { variable _panedw set res [Widget::configure $path $args] if { [Widget::hasChanged $path -background bg] && $_panedw($path,nbpanes) > 0 } { $path:cmd configure -background $bg $path.f0 configure -background $bg for {set i 1} {$i < $_panedw($path,nbpanes)} {incr i} { set frame $path.sash$i $frame configure -background $bg $frame.sep configure -background $bg $frame.but configure -background $bg $path.f$i configure -background $bg $path.f$i.frame configure -background $bg } } return $res } # ------------------------------------------------------------------------------ # Command PanedWindow::cget # ------------------------------------------------------------------------------ proc PanedWindow::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command PanedWindow::add # ------------------------------------------------------------------------------ proc PanedWindow::add { path args } { variable _panedw set num $_panedw($path,nbpanes) Widget::init PanedWindow::Pane $path.f$num $args set bg [Widget::getoption $path -background] set wbut [Widget::getoption $path -width] set pad [Widget::getoption $path -pad] set width [expr {$wbut+2*$pad}] set side [Widget::getoption $path -side] if { $num > 0 } { set frame [frame $path.sash$num -relief flat -bd 0 -highlightthickness 0 \ -width $width -height $width -bg $bg] set sep [frame $frame.sep -bd 1 -relief raised -highlightthickness 0 -bg $bg] set but [frame $frame.but -bd 1 -relief raised -highlightthickness 0 -bg $bg \ -width $wbut -height $wbut] if { ![string compare $side "top"] || ![string compare $side "bottom"] } { place $sep -relx 0.5 -y 0 -width 2 -relheight 1.0 -anchor n if { ![string compare $side "top"] } { place $but -relx 0.5 -y [expr {6+$wbut/2}] -anchor c } else { place $but -relx 0.5 -rely 1.0 -y [expr {-6-$wbut/2}] -anchor c } $but configure -cursor sb_h_double_arrow grid $frame -column [expr 2*$num-1] -row 0 -sticky ns grid columnconfigure $path [expr 2*$num-1] -weight 0 } else { place $sep -x 0 -rely 0.5 -height 2 -relwidth 1.0 -anchor w if { ![string compare $side "left"] } { place $but -rely 0.5 -x [expr {6+$wbut/2}] -anchor c } else { place $but -rely 0.5 -relx 1.0 -x [expr {-6-$wbut/2}] -anchor c } $but configure -cursor sb_v_double_arrow grid $frame -row [expr 2*$num-1] -column 0 -sticky ew grid rowconfigure $path [expr 2*$num-1] -weight 0 } bind $but <ButtonPress-1> "PanedWindow::_beg_move_sash $path $num %X %Y" } else { if { ![string compare $side "top"] || ![string compare $side "bottom"] } { grid rowconfigure $path 0 -weight 1 } else { grid columnconfigure $path 0 -weight 1 } } set pane [frame $path.f$num -bd 0 -relief flat -highlightthickness 0 -bg $bg] set user [frame $path.f$num.frame -bd 0 -relief flat -highlightthickness 0 -bg $bg] if { ![string compare $side "top"] || ![string compare $side "bottom"] } { grid $pane -column [expr 2*$num] -row 0 -sticky nsew grid columnconfigure $path [expr 2*$num] \ -weight [Widget::getoption $path.f$num -weight] } else { grid $pane -row [expr 2*$num] -column 0 -sticky nsew grid rowconfigure $path [expr 2*$num] \ -weight [Widget::getoption $path.f$num -weight] } pack $user -fill both -expand yes incr _panedw($path,nbpanes) return $user } # ------------------------------------------------------------------------------ # Command PanedWindow::getframe # ------------------------------------------------------------------------------ proc PanedWindow::getframe { path index } { if { [winfo exists $path.f$index.frame] } { return $path.f$index.frame } } # ------------------------------------------------------------------------------ # Command PanedWindow::_destroy # ------------------------------------------------------------------------------ proc PanedWindow::_destroy { path } { variable _panedw for {set i 0} {$i < $_panedw($path,nbpanes)} {incr i} { Widget::destroy $path.f$i } unset _panedw($path,nbpanes) Widget::destroy $path rename $path {} } # ------------------------------------------------------------------------------ # Command PanedWindow::_beg_move_sash # ------------------------------------------------------------------------------ proc PanedWindow::_beg_move_sash { path num x y } { variable _panedw set fprev $path.f[expr $num-1] set fnext $path.f$num set wsash [expr [Widget::getoption $path -width] + 2*[Widget::getoption $path -pad]] $path.sash$num.but configure -relief sunken set top [toplevel $path.sash -borderwidth 1 -relief raised] set minszg [Widget::getoption $fprev -minsize] set minszd [Widget::getoption $fnext -minsize] set side [Widget::getoption $path -side] if { ![string compare $side "top"] || ![string compare $side "bottom"] } { $top configure -cursor sb_h_double_arrow set h [winfo height $path] set yr [winfo rooty $path.sash$num] set xmin [expr $wsash/2+[winfo rootx $fprev]+$minszg] set xmax [expr -$wsash/2-1+[winfo rootx $fnext]+[winfo width $fnext]-$minszd] wm overrideredirect $top 1 wm geom $top "2x${h}+$x+$yr" update idletasks grab set $top bind $top <ButtonRelease-1> "PanedWindow::_end_move_sash $path $top $num $xmin $xmax %X rootx width" bind $top <Motion> "PanedWindow::_move_sash $top $xmin $xmax %X +%%d+$yr" _move_sash $top $xmin $xmax $x "+%d+$yr" } else { $top configure -cursor sb_v_double_arrow set w [winfo width $path] set xr [winfo rootx $path.sash$num] set ymin [expr $wsash/2+[winfo rooty $fprev]+$minszg] set ymax [expr -$wsash/2-1+[winfo rooty $fnext]+[winfo height $fnext]-$minszd] wm overrideredirect $top 1 wm geom $top "${w}x2+$xr+$y" update idletasks grab set $top bind $top <ButtonRelease-1> "PanedWindow::_end_move_sash $path $top $num $ymin $ymax %Y rooty height" bind $top <Motion> "PanedWindow::_move_sash $top $ymin $ymax %Y +$xr+%%d" _move_sash $top $ymin $ymax $y "+$xr+%d" } } # ------------------------------------------------------------------------------ # Command PanedWindow::_move_sash # ------------------------------------------------------------------------------ proc PanedWindow::_move_sash { top min max v form } { if { $v < $min } { set v $min } elseif { $v > $max } { set v $max } wm geom $top [format $form $v] } # ------------------------------------------------------------------------------ # Command PanedWindow::_end_move_sash # ------------------------------------------------------------------------------ proc PanedWindow::_end_move_sash { path top num min max v rootv size } { variable _panedw destroy $top if { $v < $min } { set v $min } elseif { $v > $max } { set v $max } set fprev $path.f[expr $num-1] set fnext $path.f$num $path.sash$num.but configure -relief raised set wsash [expr [Widget::getoption $path -width] + 2*[Widget::getoption $path -pad]] set dv [expr $v-[winfo $rootv $path.sash$num]-$wsash/2] set w1 [winfo $size $fprev] set w2 [winfo $size $fnext] for {set i 0} {$i < $_panedw($path,nbpanes)} {incr i} { if { $i == $num-1} { $fprev configure -$size [expr [winfo $size $fprev]+$dv] } elseif { $i == $num } { $fnext configure -$size [expr [winfo $size $fnext]-$dv] } else { $path.f$i configure -$size [winfo $size $path.f$i] } } } # ------------------------------------------------------------------------------ # Command PanedWindow::_realize # ------------------------------------------------------------------------------ proc PanedWindow::_realize { path width height } { variable _panedw set x 0 set y 0 set hc [winfo reqheight $path] set hmax 0 for {set i 0} {$i < $_panedw($path,nbpanes)} {incr i} { $path.f$i configure \ -width [winfo reqwidth $path.f$i.frame] \ -height [winfo reqheight $path.f$i.frame] place $path.f$i.frame -x 0 -y 0 -relwidth 1 -relheight 1 } bind $path <Configure> {} } |
Added passwddlg.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | # ----------------------------------------------------------------------------- # passwddlg.tcl # This file is part of Unifix BWidget Toolkit # by Stephane Lavirotte ([email protected]) # $Id: passwddlg.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ----------------------------------------------------------------------------- # Index of commands: # - PasswdDlg::create # - PasswdDlg::configure # - PasswdDlg::cget # - PasswdDlg::_verifonlogin # - PasswdDlg::_verifonpasswd # - PasswdDlg::_max #------------------------------------------------------------------------------ namespace eval PasswdDlg { Dialog::use LabelEntry::use Widget::bwinclude PasswdDlg Dialog "" \ remove {-image -bitmap -side -default -cancel -separator} \ initialize {-modal local -anchor c} Widget::bwinclude PasswdDlg LabelEntry .frame.lablog \ remove { -command -editable -justify -name -show -side -state -takefocus -width -xscrollcommand -padx -pady -dragenabled -dragendcmd -dragevent -draginitcmd -dragtype -dropenabled -dropcmd -dropovercmd -droptypes } \ prefix {login -helptext -helpvar -label -text -textvariable -underline} \ initialize {-relief sunken -borderwidth 2 -labelanchor w -width 15 -loginlabel "Login"} Widget::bwinclude PasswdDlg LabelEntry .frame.labpass \ remove { -command -width -show -side -takefocus -xscrollcommand -dragenabled -dragendcmd -dragevent -draginitcmd -dragtype -dropenabled -dropcmd -dropovercmd -droptypes -justify -padx -pady -name } \ prefix {passwd -editable -helptext -helpvar -label -state -text -textvariable -underline} \ initialize {-relief sunken -borderwidth 2 -labelanchor w -width 15 -passwdlabel "Password"} Widget::declare PasswdDlg { {-type Enum ok 0 {ok okcancel}} {-labelwidth TkResource -1 0 {label -width}} {-command String "" 0} } Widget::syncoptions PasswdDlg LabelEntry .frame.lablog { -logintext -text -loginlabel -label -loginunderline -underline } Widget::syncoptions PasswdDlg LabelEntry .frame.labpass { -passwdtext -text -passwdlabel -label -passwdunderline -underline } proc ::PasswdDlg { path args } { return [eval PasswdDlg::create $path $args] } proc use {} {} } # ----------------------------------------------------------------------------- # Command PasswdDlg::create # ----------------------------------------------------------------------------- proc PasswdDlg::create { path args } { Widget::init PasswdDlg "$path#PasswdDlg" $args set type [Widget::getoption "$path#PasswdDlg" -type] set loglabel [Widget::getoption "$path#PasswdDlg" -loginlabel] set passlabel [Widget::getoption "$path#PasswdDlg" -passwdlabel] set labwidth [Widget::getoption "$path#PasswdDlg" -labelwidth] set cmd [Widget::getoption "$path#PasswdDlg" -command] set defb -1 set canb -1 switch -- $type { ok { set lbut {ok}; set defb 0 } okcancel { set lbut {ok cancel} ; set defb 0; set canb 1 } } eval Dialog::create $path [Widget::subcget "$path#PasswdDlg" ""] \ -image [Bitmap::get passwd] -side bottom -default $defb -cancel $canb foreach but $lbut { if { $but == "ok" && $cmd != "" } { Dialog::add $path -text $but -name $but -command $cmd } else { Dialog::add $path -text $but -name $but } } set frame [Dialog::getframe $path] bind $path <Return> "" bind $frame <Destroy> "Widget::destroy $path#PasswdDlg" set lablog [eval LabelEntry::create $frame.lablog \ [Widget::subcget "$path#PasswdDlg" .frame.lablog] \ -label \"$loglabel\" -name login \ -dragenabled 0 -dropenabled 0 \ -command \"PasswdDlg::_verifonpasswd $path $frame.labpass\"] set labpass [eval LabelEntry::create $frame.labpass \ [Widget::subcget "$path#PasswdDlg" .frame.labpass] \ -label \"$passlabel\" -name password -show "*" \ -dragenabled 0 -dropenabled 0 \ -command \"PasswdDlg::_verifonlogin $path $frame.lablog\"] if { $labwidth == -1 } { # les options -label sont mises a jour selon -name set loglabel [$lablog cget -label] set passlabel [$labpass cget -label] set labwidth [PasswdDlg::_max [string length $loglabel] [string length $passlabel]] incr labwidth 1 $lablog configure -labelwidth $labwidth $labpass configure -labelwidth $labwidth } proc ::$path { cmd args } "return \[eval PasswdDlg::\$cmd $path \$args\]" pack $frame.lablog $frame.labpass -fill x -expand 1 focus $frame.lablog.e set res [Dialog::draw $path] if { $res == 0 } { set res [list [$lablog.e cget -text] [$labpass.e cget -text]] } else { set res [list] } Widget::destroy "$path#PasswdDlg" destroy $path return $res } # ----------------------------------------------------------------------------- # Command PasswdDlg::configure # ----------------------------------------------------------------------------- proc PasswdDlg::configure { path args } { set res [Widget::configure "$path#PasswdDlg" $args] } # ----------------------------------------------------------------------------- # Command PasswdDlg::cget # ----------------------------------------------------------------------------- proc PasswdDlg::cget { path option } { return [Widget::cget "$path#PasswdDlg" $option] } # ----------------------------------------------------------------------------- # Command PasswdDlg::_verifonlogin # ----------------------------------------------------------------------------- proc PasswdDlg::_verifonlogin { path labpass } { if { [$labpass.e cget -text] == "" } { focus $labpass } else { Dialog::setfocus $path default } } # ----------------------------------------------------------------------------- # Command PasswdDlg::_verifonpasswd # ----------------------------------------------------------------------------- proc PasswdDlg::_verifonpasswd { path lablog } { if { [$lablog.e cget -text] == "" } { focus $lablog } else { Dialog::setfocus $path default } } # ----------------------------------------------------------------------------- # Command PasswdDlg::_max # ----------------------------------------------------------------------------- proc PasswdDlg::_max { val1 val2 } { return [expr ($val1 > $val2) ? ($val1) : ($val2)] } |
Added pkgIndex.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | if {[catch {package require Tcl}]} return package ifneeded BWidget 1.2.1 "\ package require Tk 8.0;\ [list tclPkgSetup $dir BWidget 1.2.1 { {arrow.tcl source {ArrowButton ArrowButton::create ArrowButton::use}} {labelframe.tcl source {LabelFrame LabelFrame::create LabelFrame::use}} {labelentry.tcl source {LabelEntry LabelEntry::create LabelEntry::use}} {bitmap.tcl source {Bitmap::get Bitmap::use}} {button.tcl source {Button Button::create Button::use}} {buttonbox.tcl source {ButtonBox ButtonBox::create ButtonBox::use}} {combobox.tcl source {ComboBox ComboBox::create ComboBox::use}} {label.tcl source {Label Label::create Label::use}} {entry.tcl source {Entry Entry::create Entry::use}} {pagesmgr.tcl source {PagesManager PagesManager::create PagesManager::use}} {notebook.tcl source {NoteBook NoteBook::create NoteBook::use}} {panedw.tcl source {PanedWindow PanedWindow::create PanedWindow::use}} {scrollw.tcl source {ScrolledWindow ScrolledWindow::create ScrolledWindow::use}} {scrollview.tcl source {ScrollView ScrollView::create ScrollView::use}} {scrollframe.tcl source {ScrollableFrame ScrollableFrame::create ScrollableFrame::use}} {progressbar.tcl source {ProgressBar ProgressBar::create ProgressBar::use}} {progressdlg.tcl source {ProgressDlg ProgressDlg::create ProgressDlg::use}} {passwddlg.tcl source {PasswdDlg PasswdDlg::create PasswdDlg::use}} {dragsite.tcl source {DragSite::register DragSite::include DragSite::use}} {dropsite.tcl source {DropSite::register DropSite::include DropSite::use}} {separator.tcl source {Separator Separator::create Separator::use}} {spinbox.tcl source {SpinBox SpinBox::create SpinBox::use}} {titleframe.tcl source {TitleFrame TitleFrame::create TitleFrame::use}} {mainframe.tcl source {MainFrame MainFrame::create MainFrame::use}} {listbox.tcl source {ListBox ListBox::create ListBox::use}} {tree.tcl source {Tree Tree::create Tree::use}} {color.tcl source {SelectColor SelectColor::create SelectColor::use SelectColor::setcolor}} {dynhelp.tcl source {DynamicHelp::configure DynamicHelp::use DynamicHelp::register DynamicHelp::include}} {dialog.tcl source {Dialog Dialog::create Dialog::use}} {messagedlg.tcl source {MessageDlg MessageDlg::create MessageDlg::use}} {font.tcl source {SelectFont SelectFont::create SelectFont::use SelectFont::loadfont}} {widgetdoc.tcl source {Widget::generate-doc Widget::generate-widget-doc}} {xpm2image.tcl source {xpm-to-image}} }]; \ [list set env(BWIDGET_LIBRARY) $dir]; \ [list source [file join $dir widget.tcl]]; \ [list source [file join $dir init.tcl]]; \ [list source [file join $dir utils.tcl]]; \ " |
Added progressbar.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 | # ------------------------------------------------------------------------------ # progressbar.tcl # This file is part of Unifix BWidget Toolkit # ------------------------------------------------------------------------------ # Index of commands: # - ProgressBar::create # - ProgressBar::configure # - ProgressBar::cget # - ProgressBar::_destroy # - ProgressBar::_modify # ------------------------------------------------------------------------------ namespace eval ProgressBar { Widget::declare ProgressBar { {-type Enum normal 0 {normal incremental infinite}} {-maximum Int 100 0 {>0}} {-background TkResource "" 0 frame} {-foreground TkResource blue 0 label} {-borderwidth TkResource 2 0 frame} {-troughcolor TkResource "" 0 scrollbar} {-relief TkResource sunken 0 label} {-orient Enum horizontal 1 {horizontal vertical}} {-variable String "" 0} {-width TkResource 100 0 frame} {-height TkResource 4m 0 frame} {-bg Synonym -background} {-fg Synonym -foreground} {-bd Synonym -borderwidth} } Widget::addmap ProgressBar "" :cmd {-background {} -width {} -height {}} Widget::addmap ProgressBar "" .bar {-troughcolor -background -borderwidth {} -relief {}} variable _widget proc ::ProgressBar { path args } { return [eval ProgressBar::create $path $args] } proc use {} {} } # ------------------------------------------------------------------------------ # Command ProgressBar::create # ------------------------------------------------------------------------------ proc ProgressBar::create { path args } { variable _widget Widget::init ProgressBar $path $args eval frame $path [Widget::subcget $path :cmd] set c [eval canvas $path.bar [Widget::subcget $path .bar] -highlightthickness 0] set fg [Widget::getoption $path -foreground] if { ![string compare [Widget::getoption $path -orient] "horizontal"] } { $path.bar create rectangle -1 0 0 0 -fill $fg -outline $fg -tags rect } else { $path.bar create rectangle 0 1 0 0 -fill $fg -outline $fg -tags rect } set _widget($path,val) 0 set _widget($path,dir) 1 if { [set _widget($path,var) [Widget::getoption $path -variable]] != "" } { GlobalVar::tracevar variable $_widget($path,var) w "ProgressBar::_modify $path" after idle ProgressBar::_modify $path } bind $path.bar <Destroy> "ProgressBar::_destroy $path" bind $path.bar <Configure> "ProgressBar::_modify $path" rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval ProgressBar::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command ProgressBar::configure # ------------------------------------------------------------------------------ proc ProgressBar::configure { path args } { variable _widget set res [Widget::configure $path $args] if { [Widget::hasChanged $path -variable newv] } { if { $_widget($path,var) != "" } { GlobalVar::tracevar vdelete $_widget($path,var) w "ProgressBar::_modify $path" } if { $newv != "" } { set _widget($path,var) $newv GlobalVar::tracevar variable $newv w "ProgressBar::_modify $path" after idle ProgressBar::_modify $path } else { set _widget($path,var) "" } } if { [Widget::hasChanged $path -borderwidth v] || [Widget::hasChanged $path -orient v] } { after idle ProgressBar::_modify $path } if { [Widget::hasChanged $path -foreground fg] } { $path.bar itemconfigure rect -fill $fg -outline $fg } return $res } # ------------------------------------------------------------------------------ # Command ProgressBar::cget # ------------------------------------------------------------------------------ proc ProgressBar::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command ProgressBar::_destroy # ------------------------------------------------------------------------------ proc ProgressBar::_destroy { path } { variable _widget if { $_widget($path,var) != "" } { GlobalVar::tracevar vdelete $_widget($path,var) w "ProgressBar::_modify $path" } unset _widget($path,var) unset _widget($path,dir) Widget::destroy $path rename $path {} } # ------------------------------------------------------------------------------ # Command ProgressBar::_modify # ------------------------------------------------------------------------------ proc ProgressBar::_modify { path args } { variable _widget if { ![GlobalVar::exists $_widget($path,var)] || [set val [GlobalVar::getvar $_widget($path,var)]] < 0 } { catch {place forget $path.bar} } else { place $path.bar -relx 0 -rely 0 -relwidth 1 -relheight 1 set type [Widget::getoption $path -type] if { $val != 0 && [string compare $type "normal"] } { set val [expr {$val+$_widget($path,val)}] } set _widget($path,val) $val set max [Widget::getoption $path -maximum] set bd [expr {2*[$path.bar cget -bd]}] set w [winfo width $path.bar] set h [winfo height $path.bar] if { ![string compare $type "infinite"] } { if { $val > $max } { set _widget($path,dir) [expr {-$_widget($path,dir)}] set val 0 set _widget($path,val) 0 } if { $val <= $max/2.0 } { set dx0 0.0 set dx1 [expr {double($val)/$max}] } else { set dx1 [expr {double($val)/$max}] set dx0 [expr {$dx1-0.5}] } if { $_widget($path,dir) == 1 } { set x0 $dx0 set x1 $dx1 } else { set x0 [expr {1-$dx1}] set x1 [expr {1-$dx0}] } if { ![string compare [Widget::getoption $path -orient] "horizontal"] } { $path.bar coords rect [expr {$x0*$w}] 0 [expr {$x1*$w}] $h } else { $path.bar coords rect 0 [expr {$h-$x0*$h}] $w [expr {$x1*$h}] } } else { if { $val > $max } {set val $max} if { ![string compare [Widget::getoption $path -orient] "horizontal"] } { $path.bar coords rect -1 0 [expr {$val*$w/$max}] $h } else { $path.bar coords rect 0 [expr {$h+1}] $w [expr {$h*($max-$val)}] } } } update } |
Added progressdlg.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | # ------------------------------------------------------------------------------ # progressdlg.tcl # This file is part of Unifix BWidget Toolkit # ------------------------------------------------------------------------------ # Index of commands: # - ProgressDlg::create # ------------------------------------------------------------------------------ namespace eval ProgressDlg { Dialog::use ProgressBar::use Widget::bwinclude ProgressDlg Dialog "" \ remove { -modal -image -bitmap -side -anchor -cancel -default -homogeneous -padx -pady -spacing } Widget::bwinclude ProgressDlg ProgressBar .frame.pb \ remove {-orient -width -height} Widget::declare ProgressDlg { {-width TkResource 25 0 label} {-height TkResource 2 0 label} {-textvariable TkResource "" 0 label} {-font TkResource "" 0 label} {-stop String "" 0} {-command String "" 0} } Widget::addmap ProgressDlg "" .frame.msg \ {-width {} -height {} -textvariable {} -font {} -background {}} proc ::ProgressDlg { path args } { return [eval ProgressDlg::create $path $args] } proc use {} {} } # ------------------------------------------------------------------------------ # Command ProgressDlg::create # ------------------------------------------------------------------------------ proc ProgressDlg::create { path args } { Widget::init ProgressDlg "$path#ProgressDlg" $args eval Dialog::create $path [Widget::subcget "$path#ProgressDlg" ""] \ -image [Bitmap::get hourglass] -modal none -side bottom -anchor c wm protocol $path WM_DELETE_WINDOW {;} set frame [Dialog::getframe $path] bind $frame <Destroy> "Widget::destroy $path#ProgressDlg" $frame configure -cursor watch eval label $frame.msg [Widget::subcget "$path#ProgressDlg" .frame.msg] \ -relief flat -borderwidth 0 -highlightthickness 0 -anchor w -justify left pack $frame.msg -side top -pady 3m -anchor nw -fill x -expand yes set var [Widget::cget "$path#ProgressDlg" -variable] eval ProgressBar::create $frame.pb [Widget::subcget "$path#ProgressDlg" .frame.pb] \ -width 100 pack $frame.pb -side bottom -anchor w -fill x -expand yes set stop [Widget::cget "$path#ProgressDlg" -stop] set cmd [Widget::cget "$path#ProgressDlg" -command] if { $stop != "" && $cmd != "" } { Dialog::add $path -text $stop -name $stop -command $cmd } Dialog::draw $path BWidget::grab local $path proc ::$path { cmd args } "return \[eval ProgressDlg::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command ProgressDlg::configure # ------------------------------------------------------------------------------ proc ProgressDlg::configure { path args } { return [Widget::configure "$path#ProgressDlg" $args] } # ------------------------------------------------------------------------------ # Command ProgressDlg::cget # ------------------------------------------------------------------------------ proc ProgressDlg::cget { path option } { return [Widget::cget "$path#ProgressDlg" $option] } |
Added scrollframe.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 | # ------------------------------------------------------------------------------ # scrollframe.tcl # This file is part of Unifix BWidget Toolkit # $Id: scrollframe.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - ScrollableFrame::create # - ScrollableFrame::configure # - ScrollableFrame::cget # - ScrollableFrame::getframe # - ScrollableFrame::see # - ScrollableFrame::xview # - ScrollableFrame::yview # - ScrollableFrame::_resize # ------------------------------------------------------------------------------ namespace eval ScrollableFrame { Widget::declare ScrollableFrame { {-background TkResource "" 0 frame} {-width Int 0 0 {}} {-height Int 0 0 {}} {-areawidth Int 0 0 {}} {-areaheight Int 0 0 {}} {-constrainedwidth Boolean 0 0} {-constrainedheight Boolean 0 0} {-xscrollcommand TkResource "" 0 canvas} {-yscrollcommand TkResource "" 0 canvas} {-xscrollincrement TkResource "" 0 canvas} {-yscrollincrement TkResource "" 0 canvas} {-bg Synonym -background} } Widget::addmap ScrollableFrame "" :cmd { -background {} -width {} -height {} -xscrollcommand {} -yscrollcommand {} -xscrollincrement {} -yscrollincrement {} } Widget::addmap ScrollableFrame "" .frame {-background {}} variable _widget bind BwScrollableFrame <Configure> {ScrollableFrame::_resize %W} bind BwScrollableFrame <Destroy> {Widget::destroy %W; rename %W {}} proc ::ScrollableFrame { path args } { return [eval ScrollableFrame::create $path $args] } proc use {} {} } # ------------------------------------------------------------------------------ # Command ScrollableFrame::create # ------------------------------------------------------------------------------ proc ScrollableFrame::create { path args } { Widget::init ScrollableFrame $path $args set canvas [eval canvas $path [Widget::subcget $path :cmd] \ -highlightthickness 0 -borderwidth 0 -relief flat] set frame [eval frame $path.frame [Widget::subcget $path .frame] \ -highlightthickness 0 -borderwidth 0 -relief flat] $canvas create window 0 0 -anchor nw -window $frame -tags win \ -width [Widget::cget $path -areawidth] \ -height [Widget::cget $path -areaheight] bind $frame <Configure> "$canvas:cmd configure -scrollregion {0 0 %w %h}" bindtags $path [list $path BwScrollableFrame [winfo toplevel $path] all] rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval ScrollableFrame::\$cmd $path \$args\]" return $canvas } # ------------------------------------------------------------------------------ # Command ScrollableFrame::configure # ------------------------------------------------------------------------------ proc ScrollableFrame::configure { path args } { set res [Widget::configure $path $args] set upd 0 set modcw [Widget::hasChanged $path -constrainedwidth cw] set modw [Widget::hasChanged $path -areawidth w] if { $modcw || (!$cw && $modw) } { if { $cw } { set w [winfo width $path] } set upd 1 } set modch [Widget::hasChanged $path -constrainedheight ch] set modh [Widget::hasChanged $path -areaheight h] if { $modch || (!$ch && $modh) } { if { $ch } { set h [winfo height $path] } set upd 1 } if { $upd } { $path:cmd itemconfigure win -width $w -height $h } return $res } # ------------------------------------------------------------------------------ # Command ScrollableFrame::cget # ------------------------------------------------------------------------------ proc ScrollableFrame::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command ScrollableFrame::getframe # ------------------------------------------------------------------------------ proc ScrollableFrame::getframe { path } { return $path.frame } # ------------------------------------------------------------------------------ # Command ScrollableFrame::see # ------------------------------------------------------------------------------ proc ScrollableFrame::see { path widget {vert top} {horz left}} { set x0 [winfo x $widget] set y0 [winfo y $widget] set x1 [expr {$x0+[winfo width $widget]}] set y1 [expr {$y0+[winfo height $widget]}] set xb0 [$path:cmd canvasx 0] set yb0 [$path:cmd canvasy 0] set xb1 [$path:cmd canvasx [winfo width $path]] set yb1 [$path:cmd canvasy [winfo height $path]] set dx 0 set dy 0 if { ![string compare $horz "left"] } { if { $x1 > $xb1 } { set dx [expr {$x1-$xb1}] } if { $x0 < $xb0+$dx } { set dx [expr {$x0-$xb0}] } } elseif { ![string compare $horz "right"] } { if { $x0 < $xb0 } { set dx [expr {$x0-$xb0}] } if { $x1 > $xb1+$dx } { set dx [expr {$x1-$xb1}] } } if { ![string compare $vert "top"] } { if { $y1 > $yb1 } { set dy [expr {$y1-$yb1}] } if { $y0 < $yb0+$dy } { set dy [expr {$y0-$yb0}] } } elseif { ![string compare $vert "bottom"] } { if { $y0 < $yb0 } { set dy [expr {$y0-$yb0}] } if { $y1 > $yb1+$dy } { set dy [expr {$y1-$yb1}] } } if { $dx != 0 } { set x [expr {($xb0+$dx)/[winfo width $path.frame]}] $path:cmd xview moveto $x } if { $dy != 0 } { set y [expr {($yb0+$dy)/[winfo height $path.frame]}] $path:cmd yview moveto $y } } # ------------------------------------------------------------------------------ # Command ScrollableFrame::xview # ------------------------------------------------------------------------------ proc ScrollableFrame::xview { path args } { return [eval $path:cmd xview $args] } # ------------------------------------------------------------------------------ # Command ScrollableFrame::yview # ------------------------------------------------------------------------------ proc ScrollableFrame::yview { path args } { return [eval $path:cmd yview $args] } # ------------------------------------------------------------------------------ # Command ScrollableFrame::_resize # ------------------------------------------------------------------------------ proc ScrollableFrame::_resize { path } { if { [Widget::getoption $path -constrainedwidth] } { $path:cmd itemconfigure win -width [winfo width $path] } if { [Widget::getoption $path -constrainedheight] } { $path:cmd itemconfigure win -height [winfo height $path] } } |
Added scrollview.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 | # ------------------------------------------------------------------------------ # scrollview.tcl # This file is part of Unifix BWidget Toolkit # $Id: scrollview.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - ScrolledWindow::create # - ScrolledWindow::configure # - ScrolledWindow::cget # - ScrolledWindow::_set_hscroll # - ScrolledWindow::_set_vscroll # - ScrolledWindow::_update_scroll # - ScrolledWindow::_set_view # - ScrolledWindow::_resize # ------------------------------------------------------------------------------ namespace eval ScrollView { Widget::declare ScrollView { {-width TkResource 30 0 canvas} {-height TkResource 30 0 canvas} {-background TkResource "" 0 canvas} {-foreground String black 0} {-fill String "" 0} {-relief TkResource flat 0 canvas} {-borderwidth TkResource 0 0 canvas} {-cursor TkResource crosshair 0 canvas} {-window String "" 0} {-fg Synonym -foreground} {-bg Synonym -background} {-bd Synonym -borderwidth} } Widget::addmap ScrollView "" :cmd \ {-relief {} -borderwidth {} -background {} -width {} -height {} -cursor {}} bind BwScrollView <ButtonPress-3> {ScrollView::_set_view %W set %x %y} bind BwScrollView <ButtonPress-1> {ScrollView::_set_view %W start %x %y} bind BwScrollView <B1-Motion> {ScrollView::_set_view %W motion %x %y} bind BwScrollView <Configure> {ScrollView::_resize %W} bind BwScrollView <Destroy> {ScrollView::_destroy %W} proc ::ScrollView { path args } { return [eval ScrollView::create $path $args] } proc use {} {} variable _widget } # ------------------------------------------------------------------------------ # Command ScrollView::create # ------------------------------------------------------------------------------ proc ScrollView::create { path args } { variable _widget Widget::init ScrollView $path $args set w [Widget::getoption $path -window] set _widget($path,bd) [Widget::getoption $path -borderwidth] set _widget($path,width) [Widget::getoption $path -width] set _widget($path,height) [Widget::getoption $path -height] if { [winfo exists $w] } { set _widget($path,oldxscroll) [$w cget -xscrollcommand] set _widget($path,oldyscroll) [$w cget -yscrollcommand] $w configure \ -xscrollcommand "ScrollView::_set_hscroll $path" \ -yscrollcommand "ScrollView::_set_vscroll $path" } eval canvas $path [Widget::subcget $path :cmd] -highlightthickness 0 $path create rectangle -2 -2 -2 -2 \ -fill [Widget::getoption $path -fill] \ -outline [Widget::getoption $path -foreground] \ -tags view bindtags $path [list $path BwScrollView [winfo toplevel $path] all] rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval ScrollView::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command ScrollView::configure # ------------------------------------------------------------------------------ proc ScrollView::configure { path args } { variable _widget set oldw [Widget::getoption $path -window] set res [Widget::configure $path $args] if { [Widget::hasChanged $path -window w] } { if { [winfo exists $oldw] } { $oldw configure \ -xscrollcommand $_widget($path,oldxscroll) \ -yscrollcommand $_widget($path,oldyscroll) } if { [winfo exists $w] } { set _widget($path,oldxscroll) [$w cget -xscrollcommand] set _widget($path,oldyscroll) [$w cget -yscrollcommand] $w configure \ -xscrollcommand "ScrollView::_set_hscroll $path" \ -yscrollcommand "ScrollView::_set_vscroll $path" } else { $path:cmd coords view -2 -2 -2 -2 set _widget($path,oldxscroll) {} set _widget($path,oldyscroll) {} } } if { [Widget::hasChanged $path -fill fill] | [Widget::hasChanged $path -foreground fg] } { $path:cmd itemconfigure view \ -fill $fill \ -outline $fg } return $res } # ------------------------------------------------------------------------------ # Command ScrollView::cget # ------------------------------------------------------------------------------ proc ScrollView::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command ScrollView::_destroy # ------------------------------------------------------------------------------ proc ScrollView::_destroy { path } { variable _widget set w [Widget::getoption $path -window] if { [winfo exists $w] } { $w configure \ -xscrollcommand $_widget($path,oldxscroll) \ -yscrollcommand $_widget($path,oldyscroll) } unset _widget($path,oldxscroll) unset _widget($path,oldyscroll) unset _widget($path,bd) unset _widget($path,width) unset _widget($path,height) catch {unset _widget($path,dx)} catch {unset _widget($path,dy)} Widget::destroy $path rename $path {} } # ------------------------------------------------------------------------------ # Command ScrollView::_set_hscroll # ------------------------------------------------------------------------------ proc ScrollView::_set_hscroll { path vmin vmax } { variable _widget set c [$path:cmd coords view] set x0 [expr {$vmin*$_widget($path,width)+$_widget($path,bd)}] set x1 [expr {$vmax*$_widget($path,width)+$_widget($path,bd)-1}] $path:cmd coords view $x0 [lindex $c 1] $x1 [lindex $c 3] if { $_widget($path,oldxscroll) != "" } { uplevel \#0 $_widget($path,oldxscroll) $vmin $vmax } } # ------------------------------------------------------------------------------ # Command ScrollView::_set_vscroll # ------------------------------------------------------------------------------ proc ScrollView::_set_vscroll { path vmin vmax } { variable _widget set c [$path:cmd coords view] set y0 [expr {$vmin*$_widget($path,height)+$_widget($path,bd)}] set y1 [expr {$vmax*$_widget($path,height)+$_widget($path,bd)-1}] $path:cmd coords view [lindex $c 0] $y0 [lindex $c 2] $y1 if { $_widget($path,oldyscroll) != "" } { uplevel \#0 $_widget($path,oldyscroll) $vmin $vmax } } # ------------------------------------------------------------------------------ # Command ScrollView::_update_scroll # ------------------------------------------------------------------------------ proc ScrollView::_update_scroll { path callscroll hminmax vminmax } { variable _widget set c [$path:cmd coords view] set hmin [lindex $hminmax 0] set hmax [lindex $hminmax 1] set vmin [lindex $vminmax 0] set vmax [lindex $vminmax 1] set x0 [expr {$hmin*$_widget($path,width)+$_widget($path,bd)}] set x1 [expr {$hmax*$_widget($path,width)+$_widget($path,bd)-1}] set y0 [expr {$vmin*$_widget($path,height)+$_widget($path,bd)}] set y1 [expr {$vmax*$_widget($path,height)+$_widget($path,bd)-1}] $path:cmd coords view $x0 $y0 $x1 $y1 if { $callscroll } { if { $_widget($path,oldxscroll) != "" } { uplevel \#0 $_widget($path,oldxscroll) $hmin $hmax } if { $_widget($path,oldyscroll) != "" } { uplevel \#0 $_widget($path,oldyscroll) $vmin $vmax } } } # ------------------------------------------------------------------------------ # Command ScrollView::_set_view # ------------------------------------------------------------------------------ proc ScrollView::_set_view { path cmd x y } { variable _widget set w [Widget::getoption $path -window] if { [winfo exists $w] } { if { ![string compare $cmd "start"] } { set c [$path:cmd coords view] set x0 [lindex $c 0] set y0 [lindex $c 1] set _widget($path,dx) [expr {$x-$x0}] set _widget($path,dy) [expr {$y-$y0}] } else { if { ![string compare $cmd "motion"] } { set vh [expr {double($x-$_widget($path,dx)-$_widget($path,bd))/$_widget($path,width)}] set vv [expr {double($y-$_widget($path,dy)-$_widget($path,bd))/$_widget($path,height)}] } else { set vh [expr {double($x-$_widget($path,bd))/$_widget($path,width)}] set vv [expr {double($y-$_widget($path,bd))/$_widget($path,height)}] } $w xview moveto $vh $w yview moveto $vv _update_scroll $path 1 [$w xview] [$w yview] } } } # ------------------------------------------------------------------------------ # Command ScrollView::_resize # ------------------------------------------------------------------------------ proc ScrollView::_resize { path } { variable _widget set _widget($path,bd) [Widget::getoption $path -borderwidth] set _widget($path,width) [expr {[winfo width $path]-2*$_widget($path,bd)}] set _widget($path,height) [expr {[winfo height $path]-2*$_widget($path,bd)}] set w [Widget::getoption $path -window] if { [winfo exists $w] } { _update_scroll $path 0 [$w xview] [$w yview] } } |
Added scrollw.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 | # ------------------------------------------------------------------------------ # scrollw.tcl # This file is part of Unifix BWidget Toolkit # $Id: scrollw.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - ScrolledWindow::create # - ScrolledWindow::getframe # - ScrolledWindow::setwidget # - ScrolledWindow::configure # - ScrolledWindow::cget # - ScrolledWindow::_set_hscroll # - ScrolledWindow::_set_vscroll # - ScrolledWindow::_realize # ------------------------------------------------------------------------------ namespace eval ScrolledWindow { Widget::declare ScrolledWindow { {-background TkResource "" 0 button} {-scrollbar Enum both 1 {none both vertical horizontal}} {-auto Enum both 0 {none both vertical horizontal}} {-relief TkResource flat 0 frame} {-borderwidth TkResource 0 0 frame} {-bg Synonym -background} {-bd Synonym -borderwidth} } Widget::addmap ScrolledWindow "" ._grid.f {-relief {} -borderwidth {}} proc ::ScrolledWindow { path args } { return [eval ScrolledWindow::create $path $args] } proc use {} {} variable _widget } # ------------------------------------------------------------------------------ # Command ScrolledWindow::create # ------------------------------------------------------------------------------ proc ScrolledWindow::create { path args } { variable _widget Widget::init ScrolledWindow $path $args set bg [Widget::cget $path -background] set sw [frame $path -relief flat -bd 0 -bg $bg -highlightthickness 0 -takefocus 0] set grid [frame $path._grid -relief flat -bd 0 -bg $bg -highlightthickness 0 -takefocus 0] set sb [lsearch {none horizontal vertical both} [Widget::cget $path -scrollbar]] set auto [lsearch {none horizontal vertical both} [Widget::cget $path -auto]] set rspan [expr {1 + !($sb & 1)}] set cspan [expr {1 + !($sb & 2)}] set _widget($path,realized) 0 set _widget($path,sb) $sb set _widget($path,auto) $auto set _widget($path,hpack) [expr {$rspan == 1}] set _widget($path,vpack) [expr {$cspan == 1}] # scrollbar horizontale ou les deux if { $sb & 1 } { scrollbar $grid.hscroll \ -highlightthickness 0 -takefocus 0 \ -orient horiz \ -relief sunken \ -bg $bg $grid.hscroll set 0 1 grid $grid.hscroll -column 0 -row 1 -sticky we -columnspan $cspan -pady 1 } # scrollbar verticale ou les deux if { $sb & 2 } { scrollbar $grid.vscroll \ -highlightthickness 0 -takefocus 0 \ -orient vert \ -relief sunken \ -bg $bg $grid.vscroll set 0 1 grid $grid.vscroll -column 1 -row 0 -sticky ns -rowspan $rspan -padx 1 } eval frame $grid.f -bg $bg -highlightthickness 0 [Widget::subcget $path ._grid.f] grid $grid.f -column 0 -row 0 -sticky nwse -columnspan $cspan -rowspan $rspan grid columnconfigure $grid 0 -weight 1 grid rowconfigure $grid 0 -weight 1 pack $grid -fill both -expand yes bind $grid <Configure> "ScrolledWindow::_realize $path" bind $grid <Destroy> "ScrolledWindow::_destroy $path" rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval ScrolledWindow::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command ScrolledWindow::getframe # ------------------------------------------------------------------------------ proc ScrolledWindow::getframe { path } { return $path } # ------------------------------------------------------------------------------ # Command ScrolledWindow::setwidget # ------------------------------------------------------------------------------ proc ScrolledWindow::setwidget { path widget } { variable _widget set grid $path._grid set sb $_widget($path,sb) set option {} pack $widget -in $grid.f -fill both -expand yes # scrollbar horizontale ou les deux if { $sb & 1 } { $grid.hscroll configure -command "$widget xview" lappend option "-xscrollcommand" "ScrolledWindow::_set_hscroll $path" } # scrollbar verticale ou les deux if { $sb & 2 } { $grid.vscroll configure -command "$widget yview" lappend option "-yscrollcommand" "ScrolledWindow::_set_vscroll $path" } if { [llength $option] } { eval $widget configure $option } } # ------------------------------------------------------------------------------ # Command ScrolledWindow::configure # ------------------------------------------------------------------------------ proc ScrolledWindow::configure { path args } { variable _widget set grid $path._grid set res [Widget::configure $path $args] if { [Widget::hasChanged $path -background bg] } { $path configure -background $bg $grid configure -background $bg $grid.f configure -background $bg catch {$grid.hscroll configure -background $bg} catch {$grid.vscroll configure -background $bg} } if { [Widget::hasChanged $path -auto auto] } { set _widget($path,auto) [lsearch {none horizontal vertical both} $auto] if { $_widget($path,sb) & 1 } { eval _set_hscroll $path [$grid.hscroll get] } if { $_widget($path,sb) & 2 } { eval _set_vscroll $path [$grid.vscroll get] } } return $res } # ------------------------------------------------------------------------------ # Command ScrolledWindow::cget # ------------------------------------------------------------------------------ proc ScrolledWindow::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command ScrolledWindow::_destroy # ------------------------------------------------------------------------------ proc ScrolledWindow::_destroy { path } { variable _widget unset _widget($path,sb) unset _widget($path,auto) unset _widget($path,hpack) unset _widget($path,vpack) Widget::destroy $path rename $path {} } # ------------------------------------------------------------------------------ # Command ScrolledWindow::_set_hscroll # ------------------------------------------------------------------------------ proc ScrolledWindow::_set_hscroll { path vmin vmax } { variable _widget if { $_widget($path,realized) } { set grid $path._grid if { $_widget($path,auto) & 1 } { if { $_widget($path,hpack) && $vmin == 0 && $vmax == 1 } { grid configure $grid.f -rowspan 2 if { $_widget($path,sb) & 2 } { grid configure $grid.vscroll -rowspan 2 } set _widget($path,hpack) 0 } elseif { !$_widget($path,hpack) && ($vmin != 0 || $vmax != 1) } { grid configure $grid.f -rowspan 1 if { $_widget($path,sb) & 2 } { grid configure $grid.vscroll -rowspan 1 } set _widget($path,hpack) 1 } } $grid.hscroll set $vmin $vmax } } # ------------------------------------------------------------------------------ # Command ScrolledWindow::_set_vscroll # ------------------------------------------------------------------------------ proc ScrolledWindow::_set_vscroll { path vmin vmax } { variable _widget if { $_widget($path,realized) } { set grid $path._grid if { $_widget($path,auto) & 2 } { if { $_widget($path,vpack) && $vmin == 0 && $vmax == 1 } { grid configure $grid.f -columnspan 2 if { $_widget($path,sb) & 1 } { grid configure $grid.hscroll -columnspan 2 } set _widget($path,vpack) 0 } elseif { !$_widget($path,vpack) && ($vmin != 0 || $vmax != 1) } { grid configure $grid.f -columnspan 1 if { $_widget($path,sb) & 1 } { grid configure $grid.hscroll -columnspan 1 } set _widget($path,vpack) 1 } } $grid.vscroll set $vmin $vmax } } # ------------------------------------------------------------------------------ # Command ScrolledWindow::_realize # ------------------------------------------------------------------------------ proc ScrolledWindow::_realize { path } { variable _widget set grid $path._grid bind $grid <Configure> {} set _widget($path,realized) 1 place $grid -anchor nw -x 0 -y 0 -relwidth 1.0 -relheight 1.0 } |
Added separator.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | # ------------------------------------------------------------------------------ # separator.tcl # This file is part of Unifix BWidget Toolkit # ------------------------------------------------------------------------------ # Index of commands: # - Separator::create # - Separator::configure # - Separator::cget # ------------------------------------------------------------------------------ namespace eval Separator { Widget::declare Separator { {-background TkResource "" 0 frame} {-relief Enum groove 0 {ridge groove}} {-orient Enum horizontal 1 {horizontal vertical}} {-bg Synonym -background} } Widget::addmap Separator "" :cmd {-background {}} proc ::Separator { path args } { return [eval Separator::create $path $args] } proc use {} {} } # ------------------------------------------------------------------------------ # Command Separator::create # ------------------------------------------------------------------------------ proc Separator::create { path args } { Widget::init Separator $path $args if { [Widget::getoption $path -relief] == "groove" } { set relief sunken } else { set relief raised } if { [Widget::getoption $path -orient] == "horizontal" } { frame $path \ -background [Widget::getoption $path -background] \ -borderwidth 1 \ -relief $relief \ -height 2 } else { frame $path \ -background [Widget::getoption $path -background] \ -borderwidth 1 \ -relief $relief \ -width 2 } bind $path <Destroy> {Widget::destroy %W; rename %W {}} rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval Separator::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command Separator::configure # ------------------------------------------------------------------------------ proc Separator::configure { path args } { set res [Widget::configure $path $args] if { [Widget::hasChanged $path -relief relief] } { if { $relief == "groove" } { $path:cmd configure -relief sunken } else { $path:cmd configure -relief raised } } return $res } # ------------------------------------------------------------------------------ # Command Separator::cget # ------------------------------------------------------------------------------ proc Separator::cget { path option } { return [Widget::cget $path $option] } |
Added spinbox.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 | # ------------------------------------------------------------------------------ # spinbox.tcl # This file is part of Unifix BWidget Toolkit # ------------------------------------------------------------------------------ # Index of commands: # - SpinBox::create # - SpinBox::configure # - SpinBox::cget # - SpinBox::setvalue # - SpinBox::_destroy # - SpinBox::_modify_value # - SpinBox::_test_options # ------------------------------------------------------------------------------ namespace eval SpinBox { ArrowButton::use Entry::use LabelFrame::use Widget::bwinclude SpinBox LabelFrame .labf \ rename {-text -label} \ prefix {label -justify -width -anchor -height -font} \ remove {-focus} \ initialize {-relief sunken -borderwidth 2} Widget::bwinclude SpinBox Entry .e \ remove {-relief -bd -borderwidth -fg -bg} \ rename {-foreground -entryfg -background -entrybg} Widget::declare SpinBox { {-range String "" 0} {-values String "" 0} {-modifycmd String "" 0} {-repeatdelay Int 400 0 {=0}} {-repeatinterval Int 100 0 {=0}} } Widget::addmap SpinBox "" :cmd {-background {}} Widget::addmap SpinBox ArrowButton .arrup { -foreground {} -background {} -disabledforeground {} -state {} -repeatdelay {} -repeatinterval {} } Widget::addmap SpinBox ArrowButton .arrdn { -foreground {} -background {} -disabledforeground {} -state {} -repeatdelay {} -repeatinterval {} } Widget::syncoptions SpinBox Entry .e {-text {}} Widget::syncoptions SpinBox LabelFrame .labf {-label -text -underline {}} ::bind BwSpinBox <FocusIn> {focus %W.labf} ::bind BwSpinBox <Destroy> {SpinBox::_destroy %W} proc ::SpinBox { path args } { return [eval SpinBox::create $path $args] } proc use {} {} variable _widget } # ------------------------------------------------------------------------------ # Command SpinBox::create # ------------------------------------------------------------------------------ proc SpinBox::create { path args } { variable _widget Widget::init SpinBox $path $args _test_options $path eval frame $path [Widget::subcget $path :cmd] \ -highlightthickness 0 -bd 0 -relief flat -takefocus 0 set labf [eval LabelFrame::create $path.labf [Widget::subcget $path .labf] \ -borderwidth 2 -relief sunken -focus $path.e] set entry [eval Entry::create $path.e [Widget::subcget $path .e] \ -relief flat -borderwidth 0] bindtags $path [list $path BwSpinBox [winfo toplevel $path] all] set farr [frame $path.farr -relief flat -bd 0 -highlightthickness 0] set height [expr {[winfo reqheight $path.e]/2-2}] set width 11 set arrup [eval ArrowButton::create $path.arrup -dir top \ [Widget::subcget $path .arrup] \ -highlightthickness 0 -borderwidth 1 -takefocus 0 \ -type button \ -width $width -height $height \ -armcommand [list "SpinBox::_modify_value $path next arm"] \ -disarmcommand [list "SpinBox::_modify_value $path next disarm"]] set arrdn [eval ArrowButton::create $path.arrdn -dir bottom \ [Widget::subcget $path .arrdn] \ -highlightthickness 0 -borderwidth 1 -takefocus 0 \ -type button \ -width $width -height $height \ -armcommand [list "SpinBox::_modify_value $path previous arm"] \ -disarmcommand [list "SpinBox::_modify_value $path previous disarm"]] set frame [LabelFrame::getframe $path.labf] # --- update -value --- if { [set val [Entry::cget $path.e -text]] != "" } { set _widget($path,curval) $val } else { if { [set var [Widget::getoption $path -textvariable]] != "" } { GlobalVar::setvar $var $_widget($path,curval) } else { Entry::configure $path.e -text $_widget($path,curval) } } Widget::setoption $path -text $_widget($path,curval) grid $arrup -in $farr -column 0 -row 0 -sticky nsew grid $arrdn -in $farr -column 0 -row 2 -sticky nsew grid rowconfigure $farr 0 -weight 1 grid rowconfigure $farr 2 -weight 1 pack $farr -in $frame -side right -fill y pack $entry -in $frame -side left -fill both -expand yes pack $labf -fill both -expand yes ::bind $entry <Key-Up> "SpinBox::_modify_value $path next activate" ::bind $entry <Key-Down> "SpinBox::_modify_value $path previous activate" ::bind $entry <Key-Prior> "SpinBox::_modify_value $path last activate" ::bind $entry <Key-Next> "SpinBox::_modify_value $path first activate" ::bind $farr <Configure> {grid rowconfigure %W 1 -minsize [expr {%h%%2}]} rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval SpinBox::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command SpinBox::configure # ------------------------------------------------------------------------------ proc SpinBox::configure { path args } { set res [Widget::configure $path $args] if { [Widget::hasChanged $path -values val] || [Widget::hasChanged $path -range val] } { _test_options $path } return $res } # ------------------------------------------------------------------------------ # Command SpinBox::cget # ------------------------------------------------------------------------------ proc SpinBox::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command SpinBox::setvalue # ------------------------------------------------------------------------------ proc SpinBox::setvalue { path index } { variable _widget set values [Widget::getoption $path -values] set value [Entry::cget $path.e -text] if { [llength $values] } { # --- -values SpinBox --- switch -- $index { next { if { [set idx [lsearch $values $value]] != -1 } { incr idx } elseif { [set idx [lsearch $values "$value*"]] == -1 } { set idx [lsearch $values $_widget($path,curval)] } } previous { if { [set idx [lsearch $values $value]] != -1 } { incr idx -1 } elseif { [set idx [lsearch $values "$value*"]] == -1 } { set idx [lsearch $values $_widget($path,curval)] } } first { set idx 0 } last { set idx [expr {[llength $values]-1}] } default { if { [string index $index 0] == "@" } { set idx [string range $index 1 end] if { [catch {string compare [expr {int($idx)}] $idx} res] || $res != 0 } { return -code error "bad index \"$index\"" } } else { return -code error "bad index \"$index\"" } } } if { $idx >= 0 && $idx < [llength $values] } { set newval [lindex $values $idx] } else { return 0 } } else { # --- -range SpinBox --- set range [Widget::getoption $path -range] set vmin [lindex $range 0] set vmax [lindex $range 1] set incr [lindex $range 2] switch -- $index { next { if { [catch {expr {double($value-$vmin)/$incr}} idx] } { set newval $_widget($path,curval) } else { set newval [expr {$vmin+(round($idx)+1)*$incr}] if { $newval < $vmin } { set newval $vmin } elseif { $newval > $vmax } { set newval $vmax } } } previous { if { [catch {expr {double($value-$vmin)/$incr}} idx] } { set newval $_widget($path,curval) } else { set newval [expr {$vmin+(round($idx)-1)*$incr}] if { $newval < $vmin } { set newval $vmin } elseif { $newval > $vmax } { set newval $vmax } } } first { set newval $vmin } last { set newval $vmax } default { if { [string index $index 0] == "@" } { set idx [string range $index 1 end] if { [catch {string compare [expr {int($idx)}] $idx} res] || $res != 0 } { return -code error "bad index \"$index\"" } set newval [expr {$vmin+int($idx)*$incr}] if { $newval < $vmin || $newval > $vmax } { return 0 } } else { return -code error "bad index \"$index\"" } } } } set _widget($path,curval) $newval Widget::setoption $path -text $newval if { [set varname [Entry::cget $path.e -textvariable]] != "" } { GlobalVar::setvar $varname $newval } else { Entry::configure $path.e -text $newval } return 1 } # ------------------------------------------------------------------------------ # Command SpinBox::getvalue # ------------------------------------------------------------------------------ proc SpinBox::getvalue { path } { variable _widget set values [Widget::getoption $path -values] set value [Entry::cget $path.e -text] if { [llength $values] } { # --- -values SpinBox --- return [lsearch $values $value] } else { set range [Widget::getoption $path -range] set vmin [lindex $range 0] set vmax [lindex $range 1] set incr [lindex $range 2] if { ![catch {expr {double($value-$vmin)/$incr}} idx] && $idx == int($idx) } { return [expr {int($idx)}] } return -1 } } # ------------------------------------------------------------------------------ # Command SpinBox::bind # ------------------------------------------------------------------------------ proc SpinBox::bind { path args } { return [eval ::bind $path.e $args] } # ------------------------------------------------------------------------------ # Command SpinBox::_destroy # ------------------------------------------------------------------------------ proc SpinBox::_destroy { path } { variable _widget unset _widget($path,curval) Widget::destroy $path rename $path {} } # ------------------------------------------------------------------------------ # Command SpinBox::_modify_value # ------------------------------------------------------------------------------ proc SpinBox::_modify_value { path direction reason } { if { $reason == "arm" || $reason == "activate" } { SpinBox::setvalue $path $direction } if { ($reason == "disarm" || $reason == "activate") && [set cmd [Widget::getoption $path -modifycmd]] != "" } { uplevel \#0 $cmd } } # ------------------------------------------------------------------------------ # Command SpinBox::_test_options # ------------------------------------------------------------------------------ proc SpinBox::_test_options { path } { variable _widget set values [Widget::getoption $path -values] if { [llength $values] } { set _widget($path,curval) [lindex $values 0] } else { set range [Widget::getoption $path -range] set vmin [lindex $range 0] set vmax [lindex $range 1] set incr [lindex $range 2] if { [catch {expr {int($vmin)}}] } { set vmin 0 } if { [catch {expr {$vmax<$vmin}} res] || $res } { set vmax $vmin } if { [catch {expr {$incr<0}} res] || $res } { set incr 1 } Widget::setoption $path -range [list $vmin $vmax $incr] set _widget($path,curval) $vmin } } |
Added titleframe.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | # ------------------------------------------------------------------------------ # titleframe.tcl # This file is part of Unifix BWidget Toolkit # ------------------------------------------------------------------------------ # Index of commands: # - TitleFrame::create # - TitleFrame::configure # - TitleFrame::cget # - TitleFrame::getframe # - TitleFrame::_place # ------------------------------------------------------------------------------ namespace eval TitleFrame { Widget::declare TitleFrame { {-relief TkResource groove 0 frame} {-borderwidth TkResource 2 0 frame} {-font TkResource "" 0 label} {-foreground TkResource "" 0 label} {-background TkResource "" 0 frame} {-text String "" 0} {-ipad Int 4 0 {=0 ""}} {-side Enum left 0 {left center right}} {-baseline Enum center 0 {top center bottom}} {-fg Synonym -foreground} {-bg Synonym -background} {-bd Synonym -borderwidth} } Widget::addmap TitleFrame "" :cmd {-background {}} Widget::addmap TitleFrame "" .l {-background {} -foreground {} -text {} -font {}} Widget::addmap TitleFrame "" .p {-background {}} Widget::addmap TitleFrame "" .b {-background {} -relief {} -borderwidth {}} Widget::addmap TitleFrame "" .b.p {-background {}} Widget::addmap TitleFrame "" .f {-background {}} proc ::TitleFrame { path args } { return [eval TitleFrame::create $path $args] } proc use {} {} } # ------------------------------------------------------------------------------ # Command TitleFrame::create # ------------------------------------------------------------------------------ proc TitleFrame::create { path args } { Widget::init TitleFrame $path $args set bg [Widget::getoption $path -background] set frame [frame $path -background $bg] set padtop [frame $path.p -relief flat -borderwidth 0 -background $bg] set border [eval frame $path.b [Widget::subcget $path .b] -highlightthickness 0] set label [eval label $path.l [Widget::subcget $path .l] \ -highlightthickness 0 \ -relief flat \ -bd 0 -padx 2 -pady 0] set padbot [frame $border.p -relief flat -bd 0 -bg $bg -highlightthickness 0] set frame [frame $path.f -relief flat -bd 0 -bg $bg -highlightthickness 0] set height [winfo reqheight $label] switch [Widget::getoption $path -side] { left { set relx 0.0; set x 5; set anchor nw } center { set relx 0.5; set x 0; set anchor n } right { set relx 1.0; set x -5; set anchor ne } } set bd [Widget::getoption $path -borderwidth] switch [Widget::getoption $path -baseline] { top { set htop $height; set hbot 1; set y 0 } center { set htop [expr {$height/2}]; set hbot [expr {$height/2+$height%2+1}]; set y 0 } bottom { set htop 1; set hbot $height; set y [expr {$bd+1}] } } $padtop configure -height $htop $padbot configure -height $hbot set pad [Widget::getoption $path -ipad] pack $padbot -side top -fill x pack $frame -in $border -fill both -expand yes -padx $pad -pady $pad pack $padtop -side top -fill x pack $border -fill both -expand yes place $label -relx $relx -x $x -anchor $anchor -y $y bind $label <Configure> "TitleFrame::_place $path" bind $path <Destroy> {Widget::destroy %W; rename %W {}} rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval TitleFrame::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command TitleFrame::configure # ------------------------------------------------------------------------------ proc TitleFrame::configure { path args } { set res [Widget::configure $path $args] if { [Widget::hasChanged $path -ipad pad] } { pack configure $path.f -padx $pad -pady $pad } if { [Widget::hasChanged $path -borderwidth val] | [Widget::hasChanged $path -font val] | [Widget::hasChanged $path -side val] | [Widget::hasChanged $path -baseline val] } { _place $path } return $res } # ------------------------------------------------------------------------------ # Command TitleFrame::cget # ------------------------------------------------------------------------------ proc TitleFrame::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command TitleFrame::getframe # ------------------------------------------------------------------------------ proc TitleFrame::getframe { path } { return $path.f } # ------------------------------------------------------------------------------ # Command TitleFrame::_place # ------------------------------------------------------------------------------ proc TitleFrame::_place { path } { set height [winfo height $path.l] switch [Widget::getoption $path -side] { left { set relx 0.0; set x 10; set anchor nw } center { set relx 0.5; set x 0; set anchor n } right { set relx 1.0; set x -10; set anchor ne } } set bd [Widget::getoption $path -borderwidth] switch [Widget::getoption $path -baseline] { top { set htop $height; set hbot 1; set y 0 } center { set htop [expr {$height/2}]; set hbot [expr {$height/2+$height%2+1}]; set y 0 } bottom { set htop 1; set hbot $height; set y [expr {$bd+1}] } } $path.p configure -height $htop $path.b.p configure -height $hbot place $path.l -relx $relx -x $x -anchor $anchor -y $y } |
Added tree.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 | # ------------------------------------------------------------------------------ # tree.tcl # This file is part of Unifix BWidget Toolkit # $Id: tree.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - Tree::create # - Tree::configure # - Tree::cget # - Tree::insert # - Tree::itemconfigure # - Tree::itemcget # - Tree::bindText # - Tree::bindImage # - Tree::delete # - Tree::move # - Tree::reorder # - Tree::selection # - Tree::exists # - Tree::parent # - Tree::index # - Tree::nodes # - Tree::see # - Tree::opentree # - Tree::closetree # - Tree::edit # - Tree::xview # - Tree::yview # - Tree::_update_edit_size # - Tree::_destroy # - Tree::_see # - Tree::_recexpand # - Tree::_subdelete # - Tree::_update_scrollregion # - Tree::_cross_event # - Tree::_draw_node # - Tree::_draw_subnodes # - Tree::_update_nodes # - Tree::_draw_tree # - Tree::_redraw_tree # - Tree::_redraw_selection # - Tree::_redraw_idle # - Tree::_drag_cmd # - Tree::_drop_cmd # - Tree::_over_cmd # - Tree::_auto_scroll # - Tree::_scroll # ------------------------------------------------------------------------------ namespace eval Tree { namespace eval Node { Widget::declare Tree::Node { {-text String "" 0} {-font TkResource "" 0 listbox} {-image TkResource "" 0 label} {-window String "" 0} {-fill TkResource black 0 {listbox -foreground}} {-data String "" 0} {-open Boolean 0 0} {-drawcross Enum auto 0 {auto allways never}} } } Widget::tkinclude Tree canvas :cmd \ remove {-insertwidth -insertbackground -insertborderwidth -insertofftime \ -insertontime -selectborderwidth -closeenough -confine -scrollregion \ -xscrollincrement -yscrollincrement -width -height} \ initialize {-relief sunken -borderwidth 2 -takefocus 1 \ -highlightthickness 1 -width 200} Widget::declare Tree { {-deltax Int 10 0 {=0 ""}} {-deltay Int 15 0 {=0 ""}} {-padx Int 20 0 {=0 ""}} {-background TkResource "" 0 listbox} {-selectbackground TkResource "" 0 listbox} {-selectforeground TkResource "" 0 listbox} {-width TkResource "" 0 listbox} {-height TkResource "" 0 listbox} {-showlines Boolean 1 0} {-linesfill TkResource black 0 {frame -background}} {-linestipple TkResource "" 0 {label -bitmap}} {-redraw Boolean 1 0} {-opencmd String "" 0} {-closecmd String "" 0} {-dropovermode Flag "wpn" 0 "wpn"} {-bg Synonym -background} } DragSite::include Tree "TREE_NODE" 1 DropSite::include Tree { TREE_NODE {copy {} move {}} } Widget::addmap Tree "" :cmd {-deltay -yscrollincrement} proc ::Tree { path args } { return [eval Tree::create $path $args] } proc use {} {} variable _edit } # ------------------------------------------------------------------------------ # Command Tree::create # ------------------------------------------------------------------------------ proc Tree::create { path args } { variable $path upvar 0 $path data Widget::init Tree $path $args set data(root) {{}} set data(selnodes) {} set data(upd,level) 0 set data(upd,nodes) {} set data(upd,afterid) "" set data(dnd,scroll) "" set data(dnd,afterid) "" set data(dnd,selnodes) {} set data(dnd,node) "" set path [eval canvas $path [Widget::subcget $path :cmd] \ -width [expr {[Widget::getoption $path -width]*8}] \ -height [expr {[Widget::getoption $path -height]*[Widget::getoption $path -deltay]}] \ -xscrollincrement 8] $path bind cross <ButtonPress-1> {Tree::_cross_event %W} bind $path <Configure> "Tree::_update_scrollregion $path" bind $path <Destroy> "Tree::_destroy $path" DragSite::setdrag $path $path Tree::_init_drag_cmd [Widget::getoption $path -dragendcmd] 1 DropSite::setdrop $path $path Tree::_over_cmd Tree::_drop_cmd 1 rename $path ::$path:cmd proc ::$path { cmd args } "return \[eval Tree::\$cmd $path \$args\]" return $path } # ------------------------------------------------------------------------------ # Command Tree::configure # ------------------------------------------------------------------------------ proc Tree::configure { path args } { variable $path upvar 0 $path data set res [Widget::configure $path $args] set ch1 [expr {[Widget::hasChanged $path -deltax val] | [Widget::hasChanged $path -deltay dy] | [Widget::hasChanged $path -padx val] | [Widget::hasChanged $path -showlines val]}] set ch2 [expr {[Widget::hasChanged $path -selectbackground val] | [Widget::hasChanged $path -selectforeground val]}] if { [Widget::hasChanged $path -linesfill fill] | [Widget::hasChanged $path -linestipple stipple] } { $path:cmd itemconfigure line -fill $fill -stipple $stipple $path:cmd itemconfigure cross -foreground $fill } if { $ch1 } { _redraw_idle $path 3 } elseif { $ch2 } { _redraw_idle $path 1 } if { [Widget::hasChanged $path -height h] } { $path:cmd configure -height [expr {$h*$dy}] } if { [Widget::hasChanged $path -width w] } { $path:cmd configure -width [expr {$w*8}] } if { [Widget::hasChanged $path -redraw bool] && $bool } { set upd $data(upd,level) set data(upd,level) 0 _redraw_idle $path $upd } set force [Widget::hasChanged $path -dragendcmd dragend] DragSite::setdrag $path $path Tree::_init_drag_cmd $dragend $force DropSite::setdrop $path $path Tree::_over_cmd Tree::_drop_cmd return $res } # ------------------------------------------------------------------------------ # Command Tree::cget # ------------------------------------------------------------------------------ proc Tree::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command Tree::insert # ------------------------------------------------------------------------------ proc Tree::insert { path index parent node args } { variable $path upvar 0 $path data if { [info exists data($node)] } { return -code error "node \"$node\" already exists" } if { ![info exists data($parent)] } { return -code error "node \"$parent\" does not exist" } Widget::init Tree::Node $path.$node $args if { ![string compare $index "end"] } { lappend data($parent) $node } else { incr index set data($parent) [linsert $data($parent) $index $node] } set data($node) [list $parent] if { ![string compare $parent "root"] } { _redraw_idle $path 3 } elseif { [visible $path $parent] } { # parent is visible... if { [Widget::getoption $path.$parent -open] } { # ...and opened -> redraw whole _redraw_idle $path 3 } else { # ...and closed -> redraw cross lappend data(upd,nodes) $parent 8 _redraw_idle $path 2 } } return $node } # ------------------------------------------------------------------------------ # Command Tree::itemconfigure # ------------------------------------------------------------------------------ proc Tree::itemconfigure { path node args } { variable $path upvar 0 $path data if { ![string compare $node "root"] || ![info exists data($node)] } { return -code error "node \"$node\" does not exist" } set result [Widget::configure $path.$node $args] if { [visible $path $node] } { set lopt {} set flag 0 foreach opt {-window -image -drawcross -font -text -fill} { set flag [expr {$flag << 1}] if { [Widget::hasChanged $path.$node $opt val] } { set flag [expr {$flag | 1}] } } if { [Widget::hasChanged $path.$node -open val] } { _redraw_idle $path 3 } elseif { $data(upd,level) < 3 && $flag } { if { [set idx [lsearch $data(upd,nodes) $node]] == -1 } { lappend data(upd,nodes) $node $flag } else { incr idx set flag [expr {[lindex $data(upd,nodes) $idx] | $flag}] set data(upd,nodes) [lreplace $data(upd,nodes) $idx $idx $flag] } _redraw_idle $path 2 } } return $result } # ------------------------------------------------------------------------------ # Command Tree::itemcget # ------------------------------------------------------------------------------ proc Tree::itemcget { path node option } { variable $path upvar 0 $path data if { ![string compare $node "root"] || ![info exists data($node)] } { return -code error "node \"$node\" does not exist" } return [Widget::cget $path.$node $option] } # ------------------------------------------------------------------------------ # Command Tree::bindText # ------------------------------------------------------------------------------ proc Tree::bindText { path event script } { if { $script != "" } { $path:cmd bind "node" $event \ "$script \[string range \[lindex \[$path:cmd gettags current\] 1\] 2 end\]" } else { $path:cmd bind "node" $event {} } } # ------------------------------------------------------------------------------ # Command Tree::bindImage # ------------------------------------------------------------------------------ proc Tree::bindImage { path event script } { if { $script != "" } { $path:cmd bind "img" $event \ "$script \[string range \[lindex \[$path:cmd gettags current\] 1\] 2 end\]" } else { $path:cmd bind "img" $event {} } } # ------------------------------------------------------------------------------ # Command Tree::delete # ------------------------------------------------------------------------------ proc Tree::delete { path args } { variable $path upvar 0 $path data foreach lnodes $args { foreach node $lnodes { if { [string compare $node "root"] && [info exists data($node)] } { set parent [lindex $data($node) 0] set idx [lsearch $data($parent) $node] set data($parent) [lreplace $data($parent) $idx $idx] _subdelete $path [list $node] } } } set sel $data(selnodes) set data(selnodes) {} eval selection $path set $sel _redraw_idle $path 3 } # ------------------------------------------------------------------------------ # Command Tree::move # ------------------------------------------------------------------------------ proc Tree::move { path parent node index } { variable $path upvar 0 $path data if { ![string compare $node "root"] || ![info exists data($node)] } { return -code error "node \"$node\" does not exist" } if { ![info exists data($parent)] } { return -code error "node \"$parent\" does not exist" } set p $parent while { [string compare $p "root"] } { if { ![string compare $p $node] } { return -code error "node \"$parent\" is a descendant of \"$node\"" } set p [parent $path $p] } set oldp [lindex $data($node) 0] set idx [lsearch $data($oldp) $node] set data($oldp) [lreplace $data($oldp) $idx $idx] set data($node) [concat [list $parent] [lrange $data($node) 1 end]] if { ![string compare $index "end"] } { lappend data($parent) $node } else { incr index set data($parent) [linsert $data($parent) $index $node] } if { (![string compare $oldp "root"] || ([visible $path $oldp] && [Widget::getoption $path.$oldp -open])) || (![string compare $parent "root"] || ([visible $path $parent] && [Widget::getoption $path.$parent -open])) } { _redraw_idle $path 3 } } # ------------------------------------------------------------------------------ # Command Tree::reorder # ------------------------------------------------------------------------------ proc Tree::reorder { path node neworder } { variable $path upvar 0 $path data if { ![info exists data($node)] } { return -code error "node \"$node\" does not exist" } set children [lrange $data($node) 1 end] if { [llength $children] } { set children [BWidget::lreorder $children $neworder] set data($node) [linsert $children 0 [lindex $data($node) 0]] if { [visible $path $node] && [Widget::getoption $path.$node -open] } { _redraw_idle $path 3 } } } # ------------------------------------------------------------------------------ # Command Tree::selection # ------------------------------------------------------------------------------ proc Tree::selection { path cmd args } { variable $path upvar 0 $path data switch -- $cmd { set { set data(selnodes) {} foreach node $args { if { [info exists data($node)] } { if { [lsearch $data(selnodes) $node] == -1 } { lappend data(selnodes) $node } } } } add { foreach node $args { if { [info exists data($node)] } { if { [lsearch $data(selnodes) $node] == -1 } { lappend data(selnodes) $node } } } } remove { foreach node $args { if { [set idx [lsearch $data(selnodes) $node]] != -1 } { set data(selnodes) [lreplace $data(selnodes) $idx $idx] } } } clear { set data(selnodes) {} } get { return $data(selnodes) } default { return } } _redraw_idle $path 1 } # ------------------------------------------------------------------------------ # Command Tree::exists # ------------------------------------------------------------------------------ proc Tree::exists { path node } { variable $path upvar 0 $path data return [info exists data($node)] } # ------------------------------------------------------------------------------ # Command Tree::visible # ------------------------------------------------------------------------------ proc Tree::visible { path node } { set idn [$path:cmd find withtag n:$node] return [llength $idn] } # ------------------------------------------------------------------------------ # Command Tree::parent # ------------------------------------------------------------------------------ proc Tree::parent { path node } { variable $path upvar 0 $path data if { ![info exists data($node)] } { return -code error "node \"$node\" does not exist" } return [lindex $data($node) 0] } # ------------------------------------------------------------------------------ # Command Tree::index # ------------------------------------------------------------------------------ proc Tree::index { path node } { variable $path upvar 0 $path data if { ![string compare $node "root"] || ![info exists data($node)] } { return -code error "node \"$node\" does not exist" } set parent [lindex $data($node) 0] return [expr {[lsearch $data($parent) $node] - 1}] } # ------------------------------------------------------------------------------ # Command Tree::nodes # ------------------------------------------------------------------------------ proc Tree::nodes { path node {first ""} {last ""} } { variable $path upvar 0 $path data if { ![info exists data($node)] } { return -code error "node \"$node\" does not exist" } if { ![string length $first] } { return [lrange $data($node) 1 end] } if { ![string length $last] } { return [lindex [lrange $data($node) 1 end] $first] } else { return [lrange [lrange $data($node) 1 end] $first $last] } } # ------------------------------------------------------------------------------ # Command Tree::see # ------------------------------------------------------------------------------ proc Tree::see { path node } { variable $path upvar 0 $path data if { [Widget::getoption $path -redraw] && $data(upd,afterid) != "" } { after cancel $data(upd,afterid) _redraw_tree $path } set idn [$path:cmd find withtag n:$node] if { $idn != "" } { Tree::_see $path $idn right Tree::_see $path $idn left } } # ------------------------------------------------------------------------------ # Command Tree::opentree # ------------------------------------------------------------------------------ proc Tree::opentree { path node } { variable $path upvar 0 $path data if { ![string compare $node "root"] || ![info exists data($node)] } { return -code error "node \"$node\" does not exist" } _recexpand $path $node 1 [Widget::getoption $path -opencmd] _redraw_idle $path 3 } # ------------------------------------------------------------------------------ # Command Tree::closetree # ------------------------------------------------------------------------------ proc Tree::closetree { path node } { variable $path upvar 0 $path data if { ![string compare $node "root"] || ![info exists data($node)] } { return -code error "node \"$node\" does not exist" } _recexpand $path $node 0 [Widget::getoption $path -closecmd] _redraw_idle $path 3 } # ------------------------------------------------------------------------------ # Command Tree::edit # ------------------------------------------------------------------------------ proc Tree::edit { path node text {verifycmd ""} {clickres 0} {select 1}} { variable _edit variable $path upvar 0 $path data if { [Widget::getoption $path -redraw] && $data(upd,afterid) != "" } { after cancel $data(upd,afterid) _redraw_tree $path } set idn [$path:cmd find withtag n:$node] if { $idn != "" } { Tree::_see $path $idn right Tree::_see $path $idn left set oldfg [$path:cmd itemcget $idn -fill] set sbg [Widget::getoption $path -selectbackground] set coords [$path:cmd coords $idn] set x [lindex $coords 0] set y [lindex $coords 1] set bd [expr {[$path:cmd cget -borderwidth]+[$path:cmd cget -highlightthickness]}] set w [expr {[winfo width $path] - 2*$bd}] set wmax [expr {[$path:cmd canvasx $w]-$x}] set _edit(text) $text set _edit(wait) 0 $path:cmd itemconfigure $idn -fill [Widget::getoption $path -background] $path:cmd itemconfigure s:$node -fill {} -outline {} set frame [frame $path.edit \ -relief flat -borderwidth 0 -highlightthickness 0 \ -background [Widget::getoption $path -background]] set ent [entry $frame.edit \ -width 0 \ -relief solid \ -borderwidth 1 \ -highlightthickness 0 \ -foreground [Widget::getoption $path.$node -fill] \ -background [Widget::getoption $path -background] \ -selectforeground [Widget::getoption $path -selectforeground] \ -selectbackground $sbg \ -font [Widget::getoption $path.$node -font] \ -textvariable Tree::_edit(text)] pack $ent -ipadx 8 -anchor w set idw [$path:cmd create window $x $y -window $frame -anchor w] trace variable Tree::_edit(text) w "Tree::_update_edit_size $path $ent $idw $wmax" tkwait visibility $ent grab $frame BWidget::focus set $ent _update_edit_size $path $ent $idw $wmax update if { $select } { $ent selection range 0 end $ent icursor end $ent xview end } bind $ent <Escape> {set Tree::_edit(wait) 0} bind $ent <Return> {set Tree::_edit(wait) 1} if { $clickres == 0 || $clickres == 1 } { bind $frame <Button> "set Tree::_edit(wait) $clickres" } set ok 0 while { !$ok } { tkwait variable Tree::_edit(wait) if { !$_edit(wait) || $verifycmd == "" || [uplevel \#0 $verifycmd [list $_edit(text)]] } { set ok 1 } } trace vdelete Tree::_edit(text) w "Tree::_update_edit_size $path $ent $idw $wmax" grab release $frame BWidget::focus release $ent destroy $frame $path:cmd delete $idw $path:cmd itemconfigure $idn -fill $oldfg $path:cmd itemconfigure s:$node -fill $sbg -outline $sbg if { $_edit(wait) } { return $_edit(text) } } return "" } # ------------------------------------------------------------------------------ # Command Tree::xview # ------------------------------------------------------------------------------ proc Tree::xview { path args } { return [eval $path:cmd xview $args] } # ------------------------------------------------------------------------------ # Command Tree::yview # ------------------------------------------------------------------------------ proc Tree::yview { path args } { return [eval $path:cmd yview $args] } # ------------------------------------------------------------------------------ # Command Tree::_update_edit_size # ------------------------------------------------------------------------------ proc Tree::_update_edit_size { path entry idw wmax args } { set entw [winfo reqwidth $entry] if { $entw+8 >= $wmax } { $path:cmd itemconfigure $idw -width $wmax } else { $path:cmd itemconfigure $idw -width 0 } } # ------------------------------------------------------------------------------ # Command Tree::_destroy # ------------------------------------------------------------------------------ proc Tree::_destroy { path } { variable $path upvar 0 $path data if { $data(upd,afterid) != "" } { after cancel $data(upd,afterid) } if { $data(dnd,afterid) != "" } { after cancel $data(dnd,afterid) } _subdelete $path [lrange $data(root) 1 end] Widget::destroy $path unset data rename $path {} } # ------------------------------------------------------------------------------ # Command Tree::_see # ------------------------------------------------------------------------------ proc Tree::_see { path idn side } { set bbox [$path:cmd bbox $idn] set scrl [$path:cmd cget -scrollregion] set ymax [lindex $scrl 3] set dy [$path:cmd cget -yscrollincrement] set yv [$path yview] set yv0 [expr {round([lindex $yv 0]*$ymax/$dy)}] set yv1 [expr {round([lindex $yv 1]*$ymax/$dy)}] set y [expr {int([lindex [$path:cmd coords $idn] 1]/$dy)}] if { $y < $yv0 } { $path:cmd yview scroll [expr {$y-$yv0}] units } elseif { $y >= $yv1 } { $path:cmd yview scroll [expr {$y-$yv1+1}] units } set xmax [lindex $scrl 2] set dx [$path:cmd cget -xscrollincrement] set xv [$path xview] if { ![string compare $side "right"] } { set xv1 [expr {round([lindex $xv 1]*$xmax/$dx)}] set x1 [expr {int([lindex $bbox 2]/$dx)}] if { $x1 >= $xv1 } { $path:cmd xview scroll [expr {$x1-$xv1+1}] units } } else { set xv0 [expr {round([lindex $xv 0]*$xmax/$dx)}] set x0 [expr {int([lindex $bbox 0]/$dx)}] if { $x0 < $xv0 } { $path:cmd xview scroll [expr {$x0-$xv0}] units } } } # ------------------------------------------------------------------------------ # Command Tree::_recexpand # ------------------------------------------------------------------------------ proc Tree::_recexpand { path node expand cmd } { variable $path upvar 0 $path data if { [Widget::getoption $path.$node -open] != $expand } { Widget::setoption $path.$node -open $expand if { $cmd != "" } { uplevel \#0 $cmd $node } } foreach subnode [lrange $data($node) 1 end] { _recexpand $path $subnode $expand $cmd } } # ------------------------------------------------------------------------------ # Command Tree::_subdelete # ------------------------------------------------------------------------------ proc Tree::_subdelete { path lnodes } { variable $path upvar 0 $path data while { [llength $lnodes] } { set lsubnodes [list] foreach node $lnodes { foreach subnode [lrange $data($node) 1 end] { lappend lsubnodes $subnode } unset data($node) if { [set win [Widget::getoption $path.$node -window]] != "" } { destroy $win } Widget::destroy $path.$node } set lnodes $lsubnodes } } # ------------------------------------------------------------------------------ # Command Tree::_update_scrollregion # ------------------------------------------------------------------------------ proc Tree::_update_scrollregion { path } { set bd [expr {2*([$path:cmd cget -borderwidth]+[$path:cmd cget -highlightthickness])}] set w [expr {[winfo width $path] - $bd}] set h [expr {[winfo height $path] - $bd}] set xinc [$path:cmd cget -xscrollincrement] set yinc [$path:cmd cget -yscrollincrement] set bbox [$path:cmd bbox all] if { [llength $bbox] } { set xs [lindex $bbox 2] set ys [lindex $bbox 3] if { $w < $xs } { set w [expr {int($xs)}] if { [set r [expr {$w % $xinc}]] } { set w [expr {$w+$xinc-$r}] } } if { $h < $ys } { set h [expr {int($ys)}] if { [set r [expr {$h % $yinc}]] } { set h [expr {$h+$yinc-$r}] } } } $path:cmd configure -scrollregion [list 0 0 $w $h] } # ------------------------------------------------------------------------------ # Command Tree::_cross_event # ------------------------------------------------------------------------------ proc Tree::_cross_event { path } { variable $path upvar 0 $path data set node [string range [lindex [$path:cmd gettags current] 1] 2 end] if { [Widget::getoption $path.$node -open] } { if { [set cmd [Widget::getoption $path -closecmd]] != "" } { uplevel \#0 $cmd $node } Widget::setoption $path.$node -open 0 } else { if { [set cmd [Widget::getoption $path -opencmd]] != "" } { uplevel \#0 $cmd $node } Widget::setoption $path.$node -open 1 } _redraw_idle $path 3 } # ------------------------------------------------------------------------------ # Command Tree::_draw_node # ------------------------------------------------------------------------------ proc Tree::_draw_node { path node x0 y0 deltax deltay padx showlines } { global env variable $path upvar 0 $path data set x1 [expr {$x0+$deltax+5}] set y1 $y0 if { $showlines } { $path:cmd create line $x0 $y0 $x1 $y0 \ -fill [Widget::getoption $path -linesfill] \ -stipple [Widget::getoption $path -linestipple] \ -tags line } $path:cmd create text [expr {$x1+$padx}] $y0 \ -text [Widget::getoption $path.$node -text] \ -fill [Widget::getoption $path.$node -fill] \ -font [Widget::getoption $path.$node -font] \ -anchor w \ -tags "node n:$node" set len [expr {[llength $data($node)] > 1}] set dc [Widget::getoption $path.$node -drawcross] set exp [Widget::getoption $path.$node -open] if { $len && $exp } { set y1 [_draw_subnodes $path [lrange $data($node) 1 end] \ [expr {$x0+$deltax}] $y0 $deltax $deltay $padx $showlines] } if { [string compare $dc "never"] && ($len || ![string compare $dc "allways"]) } { if { $exp } { set bmp [file join $env(BWIDGET_LIBRARY) "images" "minus.xbm"] } else { set bmp [file join $env(BWIDGET_LIBRARY) "images" "plus.xbm"] } $path:cmd create bitmap $x0 $y0 \ -bitmap @$bmp \ -background [$path:cmd cget -background] \ -foreground [Widget::getoption $path -linesfill] \ -tags "cross c:$node" -anchor c } if { [set win [Widget::getoption $path.$node -window]] != "" } { $path:cmd create window $x1 $y0 -window $win -anchor w -tags "win i:$node" } elseif { [set img [Widget::getoption $path.$node -image]] != "" } { $path:cmd create image $x1 $y0 -image $img -anchor w -tags "img i:$node" } return $y1 } # ------------------------------------------------------------------------------ # Command Tree::_draw_subnodes # ------------------------------------------------------------------------------ proc Tree::_draw_subnodes { path nodes x0 y0 deltax deltay padx showlines } { set y1 $y0 foreach node $nodes { set yp $y1 set y1 [_draw_node $path $node $x0 [expr {$y1+$deltay}] $deltax $deltay $padx $showlines] } if { $showlines && [llength $nodes] } { set id [$path:cmd create line $x0 $y0 $x0 [expr {$yp+$deltay}] \ -fill [Widget::getoption $path -linesfill] \ -stipple [Widget::getoption $path -linestipple] \ -tags line] $path:cmd lower $id } return $y1 } # ------------------------------------------------------------------------------ # Command Tree::_update_nodes # ------------------------------------------------------------------------------ proc Tree::_update_nodes { path } { global env variable $path upvar 0 $path data set deltax [Widget::getoption $path -deltax] set padx [Widget::getoption $path -padx] foreach {node flag} $data(upd,nodes) { set idn [$path:cmd find withtag "n:$node"] if { $idn == "" } { continue } set c [$path:cmd coords $idn] set x0 [expr {[lindex $c 0]-$padx}] set y0 [lindex $c 1] if { $flag & 48 } { # -window or -image modified set win [Widget::getoption $path.$node -window] set img [Widget::getoption $path.$node -image] set idi [$path:cmd find withtag i:$node] set type [lindex [$path:cmd gettags $idi] 0] if { [string length $win] } { if { ![string compare $type "win"] } { $path:cmd itemconfigure $idi -window $win } else { $path:cmd delete $idi $path:cmd create window $x0 $y0 -window $win -anchor w -tags "win i:$node" } } elseif { [string length $img] } { if { ![string compare $type "img"] } { $path:cmd itemconfigure $idi -image $img } else { $path:cmd delete $idi $path:cmd create image $x0 $y0 -image $img -anchor w -tags "img i:$node" } } else { $path:cmd delete $idi } } if { $flag & 8 } { # -drawcross modified set len [expr {[llength $data($node)] > 1}] set dc [Widget::getoption $path.$node -drawcross] set exp [Widget::getoption $path.$node -open] set idc [$path:cmd find withtag c:$node] if { [string compare $dc "never"] && ($len || ![string compare $dc "allways"]) } { if { $exp } { set bmp [file join $env(BWIDGET_LIBRARY) "images" "minus.xbm"] } else { set bmp [file join $env(BWIDGET_LIBRARY) "images" "plus.xbm"] } if { $idc == "" } { $path:cmd create bitmap [expr {$x0-$deltax-5}] $y0 \ -bitmap @$bmp \ -background [$path:cmd cget -background] \ -foreground [Widget::getoption $path -linesfill] \ -tags "cross c:$node" -anchor c } else { $path:cmd itemconfigure $idc -bitmap @$bmp } } else { $path:cmd delete $idc } } if { $flag & 7 } { # -font, -text or -fill modified $path:cmd itemconfigure $idn \ -text [Widget::getoption $path.$node -text] \ -fill [Widget::getoption $path.$node -fill] \ -font [Widget::getoption $path.$node -font] } } } # ------------------------------------------------------------------------------ # Command Tree::_draw_tree # ------------------------------------------------------------------------------ proc Tree::_draw_tree { path } { variable $path upvar 0 $path data $path:cmd delete all $path:cmd configure -cursor watch _draw_subnodes $path [lrange $data(root) 1 end] 8 \ [expr {-[Widget::getoption $path -deltay]/2}] \ [Widget::getoption $path -deltax] \ [Widget::getoption $path -deltay] \ [Widget::getoption $path -padx] \ [Widget::getoption $path -showlines] $path:cmd configure -cursor [Widget::getoption $path -cursor] } # ------------------------------------------------------------------------------ # Command Tree::_redraw_tree # ------------------------------------------------------------------------------ proc Tree::_redraw_tree { path } { variable $path upvar 0 $path data if { [Widget::getoption $path -redraw] } { if { $data(upd,level) == 2 } { _update_nodes $path } elseif { $data(upd,level) == 3 } { _draw_tree $path } _redraw_selection $path _update_scrollregion $path set data(upd,nodes) {} set data(upd,level) 0 set data(upd,afterid) "" } } # ------------------------------------------------------------------------------ # Command Tree::_redraw_selection # ------------------------------------------------------------------------------ proc Tree::_redraw_selection { path } { variable $path upvar 0 $path data set selbg [Widget::getoption $path -selectbackground] set selfg [Widget::getoption $path -selectforeground] foreach id [$path:cmd find withtag sel] { set node [string range [lindex [$path:cmd gettags $id] 1] 2 end] $path:cmd itemconfigure "n:$node" -fill [Widget::getoption $path.$node -fill] } $path:cmd delete sel foreach node $data(selnodes) { set bbox [$path:cmd bbox "n:$node"] if { [llength $bbox] } { set id [eval $path:cmd create rectangle $bbox -fill $selbg -outline $selbg -tags [list "sel s:$node"]] $path:cmd itemconfigure "n:$node" -fill $selfg $path:cmd lower $id } } } # ------------------------------------------------------------------------------ # Command Tree::_redraw_idle # ------------------------------------------------------------------------------ proc Tree::_redraw_idle { path level } { variable $path upvar 0 $path data if { [Widget::getoption $path -redraw] && $data(upd,afterid) == "" } { set data(upd,afterid) [after idle Tree::_redraw_tree $path] } if { $level > $data(upd,level) } { set data(upd,level) $level } return "" } # -------------------------------------------------------------------------------------------- # Commandes pour le Drag and Drop # ------------------------------------------------------------------------------ # Command Tree::_init_drag_cmd # ------------------------------------------------------------------------------ proc Tree::_init_drag_cmd { path X Y top } { set ltags [$path:cmd gettags current] set item [lindex $ltags 0] if { ![string compare $item "node"] || ![string compare $item "img"] || ![string compare $item "win"] } { set node [string range [lindex $ltags 1] 2 end] if { [set cmd [Widget::getoption $path -draginitcmd]] != "" } { return [uplevel \#0 $cmd [list $path $node $top]] } if { [set type [Widget::getoption $path -dragtype]] == "" } { set type "TREE_NODE" } if { [set img [Widget::getoption $path.$node -image]] != "" } { pack [label $top.l -image $img -padx 0 -pady 0] } return [list $type {copy move link} $node] } return {} } # ------------------------------------------------------------------------------ # Command Tree::_drop_cmd # ------------------------------------------------------------------------------ proc Tree::_drop_cmd { path source X Y op type dnddata } { variable $path upvar 0 $path data $path:cmd delete drop if { [string length $data(dnd,afterid)] } { after cancel $data(dnd,afterid) set data(dnd,afterid) "" } set data(dnd,scroll) "" if { [llength $data(dnd,node)] } { if { [set cmd [Widget::getoption $path -dropcmd]] != "" } { return [uplevel \#0 $cmd [list $path $source $data(dnd,node) $op $type $dnddata]] } } return 0 } # ------------------------------------------------------------------------------ # Command Tree::_over_cmd # ------------------------------------------------------------------------------ proc Tree::_over_cmd { path source event X Y op type dnddata } { variable $path upvar 0 $path data if { ![string compare $event "leave"] } { # we leave the window tree $path:cmd delete drop if { [string length $data(dnd,afterid)] } { after cancel $data(dnd,afterid) set data(dnd,afterid) "" } set data(dnd,scroll) "" return 0 } if { ![string compare $event "enter"] } { # we enter the window tree - dnd data initialization set mode [Widget::getoption $path -dropovermode] set data(dnd,mode) 0 foreach c {w p n} { set data(dnd,mode) [expr {($data(dnd,mode) << 1) | ([string first $c $mode] != -1)}] } set bbox [$path:cmd bbox all] if { [llength $bbox] } { set data(dnd,xs) [lindex $bbox 2] } else { set data(dnd,xs) 0 } set data(dnd,node) {} } set x [expr {$X-[winfo rootx $path]}] set y [expr {$Y-[winfo rooty $path]}] $path:cmd delete drop set data(dnd,node) {} # test for auto-scroll unless mode is widget only if { $data(dnd,mode) != 4 && [_auto_scroll $path $x $y] != "" } { return 2 } if { $data(dnd,mode) & 4 } { # dropovermode includes widget set target [list widget] set vmode 4 } else { set target [list ""] set vmode 0 } set xc [$path:cmd canvasx $x] set xs $data(dnd,xs) if { $xc <= $xs } { set yc [$path:cmd canvasy $y] set dy [$path:cmd cget -yscrollincrement] set line [expr {int($yc/$dy)}] set xi 0 set yi [expr {$line*$dy}] set ys [expr {$yi+$dy}] foreach id [$path:cmd find overlapping $xi $yi $xs $ys] { set ltags [$path:cmd gettags $id] set item [lindex $ltags 0] if { ![string compare $item "node"] || ![string compare $item "img"] || ![string compare $item "win"] } { # item is the label or image/window of the node set node [string range [lindex $ltags 1] 2 end] set xi [expr {[lindex [$path:cmd coords n:$node] 0]-[Widget::getoption $path -padx]}] if { $data(dnd,mode) & 1 } { # dropovermode includes node lappend target $node set vmode [expr {$vmode | 1}] } else { lappend target "" } if { $data(dnd,mode) & 2 } { # dropovermode includes position if { $yc >= $yi+$dy/2 } { # position is after $node if { [Widget::getoption $path.$node -open] && [llength $data($node)] > 1 } { # $node is open and have subnodes # drop position is 0 in children of $node set parent $node set index 0 set xli [expr {$xi-5}] } else { # $node is not open and doesn't have subnodes # drop position is after $node in children of parent of $node set parent [lindex $data($node) 0] set index [lsearch $data($parent) $node] set xli [expr {$xi-[Widget::getoption $path -deltax]-5}] } set yl $ys } else { # position is before $node # drop position is before $node in children of parent of $node set parent [lindex $data($node) 0] set index [expr {[lsearch $data($parent) $node] - 1}] set xli [expr {$xi-[Widget::getoption $path -deltax]-5}] set yl $yi } lappend target [list $parent $index] set vmode [expr {$vmode | 2}] } else { lappend target {} } if { ($vmode & 3) == 3 } { # result have both node and position # we compute what is the preferred method if { $yc-$yi <= 3 || $ys-$yc <= 3 } { lappend target "position" } else { lappend target "node" } } break } } } if { $vmode && [set cmd [Widget::getoption $path -dropovercmd]] != "" } { # user-defined dropover command set res [uplevel \#0 $cmd [list $path $source $target $op $type $dnddata]] set code [lindex $res 0] set newmode 0 if { $code & 1 } { # update vmode set mode [lindex $res 1] if { ($vmode & 1) && ![string compare $mode "node"] } { set newmode 1 } elseif { ($vmode & 2) && ![string compare $mode "position"] } { set newmode 2 } elseif { ($vmode & 4) && ![string compare $mode "widget"] } { set newmode 4 } } set vmode $newmode } else { if { ($vmode & 3) == 3 } { # result have both item and position # we choose the preferred method if { ![string compare [lindex $target 3] "position"] } { set vmode [expr {$vmode & ~1}] } else { set vmode [expr {$vmode & ~2}] } } if { $data(dnd,mode) == 4 || $data(dnd,mode) == 0 } { # dropovermode is widget or empty - recall is not necessary set code 1 } else { set code 3 } } # draw dnd visual following vmode if { $vmode & 1 } { set data(dnd,node) [list "node" [lindex $target 1]] $path:cmd create rectangle $xi $yi $xs $ys -tags drop } elseif { $vmode & 2 } { set data(dnd,node) [concat "position" [lindex $target 2]] $path:cmd create line $xli [expr {$yl-$dy/2}] $xli $yl $xs $yl -tags drop } elseif { $vmode & 4 } { set data(dnd,node) [list "widget"] } else { set code [expr {$code & 2}] } if { $code & 1 } { DropSite::setcursor based_arrow_down } else { DropSite::setcursor dot } return $code } # ------------------------------------------------------------------------------ # Command Tree::_auto_scroll # ------------------------------------------------------------------------------ proc Tree::_auto_scroll { path x y } { variable $path upvar 0 $path data set xmax [winfo width $path] set ymax [winfo height $path] set scroll {} if { $y <= 6 } { if { [lindex [$path:cmd yview] 0] > 0 } { set scroll [list yview -1] DropSite::setcursor sb_up_arrow } } elseif { $y >= $ymax-6 } { if { [lindex [$path:cmd yview] 1] < 1 } { set scroll [list yview 1] DropSite::setcursor sb_down_arrow } } elseif { $x <= 6 } { if { [lindex [$path:cmd xview] 0] > 0 } { set scroll [list xview -1] DropSite::setcursor sb_left_arrow } } elseif { $x >= $xmax-6 } { if { [lindex [$path:cmd xview] 1] < 1 } { set scroll [list xview 1] DropSite::setcursor sb_right_arrow } } if { [string length $data(dnd,afterid)] && [string compare $data(dnd,scroll) $scroll] } { after cancel $data(dnd,afterid) set data(dnd,afterid) "" } set data(dnd,scroll) $scroll if { [string length $scroll] && ![string length $data(dnd,afterid)] } { set data(dnd,afterid) [after 200 Tree::_scroll $path $scroll] } return $data(dnd,afterid) } # ------------------------------------------------------------------------------ # Command Tree::_scroll # ------------------------------------------------------------------------------ proc Tree::_scroll { path cmd dir } { variable $path upvar 0 $path data if { ($dir == -1 && [lindex [$path:cmd $cmd] 0] > 0) || ($dir == 1 && [lindex [$path:cmd $cmd] 1] < 1) } { $path:cmd $cmd scroll $dir units set data(dnd,afterid) [after 100 Tree::_scroll $path $cmd $dir] } else { set data(dnd,afterid) "" DropSite::setcursor dot } } |
Added utils.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 | # ------------------------------------------------------------------------------ # utils.tcl # This file is part of Unifix BWidget Toolkit # $Id: utils.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - GlobalVar::exists # - GlobalVar::setvarvar # - GlobalVar::getvarvar # - BWidget::assert # - BWidget::clonename # - BWidget::get3dcolor # - BWidget::XLFDfont # - BWidget::place # - BWidget::grab # - BWidget::focus # ------------------------------------------------------------------------------ namespace eval GlobalVar { proc use {} {} } namespace eval BWidget { variable _top variable _gstack {} variable _fstack {} proc use {} {} } # ------------------------------------------------------------------------------ # Command GlobalVar::exists # ------------------------------------------------------------------------------ proc GlobalVar::exists { varName } { return [uplevel \#0 [list info exists $varName]] } # ------------------------------------------------------------------------------ # Command GlobalVar::setvar # ------------------------------------------------------------------------------ proc GlobalVar::setvar { varName value } { return [uplevel \#0 [list set $varName $value]] } # ------------------------------------------------------------------------------ # Command GlobalVar::getvar # ------------------------------------------------------------------------------ proc GlobalVar::getvar { varName } { return [uplevel \#0 [list set $varName]] } # ------------------------------------------------------------------------------ # Command GlobalVar::tracevar # ------------------------------------------------------------------------------ proc GlobalVar::tracevar { cmd varName args } { return [uplevel \#0 trace $cmd [list $varName] $args] } # ------------------------------------------------------------------------------ # Command BWidget::lreorder # ------------------------------------------------------------------------------ proc BWidget::lreorder { list neworder } { set pos 0 set newlist {} foreach e $neworder { if { [lsearch -exact $list $e] != -1 } { lappend newlist $e set tabelt($e) 1 } } set len [llength $newlist] if { !$len } { return $list } if { $len == [llength $list] } { return $newlist } set pos 0 foreach e $list { if { ![info exists tabelt($e)] } { set newlist [linsert $newlist $pos $e] } incr pos } return $newlist } # ------------------------------------------------------------------------------ # Command BWidget::assert # ------------------------------------------------------------------------------ proc BWidget::assert { exp {msg ""}} { set res [uplevel expr $exp] if { !$res} { if { $msg == "" } { return -code error "Assertion failed: {$exp}" } else { return -code error $msg } } } # ------------------------------------------------------------------------------ # Command BWidget::clonename # ------------------------------------------------------------------------------ proc BWidget::clonename { menu } { set path "" set menupath "" set found 0 foreach widget [lrange [split $menu "."] 1 end] { if { $found || [winfo class "$path.$widget"] == "Menu" } { set found 1 append menupath "#" $widget append path "." $menupath } else { append menupath "#" $widget append path "." $widget } } return $path } # ------------------------------------------------------------------------------ # Command BWidget::getname # ------------------------------------------------------------------------------ proc BWidget::getname { name } { if { [string length $name] } { set text [option get . "${name}Name" ""] if { [string length $text] } { return [parsetext $text] } } return {} } # ------------------------------------------------------------------------------ # Command BWidget::parsetext # ------------------------------------------------------------------------------ proc BWidget::parsetext { text } { set result "" set index -1 set start 0 while { [string length $text] } { set idx [string first "&" $text] if { $idx == -1 } { append result $text set text "" } else { set char [string index $text [expr {$idx+1}]] if { $char == "&" } { append result [string range $text 0 $idx] set text [string range $text [expr {$idx+2}] end] set start [expr {$start+$idx+1}] } else { append result [string range $text 0 [expr {$idx-1}]] set text [string range $text [expr {$idx+1}] end] incr start $idx set index $start } } } return [list $result $index] } # ------------------------------------------------------------------------------ # Command BWidget::get3dcolor # ------------------------------------------------------------------------------ proc BWidget::get3dcolor { path bgcolor } { foreach val [winfo rgb $path $bgcolor] { lappend dark [expr 60*$val/100] set tmp1 [expr 14*$val/10] if { $tmp1 > 65535 } { set tmp1 65535 } set tmp2 [expr (65535+$val)/2] lappend light [expr ($tmp1 > $tmp2) ? $tmp1:$tmp2] } return [list [eval format "#%04x%04x%04x" $dark] [eval format "#%04x%04x%04x" $light]] } # ------------------------------------------------------------------------------ # Command BWidget::XLFDfont # ------------------------------------------------------------------------------ proc BWidget::XLFDfont { cmd args } { switch -- $cmd { create { set font "-*-*-*-*-*-*-*-*-*-*-*-*-*-*" } configure { set font [lindex $args 0] set args [lrange $args 1 end] } default { return -code error "XLFDfont: commande incorrecte: $cmd" } } set lfont [split $font "-"] if { [llength $lfont] != 15 } { return -code error "XLFDfont: description XLFD incorrecte: $font" } foreach {option value} $args { switch -- $option { -foundry { set index 1 } -family { set index 2 } -weight { set index 3 } -slant { set index 4 } -size { set index 7 } default { return -code error "XLFDfont: option incorrecte: $option" } } set lfont [lreplace $lfont $index $index $value] } return [join $lfont "-"] } # ------------------------------------------------------------------------------ # Command BWidget::place # ------------------------------------------------------------------------------ proc BWidget::place { path w h args } { variable _top update idletasks set reqw [winfo reqwidth $path] set reqh [winfo reqheight $path] if { $w == 0 } {set w $reqw} if { $h == 0 } {set h $reqh} set arglen [llength $args] if { $arglen > 3 } { return -code error "BWidget::place: bad number of argument" } if { $arglen > 0 } { set where [lindex $args 0] set idx [lsearch {"at" "center" "left" "right" "above" "below"} $where] if { $idx == -1 } { return -code error "BWidget::place: incorrect position \"$where\"" } if { $idx == 0 } { set err [catch { set x [expr {int([lindex $args 1])}] set y [expr {int([lindex $args 2])}] }] if { $err } { return -code error "BWidget::place: incorrect position" } if { $x >= 0 } { set x "+$x" } if { $y >= 0 } { set y "+$y" } } else { if { $arglen == 2 } { set widget [lindex $args 1] if { ![winfo exists $widget] } { return -code error "BWidget::place: \"$widget\" does not exist" } } set sw [winfo screenwidth $path] set sh [winfo screenheight $path] if { $idx == 1 } { if { $arglen == 2 } { # center to widget set x0 [expr [winfo rootx $widget] + ([winfo width $widget] - $w)/2] set y0 [expr [winfo rooty $widget] + ([winfo height $widget] - $h)/2] } else { # center to screen set x0 [expr ([winfo screenwidth $path] - $w)/2 - [winfo vrootx $path]] set y0 [expr ([winfo screenheight $path] - $h)/2 - [winfo vrooty $path]] } set x "+$x0" set y "+$y0" if { $x0+$w > $sw } {set x "-0"; set x0 [expr {$sw-$w}]} if { $x0 < 0 } {set x "+0"} if { $y0+$h > $sh } {set y "-0"; set y0 [expr {$sh-$h}]} if { $y0 < 0 } {set y "+0"} } else { set x0 [winfo rootx $widget] set y0 [winfo rooty $widget] set x1 [expr {$x0 + [winfo width $widget]}] set y1 [expr {$y0 + [winfo height $widget]}] if { $idx == 2 || $idx == 3 } { set y "+$y0" if { $y0+$h > $sh } {set y "-0"; set y0 [expr {$sh-$h}]} if { $y0 < 0 } {set y "+0"} if { $idx == 2 } { # try left, then right if out, then 0 if out if { $x0 >= $w } { set x [expr {$x0-$sw}] } elseif { $x1+$w <= $sw } { set x "+$x1" } else { set x "+0" } } else { # try right, then left if out, then 0 if out if { $x1+$w <= $sw } { set x "+$x1" } elseif { $x0 >= $w } { set x [expr {$x0-$sw}] } else { set x "-0" } } } else { set x "+$x0" if { $x0+$w > $sw } {set x "-0"; set x0 [expr {$sw-$w}]} if { $x0 < 0 } {set x "+0"} if { $idx == 4 } { # try top, then bottom, then 0 if { $h <= $y0 } { set y [expr {$y0-$sh}] } elseif { $y1+$h <= $sh } { set y "+$y1" } else { set y "+0" } } else { # try bottom, then top, then 0 if { $y1+$h <= $sh } { set y "+$y1" } elseif { $h <= $y0 } { set y [expr {$y0-$sh}] } else { set y "-0" } } } } } wm geometry $path "${w}x${h}${x}${y}" } else { wm geometry $path "${w}x${h}" } update idletasks } # ------------------------------------------------------------------------------ # Command BWidget::grab # ------------------------------------------------------------------------------ proc BWidget::grab { option path } { variable _gstack if { $option == "release" } { catch {::grab release $path} while { [llength $_gstack] } { set grinfo [lindex $_gstack end] set _gstack [lreplace $_gstack end end] foreach {oldg mode} $grinfo { if { [string compare $oldg $path] && [winfo exists $oldg] } { if { $mode == "global" } { catch {::grab -global $oldg} } else { catch {::grab $oldg} } return } } } } else { set oldg [::grab current] if { $oldg != "" } { lappend _gstack [list $oldg [::grab status $oldg]] } if { $option == "global" } { ::grab -global $path } else { ::grab $path } } } # ------------------------------------------------------------------------------ # Command BWidget::focus # ------------------------------------------------------------------------------ proc BWidget::focus { option path } { variable _fstack if { $option == "release" } { while { [llength $_fstack] } { set oldf [lindex $_fstack end] set _fstack [lreplace $_fstack end end] if { [string compare $oldf $path] && [winfo exists $oldf] } { catch {::focus -force $oldf} return } } } elseif { $option == "set" } { lappend _fstack [::focus] ::focus -force $path } } |
Added widget.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 | # ------------------------------------------------------------------------------ # widget.tcl # This file is part of Unifix BWidget Toolkit # $Id: widget.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - Widget::tkinclude # - Widget::bwinclude # - Widget::declare # - Widget::addmap # - Widget::init # - Widget::destroy # - Widget::setoption # - Widget::configure # - Widget::cget # - Widget::subcget # - Widget::hasChanged # - Widget::_get_tkwidget_options # - Widget::_test_tkresource # - Widget::_test_bwresource # - Widget::_test_synonym # - Widget::_test_string # - Widget::_test_flag # - Widget::_test_enum # - Widget::_test_int # - Widget::_test_boolean # ------------------------------------------------------------------------------ namespace eval Widget { variable _optiontype variable _class variable _tk_widget array set _optiontype { TkResource Widget::_test_tkresource BwResource Widget::_test_bwresource Enum Widget::_test_enum Int Widget::_test_int Boolean Widget::_test_boolean String Widget::_test_string Flag Widget::_test_flag Synonym Widget::_test_synonym } proc use {} {} } # ------------------------------------------------------------------------------ # Command Widget::tkinclude # Includes tk widget resources to BWidget widget. # class class name of the BWidget # tkwidget tk widget to include # subpath subpath to configure # args additionnal args for included options # ------------------------------------------------------------------------------ proc Widget::tkinclude { class tkwidget subpath args } { foreach {cmd lopt} $args { # cmd can be # include options to include lopt = {opt ...} # remove options to remove lopt = {opt ...} # rename options to rename lopt = {opt newopt ...} # prefix options to prefix lopt = {prefix opt opt ...} # initialize set default value for options lopt = {opt value ...} # readonly set readonly flag for options lopt = {opt flag ...} switch -- $cmd { remove { foreach option $lopt { set remove($option) 1 } } include { foreach option $lopt { set include($option) 1 } } prefix { set prefix [lindex $lopt 0] foreach option [lrange $lopt 1 end] { set rename($option) "-$prefix[string range $option 1 end]" } } rename - readonly - initialize { array set $cmd $lopt } default { return -code error "invalid argument \"$cmd\"" } } } namespace eval $class {} upvar 0 ${class}::opt classopt upvar 0 ${class}::map classmap # create resources informations from tk widget resources foreach optdesc [_get_tkwidget_options $tkwidget] { set option [lindex $optdesc 0] if { (![info exists include] || [info exists include($option)]) && ![info exists remove($option)] } { if { [llength $optdesc] == 3 } { # option is a synonym set syn [lindex $optdesc 1] if { ![info exists remove($syn)] } { # original option is not removed if { [info exists rename($syn)] } { set classopt($option) [list Synonym $rename($syn)] } else { set classopt($option) [list Synonym $syn] } } } else { if { [info exists rename($option)] } { set realopt $option set option $rename($option) } else { set realopt $option } if { [info exists initialize($option)] } { set value $initialize($option) } else { set value [lindex $optdesc 1] } if { [info exists readonly($option)] } { set ro $readonly($option) } else { set ro 0 } set classopt($option) [list TkResource $value $ro [list $tkwidget $realopt]] lappend classmap($option) $subpath "" $realopt } } } } # ------------------------------------------------------------------------------ # Command Widget::bwinclude # Includes BWidget resources to BWidget widget. # class class name of the BWidget # subclass BWidget class to include # subpath subpath to configure # args additionnal args for included options # ------------------------------------------------------------------------------ proc Widget::bwinclude { class subclass subpath args } { foreach {cmd lopt} $args { # cmd can be # include options to include lopt = {opt ...} # remove options to remove lopt = {opt ...} # rename options to rename lopt = {opt newopt ...} # prefix options to prefix lopt = {prefix opt opt ...} # initialize set default value for options lopt = {opt value ...} # readonly set readonly flag for options lopt = {opt flag ...} switch -- $cmd { remove { foreach option $lopt { set remove($option) 1 } } include { foreach option $lopt { set include($option) 1 } } prefix { set prefix [lindex $lopt 0] foreach option [lrange $lopt 1 end] { set rename($option) "-$prefix[string range $option 1 end]" } } rename - readonly - initialize { array set $cmd $lopt } default { return -code error "invalid argument \"$cmd\"" } } } namespace eval $class {} upvar 0 ${class}::opt classopt upvar 0 ${class}::map classmap upvar 0 ${subclass}::opt subclassopt # create resources informations from BWidget resources foreach {option optdesc} [array get subclassopt] { if { (![info exists include] || [info exists include($option)]) && ![info exists remove($option)] } { set type [lindex $optdesc 0] if { ![string compare $type "Synonym"] } { # option is a synonym set syn [lindex $optdesc 1] if { ![info exists remove($syn)] } { if { [info exists rename($syn)] } { set classopt($option) [list Synonym $rename($syn)] } else { set classopt($option) [list Synonym $syn] } } } else { if { [info exists rename($option)] } { set realopt $option set option $rename($option) } else { set realopt $option } if { [info exists initialize($option)] } { set value $initialize($option) } else { set value [lindex $optdesc 1] } if { [info exists readonly($option)] } { set ro $readonly($option) } else { set ro [lindex $optdesc 2] } set classopt($option) [list $type $value $ro [lindex $optdesc 3]] lappend classmap($option) $subpath $subclass $realopt } } } } # ------------------------------------------------------------------------------ # Command Widget::declare # Declares new options to BWidget class. # ------------------------------------------------------------------------------ proc Widget::declare { class optlist } { variable _optiontype namespace eval $class {} upvar 0 ${class}::opt classopt foreach optdesc $optlist { set option [lindex $optdesc 0] set optdesc [lrange $optdesc 1 end] set type [lindex $optdesc 0] if { ![info exists _optiontype($type)] } { # invalid resource type return -code error "invalid option type \"$type\"" } if { ![string compare $type "Synonym"] } { # test existence of synonym option set syn [lindex $optdesc 1] if { ![info exists classopt($syn)] } { return -code error "unknow option \"$syn\" for Synonym \"$option\"" } set classopt($option) [list Synonym $syn] continue } # all other resource may have default value, readonly flag and # optional arg depending on type set value [lindex $optdesc 1] set ro [lindex $optdesc 2] set arg [lindex $optdesc 3] if { ![string compare $type "BwResource"] } { # We don't keep BwResource. We simplify to type of sub BWidget set subclass [lindex $arg 0] set realopt [lindex $arg 1] if { ![string length $realopt] } { set realopt $option } upvar 0 ${subclass}::opt subclassopt if { ![info exists subclassopt($realopt)] } { return -code error "unknow option \"$realopt\"" } set suboptdesc $subclassopt($realopt) if { $value == "" } { # We initialize default value set value [lindex $suboptdesc 1] } set type [lindex $suboptdesc 0] set ro [lindex $suboptdesc 2] set arg [lindex $suboptdesc 3] set classopt($option) [list $type $value $ro $arg] continue } # retreive default value for TkResource if { ![string compare $type "TkResource"] } { set tkwidget [lindex $arg 0] set realopt [lindex $arg 1] if { ![string length $realopt] } { set realopt $option } set tkoptions [_get_tkwidget_options $tkwidget] if { ![string length $value] } { # We initialize default value set value [lindex [lindex $tkoptions [lsearch $tkoptions [list $realopt *]]] end] } set classopt($option) [list TkResource $value $ro [list $tkwidget $realopt]] continue } # for any other resource type, we keep original optdesc set classopt($option) [list $type $value $ro $arg] } } # ------------------------------------------------------------------------------ # Command Widget::addmap # ------------------------------------------------------------------------------ proc Widget::addmap { class subclass subpath options } { upvar 0 ${class}::map classmap foreach {option realopt} $options { if { ![string length $realopt] } { set realopt $option } lappend classmap($option) $subpath $subclass $realopt } } # ------------------------------------------------------------------------------ # Command Widget::syncoptions # ------------------------------------------------------------------------------ proc Widget::syncoptions { class subclass subpath options } { upvar 0 ${class}::sync classync foreach {option realopt} $options { if { ![string length $realopt] } { set realopt $option } set classync($option) [list $subpath $subclass $realopt] } } # ------------------------------------------------------------------------------ # Command Widget::init # ------------------------------------------------------------------------------ proc Widget::init { class path options } { variable _class variable _optiontype upvar 0 ${class}::opt classopt upvar 0 ${class}::map classmap upvar 0 ${class}::$path:opt pathopt upvar 0 ${class}::$path:mod pathmod catch {unset pathopt} catch {unset pathmod} set fpath ".#BWidgetClass#$class" regsub -all "::" $class "" rdbclass if { ![winfo exists $fpath] } { frame $fpath -class $rdbclass } foreach {option optdesc} [array get classopt] { set type [lindex $optdesc 0] if { ![string compare $type "Synonym"] } { set option [lindex $optdesc 1] set optdesc $classopt($option) set type [lindex $optdesc 0] } if { ![string compare $type "TkResource"] } { set alt [lindex [lindex $optdesc 3] 1] } else { set alt "" } set optdb [lindex [_configure_option $option $alt] 0] set def [option get $fpath $optdb $rdbclass] if { [string length $def] } { set pathopt($option) $def } else { set pathopt($option) [lindex $optdesc 1] } set pathmod($option) 0 } set _class($path) $class foreach {option value} $options { if { ![info exists classopt($option)] } { unset pathopt unset pathmod return -code error "unknown option \"$option\"" } set optdesc $classopt($option) set type [lindex $optdesc 0] if { ![string compare $type "Synonym"] } { set option [lindex $optdesc 1] set optdesc $classopt($option) set type [lindex $optdesc 0] } set pathopt($option) [$_optiontype($type) $option $value [lindex $optdesc 3]] } } # ------------------------------------------------------------------------------ # Command Widget::destroy # ------------------------------------------------------------------------------ proc Widget::destroy { path } { variable _class set class $_class($path) upvar 0 ${class}::$path:opt pathopt upvar 0 ${class}::$path:mod pathmod catch {unset pathopt} catch {unset pathmod} } # ------------------------------------------------------------------------------ # Command Widget::configure # ------------------------------------------------------------------------------ proc Widget::configure { path options } { set len [llength $options] if { $len <= 1 } { return [_get_configure $path $options] } elseif { $len % 2 == 1 } { return -code error "incorrect number of arguments" } variable _class variable _optiontype set class $_class($path) upvar 0 ${class}::opt classopt upvar 0 ${class}::map classmap upvar 0 ${class}::$path:opt pathopt upvar 0 ${class}::$path:mod pathmod set window [_get_window $class $path] foreach {option value} $options { if { ![info exists classopt($option)] } { return -code error "unknown option \"$option\"" } set optdesc $classopt($option) set type [lindex $optdesc 0] if { ![string compare $type "Synonym"] } { set option [lindex $optdesc 1] set optdesc $classopt($option) set type [lindex $optdesc 0] } if { ![lindex $optdesc 2] } { set curval $pathopt($option) set newval [$_optiontype($type) $option $value [lindex $optdesc 3]] if { [info exists classmap($option)] } { foreach {subpath subclass realopt} $classmap($option) { if { [string length $subclass] } { ${subclass}::configure $window$subpath $realopt $newval } else { $window$subpath configure $realopt $newval } } } set pathopt($option) $newval set pathmod($option) [expr {[string compare $newval $curval] != 0}] } } return {} } # ------------------------------------------------------------------------------ # Command Widget::cget # ------------------------------------------------------------------------------ proc Widget::cget { path option } { variable _class if { ![info exists _class($path)] } { return -code error "unknown widget $path" } set class $_class($path) upvar 0 ${class}::opt classopt upvar 0 ${class}::sync classync upvar 0 ${class}::$path:opt pathopt if { ![info exists classopt($option)] } { return -code error "unknown option \"$option\"" } set optdesc $classopt($option) set type [lindex $optdesc 0] if { ![string compare $type "Synonym"] } { set option [lindex $optdesc 1] } if { [info exists classync($option)] } { set window [_get_window $class $path] foreach {subpath subclass realopt} $classync($option) { if { [string length $subclass] } { set pathopt($option) [${subclass}::cget $window$subpath $realopt] } else { set pathopt($option) [$window$subpath cget $realopt] } } } return $pathopt($option) } # ------------------------------------------------------------------------------ # Command Widget::subcget # ------------------------------------------------------------------------------ proc Widget::subcget { path subwidget } { variable _class set class $_class($path) upvar 0 ${class}::map classmap upvar 0 ${class}::$path:opt pathopt set result {} foreach {option map} [array get classmap] { foreach {subpath subclass realopt} $map { if { ![string compare $subpath $subwidget] } { lappend result $realopt $pathopt($option) } } } return $result } # ------------------------------------------------------------------------------ # Command Widget::hasChanged # ------------------------------------------------------------------------------ proc Widget::hasChanged { path option pvalue } { upvar $pvalue value variable _class set class $_class($path) upvar 0 ${class}::$path:opt pathopt upvar 0 ${class}::$path:mod pathmod set value $pathopt($option) set result $pathmod($option) set pathmod($option) 0 return $result } # ------------------------------------------------------------------------------ # Command Widget::setoption # ------------------------------------------------------------------------------ proc Widget::setoption { path option value } { variable _class set class $_class($path) upvar 0 ${class}::$path:opt pathopt set pathopt($option) $value } # ------------------------------------------------------------------------------ # Command Widget::getoption # ------------------------------------------------------------------------------ proc Widget::getoption { path option } { variable _class set class $_class($path) upvar 0 ${class}::$path:opt pathopt return $pathopt($option) } # ------------------------------------------------------------------------------ # Command Widget::_get_window # returns the window corresponding to widget path # ------------------------------------------------------------------------------ proc Widget::_get_window { class path } { set idx [string last "#" $path] if { $idx != -1 && ![string compare [string range $path [expr {$idx+1}] end] $class] } { return [string range $path 0 [expr {$idx-1}]] } else { return $path } } # ------------------------------------------------------------------------------ # Command Widget::_get_configure # returns the configuration list of options # (as tk widget do - [$w configure ?option?]) # ------------------------------------------------------------------------------ proc Widget::_get_configure { path options } { variable _class set class $_class($path) upvar 0 ${class}::opt classopt upvar 0 ${class}::map classmap upvar 0 ${class}::$path:opt pathopt upvar 0 ${class}::$path:mod pathmod set len [llength $options] if { !$len } { set result {} foreach option [lsort [array names classopt]] { set optdesc $classopt($option) set type [lindex $optdesc 0] if { ![string compare $type "Synonym"] } { set syn $option set option [lindex $optdesc 1] set optdesc $classopt($option) set type [lindex $optdesc 0] } else { set syn "" } if { ![string compare $type "TkResource"] } { set alt [lindex [lindex $optdesc 3] 1] } else { set alt "" } set res [_configure_option $option $alt] if { $syn == "" } { lappend result [concat $option $res [list [lindex $optdesc 1]] [list [cget $path $option]]] } else { lappend result [list $syn [lindex $res 0]] } } return $result } elseif { $len == 1 } { set option [lindex $options 0] if { ![info exists classopt($option)] } { return -code error "unknown option \"$option\"" } set optdesc $classopt($option) set type [lindex $optdesc 0] if { ![string compare $type "Synonym"] } { set option [lindex $optdesc 1] set optdesc $classopt($option) set type [lindex $optdesc 0] } if { ![string compare $type "TkResource"] } { set alt [lindex [lindex $optdesc 3] 1] } else { set alt "" } set res [_configure_option $option $alt] return [concat $option $res [list [lindex $optdesc 1]] [list [cget $path $option]]] } } # ------------------------------------------------------------------------------ # Command Widget::_configure_option # ------------------------------------------------------------------------------ proc Widget::_configure_option { option altopt } { variable _optiondb variable _optionclass if { [info exists _optiondb($option)] } { set optdb $_optiondb($option) } else { set optdb [string range $option 1 end] } if { [info exists _optionclass($option)] } { set optclass $_optionclass($option) } elseif { [string length $altopt] } { if { [info exists _optionclass($altopt)] } { set optclass $_optionclass($altopt) } else { set optclass [string range $altopt 1 end] } } else { set optclass [string range $option 1 end] } return [list $optdb $optclass] } # ------------------------------------------------------------------------------ # Command Widget::_get_tkwidget_options # ------------------------------------------------------------------------------ proc Widget::_get_tkwidget_options { tkwidget } { variable _tk_widget variable _optiondb variable _optionclass if { ![info exists _tk_widget($tkwidget)] } { set widget [$tkwidget ".#BWidget#$tkwidget"] set config [$widget configure] foreach optlist $config { set opt [lindex $optlist 0] if { [llength $optlist] == 2 } { set refsyn [lindex $optlist 1] # search for class set idx [lsearch $config [list * $refsyn *]] if { $idx == -1 } { if { [string index $refsyn 0] == "-" } { # search for option (tk8.1b1 bug) set idx [lsearch $config [list $refsyn * *]] } else { # last resort set idx [lsearch $config [list -[string tolower $refsyn] * *]] } if { $idx == -1 } { # fed up with "can't read classopt()" return -code error "can't find option of synonym $opt" } } set syn [lindex [lindex $config $idx] 0] set def [lindex [lindex $config $idx] 3] lappend _tk_widget($tkwidget) [list $opt $syn $def] } else { set def [lindex $optlist 3] lappend _tk_widget($tkwidget) [list $opt $def] set _optiondb($opt) [lindex $optlist 1] set _optionclass($opt) [lindex $optlist 2] } } } return $_tk_widget($tkwidget) } # ------------------------------------------------------------------------------ # Command Widget::_test_tkresource # ------------------------------------------------------------------------------ proc Widget::_test_tkresource { option value arg } { set tkwidget [lindex $arg 0] set realopt [lindex $arg 1] set path ".#BWidget#$tkwidget" set old [$path cget $realopt] $path configure $realopt $value set res [$path cget $realopt] $path configure $realopt $old return $res } # ------------------------------------------------------------------------------ # Command Widget::_test_bwresource # ------------------------------------------------------------------------------ proc Widget::_test_bwresource { option value arg } { return -code error "bad option type BwResource in widget" } # ------------------------------------------------------------------------------ # Command Widget::_test_synonym # ------------------------------------------------------------------------------ proc Widget::_test_synonym { option value arg } { return -code error "bad option type Synonym in widget" } # ------------------------------------------------------------------------------ # Command Widget::_test_string # ------------------------------------------------------------------------------ proc Widget::_test_string { option value arg } { return $value } # ------------------------------------------------------------------------------ # Command Widget::_test_flag # ------------------------------------------------------------------------------ proc Widget::_test_flag { option value arg } { set len [string length $value] set res "" for {set i 0} {$i < $len} {incr i} { set c [string index $value $i] if { [string first $c $arg] == -1 } { return -code error "bad [string range $option 1 end] value \"$value\": characters must be in \"$arg\"" } if { [string first $c $res] == -1 } { append res $c } } return $res } # ------------------------------------------------------------------------------ # Command Widget::_test_enum # ------------------------------------------------------------------------------ proc Widget::_test_enum { option value arg } { if { [lsearch $arg $value] == -1 } { set last [lindex $arg end] set sub [lreplace $arg end end] if { [llength $sub] } { set str "[join $sub ", "] or $last" } else { set str $last } return -code error "bad [string range $option 1 end] value \"$value\": must be $str" } return $value } # ------------------------------------------------------------------------------ # Command Widget::_test_int # ------------------------------------------------------------------------------ proc Widget::_test_int { option value arg } { set binf [lindex $arg 0] set bsup [lindex $arg 1] if { $binf != "" } {set binf ">$binf"} if { $bsup != "" } {set bsup "<$bsup"} if { [catch {expr $value}] || $value != int($value) || !($binf == "" || [expr $value$binf]) || !($bsup == "" || [expr $value$bsup]) } { return -code error "bad [string range $option 1 end] value \"$value\": must be integer $binf $bsup" } return $value } # ------------------------------------------------------------------------------ # Command Widget::_test_boolean # ------------------------------------------------------------------------------ proc Widget::_test_boolean { option value arg } { if { $value == 1 || ![string compare $value "true"] || ![string compare $value "yes"] } { set value 1 } elseif { $value == 0 || ![string compare $value "false"] || ![string compare $value "no"] } { set value 0 } else { return -code error "bad [string range $option 1 end] value \"$value\": must be boolean" } return $value } # ------------------------------------------------------------------------------ # Command Widget::focusNext # Same as tk_focusNext, but call Widget::focusOK # ------------------------------------------------------------------------------ proc Widget::focusNext { w } { set cur $w while 1 { # Descend to just before the first child of the current widget. set parent $cur set children [winfo children $cur] set i -1 # Look for the next sibling that isn't a top-level. while 1 { incr i if {$i < [llength $children]} { set cur [lindex $children $i] if {[winfo toplevel $cur] == $cur} { continue } else { break } } # No more siblings, so go to the current widget's parent. # If it's a top-level, break out of the loop, otherwise # look for its next sibling. set cur $parent if {[winfo toplevel $cur] == $cur} { break } set parent [winfo parent $parent] set children [winfo children $parent] set i [lsearch -exact $children $cur] } if {($cur == $w) || [focusOK $cur]} { return $cur } } } # ------------------------------------------------------------------------------ # Command Widget::focusPrev # Same as tk_focusPrev, but call Widget::focusOK # ------------------------------------------------------------------------------ proc Widget::focusPrev { w } { set cur $w while 1 { # Collect information about the current window's position # among its siblings. Also, if the window is a top-level, # then reposition to just after the last child of the window. if {[winfo toplevel $cur] == $cur} { set parent $cur set children [winfo children $cur] set i [llength $children] } else { set parent [winfo parent $cur] set children [winfo children $parent] set i [lsearch -exact $children $cur] } # Go to the previous sibling, then descend to its last descendant # (highest in stacking order. While doing this, ignore top-levels # and their descendants. When we run out of descendants, go up # one level to the parent. while {$i > 0} { incr i -1 set cur [lindex $children $i] if {[winfo toplevel $cur] == $cur} { continue } set parent $cur set children [winfo children $parent] set i [llength $children] } set cur $parent if {($cur == $w) || [focusOK $cur]} { return $cur } } } # ------------------------------------------------------------------------------ # Command Widget::focusOK # Same as tk_focusOK, but handles -editable option and whole tags list. # ------------------------------------------------------------------------------ proc Widget::focusOK { w } { set code [catch {$w cget -takefocus} value] if { $code == 1 } { return 0 } if {($code == 0) && ($value != "")} { if {$value == 0} { return 0 } elseif {$value == 1} { return [winfo viewable $w] } else { set value [uplevel \#0 $value $w] if {$value != ""} { return $value } } } if {![winfo viewable $w]} { return 0 } set code [catch {$w cget -state} value] if {($code == 0) && ($value == "disabled")} { return 0 } set code [catch {$w cget -editable} value] if {($code == 0) && !$value} { return 0 } set top [winfo toplevel $w] foreach tags [bindtags $w] { if { [string compare $tags $top] && [string compare $tags "all"] && [regexp Key [bind $tags]] } { return 1 } } return 0 } |
Added xpm2image.tcl.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | # ------------------------------------------------------------------------------ # xpm2image.tcl # Slightly modified xpm-to-image command # $Id: xpm2image.tcl,v 1.1.1.1 1999/08/03 20:20:23 ericm Exp $ # ------------------------------------------------------------------------------ # # Copyright 1996 by Roger E. Critchlow Jr., San Francisco, California # All rights reserved, fair use permitted, caveat emptor. # [email protected] # # ------------------------------------------------------------------------------ proc xpm-to-image { file } { set f [open $file] set string [read $f] close $f # # parse the strings in the xpm data # set xpm {} foreach line [split $string "\n"] { if {[regexp {^"([^\"]*)"} $line all meat]} { if {[string first XPMEXT $meat] == 0} { break } lappend xpm $meat } } # # extract the sizes in the xpm data # set sizes [lindex $xpm 0] set nsizes [llength $sizes] if { $nsizes == 4 || $nsizes == 6 || $nsizes == 7 } { set data(width) [lindex $sizes 0] set data(height) [lindex $sizes 1] set data(ncolors) [lindex $sizes 2] set data(chars_per_pixel) [lindex $sizes 3] set data(x_hotspot) 0 set data(y_hotspot) 0 if {[llength $sizes] >= 6} { set data(x_hotspot) [lindex $sizes 4] set data(y_hotspot) [lindex $sizes 5] } } else { error "size line {$sizes} in $file did not compute" } # # extract the color definitions in the xpm data # foreach line [lrange $xpm 1 $data(ncolors)] { set colors [split $line \t] set cname [lindex $colors 0] lappend data(cnames) $cname if { [string length $cname] != $data(chars_per_pixel) } { error "color definition {$line} in file $file has a bad size color name" } foreach record [lrange $colors 1 end] { set key [lindex $record 0] set color [string tolower [join [lrange $record 1 end] { }]] set data(color-$key-$cname) $color if { ![string compare $color "none"] } { set data(transparent) $cname } } foreach key {c g g4 m} { if {[info exists data(color-$key-$cname)]} { set color $data(color-$key-$cname) set data(color-$cname) $color set data(cname-$color) $cname lappend data(colors) $color break } } if { ![info exists data(color-$cname)] } { error "color definition {$line} in $file failed to define a color" } } # # extract the image data in the xpm data # set image [image create photo -width $data(width) -height $data(height)] set y 0 foreach line [lrange $xpm [expr 1+$data(ncolors)] [expr 1+$data(ncolors)+$data(height)]] { set x 0 set pixels {} while { [string length $line] > 0 } { set pixel [string range $line 0 [expr {$data(chars_per_pixel)-1}]] set c $data(color-$pixel) if { ![string compare $c none] } { if { [string length $pixels] } { $image put [list $pixels] -to [expr {$x-[llength $pixels]}] $y set pixels {} } } else { lappend pixels $c } set line [string range $line $data(chars_per_pixel) end] incr x } if { [llength $pixels] } { $image put [list $pixels] -to [expr {$x-[llength $pixels]}] $y } incr y } # # return the image # return $image } |