Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Comment: | Add more directories |
---|---|
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
9d3bffdaa3ce4d9aed823d684513a3ca |
User & Date: | kevin 2016-04-02 02:17:47 |
2016-04-02
| ||
02:28 | Update help, image files check-in: adac992a96 user: kevin tags: trunk | |
02:17 | Add more directories check-in: 9d3bffdaa3 user: kevin tags: trunk | |
2016-04-01
| ||
02:39 | Initial commit check-in: 188064c329 user: kevin tags: trunk | |
Added changelog.txt.
> > | 1 2 | * Improvements to Sparkle update engine. * Minor bug fixes. |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | <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="#badOptionString"><B>badOptionString</B></A> <I>type</I> <I>value</I> <I>list</I> </DD> <DD>BWidget::<A HREF="#bindMouseWheel"><B>bindMouseWheel</B></A> <I>widget</I> </DD> <DD>BWidget::<A HREF="#classes"><B>classes</B></A> <I>class</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="#inuse"><B>inuse</B></A> <I>class</I> </DD> <DD>BWidget::<A HREF="#library"><B>library</B></A> <I>class</I> ?<i>class ...</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> <DD>BWidget::<A HREF="#write"><B>write</B></A> <I>filename</I> ?<i>mode</i>? </DD> <DD>BWidget::<A HREF="#wrongNumArgsString"><B>wrongNumArgsString</B></A> <I>string</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="badOptionString">BWidget::<B>badOptionString</B></A> <I>type</I> <I>value</I> <I>list</I> </DT><DD> Return a proper error string for a <i>value</i> of <i>type</i> that doesn't match <i>list</i>. </DD></DL> <DL><DT><A NAME="bindMouseWheel">BWidget::<B>bindMouseWheel</B></A> <I>widget</I> </DT><DD> Bind the given <i>widget</i> with the standard mouse wheel bindings. </DD></DL> <DL><DT><A NAME="classes">BWidget::<B>classes</B></A> <I>class</I> </DT><DD> Returns a list of classes needed by the given <i>class</i>. </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="inuse">BWidget::<B>inuse</B></A> <I>class</I> </DT><DD> Returns true or false if the given <i>class</i> is being used by the current running program. </DD></DL> <DL><DT><A NAME="library">BWidget::<B>library</B></A> <I>class</I> ?<i>class ...</i>? </DT><DD> Returns a string of code that contains all the libraries needed to use the widgets given by <i>class</i>. Each class's code and the code of its dependent classes is appended to the string and returned. This is mostly useful for saving BWidgets to another project. </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> Used to position and resise the widget specified by <I>path</I>. <I>w</I> and <I>h</I> are used to specify the requested width and height of the <I>path</I> widget for use by <B>wm geometry</B>. The placement of the widget relative to other widgets or the screen is controlled by additional arguments: <DL> <DT><B>at</B> <I>x</I> <I>y</I></DT> <DD>Place the widget specified by the <I>path</I> argument at screen position x,y. See <B>wm geometry</B> for information about window placement values.</DD> <DT><B>center</B> <I>?widget?</I></DT> <DD>Place the <I>path</I> widget centered against <I>widget</I> or against the root widget if <I>widget</I> is not given.</DD> <DT><B>left</B> <I>?widget?</I></DT> <DT><B>right</B> <I>?widget?</I></DT> <DD>Place the <I>path</I> widget either left or right of the reference widget (or the root widget if <I>widget</I> is not specified). If the reference widget's position is such that the newly placed window might be obscured then the opposite side will be tried.</DD> <DT><B>above</B> <I>?widget?</I></DT> <DT><B>below</B> <I>?widget?</I></DT> <DD>As for left/right above, this option causes the widget to be placed either above or below the reference widget with the opposite placement being attempted if the newly placed widget will not be visible. </DL> </DL> <DL><DT><A NAME="write">BWidget::<B>write</B></A> <I>filename</I> ?<i>mode</i>? </DT><DD> Writes the currently used set of BWidget class code to the given <i>filename</i>. All the code necessary to run the BWidgets currently in use is written to the file. This is mostly useful for saving BWidget code to another project as a single file instead of the entire BWidget package. </DD></DL> <DL> <DT><A NAME="wrongNumArgsString">BWidget::<B>wrongNumArgsString</B></A> <I>string</I> </DT> <DD> Returns a standard error string for the wrong number of arguments. <i>string</i> is appended to the standard string. </DD> </DL> </BODY></HTML> |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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></TD> <TD> <A HREF="options.htm#M-activeforeground">-activeforeground</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-anchor">-anchor</A></TD> <TD> <A HREF="options.htm#M-background">-background or -bg</A></TD> </TD> <TR> <TD> <A HREF="options.htm#M-bitmap">-bitmap</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></TD> <TD> <A HREF="options.htm#M-disabledforeground">-disabledforeground</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-font">-font</A></TD> <TD> <A HREF="options.htm#M-foreground">-foreground or -fg</A></TD> </TD> <TR> <TD> <A HREF="options.htm#M-highlightbackground">-highlightbackground</A></TD> <TD> <A HREF="options.htm#M-highlightcolor">-highlightcolor</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-highlightthickness">-highlightthickness</A></TD> <TD> <A HREF="options.htm#M-image">-image</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-justify">-justify</A></TD> <TD> <A HREF="options.htm#M-padx">-padx</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-pady">-pady</A></TD> <TD> <A HREF="options.htm#M-repeatdelay">-repeatdelay</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-repeatinterval">-repeatinterval</A></TD> <TD> <A HREF="options.htm#M-takefocus">-takefocus</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-text">-text</A></TD> <TD> <A HREF="options.htm#M-textvariable">-textvariable</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-wraplength">-wraplength</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="#-armcommand">-armcommand</A></TD> <TD> <A HREF="#-command">-command</A></TD> </TR> <TR> <TD> <A HREF="#-default">-default</A></TD> <TD> <A HREF="#-disarmcommand">-disarmcommand</A></TD> </TR> <TR> <TD> <A HREF="#-height">-height</A></TD> <TD> <A HREF="#-helptext">-helptext</A></TD> </TR> <TR> <TD> <A HREF="#-helptype">-helptype</A></TD> <TD> <A HREF="#-helpvar">-helpvar</A></TD> </TR> <TR> <TD> <A HREF="#-name">-name</A></TD> <TD> <A HREF="#-relief">-relief</A></TD> </TR> <TR> <TD> <A HREF="#-state">-state</A></TD> <TD> <A HREF="#-underline">-underline</A></TD> </TR> <TR> <TD> <A HREF="#-width">-width</A></TD> </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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | <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> <TD> <A HREF="#-state">-state</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="#delete"><B>delete</B></A> <I>index</I> </DD> <DD><I>pathName</I> <A HREF="#index"><B>index</B></A> <I>index</I> </DD> <DD><I>pathName</I> <A HREF="#insert"><B>insert</B></A> <i>index</i> ?<I>option value...</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. <DT> <i>name</i> <DD> Indicates the button whose <b>-name</b> option is <i>name</i>. <DT> <i>text</i> <DD> Indicates the button whose <b>-text</b> option is <i>text</i>. </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> <DL><DT><A NAME="-state"><B>-state</B></A></DT> <DD> Specifies a state for all the buttons in the button box. Can be any state supported by buttons. </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="delete"><I>pathName</I> <B>delete</B></A> <I>index</I> </DT><DD> Delete the button at <i>index</i> from the button box. </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="insert"><I>pathName</I> <B>insert</B></A> <I>index</I> ?<I>option value...</I>? </DT><DD> Insert a new button into the button box before the given index. </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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | <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="#wso">WIDGET-SPECIFIC OPTIONS</A></I></DT> <DD><TABLE CELLSPACING=0 CELLSPACING=0 BORDER=0> <TR> <TD> <A HREF="#-autocomplete">-autocomplete</A></TD> <TD> <A HREF="#-bwlistbox">-bwlistbox</A></TD> </TR> <TR> <TD> <A HREF="#-expand">-expand</A></TD> <TD> <A HREF="#-height">-height</A></TD> </TR> <TR> <TD> <A HREF="#-hottrack">-hottrack</A></TD> <TD> <A HREF="#-images">-images</A></TD> </TR> <TR> <TD> <A HREF="#-listboxwidth">-listboxwidth</A></TD> <TD> <A HREF="#-modifycmd">-modifycmd</A></TD> <TD></TD> </TR> <TR> <TD> <A HREF="#-postcommand">-postcommand</A></TD> <TD> <A HREF="#-values">-values</A></TD> </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="#get"><B>get</B></A></DD> <DD><I>pathName</I> <A HREF="#getlistbox"><B>getlistbox</B></A></DD> <DD><I>pathName</I> <A HREF="#getvalue"><B>getvalue</B></A></DD> <DD><I>pathName</I> <A HREF="#icursor"><B>icursor</B></A> <I>index</I> </DD> <DD><I>pathName</I> <A HREF="#post"><B>post</B></A></DD> <DD><I>pathName</I> <A HREF="#setvalue"><B>setvalue</B></A> <I>index</I> </DD> <DD><I>pathName</I> <A HREF="#unpost"><B>unpost</B></A></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="-autocomplete"><B>-autocomplete</B></A></DT> <DD> Specifies whether or not the combobox should attempt to auto-complete the value in the entry field as the user types. If true, the combobox will fill in a value that it finds in its value list as the user types into the entry. </DD> </DL> <DL> <DT><A NAME="-bwlistbox"><B>-bwlistbox</B></A></DT> <DD> Specifies that the combobox should use a BWidget listbox in its drop down instead of the standard Tk option. This option is enabled by default if the <b>-images</b> option is not empty. </DD> </DL> <DL><DT><A NAME="-expand"><B>-expand</B></A></DT> <DD> Specifies the value expansion behavior for the window. It must be <B>none</B> (default) or <B>tab</B>. If <B>tab</B> is specified, then a Tab binding is added to attempt to expand the current value based on the other values in <B>-values</B>. </DD> </DL> <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> <DT><A NAME="-hottrack"><B>-hottrack</B></A></DT> <DD> The selection in the drop down listbox will follow the mouse cursor as it moves. </DD> </DL> <DL> <DT><A NAME="-images"><B>-images</B></A></DT> <DD> A list of images that correspond to the <b>-values</b> option. Each image will be drawn next to its value in the drop down. This option enables the <b>-bwlistbox</b> by default as it is needed to display images. </DD> </DL> <DL> <DT><A NAME="-listboxwidth"><B>-listboxwidth</B></A></DT> <DD> Specifies the width of the listbox in the drop down. Defaults to the same size as the combobox. </DD> </DL> </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="get"><I>pathName</I> <B>get</B></A> </DT><DD> Returns the current contents of the entry. </DD></DL> <DL><DT><A NAME="getlistbox"><I>pathName</I> <B>getlistbox</B></A> </DT><DD> Returns the path to the listbox in the drop down. </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="icursor"><I>pathName</I> <B>icursor</B></A> <I>index</I> </DT><DD> Arrange for the insertion cursor to be displayed just before the character given by <i>index</i>. Returns an empty string. </DD></DL> <DL><DT><A NAME="post"><I>pathName</I> <B>post</B></A> </DT><DD> Post the drop down. </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> <DL><DT><A NAME="unpost"><I>pathName</I> <B>unpost</B></A> </DT><DD> Unpost the drop down. </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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 | <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="#-place">-place</A></TR> </TR> <TR> <TD> <A HREF="#-separator">-separator</A></TR> <TD> <A HREF="#-side">-side</A></TR> </TR> <TR> <TD> <A HREF="#-title">-title</A></TR> <TD> <A HREF="#-transient">-transient</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 placed relative to its parent. If empty, it is placed relative to the root window. Also see <B>place</B> option. </DD> </DL> <DL><DT><A NAME="-place"><B>-place</B></A></DT> <DD> Specifies where to draw the Dialog toplevel relative to the dialog's parent. Must be one of <B>none</B>, <B>center</B>, <B>left</B>, <B>right</B>, <B>above</B>, <B>below</B>. Default value of <B>place</B> is <I>center</I>. </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> <DL><DT><A NAME="-transient"><B>-transient (read-only)</B></A></DT> <DD> Specifies if the Dialog Toplevel should be a transient window or not. Default value of <B>transient</B> is <I>true</I>. </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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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</B> 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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 | <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" ALIGN="CENTER">Event</TD> <TD WIDTH="10%" VALIGN="TOP" ALIGN="CENTER">Old status</TD> <TD WIDTH="48%" VALIGN="TOP" ALIGN="CENTER">Action</TD> <TD WIDTH="24%" VALIGN="TOP" ALIGN="CENTER">New status</TD> </TR> <TR><TD WIDTH="18%" VALIGN="TOP" ROWSPAN=2> <FONT SIZE=2><Enter></FONT></TD> <TD WIDTH="10%" VALIGN="TOP" ROWSPAN=2> <FONT SIZE=2>-</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2>if DropSite has <B>dropovercmd</B>, call it with <I>enter</I></FONT></TD> <TD WIDTH="24%" VALIGN="TOP"> <FONT SIZE=2>result of <B>dropovercmd</B></FONT></TD> </TR> <TR><TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2>else</FONT></TD> <TD WIDTH="24%" VALIGN="TOP"> <FONT SIZE=2>1</FONT></TD> </TR> <TR><TD WIDTH="18%" VALIGN="TOP" ROWSPAN=2> <FONT SIZE=2><Motion></FONT></TD> <TD WIDTH="10%" VALIGN="TOP"> <FONT SIZE=2>0 or 1</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> </TD> <TD WIDTH="24%" VALIGN="TOP"> <FONT SIZE=2>unchanged</FONT></TD> </TR> <TR><TD WIDTH="10%" VALIGN="TOP"> <FONT SIZE=2>2 or 3</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2>call <B>dropovercmd</B> with <I>motion</I></FONT></TD> <TD WIDTH="24%" VALIGN="TOP"> <FONT SIZE=2>result of <B>dropovercmd</B></FONT></TD> </TR> <TR><TD WIDTH="18%" VALIGN="TOP" ROWSPAN=2> <FONT SIZE=2><Leave></FONT> </TD> <TD WIDTH="10%" VALIGN="TOP"> <FONT SIZE=2>0 or 1</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> </TD> <TD WIDTH="24%" VALIGN="TOP"> <FONT SIZE=2>-</FONT></TD> </TR> <TR><TD WIDTH="10%" VALIGN="TOP"> <FONT SIZE=2>2 or 3</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2>call <B>dropovercmd</B> with <I>leave</I></FONT></TD> <TD WIDTH="24%" VALIGN="TOP"> <FONT SIZE=2>-</FONT></TD> </TR> <TR><TD WIDTH="18%" VALIGN="TOP" ROWSPAN=4> <FONT SIZE=2><Drop></FONT></TD> <TD WIDTH="10%" VALIGN="TOP"> <FONT SIZE=2>0</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2>call <B>dragendcmd</B> of drag source</FONT></TD> <TD WIDTH="24%" VALIGN="TOP" ROWSPAN=4> <FONT SIZE=2>-</FONT></TD> </TR> <TR><TD WIDTH="10%" VALIGN="TOP"> <FONT SIZE=2>1</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2>call <B>dropcmd</B> and call <B>dragendcmd</B> of drag source</FONT></TD> </TR> <TR><TD WIDTH="10%" VALIGN="TOP"> <FONT SIZE=2>2</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2>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>3</FONT></TD> <TD WIDTH="48%" VALIGN="TOP"> <FONT SIZE=2>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</B> ?<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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | <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="#add"><B>add</B></A> <i>widget</i> ?<I>option value ...</I>? </DD> <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="#delete"><B>delete</B></A> <i>widget</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="add">DynamicHelp::<B>add</B></A> ?<I>option value ...</I>? </DT><DD> <p> This command adds dynamic help to the given <i>widget</i>. </p> <DL><DT><A NAME="add-command"><B>-command</B></A></DT> <DD> If specified, refers to a command to execute to get the help text to display. The command must return a string to display. If the command returns an empty string, no help is displayed. </DD> </DL> <DL><DT><A NAME="add-index"><B>-index</B></A></DT> <DD> If specified, refers to a menu index to bind the help to instead of a widget. If <b>-type</b> is not menu, this option is ignored. </DD> </DL> <DL><DT><A NAME="add-item"><B>-item</B></A></DT> <DD> If specified, refers to an item or tag on a canvas to bind the help to instead of a widget. </DD> </DL> <DL><DT><A NAME="add-type"><B>-type</B></A></DT> <DD> Specifies the type of help. Can be: <b>balloon</b>, <b>variable</b> or <b>menu</b>. Default is <b>balloon</b>. </DD> </DL> <DL><DT><A NAME="add-text"><B>-text</B></A></DT> <DD> The text to be displayed as help. </DD> </DL> <DL><DT><A NAME="add-variable"><B>-variable</B></A></DT> <DD> Specifies a variable name that contains the help string to be displayed. </DD> </DL> <p> Creating dynamic help for a menu is a two-step process. The menu itself must first be added and then each menu entry must be added separately. Here is a brief example. </p> <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::add .m.file -type menu -variable varinfo <FONT COLOR=red><I># then declare entries of .m.file</I></FONT> DynamicHelp::add .m.file -type menu -index 0 -text "Detach menu" DynamicHelp::add .m.file -type menu -index 1 -text "Open a file" DynamicHelp::add .m.file -type menu -index 2 -text "Exit demo" </PRE></TD></TR></TABLE></CENTER> </DL> <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> <dl> <dt><a name="DynamicHelp-state"><b>-state</b></a></dt> <dd> Specifies one of two states for help balloons: <b>normal</b> and <b>disabled</b>. </dd> <dd> If <b>state</b> is <b>disabled</b>, help balloons will not be displayed for any registered widget. </dd> </dl> <DL><DT><A NAME="DynamicHelp-topbackground"><B>-topbackground</B></A></DT> <DD> The background color of the toplevel window created for a 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> <TR> <TD> <A HREF="options.htm#M-padx">-padx</A></TD> <TD> <A HREF="options.htm#M-pady">-pady</A></TR> </TR> </TABLE></DD> </DD></DL> <DL><DT><A NAME="delete">DynamicHelp::<B>delete</B></A> <I>widget</I> </DT><DD> Delete all dynamic help for the given <i>widget</i>. </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> <p> <b>Its use is deprecated. Use <i>DynamicHelp::add</i> instead.</b> </p> 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> ?tagOrItem? text </I></TD></TR> <TR><TD><B><I> variable </I></B></TD><TD><I> ?tagOrItem? 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. <p> If <i>tagOrItem</i> is specified, then <i>path</i> is a canvas, and <i>tagOrItem</i> is the name of a tag or item on the canvas to which the help will be bound. </p> 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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 341 | <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-disabledbackground">-disabledbackground</A></TD> <TD> <A HREF="options.htm#M-disabledforeground">-disabledforeground</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-exportselection">-exportselection</A></TD> <TD> <A HREF="options.htm#M-font">-font</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-foreground">-foreground or -fg</A></TD> <TD> <A HREF="options.htm#M-highlightbackground">-highlightbackground</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-highlightcolor">-highlightcolor</A></TD> <TD> <A HREF="options.htm#M-highlightthickness">-highlightthickness</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-insertbackground">-insertbackground</A></TD> <TD> <A HREF="options.htm#M-insertborderwidth">-insertborderwidth</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-insertofftime">-insertofftime</A></TD> <TD> <A HREF="options.htm#M-insertontime">-insertontime</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-insertwidth">-insertwidth</A></TD> <TD> <A HREF="options.htm#M-justify">-justify</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-relief">-relief</A></TD> <TD> <A HREF="options.htm#M-selectbackground">-selectbackground</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-selectborderwidth">-selectborderwidth</A></TD> <TD> <A HREF="options.htm#M-selectforeground">-selectforeground</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-takefocus">-takefocus</A></TD> <TD> <A HREF="options.htm#M-text">-text</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-textvariable">-textvariable</A></TD> <TD> <A HREF="options.htm#M-xscrollcommand">-xscrollcommand</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="#-command">-command</A></TD> <TD> <A HREF="#-dragenabled">-dragenabled</A></TD> </TR> <TR> <TD> <A HREF="#-dragendcmd">-dragendcmd</A></TD> <TD> <A HREF="#-dragevent">-dragevent</A></TD> </TR> <TR> <TD> <A HREF="#-draginitcmd">-draginitcmd</A></TD> <TD> <A HREF="#-dragtype">-dragtype</A></TD> </TR> <TR> <TD> <A HREF="#-dropcmd">-dropcmd</A></TD> <TD> <A HREF="#-dropenabled">-dropenabled</A></TD> </TR> <TR> <TD> <A HREF="#-dropovercmd">-dropovercmd</A></TD> <TD> <A HREF="#-droptypes">-droptypes</A></TD> </TR> <TR> <TD> <A HREF="#-editable">-editable</A></TD> <TD> <A HREF="#-helptext">-helptext</A></TD> </TR> <TR> <TD> <A HREF="#-helptype">-helptype</A></TD> <TD> <A HREF="#-helpvar">-helpvar</A></TD> </TR> <TR> <TD> <A HREF="#-show">-show</A></TD> <TD> <A HREF="#-state">-state</A></TD> </TR> <TR> <TD> <A HREF="#-width">-width</A></TD> </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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 140 141 142 143 144 | <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> -bitmap</TD> <TD> -disabledforeground</TD> </TR> <TR> <TD> -focus</TD> <TD> -font</TD> </TR> <TR> <TD> -foreground or -fg</TD> <TD> -height</TD> </TR> <TR> <TD> -helptext</TD> <TD> -helptype</TD> </TR> <TR> <TD> -helpvar</TD> <TD> -image</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> -textvariable</TD> <TD> -underline</TD> </TR> <TR> <TD> -width</TD> <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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | <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></TD> <TD> <A HREF="options.htm#M-highlightbackground">-highlightbackground</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-highlightcolor">-highlightcolor</A></TD> <TD> <A HREF="options.htm#M-highlightthickness">-highlightthickness</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-relief">-relief</A></TD> <TD> <A HREF="options.htm#M-selectbackground">-selectbackground</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-selectforeground">-selectforeground</A></TD> <TD> <A HREF="options.htm#M-takefocus">-takefocus</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-xscrollcommand">-xscrollcommand</A></TD> <TD> <A HREF="options.htm#M-yscrollcommand">-yscrollcommand</A></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="#-autofocus">-autofocus</A></TD> <TD> <A HREF="#-deltax">-deltax</A></TD> <TD> <A HREF="#-deltay">-deltay</A></TD> </TR> <TR> <TD> <A HREF="#-dragenabled">-dragenabled</A></TD> <TD> <A HREF="#-dragendcmd">-dragendcmd</A></TD> </TR> <TR> <TD> <A HREF="#-dragevent">-dragevent</A></TD> <TD> <A HREF="#-draginitcmd">-draginitcmd</A></TD> </TR> <TR> <TD> <A HREF="#-dragtype">-dragtype</A></TD> <TD> <A HREF="#-dropcmd">-dropcmd</A></TD> </TR> <TR> <TD> <A HREF="#-dropenabled">-dropenabled</A></TD> <TD> <A HREF="#-dropovercmd">-dropovercmd</A></TD> </TR> <TR> <TD> <A HREF="#-dropovermode">-dropovermode</A></TD> <TD> <A HREF="#-droptypes">-droptypes</A></TD> </TR> <TR> <TD> <A HREF="#-height">-height</A></TD> <TD> <A HREF="#-multicolumn">-multicolumn</A></TD> </TR> <TR> <TD> <A HREF="#-padx">-padx</A></TD> <TD> <A HREF="#-redraw">-redraw</A></TD> </TR> <TR> <TD> <A HREF="#-selectfill">-selectfill</A></TD> <TD> <A HREF="#-selectmode">-selectmode</A></TD> <TD> <A HREF="#-width">-width</A></TD> </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="-autofocus"><B>-autofocus</B></A></DT> <DD> If this option is true, the listbox will take focus any time the user clicks in it. Without focus, the listbox's mouse wheel bindings will not work properly. The default is true. </DD> </DL> <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> <p> The default drop command allows for drag-and-drop within the listbox but not to or from other widgets. </p> </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="-selectfill"><B>-selectfill</B></A></DT> <DD> If true, the listbox will draw a selection rectangle that fills the listbox from left-to-right instead of just drawing a box around the selected item. This more closely mimics the standard Tk listbox. </DD> </DL> <DL><DT><A NAME="-selectmode"><B>-selectmode (read-only)</B></A></DT> <DD> Specifies the desired selection-mode for the listbox. Must be one of <B>none</B>, <B>single</B> or <B>multiple</B>. <B>selectmode</B> <I>single</I> allows to select 1 item by its text or image. <B>selectmode</B> <I>multiple</I> allows to select multiple items by their text or image. For more info on selectmodes <I>single</I> or <I>multiple</I>, see the Tk <B>listbox</B> command. Default value for <B>selectmode</B> is <I>none</I>. </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. <p> Any occurrence of <b>%W</b> in <i>script</i> is substituted with the path of the listbox. </p> </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. <p> Any occurrence of <b>%W</b> in <i>script</i> is substituted with the path of the listbox. </p> </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> <p> Inserts a new item identified by <I>item</I> in the list at position <I>index</I>. </p> <p> Any instance of <i>#auto</i> within the item name will be replaced by the number of the item in the order of insertion. </p> <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> <b>BINDINGS</b> <p> A <b><<ListboxSelect>></b> virtual event is generated any time the selection in the listbox changes. This is the default behavior of an item in the listbox, but it can be overridden with the bindText or bindImage command. If the button 1 binding is overridden, this event may not be generated. </p> <p> The listbox has all the standard mouse wheel bindings when it has focus. </p> </p> </BODY></HTML> |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 209 210 211 212 213 214 215 216 217 218 | <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></TD> <TD> <A HREF="options.htm#M-font">-font</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-foreground">-foreground or -fg</A></TD> <TD> <A HREF="options.htm#M-padx">-padx</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-pady">-pady</A></TD> </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></TD> <TD> <A HREF="#-buttons">-buttons</A></TD> </TR> <TR> <TD> <A HREF="#-buttonwidth">-buttonwidth</A></TD> <TD> <A HREF="#-icon">-icon</A></TD> </TR> <TR> <TD> <A HREF="#-justify">-justify</A></TD> <TD> <A HREF="#-message">-message</A></TD> </TR> <TR> <TD> <A HREF="#-title">-title</A></TD> <TD> <A HREF="#-type">-type</A></TD> <TR> <TD> <A HREF="#-width">-width</A></TD> </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="-buttonwidth"><B>-buttonwidth</B></A></DT> <DD> Specifies the standard width of the buttons in the dialog. </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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | <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="#-arcradius">-arcradius</A></TD> <TD> <A HREF="#-height">-height</A></TD> </TR> <TR> <TD> <A HREF="#-homogeneous">-homogeneous</A></TD> <TD> <A HREF="#-side">-side</A></TD> </TR> <TR> <TD> <A HREF="#-tabbevelsize">-tabbevelsize</A></TD> <TD> <A HREF="#-tabpady">-tabpady</A></TD> </TR> <TR> <TD> <A HREF="#-width">-width</A></TD> </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="-arcradius"><B>-arcradius</B></A></DT> <DD> Specifies the amount of rounding effect at the corners of a tab. This value can be adjusted from 0 to 8 pixels with the default being 2 pixels. Usually, small values are preferable. </DD> </DL> <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</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>. </DD> </DL> <DL><DT><A NAME="-tabbevelsize"><B>-tabbevelsize</B></A></DT> <DD> Specifies the amount of bevel the tabs should have. This value can be adjusted from 0 to 8 pixels with the default being 0 pixels. A zero pixel bevel is essentially rectangular while non-zero bevel size will look trapezoidal. </DD> </DL> <DL><DT><A NAME="-tabpady"><B>-tabpady</B></A></DT> <DD> Specifies the padding between the text in the tab and the top and bottom of the tab. Padding may be a list of two values to specify padding for top and bottom separately. Padding defaults to {0 6}. </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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 131 132 133 134 135 136 137 138 139 140 141 142 | <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="#-weights">-weights</A></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="-weights"><B>-weights (read-only)</B></A></DT> <DD> Specifies how the weights specified when adding panes should be used. Must be <B>extra</B> or <B>available</B>. When using <I>extra</I>, only extra space is devided among the diffferent panes relative to their weight. When using <I>available</I>, all space is devided among the diffferent panes relative to their weight. Default value for <B>weights</B> is <I>extra</I>. </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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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:Stephane.Lavirotte@sophia.inria.fr">(Stephane.Lavirotte@sophia.inria.fr)</A></ADRESS> </BODY></HTML> |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 | <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>, <B>infinite</B> or <B>nonincremental_infinite</B>. <BR><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><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><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 moves 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><BR>If <B>type</B> is <I>nonincremental_infinite</I>, the value of the progress indicator taken from the variable value, The progress indicator moves from left to right if variable 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><BR>See <B>-variable</B> option for special case of its value, <BR><BR>Default value for <B>type</B> is <I>normal</I>. </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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 116 | <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> becomes managed by the ScrolledWindow. The user should not attempt to manage <I>widget</I> until it is no longer managed by the ScrolledWindow. <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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 153 154 155 156 157 158 159 160 161 162 163 164 | <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></td> <TD> <A HREF="#-parent">-parent</A></td> </TR> <TR> <TD> <A HREF="#-placement">-placement</A></td> <TD> <A HREF="#-title">-title</A></td> </TR> <TR> <TD> <A HREF="#-type">-type</A></td> </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="#dialog"><B>dialog</B></A> <I>pathName</I> <I>?option value ...?</I> </DD> <DD>SelectColor::<A HREF="#menu"><B>menu</B></A> <I>pathName</I> <I>placement</I> <I>?option 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="-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="-placement"><B>-placement</B></A></DT> <DD> Where to place the <i>popup</i> color dialog when displaying it. Must be any of: <b>at</b>, <b>center</b>, <b>left</b>, <b>right</b>, <b>above</b>, or <b>below</b>. If <i>-parent</i> is specified, placement will be in relation to the parent widget. </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>popup</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>popup</I>, SelectColor::<B>create</B> creates a small, popup dialog with a small set of predefined colors and a button to activate a full color dialog. </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="dialog">SelectColor::<B>dialog</B></A> <I>pathName</I> <I>?option value ...?</I> </DT><DD> Creates a dialog for the user to select a custom color. </DD></DL> <DL><DT><A NAME="dialog">SelectColor::<B>menu</B></A> <I>pathName</I> <I>placement</I> <I>?option value ...?</I> </DT><DD> Creates a small, popup dialog for the user to select from a predefined list of colors with an additional button to display a full color dialog. <p> <i>placement</i> can be any of <b>at</b>, <b>center</b>, <b>left</b>, <b>right</b>, <b>above</b>, or <b>below</b>. If <i>-parent</i> is specified, placement will be in relation to the parent widget. </p> </DD></DL> </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 0 and 10. </DD></DL> </BODY></HTML> |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 | <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="#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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | <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></TD> <TD> <A HREF="options.htm#M-highlightbackground">-highlightbackground</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-highlightcolor">-highlightcolor</A></TD> <TD> <A HREF="options.htm#M-highlightthickness">-highlightthickness</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-relief">-relief</A></TD> <TD> <A HREF="options.htm#M-selectbackground">-selectbackground</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-selectforeground">-selectforeground</A></TD> <TD> <A HREF="options.htm#M-takefocus">-takefocus</A></TD> </TR> <TR> <TD> <A HREF="options.htm#M-xscrollcommand">-xscrollcommand</A></TD> <TD> <A HREF="options.htm#M-yscrollcommand">-yscrollcommand</A></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="#-closecmd">-closecmd</A></TD> <TD> <A HREF="#-crossfill">-crossfill</A></TD> <TR> <TD> <A HREF="#-crossclosebitmap">-crossclosebitmap</A></TD> <TD> <A HREF="#-crosscloseimage">-crosscloseimage</A></TD> </TR> <TR> <TD> <A HREF="#-crossopenbitmap">-crossopenbitmap</A></TD> <TD> <A HREF="#-crossopenimage">-crossopenimage</A></TD> </TR> <TR> <TD> <A HREF="#-deltax">-deltax</A></TD> <TD> <A HREF="#-deltay">-deltay</A></TD> </TR> <TR> <TD> <A HREF="#-dragenabled">-dragenabled</A></TD> <TD> <A HREF="#-dragendcmd">-dragendcmd</A></TD> </TR> <TR> <TD> <A HREF="#-dragevent">-dragevent</A></TD> <TD> <A HREF="#-draginitcmd">-draginitcmd</A></TD> </TR> <TR> <TD> <A HREF="#-dragtype">-dragtype</A></TD> <TD> <A HREF="#-dropcmd">-dropcmd</A></TD> </TR> <TR> <TD> <A HREF="#-dropenabled">-dropenabled</A></TD> <TD> <A HREF="#-dropovercmd">-dropovercmd</A></TD> </TR> <TR> <TD> <A HREF="#-dropovermode">-dropovermode</A></TD> <TD> <A HREF="#-droptypes">-droptypes</A></TD> </TR> <TR> <TD> <A HREF="#-height">-height</A></TD> <TD> <A HREF="#-linesfill">-linesfill</A></TD> </TR> <TR> <TD> <A HREF="#-linestipple">-linestipple</A></TD> <TD> <A HREF="#-opencmd">-opencmd</A></TD> </TR> <TR> <TD> <A HREF="#-padx">-padx</A></TD> <TD> <A HREF="#-redraw">-redraw</A></TD> </TR> <TR> <TD> <A HREF="#-selectcommand">-selectcommand</A></TD> <TD> <A HREF="#-selectfill">-selectfill</A></TD> </TR> <TR> <TD> <A HREF="#-showlines">-showlines</A></TD> <TD> <A HREF="#-width">-width</A></TD> </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="#toggle"><B>toggle</B></A> <I>node</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="-crossfill"><B>-crossfill</B></A></DT> <DD> Specifies a foreground color for the cross bitmap. </DD> </DL> <DL><DT><A NAME="-crossclosebitmap"><B>-crossclosebitmap</B></A></DT> <DD> Specifies a bitmap to be displayed in place of the standard cross when a node is closed. </DD> </DL> <DL><DT><A NAME="-crosscloseimage"><B>-crosscloseimage</B></A></DT> <DD> Specifies an image to be displayed in place of the standard cross when a node is closed. Overrides the -crossclosebitmap option. </DD> </DL> <DL><DT><A NAME="-crossopenbitmap"><B>-crossopenbitmap</B></A></DT> <DD> Specifies a bitmap to be displayed in place of the standard cross when a node is open. </DD> </DL> <DL><DT><A NAME="-crossopenimage"><B>-crossopenimage</B></A></DT> <DD> Specifies an image to be displayed in place of the standard cross when a node is open. Overrides the -crossopenbitmap option. </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 the user opens a node. The path of the tree widget and the opened node are 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="-selectcommand"><B>-selectcommand</B></A></DT> <DD> Specifies a command to be called when the selection is changed. The path of the tree widget and the selected nodes are appended to the command. </DD> </DL> <DL><DT><A NAME="-selectfill"><B>-selectfill</B></A></DT> <DD> If true, the selection box will be drawn across the entire tree from left-to-right instead of just around the item text. </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="nodes">NODE NAMES</A></B><BR> <p> Certain special characters in node names are automatically substituted by the tree during operation. These characters are <b>& | ^ !</b>. They are all substituted with a <b>_</b> character. This is only to avoid errors because the characters are special to the tree widget. </p> <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. <p> Any occurrence of <b>%W</b> in script is substituted with the path of the tree. </p> </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. <p> Any occurrence of <b>%W</b> in script is substituted with the path of the tree. </p> </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> ?<I>recurse</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 depending on <I>recurse</I>. Default value of <I>recurse</I> is <I>true</I>. </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> <p> Inserts a new node identified by <I>node</I> in the children list of <I>parent</I> at position <I>index</I>. </p> <p> Any instance of <i>#auto</i> within the node name will be replaced by the number of the item in the order of insertion. </p> <P> <DL><DT><A NAME="Node-anchor"><B>-anchor</B></A></DT> <DD> Specifies the anchor of the image or window of the node. Defaults to w. </DD> </DL> <DL><DT><A NAME="Node-data"><B>-data</B></A></DT> <DD> User data associated to the node. </DD> </DL> <DL><DT><A NAME="-deltax"><B>-deltax</B></A></DT> <DD> Specifies the horizontal indentation of the node. If the value is -1, the node will be drawn with the deltax for the entire tree. </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="-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="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="-padx"><B>-padx</B></A></DT> <DD> Specifies the distance between image or window and the text of the node. If the value is -1, the node will be drawn with the padx for the entire tree. </DD> </DL> <DL><DT><A NAME="Node-selectable"><B>-selectable</B></A></DT> <DD> Specifies if the node can be selected or not. </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> ?<I>recurse</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 depending on value of <I>recurse</I>. Default value of <I>recurse</I> is <I>true</I>. </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>add</B> <DD>Adds all nodes in <I>arg</I> to the selection. <DT><B>clear</B> <DD>Removes all nodes from the selection. <DT><B>get</B> <DD>Returns a list containing the indices of current selected nodes. <DT><B>includes</B> <DD>Tests if the specified node is selected. Returns true if the answer is yes, and false else. <DT><B>range</B> <DD>Sets the selection to all nodes between the two specified ones. <DT><B>remove</B> <DD>Removes all nodes in <I>arg</I> from the selection. <DT><B>set</B> <DD>Sets the selection to all nodes in <I>arg</I>. <DT><B>toggle</B> <DD>Toggles the selection status of all nodes in <I>arg</I>. </DL> The subcommands <B>add</B>, <B>range</B>, and <B>set</B> silently ignore nodes which are declared unselectable. See the node option <a href="#Node-selectable">-selectable</a> to influence this. </DD></DL> </DD></DL> <DL><DT><A NAME="toggle"><I>pathName</I> <B>toggle</B></A> <I>node</I> </DT><DD> Toggle the open/close status of the given <i>node</i>. </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> <B><A NAME="nodes">BINDINGS</A></B><BR> <p> A <b><<TreeSelect>></b> virtual event is generated any time the selection in the tree changes. This is the default behavior of an item in the tree, but it can be overridden with the bindText or bindImage command. If the button 1 binding is overridden, this event may not be generated. </p> <p> The tree has all the standard mouse wheel bindings when it has focus. </p> </BODY></HTML> |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | <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="#create"><B>create</B></A> <I>class</I> <I>path</I> ?<I>rename</I>? </DD> <DD>Widget::<A HREF="#declare"><B>declare</B></A> <I>class</I> <I>optlist</I> </DD> <DD>Widget::<A HREF="#define"><B>define</B></A> <I>class</I> <I>filename</I> ?<I>class ...</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="#getVariable"><B>getVariable</B></A> <I>path</I> <I>varName</I> <I>?myVarName?</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="create">Widget::<B>create</B></A> <I>class</I> <I>path</I> ?<I>rename</I>? </DT><DD> The standard method for creating a BWidget. The real widget path is renamed to $path:cmd, and a new proc is created to replace the path which points to the BWidget's commands. <p> If <i>rename</i> is false, the path will not be renamed, but the proc will still be created. This is useful when inheriting another BWidget who will already have renamed the widget. </p> <p> The command returns the widget path. This command is usually the last command executed in the ::create command for the widget. </p> </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="define">Widget::<B>define</B></A> <I>class</I> <I>filename</I> ?<I>class ...</I>? </DT><DD> <p> This command is used to define a new BWidget class. It is usually the first command executed in a new widget definition. </p> <ul> <li><i>class</i> is the name of the new widget class.</li> <li><i>filename</i> is the name of the file (without extension) in the BWidget distribution that defines this class.</li> </ul> <p> Each class defined after the filename is a class that this widget depends on. The ::use command will be called for each of these classes after the new widget has been defined. </p> <p> This command does several things to setup the new class. First, it creates an alias in the global namespace for the name of the class that points to the class's ::create subcommand. Second, it defines a ::use subcommand for the class which other classes can use to load this class on the fly. Lastly, it creates a default binding to the <Destroy> event for the class that calls Widget::destroy on the path. This is the default setup for almost all widgets in the BWidget package. </p> </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="getVariable">Widget::<B>getVariable</B></A> <I>path</I> <I>varName</I> <I>?myVarName?</I> </DT><DD> <p> Make the variable <i>varName</i> relational to <i>path</i> accessible in the current procedure. The variable will be created in the widget namespace for <i>path</i> and can be used for storing widget-specific information. When <i>path</i> is destroyed, any variable accessed in this manner will be destroyed with it. </p> <p> If <i>myVarName</i> is specified, the variable will be accessible in the current procedure as that name. </p> </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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 450 451 452 453 454 455 456 457 458 | <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-disabledbackground" NAME="L12">-disabledbackground, disabledBackground, DisabledBackground</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> <P><DT>Command-Line Name: <B><A NAME="M-disabledbackground">-disabledbackground</A></B> <DT>Database Name: <B>disabledBackground</B> <DT>Database Class: <B>DisabledBackground</B> <DD>Specifies background 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 background color but they are dimmed by drawing them with a stippled fill pattern. <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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/ChangeLog.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | 2003-12-18 Bob Techentin <techentin@sourceforge.net> **** BWIDGET 1.7.0 TAGGED **** * README.txt: Changed revision to 1.7.0. Note that 1.7.0 does not include 2003-11-26 mod to notebook.tcl. 2003-11-26 Jeff Hobbs <jeffh@ActiveState.com> * notebook.tcl (NoteBook::bindtabs): correct tab name returned. (groth) 2003-11-17 Jeff Hobbs <jeffh@ActiveState.com> * entry.tcl (Entry::create): add missing line continuation. [Patch #843932] (oehlmann) 2003-11-10 Damon Courtney <damon@unreality.com> * entry.tcl: Use a button widget for -disabled options if we're using 8.3 [Bug 839469] 2003-11-05 Damon Courtney <damon@unreality.com> * combobox.tcl: Fixed dropdown listbox selection for standard Tk listbox [Bug 831496]. 2003-11-05 Jeff Hobbs <jeffh@ActiveState.com> * scrollview.tcl (ScrollView::_set_view): correct :canvas to renamed :cmd. 2003-10-30 Jeff Hobbs <jeffh@ActiveState.com> * scrollw.tcl (ScrolledWindow::setwidget): check that the old widget associated still exists before unconfiguring it. [Bug #833034] 2003-10-27 Damon Courtney <damon@unreality.com> * combobox.tcl, listbox.tcl: Fixed keyboard navigation in the combobox drop down [Bug 831496]. * listbox.tcl: Added curselection subcommand to mimic Tk listbox behavior. Added keyboard navigation to the listbox. * widget.tcl: Added Widget::exists command to return whether a widget is a BWidget (based on whether it exists in the _class array). Widget::destroy now properly unsets the widget's variable in the _class array. 2003-10-27 Joe English <jenglish@users.sourceforge.net> * DragSite.html, DropSite.html: Fix markup errors [Bug #740484] 2003-10-20 Damon Courtney <damon@unreality.com> * arrow.tcl, bitmap.tcl, button.tcl, buttonbox.tcl, color.tcl, * combobox.tcl, dialog.tcl, dragsite.tcl, dropsite.tcl, entry.tcl * font.tcl, label.tcl, labelentry.tcl, labelframe.tcl, listbox.tcl * mainframe.tcl, messagedlg.tcl, notebook.tcl, pagesmgr.tcl * panedw.tcl, passwddlg.tcl, progressbar.tcl, progressdlg.tcl * scrollframe.tcl, scrollview.tcl, scrollw.tcl, separator.tcl * spinbox.tcl, titleframe.tcl, tree.tcl, utils.tcl, widget.tcl * xpm2image.tcl: Revamp again to let core Widget commands handle most of the esoteric work of creating and destroying widgets properly in the BWidget environment. The command Widget::define defines a class, its filename and a list of classes which it uses. This command handles creating the command to create new widgets, creates a ::use command for the class and calls the ::use command for each class included. The command Widget::create does the renaming of the widget to $path:cmd and creates the proc to redirect the widget commands. Widget::destroy now does the rename $path "" that almost all widgets do. * button.tcl: Added a -state option to configure the state of the entire box at once. Added new insert and delete subcommands. Added an after cancel to stop button repeat upon release. [Bug 697022] * combobox.tcl: Added -bwlistbox, -listboxwidth and -hottrack options. -images option already existed, but now it actually does something. Added getlistbox, get, icursor, post and unpost subcommands. * dynhelp.tcl: Added add subcommand to replace the (now) deprecated register command. The new command adds for a lot more flexibility in applying dynamic help. Help popup now comes up -topmost 1 on Windows if available. * entry.tcl: Added -disabledbackground option so that the BWidget entry more closely resembles the standard Tk entry. [Bug 638236]. * init.tcl: Moved Widget::traverseTo into widget.tcl. * label.tcl: Renamed BWLabel class to just Label. * listbox.tcl: Added a default -dropcmd so that if -dragenabled and -dropenabled are true, drag-and-drop within the same widget is possible without any other options. Added -autofocus option to specify that clicking within the listbox should draw the focus in order to handle mouse wheel events. Added -selectfill option for drawing a full selection rectangle around selected items instead of just around the item. Added getcanvas subcommand. [Bug 436762]. bindImage and bindText now map %W to $path in order to get an accurate path in events. This can probably be fixed better when we have more control over event parameters. [Bug 607745] Added mouse wheel bindings by default. Added <<ListboxSelect>> event when selection changes. * mainframe.tcl: Fixed bug for adding CTRL-F items to a mainframe [Bug 784269] * messagedlg.tcl: Added -buttonwidth option. * notebook.tcl: Added dynamic help to tabs. Added -tabpady option to specify the padding between the text and the tab. Notebooks now handle multi-line text properly. [Bug 565284] * scrollview.tcl: Rewritten to use a variable per path instead of a big array. * tree.tcl: Added -anchor option to nodes to specify the anchor for an image or window when displayed. Added -crossopenimage, -crosscloseimage, -crossopenbitmap and -crossclosebitmap options to change the open / close cross. Added mouse wheel bindings by default. Added toggle subcommand to toggle a single tree node. Added <<TreeSelect>> event when selection changes. The characters "& | ^ !" are all converted to | silently in node names. This is to avoid errors because these characters are special to the canvas widget. [Bug 746960] bindImage and bindText now map %W to $path in order to get an accurate path in events. This can probably be fixed better when we have more control over event parameters. [Bug 607745] * utils.tcl: Added BWidget::wrongNumArgsString command to return a standard wrong # args error string. Added BWidget::classes command that returns a list of all classes required by a given class. Added BWidget::inuse command to determine if a given class is inuse. Added BWidget::library command to return a body of code that can be saved into a project or other code based on the given classes. When called with a list of classes, all the classes and code necessary to use those classes is returned in a large string which can then be written out to a file. Added BWidget::write command to write to a given file the current set of classes that are in use. Added BWidget::bindMouseWheel command to setup default mouse bindings on a given widget. * widget.tcl: Added a new option type 'Padding' which will accept the standard padding arguments in Tcl 8.4+. Added Widget::define command to define a new BWidget class. Added Widget::create command to create a BWidget properly. Widget::destroy now attempts to delete a widget command created through Widget::create. Added Widget::options command to return the current options of a given widget in a style that can be used to serialize a widget. Added Widget::getOption command to get options based on children having the same option. * wizard.tcl: Added new Wizard widget. 2003-10-17 Jeff Hobbs <jeffh@ActiveState.com> * arrow.tcl, bitmap.tcl, button.tcl, buttonbox.tcl, color.tcl, * combobox.tcl, dialog.tcl, dragsite.tcl, dropsite.tcl, entry.tcl * font.tcl, label.tcl, labelentry.tcl, labelframe.tcl, listbox.tcl * mainframe.tcl, messagedlg.tcl, notebook.tcl, pagesmgr.tcl * panedw.tcl, passwddlg.tcl, progressbar.tcl, progressdlg.tcl * scrollframe.tcl, scrollview.tcl, scrollw.tcl, separator.tcl * spinbox.tcl, titleframe.tcl, tree.tcl, utils.tcl, widget.tcl * xpm2image.tcl: major revamp to reduce incorrect use of eval and other list-safetiness evils. Also change !strcomp to streq. 2003-08-06 Jeff Hobbs <jeffh@ActiveState.com> * listbox.tcl: Correct Listbox selection drawing [Bug #781652] 2003-07-17 Joe English <jenglish@users.sourceforge.net> * init.tcl, combobox.tcl: Fix for [Bug 720032] "BWidget breaks Tk entry behaviour". Highlight the entry in a <<TraverseIn>> binding, instead of doing so on every <FocusIn> event. Change the global <Tab> and <Shift-Tab> bindings to generate <<TraverseIn>> and <<TraverseOut>> events. 2003-07-17 Jeff Hobbs <jeffh@ActiveState.com> * notebook.tcl: Use list with eval for safety. Use lsearch -exact instead of default -glob in all uses. * listbox.tcl (_multiple_select): correct shift-selection when selectmode is multiple. [Bug 653266] Use lsearch -exact instead of default -glob in all uses. Use list with eval for safety. * BWman/ScrolledWindow.html: clarify management of embedded widget. 2003-06-23 Damon Courtney <damon@unreality.com> * combobox.tcl: Added a little better handling of keys in the auto-complete. 2003-06-06 Damon Courtney <damon@unreality.com> * combobox.tcl: Added a rudimentary auto-complete function with option (-autocomplete) that is turned off by default. Over time, I'm sure this function can be improved, but I think it works pretty well for now. * BWman/ComboBox.tcl: Added documentation for -autocomplete. 2003-06-05 Damon Courtney <damon@unreality.com> * listbox.tcl: Liberal use of list where appropriate to make the code safe for space-containing node names. 2003-05-23 Bob Techentin <techentin@sourceforge.net> **** BWIDGET 1.6.0 TAGGED **** * README.txt: 2003-05-18 Jeff Hobbs <jeffh@ActiveState.com> * progressbar.tcl: correctly handle progressbar being quickly created and deleted by deleting afters and checking var existence. 2003-05-18 Joe English <jenglish@users.sourceforge.net> * widget.tcl (Widget::focusOK): Don't assume that '-editable' option is always 1 or 0 for all widgets. [Bug 710658] 2003-05-14 Jeff Hobbs <jeffh@ActiveState.com> * demo/tree.tcl: make the tree scrollview make sense in demo. [Bug 684462] * notebook.tcl: ensure that bd is min 1 at all times. [Bug 688227] Correct use of eval with list. * tree.tcl: correct node lsearch'ing to use -exact to allow for [] containing nodes [Bug 628041] (decoster) 2003-05-07 Jeff Hobbs <jeffh@ActiveState.com> * dynhelp.tcl (DynamicHelp::_motion_balloon): correctly listify after delayed _show_help callback. 2003-05-06 Jeff Hobbs <jeffh@ActiveState.com> * scrollw.tcl (ScrolledWindow::setwidget): remove any existing widget before setting the next. 2003-05-01 Jeff Hobbs <jeffh@ActiveState.com> * tree.tcl (Tree::configure, Tree::_draw_node): add a full-width box underneath the text and image/window that will react to the node binding if -selectfill is true. It is an empty box that is overly wide, but it could be improved to resize on Configure to just the window width and replace the sel box. 2003-04-23 Jeff Hobbs <jeffh@ActiveState.com> * tree.tcl: liberal use of list where appropriate to make the code safe for space-containing node names. Make use of string equal instead of !string compare. (Tree::_redraw_selection): correct -selectfill to include the image, in any, in the bbox calculation since it may be larger. 2003-04-15 Damon Courtney <damon@unreality.com> * listbox.tcl * tree.tcl: Added a #auto substitution for inserting new items into a tree or listbox. * BWman/ListBox.html * BWman/Tree.html: Added documentation for #auto substitution. 2003-04-14 Jeff Hobbs <jeffh@ActiveState.com> * utils.tcl (BWidget::focus): add optional refocus arg * combobox.tcl: make droplist use solid 1-pixel relief more in accordance with Windows style. Set topmost attribute on droplist. Add bindings that unmap the droplist if we lose focus to another application (where [focus] == ""), without refocusing to the entry. 2003-04-11 Jeff Hobbs <jeffh@ActiveState.com> * combobox.tcl (ComboBox::_expand): add tab expansion behavior when -expand tab is specified (ComboBox::_focus_in): autohighlight full contents only when no existing selection exists. [Bug #720024] * BWman/ComboBox.html: doc -expand none|tab 2003-03-12 Damon Courtney <damon@unreality.com> * listbox.tcl: Added dynamic help support to listbox items. * tree.tcl: Fixed a little inconsistency in the tree dynamic help. We don't need to save the whole path in the help array, just the node. 2003-02-25 Jeff Hobbs <jeffh@ActiveState.com> * scrollw.tcl: add lock around grid remove scrollbar to prevent infinite loop in small window situations. (kienzle) * pkgIndex.tcl: * configure.in: bumped to v1.6 * scrollw.tcl: complete rewrite of ScrolledWindow widget to address infinite loop scrollbar problems. This one is much simpler and does not suffer the infinite loop. There still seems to be an issue with shrinking smaller than one scrollbar width / height in size, but that's not common (nor fatal). Addresses [Patch #671821, #520903] [Bug #472718, #564691] This may introduce new incompatabilities, but it does work as expected for noted bugs and in the demos. * widget.tcl: code cleanup * scrollframe.tcl: code cleanup 2003-02-24 Jeff Hobbs <jeffh@ActiveState.com> * panedw.tcl (_realize): only allow _realize to be called once the Configure binding has triggered once. [Bug #613134] [Patch #63500] (decoster) 2003-02-17 Jeff Hobbs <jeffh@ActiveState.com> * font.tcl: comment out the adding of default style bits for bold and italic. The allows setting the font to something like "Courier 8", clicking B on and off and getting "Courier 8" back again (otherwise gave "Courier 8 normal roman"). 2003-02-08 Damon Courtney <damon@unreality.com> * BWman/SelectColor.html * color.tcl: Cleaned up some of the documentation of SelectColor and made it actually work like the documentation says it does. * BWman/DynamicHelp.html * dynhelp.tcl: Added -topbackground, -padx and -pady options to allow a little more flexibility in the look-and-feel of balloons. Added the ability to bind dynamic help to individual items or tags on a canvas. * BWman/Tree.html * tree.tcl: Added -padx and -deltax options to individual nodes within a tree. Each option defaults to -1, meaning to take its value from the global option of the same name. Added dynamic help to nodes within a tree. Adds the following options: -helptext, -helptype and -helpvar to each node. * BWman/BWidget.html * utils.tcl: Added BWidget::badOptionString utility to return a standard error string when a given option doesn't match a list. * BWman/Widget.html * widget.tcl: Added Widget::getVariable proc to create a reference to a variable relative to the given widget path. 2003-01-26 Damon Courtney <damon@unreality.com> * BWman/DynamicHelp.html: * dynhelp.tcl: Added -state option to disable help balloons on a global scale. * BWman/Tree.html: * tree.tcl: Added -crossfill option to allow the + / - bitmap to be filled with a different color than the connecting node lines. -linesfill is now accurate in its help entry and only adjusts the foreground color of the lines between the nodes. 2003-01-24 Joe English <jenglish@users.sourceforge.net> * tree.tcl (Tree::delete, Tree::_subdelete): remove all deleted nodes from the the selection [Bug #621178]. 2003-01-17 Pat Thoyts <patthoyts@users.sourceforge.net> * labelentry.tcl: fixed -textvariable option [bug #649383] 2002-10-14 Jeff Hobbs <jeffh@ActiveState.com> * pkgIndex.tcl: * configure.in: bump version to 1.5 * button.tcl: remove -repeatdelay and -repeatinterval for 8.4 to allow Button to override them. [Bug #620103] * combobox.tcl: make -entrybg also control the listbox background. [Bug #519189] (chevreux) * tree.tcl (_see): change to always show left edge of requested item. [Patch #556077] (english) [NOTE: also included Patch #621331 "Allow delete of selected Tree nodes"] * dynhelp.tcl: allow variable and balloon help simultaneously. [Patch #567982] (decoster) * BWman/LabelFrame.html: * labelframe.tcl: allow -bitmap -image and -textvariable options of the BWLabel component of a LabelFrame. [Patch #620753] (decoster) * widget.tcl (_get_tkwidget_options): withdraw toplevel if it is the TkResource base widget. [Patch #620754] (decoster) * tree.tcl (delete): correct tree deletion with selected nodes. [Patch #621331] (decoster) * progressbar.tcl (_modify): use updated idletasks instead of update. [Patch #622927] (decoster) 2002-09-25 Jeff Hobbs <jeffh@ActiveState.com> * Makefile.in: better DESTDIR/libdir support (steffen) 2002-09-11 Jeff Hobbs <jeffh@ActiveState.com> * color.tcl (SelectColor::menu): added tkwait and update to make sure that the grab doesn't fail on Unix. * listbox.tcl: corrected multiple selectmode bindings. [Patch #483838, Bug #594853] (decoster) 2002-08-23 Andreas Kupries <andreas_kupries@users.sourceforge.net> * tree.tcl: Modified subcommand 'includes' of the method 'selection to properly extract its argument. ... Revamped the whole subcommand to properly extract and check its arguments. (create) Added Control-Button-1 bindings to allow toggling the selection of a node. I will do no bindings for shift-selecting and/or drag-selecting ranges. To complex for me right now. Moved the code executing the -selectcommand callback to an internal procedure, and added calls to that procedure to all subcommands which change the selection. This fixes SF Bwidget Bug #547245. * BWman/Tree.html: Documented the 'includes' and 'range' subcommands of the method 'selection' of tree widgets. Documented the node option '-selectable'. Documented that the subcommands extending or setting the selection silently ignore unselectable nodes. Documented new 'toggle' subcommand of method 'selection'. Documented option --slectcommand'. Fixed bogus table html in option lists. 2002-06-04 Jeff Hobbs <jeffh@ActiveState.com> **** BWIDGET 1.4.1 TAGGED **** * README.txt: * configure.in: * pkgIndex.tcl: up'ed version to 1.4.1 * listbox.tcl: corrected use of 'end' as move index. [Bug #561391] * buttonbox.tcl: * tree.tcl: force frame -padx/-pady to 0 to handle 8.4+ frame padding options. [Bug #545119] * scrollframe.tcl: corrected scrollregion configuration on Configure of frame to use full width/height of canvas when the canvas is larger. This ensures that scrolling "anchors" properly to topleft. * dialog.tcl: prevent dialog from freezing on Windows with tkwait visibility on withdrawn toplevels. [Patch #521386] (chevreux) * font.tcl: reworked loadfont to not sort font names unless requested. [Patch #524353] (kienzle, hobbs) * panedw.tcl: corrected handling of weighted panes following a Configure event. [Patch #513320] (decoster) * progressbar.tcl: Fixed display of vertical progressbar. [Patch #561403] 2002-05-29 Andreas Kupries <andreas_kupries@users.sourceforge.net> * combobox.tcl: Changed relief of popup list to ridge, for Win* platforms. 2002-05-09 Andreas Kupries <andreas_kupries@users.sourceforge.net> * dynhelp.tcl: Accepted patch for bug 528929. Reported by <bach@users.sourceforge.net>, patch also by him. 2002-04-25 Andreas Kupries <andreas_kupries@users.sourceforge.net> * notebook.tcl: Accepted patch for bug #532246, fixing the appearance of the tabs so that text is always visible completely. 2002-01-26 Pat Thoyts <patthoyts@users.sourceforge.net> * utils.tcl: Modified BWidget::place to support multiple screens under Windows. Better support would require Tk modifications. * demo/tree.tcl: Fixed for starting on secondary monitor under windows. * BWMan/BWidget.html: added documentation for BWidget::place. 2002-01-22 Jeff Hobbs <jeffh@ActiveState.com> **** BWidget 1.4.0 tagged **** * widget.tcl: added Color as an optional type, with _test_color test. [RFE #443124]. 2002-01-15 Jeff Hobbs <jeffh@ActiveState.com> * BWman/ComboBox.html: removed reference to label options that were removed when the LabelFrame was dropped. [Bug #477130] * listbox.tcl: allowed drop handler to work in empty listbox. [Bug #456883] * mainframe.tcl: correct unprotected eval calls. [Patch #501210] (chevreux) 2001-12-28 Jeff Hobbs <jeffh@ActiveState.com> * BWman/Dialog.html: * dialog.tcl: Added '-transient' and '-place' flags. [Patch #483838] (decoster) * BWman/Tree.html: * tree.tcl: Added a 'recursive' argument to 'Tree::opentree' and 'Tree::closetree'. [Patch #483838] (decoster) * BWman/ProgressBar.html: * progressbar.tcl: Added new type 'nonincremental_infinite' and modified movement of progressbar when in 'infinite' or 'nonincremental_infinite' mode. The 'nonincremental_infinite' can be used when a certain process monitored by a ProgressBar returns a total count and not an increment count. [Patch #483838] (decoster) * BWman/PanedWindow.html: * panedw.tcl: Added '-weights' flag with possible value 'extra' or 'available'. Since BWidget-1.3.1, the meaning of the '-weight' flag for the 'PanedWindow::add' command was changed. This made it difficult to create a layout where the panes occupy a certain amount of the screen. When using the '-weights extra' flag when creating a PanedWindow widget, the >=1.3.1 behavior is used: the weights for the different panes are only used for extra space. When using the '-weights available' flag, the weights for the different panes are used to set the size of each panes relative to the total available space. [Patch #483838] (decoster) * BWman/ListBox.html: * listbox.tcl: Added '-selectmode' flag and 2 possible select-modes: single and multiple. [Patch #483838] (decoster) * widget.tcl: Select element 4 (was 3) from the config-options to get value from optiondb. [Patch #483838] (decoster) * utils.tcl: added else case to place is called with location different from 'at' and 'center' and without a parent. [Patch #484123] (decoster) * mainframe.tcl: added options -menubarfont, -menuentryfont and -statusbarfont at creation time of the widget as well as subsequent configures. [Patch #479935] (chevreux) * listbox.tcl: added multipleinsert command to allow faster inserts of multiple items. [Patch #458446] (chevreux) * widget.tcl: added Widget::copyinit. [Patch #458446] (chevreux) * BWman/NoteBook.html: * notebook.tcl: added options for enhanced tab shape in notebooks. [Patch #402466] (haneef) * configure.in: * pkgIndex.tcl: * README.txt: bumped version to 1.4.0 (not released) * mainframe.tcl (_create_menubar): start tagstate initially on. [Patch #470273] (chevreux) (_parse_accelerator): improve F* function key accelerator support. [Patch #444172] (venski) 2001-10-14 Jeff Hobbs <jeffh@ActiveState.com> * pagesmgr.tcl: reverted fix of 2001-10-11 - it was bogus. 2001-10-11 Jeff Hobbs <jeffh@ActiveState.com> * pagesmgr.tcl: allowed the ability to specify page by name, not just number. 2001-09-11 Andreas Kupries <andreas_kupries@users.sourceforge.net> * notebook.tcl: Removed 'Canvas' from the list of bindtags for the internal canvas to prevent interference from application specific bindings with our special widget. [459033]. 2001-09-06 Andreas Kupries <andreas_kupries@users.sourceforge.net> * passwddlg.tcl: Accepted change by Bastien Chevreux <bach@users.sourceforge.net> adding a -logineditable option to the password dialog. [436340]. 2001-09-05 Andreas Kupries <andreas_kupries@users.sourceforge.net> * panedw.tcl: Added option -activator to allow user to choose sash activator. Reduced minimum allowed sash width. [442474]. Request made by Bastien Chevreux <bach@users.sourceforge.net>. * label.tcl: Corrected typo in BWlabel::configure [454505], report and fix by Bastien Chevreux <bach@users.sourceforge.net>. * arrow.tcl: Changed containing frame to be more invisible (borderwidth 0). Fixes [458301], by Georgios Petasis <petasis@users.sourceforge.net>. 2001-08-08 Andreas Kupries <andreas_kupries@users.sourceforge.net> * tree.tcl (Tree::_keynav): Added code to call the open and close commands when the open-status of a node is toggled with the space bar. Bug [449284]. * color.tcl: Added the missing definition of the main 'SelectColor' procedure. This prevented users from creating these widgets in the documented way. Bug [449276]. 2001-06-21 eric melski <ericm@ajubasolutions.com> * tree.tcl: Corrected keyboard navigation so that open/close commands are invoked when right/left arrows are used to open/close nodes, patch from [Bug #435097]. Also corrected keyboard navigation on right arrow press; previously only opened closed nodes that had children, but should always open nodes, regardless of whether it has children. 2001-06-11 Jeff Hobbs <jeffh@ActiveState.com> * pkgIndex.tcl: bumped version to 1.3.1 and added Tk 8.1.1 package require as Tcl 8.1.1 is needed in certain core areas for the new string methods. * mainframe.tcl: corrected state interpretation. It doesn't do exact argument matching, but it is consistent with the rest of BWidget. [Bug #224476] * demo/demo.tcl: fixed demo script to run when called from another directory * messagedlg.tcl: corrected winfo exists call * listbox.tcl: fixed string compare call * combobox.tcl: added package require Tk 8.3. * passwddlg.tcl: * xpm2image.tcl: * mainframe.tcl: * panedw.tcl: * utils.tcl: * entry.tcl: * dynhelp.tcl: * dragsite.tcl: * color.tcl: added braces to expr where appropriate 2000-10-31 Dan Kuchler <kuchler@ajubasolutions.com> * combobox.tcl: Added the '-exact' option to the 'lsearch' commands in the combobox code so that the correct index of items will be returned even when there are glob/regexp characters. 2000-10-10 Dan Kuchler <kuchler@ajubasolutions.com> * dynhelp.tcl: Added the '-screen' option to the toplevel that is created to display the help text to fix a bug reported by Tupone Alfredo. 2000-10-01 Eric Melski <ericm@ajubasolutions.com> * notebook.tcl: Fixed typo in _draw_page that incorrectly placed images on tabs. 2000-09-17 Eric Melski <ericm@ajubasolutions.com> * widget.tcl (_test_boolean): Altered to return strictly 0 or 1 (for false and true, respectively), rather than allowing the string booleans (false, true, off, on, etc). 2000-09-07 Sven Delmas <sven@scriptics.com> * mainframe.tcl: Fixed the typo of Alt (Atl) as reported in bug # 6079. 2000-09-05 Eric Melski <ericm@ajubasolutions.com> * label.tcl: Corrected bindtags for BWidgets Label components: primary component widget now includes the megawidget pathname in its bindtags list, so that bindings on the megawidget pathname are applied properly. 2000-08-10 Eric Melski <ericm@ajubasolutions.com> * widget.tcl: Corrected a problem caused by the destruction of the special .#BWidget* widgets, which are used by BWidgets for some option value validations; formerly, if these were destroyed, it could confuse the BWidgets system's internal state, and creating BWidgets after destroying these helper widgets would throw an error. 2000-06-14 Dan Kuchler <kuchler@scriptics.com> * dialog.tcl * dropsite.tcl * dynhelp.tcl * scrollview.tcl: Replaced several catch {unset varname} calls with if {[info exists varname]} {unset varname}. This avoids using the catch, and also prevents the ::errorInfo corruption that was happening in BWidgets. 2000-05-14 Dan Kuchler <kuchler@scriptics.com> * tree.tcl: Fixed a typing error in the Tree::find procedure. The procedure wouldn't work because there was a 'llengh' where there should have been a 'llength'. 2000-05-08 Dan Kuchler <kuchler@scriptics.com> * titleframe.tcl: Added a '-state' flag that is associated to the state of the label. Now that labels can be disabled (in 8.3 and beyond) this allows for the titleframe to have a disabled appearence. 2000-05-02 Eric Melski <ericm@scriptics.com> * tree.tcl: Did some fancy focus footwork [Bug: 4491]. Now you can do this: "Tree .t ; bind .t <Button-1> foo", and it will do the right thing. This will enable the use of proper focus-on-mouse-click bindings for trees, which in turn will fix the focus problem described in 4491. In addition, I added a binding to the canvas widget in the tree that redirects focus when it leaves the canvas and goes to the frame, just in case. * dialog.tcl: Added a -geometry option, to allow the specification of geometry for the dialog. No particular care is taken to validate the geometry string, so if it is bogus, you lose. [RFE: 5188]. 2000-04-27 Eric Melski <ericm@scriptics.com> * entry.tcl: Added smarts to handle Copy for non-editable entries (it should be allowed, but was not previously) [Bug: 3755]. * notebook.tcl: Small tweaks for placement of images on tabs. * combobox.tcl: Added code to ensure that non-editable (but enabled) comboboxes could still be tabbed in to. 2000-04-26 Dan Kuchler <kuchler@scriptics.com> * button.tcl: Fixed the bindings that get setup on buttons with an underline specified to be case insensitive (i.e if 'A' or 'a' was the underline character, Alt-A and Alt-a would both be bound to the button. 2000-03-29 Sven Delmas <sven@scriptics.com> * tree.tcl: Added protection for the left arrow key click in case we are already at the root node. This used to throw a Tcl error (fixes bug # 4619). 2000-03-20 Eric Melski <ericm@scriptics.com> * progressbar.tcl: (configure) Added test for change to -maximum value, so that bar is redrawn if maximum changes. [Bug: 4399]. * BWman/SpinBox.html: Removed references to -label* options. * demo/select.tcl: Removed use of -label* options on ComboBox and SpinBox. [Bug: 4394]. 2000-03-14 Eric Melski <ericm@scriptics.com> * button.tcl: (configure) replaced several hasChanged calls with one hasChangedX call. * dynhelp.tcl: (sethelp) replaced several hasChanged calls with one hasChangedX call. * entry.tcl: Replaced stack of hasChanged calls with one hasChangedX (in configure); replaced a couple cget's with getMegawidgetOption's. * spinbox.tcl: Updated _test_options to use setMegawidgetOption, and to only do that if it has to, instead of always doing it. * tree.tcl: Worked on itemcget; instead of upvar'ing the one-time-use variable, just refer to it directly. * widget.tcl: One problem with [set ${class}::${path}:opt($option)] -- if path contains "foo(foo)", the command will choke. Removed that particular micro-optimization. Added setMegawidgetOption to compliment getMegawidgetOption; extended hasChangedX to accept multiple options to check. This allows us to compress stacks of hasChanged calls into a single call (so there's a single function call, and a single upvar...). 2000-03-13 Eric Melski <ericm@scriptics.com> * combobox.tcl: Tweaked bg/background options so that button didn't pick up entry background. * widget.tcl: Removed dead code; micro-optimizations to initFromODB. * tree.tcl: Added option for default -fill of tree nodes on windows. * notebook.tcl: Removed commented code. * button.tcl: * tree.tcl: * spinbox.tcl: * entry.tcl: * dropsite.tcl: * dragsite.tcl: * arrow.tcl: Replaced selected cget/getoption calls with getMegawidgetOption calls. * combobox.tcl: Removed LabelFrame from ComboBox (30% faster). * widget.tcl: Added getMegawidgetOption function, which allows direct access to megawidget-specific options (those that do not map to a component widget option). This is dangerous, because it bypasses some checks, and it will only work with options that are specific to the megawidget. However, it is much faster, and enables some functions (like visiblenodes) to be much faster. * tree.tcl: Reworked visiblenodes function to do a tree walk to find visible nodes. This is faster and more correct than the previous implementation, which queried all the nodes in the tree for their open bit. 2000-03-10 Eric Melski <ericm@scriptics.com> * widget.tcl: Replaced an upvar with a direct reference to the variable in initFromODB. * dynhelp.tcl: Changed sethelp function to use new hasChangedX function instead of hasChanged, which avoids an unneeded upvar, for a little better speed. * button.tcl: Changed to parseArgs/initFromODB format for a small (25%) speedup in creation time. 2000-03-10 Sven Delmas <sven@scriptics.com> * tree.tcl: Changed the allnodes procedure to visiblenodes, and also the mechanism of retrieving those nodes. This took care of the previously required update. 2000-03-09 Eric Melski <ericm@scriptics.com> * entry.tcl: Added code to re-sync the -text option with the contents of the entry widget before doing configuration; this fixes [Bug: 4304]. 2000-03-09 Sven Delmas <sven@scriptics.com> * tree.tcl: Disabled the update before the find withtag in the allnodes procedure. The nodes are apparently created delayed, so before this procedure is called, the program has to do an update. I don't do this in the procedure anymore, because it caused multiple updates, making the app slower. 2000-03-08 Sven Delmas <sven@scriptics.com> * tree.tcl: The new allnodes procedure was not handling the "current" tag correctly. This is now stripped of. 2000-03-07 Eric Melski <ericm@scriptics.com> * button.tcl: Added check for -state flag, to initialize it properly. * entry.tcl: Changed to parseArgs/initFromODB format; added check for -text flag to initialize it properly. * labelentry.tcl: Changed to use parseArgs/initFromODB format. 2000-03-03 Eric Melski <ericm@scriptics.com> * spinbox.tcl: Added a call in setvalue to scan the current value into a float to trim out any 0 padding on the number (otherwise the zero's make it look like octal to tcl, which chokes on numbers > 8) 2000-03-07 Sven Delmas <sven@scriptics.com> * passwddlg.tcl: Reenabled the <Return> binding to activate the ok button. * dragsite.tcl: I added an extra protection into the _begin_drag procedure to guard against a motion event that (sometimes) arrives before the press event. This fixes bug # 4324. 2000-03-03 Eric Melski <ericm@scriptics.com> * spinbox.tcl: Removed LabelFrame from SpinBox (BACKWARDS INCOMPATIBLE) to speed creation; updated configure proc to use hasChangedX instead of hasChanged, as it didn't really need the values of the options it was checking. 2000-03-01 Eric Melski <ericm@scriptics.com> * spinbox.tcl: Changed bindings to be on class SpinBox instead of BwSpinBox, and added class SpinBoxEntry to the bindtags of the SpinBox entry component. * configure.in: * pkgIndex.tcl: Bumped version to 1.3.0. * tree.tcl: Changed focus redirect to use {after idle} to avoid focus loops. * label.tcl: Added -bd 0 -highlight... etc to wrapper frame; moved class bindings to the frame instead of the component label. * utils.tcl: Added helper function BWidget::refocus, to handle focus redirection calls. * spinbox.tcl: Changed focus redirect to use {after idle} to avoid focus loops. * combobox.tcl: Changed init to parseArgs/initFromODB style; changed focus redirect to use {after idle} to avoid focus loops. 2000-02-29 Eric Melski <ericm@scriptics.com> * widget.tcl: Added bits to handle $path#subclass_that_inherits_from_other_bw_class megawidget names. * passwddlg.tcl: * progressdlg.tcl: * progressbar.tcl: Changed init to parseArgs/initFromODB style. * pkgIndex.tcl: Changed Label -> BWLabel * messagedlg.tcl: Changed initialization to parseArgs/initFromODB style. Changed to use tk_messageBox on UNIX. * labelframe.tcl: Updated to use BWLabel instead of Label. * labelentry.tcl: Added -class LabelEntry to widget. * label.tcl: Changed class name to BWLabel (to avoid option db clashes with tk labels), changed initialization to parseArgs/initFromODB style. * init.tcl: dropped obsolete Tree option from init. * dialog.tcl: changed initialization to parseArgs/initFromODB style. * notebook.tcl: Added -bd 0 -highlightthickness 0 -relief flat to the notebook container frame so geometries are correct. * entry.tcl: Fixed a conflict with configuring the Entry -text and textvariables. * dialog.tcl: added a -class option to the dialog, to allow the class of the dialog to be set (this enables proper optiondb use for things like the PasswdDlg). 2000-02-28 Eric Melski <ericm@scriptics.com> * widget.tcl: Added Widget::varForOption function, which returns a variable name that can be used to trace changes to an option for a particular megawidget (such as the -values option of a combobox). * entry.tcl: Made cget -text a little more efficient by shortcircuiting in that case. * combobox.tcl: Fixed bug #4248 by making the listbox use a -listvariable instead of trying to micromanage the listbox contents. * tests/entry.test: tests for the Entry widget. * widget.tcl: minor code cleanup. * tree.tcl: Was not getting proper default bg color on Windows, and keyboard navigation was goofy because of internal structure changes. * entry.tcl: Fixed an issue with initial foreground color not being picked up correctly. 2000-02-28 Sven Delmas <sven@scriptics.com> * tree.tcl: Added a procedure called "allnodes" to retrieve the names of all currently defined treenodes. Apparently the internal widget structure of tree was changed recently. I adjusted the "allnodes" procedure to that. 2000-02-25 Eric Melski <ericm@scriptics.com> * combobox.tcl: Fixed a problem with non-editable comboboxes and selecting values. * arrow.tcl: Fixed a problem with the invoke method (doing one too many winfo parents in some cases) * button.tcl: * buttonbox.tcl: * combobox.tcl: * dialog.tcl: * dynhelp.tcl: * entry.tcl: (also fixed validation) * label.tcl: * labelframe.tcl: * listbox.tcl: * mainframe.tcl: * notebook.tcl: * pagesmgr.tcl: * panedw.tcl: * progressbar.tcl: * scrollview.tcl: * scrollw.tcl: * separator.tcl: * spinbox.tcl: * titleframe.tcl: * tree.tcl: Updated to new megawidget architecture. * widget.tcl: Changed internal architecture. When possible, megawidget options are stored in component widgets instead of in an intermediary array. Also, made use of option database to make megawidget creation more efficient. 2000-02-24 Eric Melski <ericm@scriptics.com> * LICENSE.txt: Removed LGPL license; added Tcl-license terms. 2000-02-23 Eric Melski <ericm@scriptics.com> * widget.tcl: Replaced _test_boolean function with a more efficient implementation. 2000-02-18 Eric Melski <ericm@scriptics.com> * images/target.xbm: Placeholder for actual icon. * color.tcl: Change env(BWIDGET_LIBRARY) to ::BWIDGET::LIBRARY; changed proc "dialogue" to "dialog" * pkgIndex.tcl: Updated function spec for color.tcl. * widget.tcl: Various minor speed tweaks; added a reverse mapping from component widget options -> mega-widget options so that subcget can be faster. * entry.tcl: * dropsite.tcl: * dragsite.tcl: * arrow.tcl: Tcl list'd the specs for Widget::declare calls. * combobox.tcl: Removed extraneous ListBox::use call. 2000-02-17 Eric Melski <ericm@scriptics.com> * notebook.tcl: Added an extra check to move the leftmost tab a touch to the right when it is not selected (again, to make the tabs more Windows-like). Also replaced redundant [string equal] checks with a stored pre-check (ie, set foo [string equal ...]). 2000-02-16 Eric Melski <ericm@scriptics.com> * notebook.tcl: Changed appearance of tabs; leftmost tab is now flush with the left of the notebook, and the tabs look more Windows-like. 2000-02-16 Sven Delmas <sven@scriptics.com> * dialog.tcl: Added a new parameter to the draw procedure that allows me to pass in the desired geometry for the window. This was needed to support tracking of dialog window geometries. * tree.tcl: Changed the <KeyPress-space> binding to use "+", so it will not overwrite existing bindings (if there are any). Also added some extra protection in the keynav procedure against the user typing <Left> on a root node (this used to cause a stack trace). 2000-02-11 Eric Melski <ericm@scriptics.com> * tree.tcl: Integrated changes from Eric Boudaillier: [itemconfigure -open ...] optimized to only call redraw_idle 3 if node has subnodes. _cross_event: itemconfigure -open called before -opencmd/closecmd; no more call to _redraw_idle (handled by other procedures) _over_cmd: allow position {root 0} when tree is empty new [find] command: [find @x,y ?confine?] if confine is "confine" returns the node at window coordinate x,y (x,y must be inside the bbox of the node) else returns the node found on the line (in pixel) pixel y [find line] returns the node on the line $line (in -deltay coords) new [line] command: [line node] returns the line where node is drawn -selectfill option added: if true, selection is draw on full width of tree (instead of just highlighting the bbox of the selected nodes) * combobox.tcl: Integrated changes from Eric Boudaillier: internal widget restructuring. * tree.tcl: Added "range" subcommand to selection. Given two nodes, node1 and node2, it will set the selection to the visible nodes between (and including) node1 and node2. If node1 or node2 is not visible, it will find the first visible ancestor of the node and use that as the start/end point instead. * listbox.tcl: Integrated changes from Eric Boudaillier: _over_cmd: allow position 0 when listbox is empty find command, similar to tree find command. * spinbox.tcl: Integrated changes from Eric Boudaillier: cosmetic changes. * color.tcl: Integrated changes from Eric Boudaillier: split widget into two commands: SelectColor::menu and SelectColor::dialog. * progressbar.tcl: Integrated changes from Eric Boudaillier: added -idle option to prevent call to update in case where task is done in idle (ie, fileevents) * scrollview.tcl: Integrated changes from Eric Boudaillier: bindings changed. * scrollw.tcl: Integrated changes from Eric Boudaillier: -managed option: if true, scrollbar are managed during creation, so their size are included in the requested size of the ScrolledWindow. If false, they are not. -sides option: specifies the side of the scrollbar. -size option: specifies size of scrollbar. -ipad option: specifies pad between scrollbar and scrolled widget. * mainframe.tcl: Integrated changes from Eric Boudaillier: support for function keys in accelerators, support for no modifier in accelerators. * notebook.tcl: Integrated changes from Eric Boudaillier: -internalborderwidth (-ibd) option specifies pad around pages; -foreground, -background, -activeforeground, -activebackground, -disabledforeground options for each tab. Code cleanup. 1999-12-23 Sven Delmas <sven@scriptics.com> * scrollw.tcl: Added "update idletask" to scrollbar update to prevent loss of update events. 1999-12-14 Sven Delmas <sven@scriptics.com> * combobox.tcl: When the selected item is changed, the selection is now set to the entire string. 1999-12-13 Eric Melski <ericm@scriptics.com> * buttonbox.tcl: Added a getbuttonstate function, which retrieves the value of a tag used on a button in the buttonbox. 1999-12-08 Eric Melski <ericm@scriptics.com> * combobox.tcl: Removed code that cleared entry selection on focus out events, as this crippled exportselection. 1999-10-29 Eric Melski <ericm@scriptics.com> * buttonbox.tcl: Added a gettags function, which allows the user to query the tags that are used on buttons in the buttonbox. 1999-10-29 Eric Melski <ericm@scriptics.com> * font.tcl: Added one new flag: -querysystem. This lets the user control whether the font selector queries the system (via font families) for the list of fonts, or if it uses a preset list of fonts (which is much faster and less likely to crash some systems). 1999-10-25 Eric Melski <ericm@scriptics.com> * font.tcl: Added support for two new flags: -families and -styles; -families allows you to specify one of all, fixed, or variable, to limit the choice of fonts to those fonts; -styles allows you to specify a list of styles that can be set with the widget (ie, bold, italic, etc). 1999-10-22 Eric Melski <ericm@scriptics.com> * tree.tcl: Fixed some problems with keyboard traversal. Added support for left/right arrows a la MS Explorer. Added support for keyboard-based scrolling. 1999-10-21 Sven Delmas <sven@scriptics.com> * combobox.tcl: Added support for keyboard traversal. The widget will now tab in even when it is not editable. Also the entry widget content will be selected when the user tabs in. The key bindings now allow a traversal of the list (<Down> brings up the list). The arrow button no longer switches to an up button, but instead changes relief. The button is now more Windows NT like (for Windows NT). Changed keyboard bindings: down/up now display/hide the listbox; control-{up|down|prev|next} move through the options without displaying the listbox. 1999-10-21 Eric Melski <ericm@scriptics.com> * tree.tcl: Added a -selectable option to tree nodes, which controls whether or not a given node is selectable (duh). This works with the new -selectcommand option for the tree, and with keyboard traversal (also new). Now, whenever the tree gets a "selection set", it calls the given -selectcommand with the name of the tree and the list of selected nodes, which makes it easier to just drop in place and use. 1999-10-15 Eric Melski <ericm@scriptics.com> * panedw.tcl: Added a -class PanedWindow option to the main frame (the megawidget) of the paned window. 1999-10-15 Eric Melski <ericm@scriptics.com> * dialog.tcl: Added an overrideredirect option to Dialog::draw, which allows the user to control the overrideredirect state of the dialog. 1999-09-19 Eric Melski <ericm@scriptics.com> * mainframe.tcl: Fixed _destroy to unset ALL state variables, so that when a new MainFrame of the same name as an old one is created, it doesn't pick up residual state from the old one. 1999-09-17 Eric Melski <ericm@scriptics.com * mainframe.tcl: Modified menu creation/setmenustate functions to support a new model of menustate. Instead of enabling/disabling a menu item whenever any one of its tags changes state, now it only enables menu items if all of its tags are set. This makes it really easy to, say, only enable the "New Action" entry if both a project is open and an element is selected. * buttonbox.tcl: Added tagging mechanism to buttonbox. When using $bbox add, the first parameter is a list of tags for the button. Then use $bbox setbuttonstate to change the state of a tag. 1999-09-16 Eric Melski <ericm@scriptics.com> * notebook.tcl: Added some (non-functional) code for doing tab-notebooks with the tabs on the bottom. |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/LICENSE.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 | BWidget ToolKit Copyright (c) 1998-1999 UNIFIX. Copyright (c) 2001-2002 ActiveState Corp. The following terms apply to all files associated with the software unless explicitly disclaimed in individual files. The authors hereby grant permission to use, copy, modify, distribute, and license this software and its documentation for any purpose, provided that existing copyright notices are retained in all copies and that this notice is included verbatim in any distributions. No written agreement, license, or royalty fee is required for any of the authorized uses. Modifications to this software may be copyrighted by their authors and need not follow the licensing terms described here, provided that the new terms are clearly indicated on the first page of each file where they apply. IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. GOVERNMENT USE: If you are acquiring this software on behalf of the U.S. government, the Government shall have only "Restricted Rights" in the software and related documentation as defined in the Federal Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you are acquiring the software on behalf of the Department of Defense, the software shall be classified as "Commercial Computer Software" and the Government shall have only "Restricted Rights" as defined in Clause 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the authors grant the U.S. Government and others acting in its behalf permission to use and distribute the software in accordance with the terms specified in this license. |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/Makefile.in.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | # Makefile.in -- # # This file is a Makefile for the BLE executable. # # Copyright (c) 1999-2000 Ajuba Solutions. # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # RCS: @(#) $Id: Makefile.in,v 1.1 2004/12/24 16:32:01 jepler Exp $ BWIDGET_SOURCES = \ arrow.tcl \ bitmap.tcl \ button.tcl \ buttonbox.tcl \ color.tcl \ combobox.tcl \ dialog.tcl \ dragsite.tcl \ dropsite.tcl \ dynhelp.tcl \ entry.tcl \ font.tcl \ init.tcl \ label.tcl \ labelentry.tcl \ labelframe.tcl \ listbox.tcl \ mainframe.tcl \ messagedlg.tcl \ notebook.tcl \ pagesmgr.tcl \ panedw.tcl \ passwddlg.tcl \ progressbar.tcl \ progressdlg.tcl \ scrollframe.tcl \ scrollview.tcl \ scrollw.tcl \ separator.tcl \ spinbox.tcl \ titleframe.tcl \ tree.tcl \ utils.tcl \ widget.tcl \ xpm2image.tcl PKGINDEX_TCL = \ $(srcdir)/pkgIndex.tcl #STARTUP_SCRIPT = src/bwidget.tcl #======================================================================== # Executable name for creating a wrapped application # We don't currently build a wrapped bwidgets. #======================================================================== #BWIDGET = bwidget$(EXEEXT) #======================================================================== # Nothing of the variables below this line need to be changed. #======================================================================== SHELL = @SHELL@ EXEEXT = @EXEEXT@ DESTDIR = srcdir = @srcdir@ top_srcdir = @top_srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ libdir = @libdir@ pkglibdir = $(libdir)/@PACKAGE@@VERSION@ top_builddir = . INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ PACKAGE = @PACKAGE@ VERSION = @VERSION@ PROWRAP = @PROWRAP@ AUTOCONF = autoconf CYGPATH=@CYGPATH@ CONFIGDIR = @CONFIGDIR@ mkinstalldirs = $(SHELL) $(CONFIGDIR)/mkinstalldirs #======================================================================== # TEA TARGETS. Please note that the "libraries:" target refers to platform # independent files, and the "binaries:" target inclues executable programs and # platform-dependent libraries. Modify these targets so that they install # the various pieces of your package. The make and install rules # for the BINARIES that you specified above have already been done. #======================================================================== all: binaries libraries doc binaries: libraries: doc: install: all install-binaries install-libraries install-doc test: depend: install-binaries: install-libraries: installdirs @echo "Installing script files in $(DESTDIR)$(pkglibdir)" @for i in $(BWIDGET_SOURCES) ; do \ $(INSTALL_SCRIPT) $(srcdir)/$$i $(DESTDIR)$(pkglibdir) ; \ done; @echo "Installing language files in $(DESTDIR)$(pkglibdir)/lang" @for i in $(srcdir)/lang/*.rc ; do \ $(INSTALL_SCRIPT) $$i $(DESTDIR)$(pkglibdir)/lang ; \ done; @echo "Installing image files in $(DESTDIR)$(pkglibdir)/images" @for i in $(srcdir)/images/*.gif $(srcdir)/images/*.xbm ; do \ $(INSTALL_SCRIPT) $$i $(DESTDIR)$(pkglibdir)/images ; \ done; $(INSTALL_SCRIPT) $(PKGINDEX_TCL) $(DESTDIR)$(pkglibdir) install-doc: @echo "Installing html documentation in $(DESTDIR)$(pkglibdir)/htmldoc" @for i in $(srcdir)/BWman/*.html ; do \ $(INSTALL_SCRIPT) $$i $(DESTDIR)$(pkglibdir)/htmldoc ; \ done; installdirs: $(mkinstalldirs) $(DESTDIR)$(pkglibdir) $(mkinstalldirs) $(DESTDIR)$(pkglibdir)/lang $(mkinstalldirs) $(DESTDIR)$(pkglibdir)/images $(mkinstalldirs) $(DESTDIR)$(pkglibdir)/htmldoc clean: -test -z "$(BINARIES)" || rm -f $(BINARIES) -rm -f *.o core *.core -rm -f *.$(OBJEXT) -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean: clean -rm -f *.tab.c -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* -rm -f config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status #config.status: $(srcdir)/configure # $(SHELL) ./config.status --recheck #$(srcdir)/configure: $(srcdir)/configure.in # cd $(srcdir) && $(AUTOCONF) -l $(srcdir)/../../../sampleextension .PHONY: all binaries clean depend distclean doc install installdirs \ libraries test # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 | BWidget ToolKit 1.7.0 December 2003 Copyright (c) 1998-1999 UNIFIX. Copyright (c) 2001-2002 ActiveState Corp. See the file LICENSE.txt for license info (uses Tcl's BSD-style license). -------------------------------------------------------------------------- WHAT IS BWIDGET ? The BWidget Toolkit is a high-level Widget 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 Widgets), but the concept is radically different because everything is pure Tcl/Tk. No platform dependencies, and no compiling required. The code is 100% Pure Tcl/Tk. The BWidget library was originally developed by UNIFIX Online, and released under both the GNU Public License and the Tcl license. BWidget is now maintained as a community project, hosted by Sourceforge. Scores of fixes and enhancements have been added by community developers. See the ChangeLog file for details. -------------------------------------------------------------------------- WIDGET LIST (1.7) 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-<version>.tar.Z|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-<version>.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-<version> Root directory and BWidget Tcl sources BWman HTML manual pages images images used by BWidget lang Resources for language customization demo Demo sources tests BWidgets test suite -------------------------------------------------------------------------- DOCUMENTATION HTML manual pages are available in the BWman subdirectory. Point to index.html for frame version with tree navigation, or to contents.html for no frame version. -------------------------------------------------------------------------- CONTACTS The BWidget toolkit is maintained on Sourceforge, at http://www.sourceforge.net/projects/tcllib/ |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/aclocal.m4.
> | 1 | builtin(include,config/tcl.m4) |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 549 550 551 552 | # ------------------------------------------------------------------------------ # 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::define ArrowButton arrow DynamicHelp Widget::tkinclude ArrowButton button .c \ include [list \ -borderwidth -bd \ -relief -highlightbackground \ -highlightcolor -highlightthickness -takefocus] Widget::declare ArrowButton [list \ [list -type Enum button 0 [list arrow button]] \ [list -dir Enum top 0 [list top bottom left right]] \ [list -width Int 15 0 "%d >= 0"] \ [list -height Int 15 0 "%d >= 0"] \ [list -ipadx Int 0 0 "%d >= 0"] \ [list -ipady Int 0 0 "%d >= 0"] \ [list -clean Int 2 0 "%d >= 0 && %d <= 2"] \ [list -activeforeground TkResource "" 0 button] \ [list -activebackground TkResource "" 0 button] \ [list -disabledforeground TkResource "" 0 button] \ [list -foreground TkResource "" 0 button] \ [list -background TkResource "" 0 button] \ [list -state TkResource "" 0 button] \ [list -troughcolor TkResource "" 0 scrollbar] \ [list -arrowbd Int 1 0 "%d >= 0 && %d <= 2"] \ [list -arrowrelief Enum raised 0 [list raised sunken]] \ [list -command String "" 0] \ [list -armcommand String "" 0] \ [list -disarmcommand String "" 0] \ [list -repeatdelay Int 0 0 "%d >= 0"] \ [list -repeatinterval Int 0 0 "%d >= 0"] \ [list -fg Synonym -foreground] \ [list -bg Synonym -background] \ ] DynamicHelp::include ArrowButton balloon bind BwArrowButtonC <Enter> {ArrowButton::_enter %W} bind BwArrowButtonC <Leave> {ArrowButton::_leave %W} bind BwArrowButtonC <ButtonPress-1> {ArrowButton::_press %W} bind BwArrowButtonC <ButtonRelease-1> {ArrowButton::_release %W} bind BwArrowButtonC <Key-space> {ArrowButton::invoke %W; break} bind BwArrowButtonC <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 } { # Initialize configuration mappings and parse arguments array set submaps [list ArrowButton [list ] .c [list ]] array set submaps [Widget::parseArgs ArrowButton $args] # Create the class frame (so we can do the option db queries) frame $path -class ArrowButton -borderwidth 0 -highlightthickness 0 Widget::initFromODB ArrowButton $path $submaps(ArrowButton) # Create the canvas with the initial options eval canvas $path.c $submaps(.c) # Compute the width and height of the canvas from the width/height # of the ArrowButton and the borderwidth/hightlightthickness. set w [Widget::getMegawidgetOption $path -width] set h [Widget::getMegawidgetOption $path -height] set bd [Widget::cget $path -borderwidth] set ht [Widget::cget $path -highlightthickness] set pad [expr {2*($bd+$ht)}] $path.c configure -width [expr {$w-$pad}] -height [expr {$h-$pad}] bindtags $path [list $path BwArrowButton [winfo toplevel $path] all] bindtags $path.c [list $path.c BwArrowButtonC [winfo toplevel $path.c] all] pack $path.c -expand yes -fill both DynamicHelp::sethelp $path $path.c 1 set ::ArrowButton::_moved($path) 0 return [Widget::create ArrowButton $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.c configure \ -width [expr {$w-$pad}] -height [expr {$h-$pad}] \ -borderwidth $bd -highlightthickness $ht set ch2 1 } if { $ch2 } { _redraw_whole $path [winfo width $path] [winfo height $path] } else { _redraw_relief $path _redraw_state $path } DynamicHelp::sethelp $path $path.c return $res } # ----------------------------------------------------------------------------- # Command ArrowButton::cget # ----------------------------------------------------------------------------- proc ArrowButton::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command ArrowButton::invoke # ------------------------------------------------------------------------------ proc ArrowButton::invoke { path } { if { ![string equal [winfo class $path] "ArrowButton"] } { set path [winfo parent $path] } if { ![string equal [Widget::getoption $path -state] "disabled"] } { set oldstate [Widget::getoption $path -state] if { [string equal [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 equal [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.c cget -borderwidth] + [$path.c cget -highlightthickness] + 1}] set clean [Widget::getoption $path -clean] if { [string equal $type "arrow"] } { if { [set id [$path.c find withtag rect]] == "" } { $path.c create rectangle $bd $bd [expr {$width-$bd-1}] [expr {$height-$bd-1}] -tags rect } else { $path.c coords $id $bd $bd [expr {$width-$bd-1}] [expr {$height-$bd-1}] } $path.c lower rect set arrbd [Widget::getoption $path -arrowbd] set bd [expr {$bd+$arrbd-1}] } else { $path.c 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 equal $dir "top"] || [string equal $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.c find withtag poly]] == "" } { $path.c create polygon $x0 $y1 $x1 $y1 $xd $y0 -tags poly } else { $path.c coords $id $x0 $y1 $x1 $y1 $xd $y0 } if { [string equal $type "arrow"] } { if { [set id [$path.c find withtag bot]] == "" } { $path.c create line $x0 $y1 $x1 $y1 $xd $y0 -tags bot } else { $path.c coords $id $x0 $y1 $x1 $y1 $xd $y0 } if { [set id [$path.c find withtag top]] == "" } { $path.c create line $x0 $y1 $xd $y0 -tags top } else { $path.c coords $id $x0 $y1 $xd $y0 } $path.c itemconfigure top -width $arrbd $path.c itemconfigure bot -width $arrbd } else { $path.c delete top $path.c delete bot } } bottom { set xd [expr {($x0+$x1)/2}] if { [set id [$path.c find withtag poly]] == "" } { $path.c create polygon $x1 $y0 $x0 $y0 $xd $y1 -tags poly } else { $path.c coords $id $x1 $y0 $x0 $y0 $xd $y1 } if { [string equal $type "arrow"] } { if { [set id [$path.c find withtag top]] == "" } { $path.c create line $x1 $y0 $x0 $y0 $xd $y1 -tags top } else { $path.c coords $id $x1 $y0 $x0 $y0 $xd $y1 } if { [set id [$path.c find withtag bot]] == "" } { $path.c create line $x1 $y0 $xd $y1 -tags bot } else { $path.c coords $id $x1 $y0 $xd $y1 } $path.c itemconfigure top -width $arrbd $path.c itemconfigure bot -width $arrbd } else { $path.c delete top $path.c delete bot } } left { set yd [expr {($y0+$y1)/2}] if { [set id [$path.c find withtag poly]] == "" } { $path.c create polygon $x1 $y0 $x1 $y1 $x0 $yd -tags poly } else { $path.c coords $id $x1 $y0 $x1 $y1 $x0 $yd } if { [string equal $type "arrow"] } { if { [set id [$path.c find withtag bot]] == "" } { $path.c create line $x1 $y0 $x1 $y1 $x0 $yd -tags bot } else { $path.c coords $id $x1 $y0 $x1 $y1 $x0 $yd } if { [set id [$path.c find withtag top]] == "" } { $path.c create line $x1 $y0 $x0 $yd -tags top } else { $path.c coords $id $x1 $y0 $x0 $yd } $path.c itemconfigure top -width $arrbd $path.c itemconfigure bot -width $arrbd } else { $path.c delete top $path.c delete bot } } right { set yd [expr {($y0+$y1)/2}] if { [set id [$path.c find withtag poly]] == "" } { $path.c create polygon $x0 $y1 $x0 $y0 $x1 $yd -tags poly } else { $path.c coords $id $x0 $y1 $x0 $y0 $x1 $yd } if { [string equal $type "arrow"] } { if { [set id [$path.c find withtag top]] == "" } { $path.c create line $x0 $y1 $x0 $y0 $x1 $yd -tags top } else { $path.c coords $id $x0 $y1 $x0 $y0 $x1 $yd } if { [set id [$path.c find withtag bot]] == "" } { $path.c create line $x0 $y1 $x1 $yd -tags bot } else { $path.c coords $id $x0 $y1 $x1 $yd } $path.c itemconfigure top -width $arrbd $path.c itemconfigure bot -width $arrbd } else { $path.c delete top $path.c delete bot } } } } # ------------------------------------------------------------------------------ # Command ArrowButton::_redraw_state # ------------------------------------------------------------------------------ proc ArrowButton::_redraw_state { path } { set state [Widget::getoption $path -state] if { [string equal [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.c configure -background [Widget::getoption $path $bg] $path.c 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.c configure -background [Widget::getoption $path -background] $path.c itemconfigure rect -fill $thrc -outline $thrc $path.c itemconfigure poly -fill $bg -outline $bg -stipple $stipple } } # ------------------------------------------------------------------------------ # Command ArrowButton::_redraw_relief # ------------------------------------------------------------------------------ proc ArrowButton::_redraw_relief { path } { variable _moved if { [string equal [Widget::getoption $path -type] "button"] } { if { [string equal [Widget::getoption $path -relief] "sunken"] } { if { !$_moved($path) } { $path.c move poly 1 1 set _moved($path) 1 } } else { if { $_moved($path) } { $path.c 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.c itemconfigure top -fill $top $path.c 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::_enter # ------------------------------------------------------------------------------ proc ArrowButton::_enter { path } { variable _grab set path [winfo parent $path] set _grab(current) $path if { ![string equal [Widget::getoption $path -state] "disabled"] } { set _grab(oldstate) [Widget::getoption $path -state] configure $path -state active if { $_grab(pressed) == $path } { if { [string equal [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 path [winfo parent $path] set _grab(current) "" if { ![string equal [Widget::getoption $path -state] "disabled"] } { configure $path -state $_grab(oldstate) if { $_grab(pressed) == $path } { if { [string equal [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 set path [winfo parent $path] if { ![string equal [Widget::getoption $path -state] "disabled"] } { set _grab(pressed) $path if { [string equal [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 set path [winfo parent $path] if { $_grab(pressed) == $path } { set _grab(pressed) "" if { [string equal [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 equal [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 equal [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" } } # ------------------------------------------------------------------------------ # Command ArrowButton::_destroy # ------------------------------------------------------------------------------ proc ArrowButton::_destroy { path } { variable _moved Widget::destroy $path unset _moved($path) } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 93 94 | # ------------------------------------------------------------------------------ # bitmap.tcl # This file is part of Unifix BWidget Toolkit # $Id: bitmap.tcl,v 1.1 2004/12/24 16:32:01 jepler Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - Bitmap::get # - Bitmap::_init # ---------------------------------------------------------------------------- namespace eval Bitmap { Widget::define Bitmap bitmap -classonly 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 equal $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 equal $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 $::BWIDGET::LIBRARY images]] set supp [image types] foreach {type ext} $_types { if { [lsearch $supp $type] != -1} { set _bmp($ext) $type } } } Bitmap::_init |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 | # ---------------------------------------------------------------------------- # 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::define Button button DynamicHelp set remove [list -command -relief -text -textvariable -underline -state] if {[info tclversion] > 8.3} { lappend remove -repeatdelay -repeatinterval } Widget::tkinclude Button button :cmd remove $remove Widget::declare Button { {-name String "" 0} {-text String "" 0} {-textvariable String "" 0} {-underline Int -1 0 "%d >= -1"} {-armcommand String "" 0} {-disarmcommand String "" 0} {-command String "" 0} {-state TkResource "" 0 button} {-repeatdelay Int 0 0 "%d >= 0"} {-repeatinterval Int 0 0 "%d >= 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} } # ---------------------------------------------------------------------------- # Command Button::create # ---------------------------------------------------------------------------- proc Button::create { path args } { array set maps [list Button {} :cmd {}] array set maps [Widget::parseArgs Button $args] eval [concat [list button $path] $maps(:cmd)] Widget::initFromODB Button $path $maps(Button) # Do some extra configuration on the button set relief [Widget::getMegawidgetOption $path -relief] if { [string equal $relief "link"] } { set relief "flat" } set var [Widget::getMegawidgetOption $path -textvariable] set st [Widget::getMegawidgetOption $path -state] if { ![string length $var] } { set desc [BWidget::getname [Widget::getMegawidgetOption $path -name]] if { [llength $desc] } { set text [lindex $desc 0] set under [lindex $desc 1] Widget::configure $path [list -text $text] Widget::configure $path [list -underline $under] } else { set text [Widget::getMegawidgetOption $path -text] set under [Widget::getMegawidgetOption $path -underline] } } else { set under -1 set text "" Widget::configure $path [list -underline $under] } $path configure -relief $relief -text $text -underline $under \ -textvariable $var -state $st bindtags $path [list $path BwButton [winfo toplevel $path] all] set accel1 [string tolower [string index $text $under]] set accel2 [string toupper $accel1] if { $accel1 != "" } { bind [winfo toplevel $path] <Alt-$accel1> [list Button::invoke $path] bind [winfo toplevel $path] <Alt-$accel2> [list Button::invoke $path] } DynamicHelp::sethelp $path $path 1 return [Widget::create Button $path] } # ---------------------------------------------------------------------------- # Command Button::configure # ---------------------------------------------------------------------------- proc Button::configure { path args } { set oldunder [$path:cmd cget -underline] if { $oldunder != -1 } { set oldaccel1 [string tolower [string index [$path:cmd cget -text] $oldunder]] set oldaccel2 [string toupper $oldaccel1] } else { set oldaccel1 "" set oldaccel2 "" } set res [Widget::configure $path $args] # Extract all the modified bits we're interested in foreach {cr cs cv cn ct cu} [Widget::hasChangedX $path \ -relief -state -textvariable -name -text -underline] break if { $cr || $cs } { set relief [Widget::cget $path -relief] set state [Widget::cget $path -state] if { [string equal $relief "link"] } { if { [string equal $state "active"] } { set relief "raised" } else { set relief "flat" } } $path:cmd configure -relief $relief -state $state } if { $cv || $cn || $ct || $cu } { set var [Widget::cget $path -textvariable] set text [Widget::cget $path -text] set under [Widget::cget $path -underline] if { ![string length $var] } { set desc [BWidget::getname [Widget::cget $path -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] if { $oldaccel1 != "" } { bind $top <Alt-$oldaccel1> {} bind $top <Alt-$oldaccel2> {} } set accel1 [string tolower [string index $text $under]] set accel2 [string toupper $accel1] if { $accel1 != "" } { bind $top <Alt-$accel1> [list Button::invoke $path] bind $top <Alt-$accel2> [list Button::invoke $path] } $path:cmd configure -text $text -underline $under -textvariable $var } DynamicHelp::sethelp $path $path set res } # ---------------------------------------------------------------------------- # Command Button::cget # ---------------------------------------------------------------------------- proc Button::cget { path option } { Widget::cget $path $option } # ---------------------------------------------------------------------------- # Command Button::invoke # ---------------------------------------------------------------------------- proc Button::invoke { path } { if { ![string equal [$path:cmd cget -state] "disabled"] } { $path:cmd configure -state active -relief sunken update idletasks set cmd [Widget::getMegawidgetOption $path -armcommand] if { $cmd != "" } { uplevel \#0 $cmd } after 100 set relief [Widget::getMegawidgetOption $path -relief] if { [string equal $relief "link"] } { set relief flat } $path:cmd configure \ -state [Widget::getMegawidgetOption $path -state] \ -relief $relief set cmd [Widget::getMegawidgetOption $path -disarmcommand] if { $cmd != "" } { uplevel \#0 $cmd } set cmd [Widget::getMegawidgetOption $path -command] if { $cmd != "" } { uplevel \#0 $cmd } } } # ---------------------------------------------------------------------------- # Command Button::_enter # ---------------------------------------------------------------------------- proc Button::_enter { path } { variable _current variable _pressed set _current $path if { ![string equal [$path:cmd cget -state] "disabled"] } { $path:cmd configure -state active if { $_pressed == $path } { $path:cmd configure -relief sunken } elseif { [string equal [Widget::cget $path -relief] "link"] } { $path:cmd configure -relief raised } } } # ---------------------------------------------------------------------------- # Command Button::_leave # ---------------------------------------------------------------------------- proc Button::_leave { path } { variable _current variable _pressed set _current "" if { ![string equal [$path:cmd cget -state] "disabled"] } { $path:cmd configure -state [Widget::cget $path -state] set relief [Widget::cget $path -relief] if { $_pressed == $path } { if { [string equal $relief "link"] } { set relief raised } $path:cmd configure -relief $relief } elseif { [string equal $relief "link"] } { $path:cmd configure -relief flat } } } # ---------------------------------------------------------------------------- # Command Button::_press # ---------------------------------------------------------------------------- proc Button::_press { path } { variable _pressed if { ![string equal [$path:cmd cget -state] "disabled"] } { set _pressed $path $path:cmd configure -relief sunken set cmd [Widget::getMegawidgetOption $path -armcommand] if { $cmd != "" } { uplevel \#0 $cmd set repeatdelay [Widget::getMegawidgetOption $path -repeatdelay] set repeatint [Widget::getMegawidgetOption $path -repeatinterval] if { $repeatdelay > 0 } { after $repeatdelay "Button::_repeat $path" } elseif { $repeatint > 0 } { after $repeatint "Button::_repeat $path" } } } } # ---------------------------------------------------------------------------- # Command Button::_release # ---------------------------------------------------------------------------- proc Button::_release { path } { variable _current variable _pressed if { $_pressed == $path } { set _pressed "" set relief [Widget::getMegawidgetOption $path -relief] after cancel "Button::_repeat $path" if { [string equal $relief "link"] } { set relief raised } $path:cmd configure -relief $relief set cmd [Widget::getMegawidgetOption $path -disarmcommand] if { $cmd != "" } { uplevel \#0 $cmd } if { $_current == $path && ![string equal [$path:cmd cget -state] "disabled"] && \ [set cmd [Widget::getMegawidgetOption $path -command]] != "" } { uplevel \#0 $cmd } } } # ---------------------------------------------------------------------------- # Command Button::_repeat # ---------------------------------------------------------------------------- proc Button::_repeat { path } { variable _current variable _pressed if { $_current == $path && $_pressed == $path && ![string equal [$path:cmd cget -state] "disabled"] && [set cmd [Widget::getMegawidgetOption $path -armcommand]] != "" } { uplevel \#0 $cmd } if { $_pressed == $path && ([set delay [Widget::getMegawidgetOption $path -repeatinterval]] >0 || [set delay [Widget::getMegawidgetOption $path -repeatdelay]] > 0) } { after $delay "Button::_repeat $path" } } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | # ---------------------------------------------------------------------------- # 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 { Widget::define ButtonBox buttonbox Button Widget::declare ButtonBox { {-background TkResource "" 0 frame} {-orient Enum horizontal 1 {horizontal vertical}} {-state Enum "normal" 0 {normal disabled}} {-homogeneous Boolean 1 1} {-spacing Int 10 0 "%d >= 0"} {-padx TkResource "" 0 button} {-pady TkResource "" 0 button} {-default Int -1 0 "%d >= -1"} {-bg Synonym -background} } Widget::addmap ButtonBox "" :cmd {-background {}} bind ButtonBox <Destroy> [list ButtonBox::_destroy %W] } # ---------------------------------------------------------------------------- # Command ButtonBox::create # ---------------------------------------------------------------------------- proc ButtonBox::create { path args } { Widget::init ButtonBox $path $args variable $path upvar 0 $path data eval [list frame $path] [Widget::subcget $path :cmd] \ [list -class ButtonBox -takefocus 0 -highlightthickness 0] # For 8.4+ we don't want to inherit the padding catch {$path configure -padx 0 -pady 0} set data(max) 0 set data(nbuttons) 0 set data(buttons) [list] set data(default) [Widget::getoption $path -default] return [Widget::create ButtonBox $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) } } if {[Widget::hasChanged $path -state val]} { foreach i $data(buttons) { $path.b$i configure -state $val } } return $res } # ---------------------------------------------------------------------------- # Command ButtonBox::cget # ---------------------------------------------------------------------------- proc ButtonBox::cget { path option } { return [Widget::cget $path $option] } # ---------------------------------------------------------------------------- # Command ButtonBox::add # ---------------------------------------------------------------------------- proc ButtonBox::add { path args } { return [eval insert $path end $args] } proc ButtonBox::insert { path idx args } { variable $path upvar 0 $path data set but $path.b$data(nbuttons) set spacing [Widget::getoption $path -spacing] ## Save the current spacing setting for this button. Buttons ## appended to the end of the box have their spacing applied ## to their left while all other have their spacing applied ## to their right. if {$idx == "end"} { set data(spacing,$data(nbuttons)) [list left $spacing] lappend data(buttons) $data(nbuttons) } else { set data(spacing,$data(nbuttons)) [list right $spacing] set data(buttons) [linsert $data(buttons) $idx $data(nbuttons)] } if { $data(nbuttons) == $data(default) } { set style active } elseif { $data(default) == -1 } { set style disabled } else { set style normal } array set flags $args set tags "" if { [info exists flags(-tags)] } { set tags $flags(-tags) unset flags(-tags) set args [array get flags] } eval [list Button::create $but \ -background [Widget::getoption $path -background]\ -padx [Widget::getoption $path -padx] \ -pady [Widget::getoption $path -pady]] \ $args [list -default $style] # ericm@scriptics.com: set up tags, just like the menu items foreach tag $tags { lappend data(tags,$tag) $but if { ![info exists data(tagstate,$tag)] } { set data(tagstate,$tag) 0 } } set data(buttontags,$but) $tags # ericm@scriptics.com _redraw $path incr data(nbuttons) return $but } proc ButtonBox::delete { path idx } { variable $path upvar 0 $path data set i [lindex $data(buttons) $idx] set data(buttons) [lreplace $data(buttons) $idx $idx] destroy $path.b$i } # ButtonBox::setbuttonstate -- # # Set the state of a given button tag. If this makes any buttons # enable-able (ie, all of their tags are TRUE), enable them. # # Arguments: # path the button box widget name # tag the tag to modify # state the new state of $tag (0 or 1) # # Results: # None. proc ButtonBox::setbuttonstate {path tag state} { variable $path upvar 0 $path data # First see if this is a real tag if { [info exists data(tagstate,$tag)] } { set data(tagstate,$tag) $state foreach but $data(tags,$tag) { set expression "1" foreach buttontag $data(buttontags,$but) { append expression " && $data(tagstate,$buttontag)" } if { [expr $expression] } { set state normal } else { set state disabled } $but configure -state $state } } return } # ButtonBox::getbuttonstate -- # # Retrieve the state of a given button tag. # # Arguments: # path the button box widget name # tag the tag to modify # # Results: # None. proc ButtonBox::getbuttonstate {path tag} { variable $path upvar 0 $path data # First see if this is a real tag if { [info exists data(tagstate,$tag)] } { return $data(tagstate,$tag) } else { error "unknown tag $tag" } } # ---------------------------------------------------------------------------- # 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 [list 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 } { variable $path upvar 0 $path data set n [expr {$data(nbuttons) - 1}] if {[string equal $index "default"]} { set res [Widget::getoption $path -default] } elseif {$index == "end" || $index == "last"} { set res $n } elseif {![string is integer $index]} { ## It's not an integer. Search the text of each button ## in the box and return the index that matches. foreach i $data(buttons) { set w $path.b$i lappend text [$w cget -text] lappend names [$w cget -name] } set res [lsearch -exact [concat $names $text] $index] } else { set res $index if {$index > $n} { set res $n } } return $res } # ButtonBox::gettags -- # # Return a list of all the tags on all the buttons in a buttonbox. # # Arguments: # path the buttonbox to query. # # Results: # taglist a list of tags on the buttons in the buttonbox proc ButtonBox::gettags {path} { upvar ::ButtonBox::$path data set taglist {} foreach tag [array names data "tags,*"] { lappend taglist [string range $tag 5 end] } return $taglist } # ---------------------------------------------------------------------------- # Command ButtonBox::_redraw # ---------------------------------------------------------------------------- proc ButtonBox::_redraw { path } { variable $path upvar 0 $path data Widget::getVariable $path buttons ## We re-grid the buttons from left-to-right. As we go through ## each button, we check its spacing and which direction the ## spacing applies to. Once spacing has been applied to an index, ## it is not changed. This means spacing takes precedence from ## left-to-right. set idx 0 set idxs [list] foreach i $data(buttons) { set dir [lindex $data(spacing,$i) 0] set spacing [lindex $data(spacing,$i) 1] set but $path.b$i if {[string equal [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) } { 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 } set col [expr {$idx - 1}] if {[string equal $dir "right"]} { set col [expr {$idx + 1}] } if {$col > 0 && [lsearch $idxs $col] < 0} { lappend idxs $col grid columnconfigure $path $col -minsize $spacing } } else { grid $but -column 0 -row $idx -sticky nsew grid rowconfigure $path $idx -weight 0 set row [expr {$idx - 1}] if {[string equal $dir "right"]} { set row [expr {$idx + 1}] } if {$row > 0 && [lsearch $idxs $row] < 0} { lappend idxs $row grid rowconfigure $path $row -minsize $spacing } } incr idx 2 } } # ---------------------------------------------------------------------------- # Command ButtonBox::_destroy # ---------------------------------------------------------------------------- proc ButtonBox::_destroy { path } { variable $path upvar 0 $path data Widget::destroy $path unset data } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | namespace eval SelectColor { Widget::define SelectColor color Dialog Widget::declare SelectColor { {-title String "Select a color" 0} {-parent String "" 0} {-color TkResource "" 0 {label -background}} {-type Enum "dialog" 1 {dialog popup}} {-placement String "center" 1} } variable _baseColors { \#0000ff \#00ff00 \#00ffff \#ff0000 \#ff00ff \#ffff00 \#000099 \#009900 \#009999 \#990000 \#990099 \#999900 \#000000 \#333333 \#666666 \#999999 \#cccccc \#ffffff } variable _userColors { \#ffffff \#ffffff \#ffffff \#ffffff \#ffffff \#ffffff \#ffffff \#ffffff \#ffffff \#ffffff \#ffffff } if {[string equal $::tcl_platform(platform) "unix"]} { set useTkDialogue 0 } else { set useTkDialogue 1 } variable _selectype variable _selection variable _wcolor variable _image variable _hsv } proc SelectColor::create { path args } { Widget::init SelectColor $path $args set type [Widget::cget $path -type] switch -- [Widget::cget $path -type] { "dialog" { return [eval [list SelectColor::dialog $path] $args] } "popup" { set list [list at center left right above below] set placement [Widget::cget $path -placement] set where [lindex $placement 0] if {[lsearch $list $where] < 0} { return -code error \ [BWidget::badOptionString placement $placement $list] } ## If they specified a parent and didn't pass a second argument ## in the placement, set the placement relative to the parent. set parent [Widget::cget $path -parent] if {[string length $parent]} { if {[llength $placement] == 1} { lappend placement $parent } } return [eval [list SelectColor::menu $path $placement] $args] } } } proc SelectColor::menu {path placement args} { variable _baseColors variable _userColors variable _wcolor variable _selectype variable _selection Widget::init SelectColor $path $args set top [::menu $path] wm withdraw $top wm transient $top [winfo toplevel [winfo parent $top]] set frame [frame $top.frame \ -highlightthickness 0 \ -relief raised -borderwidth 2] set col 0 set row 0 set count 0 set colors [concat $_baseColors $_userColors] foreach color $colors { set f [frame $frame.c$count \ -highlightthickness 1 \ -highlightcolor white \ -relief solid -borderwidth 1 \ -width 16 -height 16 -background $color] bind $f <ButtonPress-1> [list set SelectColor::_selection $count] bind $f <Enter> {focus %W} grid $f -column $col -row $row -padx 1 -pady 1 bindtags $f $f incr count if {[incr col] == 6 } { set col 0 incr row } } set f [label $frame.c$count \ -highlightthickness 1 \ -highlightcolor white \ -relief flat -borderwidth 0 \ -width 16 -height 16 -image [Bitmap::get palette]] grid $f -column $col -row $row -padx 1 -pady 1 bind $f <ButtonPress-1> [list set SelectColor::_selection $count] bind $f <Enter> {focus %W} pack $frame bind $frame <ButtonPress-1> {set SelectColor::_selection -1} bind $frame <FocusOut> {set SelectColor::_selection -2} eval [list BWidget::place $top 0 0] $placement wm deiconify $top raise $top if {$::tcl_platform(platform) == "unix"} { tkwait visibility $top update } focus -force $frame BWidget::grab set $frame tkwait variable SelectColor::_selection update BWidget::grab release $frame destroy $top update Widget::destroy $top if {$_selection == $count} { return [eval [list dialog $path] $args] } else { return [lindex $colors $_selection] } } proc SelectColor::dialog {path args} { variable _baseColors variable _userColors variable _widget variable _selection variable _image variable _hsv Widget::init SelectColor $path:SelectColor $args set top [Dialog::create $path \ -title [Widget::cget $path:SelectColor -title] \ -parent [Widget::cget $path:SelectColor -parent] \ -separator 1 -default 0 -cancel 1] wm resizable $top 0 0 set dlgf [$top getframe] set fg [frame $dlgf.fg] set desc [list \ base _baseColors "Base colors" \ user _userColors "User colors"] set count 0 foreach {type varcol defTitle} $desc { set col 0 set lin 0 set title [lindex [BWidget::getname "${type}Colors"] 0] if {![string length $title]} { set title $defTitle } set titf [TitleFrame $fg.$type -text $title] set subf [$titf getframe] foreach color [set $varcol] { set fround [frame $fg.round$count \ -highlightthickness 1 \ -relief sunken -borderwidth 2] set fcolor [frame $fg.color$count -width 16 -height 12 \ -highlightthickness 0 \ -relief flat -borderwidth 0 \ -background $color] pack $fcolor -in $fround grid $fround -in $subf -row $lin -column $col -padx 1 -pady 1 bind $fround <ButtonPress-1> [list SelectColor::_select_rgb $count] bind $fcolor <ButtonPress-1> [list SelectColor::_select_rgb $count] bind $fround <Double-1> \ "SelectColor::_select_rgb [list $count]; [list $top] invoke 0" bind $fcolor <Double-1> \ "SelectColor::_select_rgb [list $count]; [list $top] invoke 0" incr count if {[incr col] == 6} { incr lin set col 0 } } pack $titf -anchor w -pady 2 } set fround [frame $fg.round \ -highlightthickness 0 \ -relief sunken -borderwidth 2] set fcolor [frame $fg.color \ -width 50 \ -highlightthickness 0 \ -relief flat -borderwidth 0] pack $fcolor -in $fround -fill y -expand yes pack $fround -anchor e -pady 2 -fill y -expand yes set fd [frame $dlgf.fd] set f1 [frame $fd.f1 -relief sunken -borderwidth 2] set f2 [frame $fd.f2 -relief sunken -borderwidth 2] set c1 [canvas $f1.c -width 200 -height 200 -bd 0 -highlightthickness 0] set c2 [canvas $f2.c -width 15 -height 200 -bd 0 -highlightthickness 0] for {set val 0} {$val < 40} {incr val} { $c2 create rectangle 0 [expr {5*$val}] 15 [expr {5*$val+5}] -tags val[expr {39-$val}] } $c2 create polygon 0 0 10 5 0 10 -fill black -outline white -tags target pack $c1 $c2 pack $f1 $f2 -side left -padx 10 -anchor n pack $fg $fd -side left -anchor n -fill y bind $c1 <ButtonPress-1> [list SelectColor::_select_hue_sat %x %y] bind $c1 <B1-Motion> [list SelectColor::_select_hue_sat %x %y] bind $c2 <ButtonPress-1> [list SelectColor::_select_value %x %y] bind $c2 <B1-Motion> [list SelectColor::_select_value %x %y] if {![info exists _image] || [catch {image type $_image}]} { set _image [image create photo -width 200 -height 200] for {set x 0} {$x < 200} {incr x 4} { for {set y 0} {$y < 200} {incr y 4} { $_image put \ [eval [list format "\#%04x%04x%04x"] \ [hsvToRgb [expr {$x/196.0}] [expr {(196-$y)/196.0}] 0.85]] \ -to $x $y [expr {$x+4}] [expr {$y+4}] } } } $c1 create image 0 0 -anchor nw -image $_image $c1 create bitmap 0 0 \ -bitmap @[file join $::BWIDGET::LIBRARY "images" "target.xbm"] \ -anchor nw -tags target set _selection -1 set _widget(fcolor) $fg set _widget(chs) $c1 set _widget(cv) $c2 set rgb [winfo rgb $path [Widget::cget $path:SelectColor -color]] set _hsv [eval rgbToHsv $rgb] _set_rgb [eval format "\#%04x%04x%04x" $rgb] _set_hue_sat [lindex $_hsv 0] [lindex $_hsv 1] _set_value [lindex $_hsv 2] $top add -name ok $top add -name cancel set res [$top draw] if {$res == 0} { set color [$fg.color cget -background] } else { set color "" } destroy $top return $color } proc SelectColor::setcolor { idx color } { variable _userColors set _userColors [lreplace $_userColors $idx $idx $color] } proc SelectColor::_select_rgb {count} { variable _baseColors variable _userColors variable _selection variable _widget variable _hsv set frame $_widget(fcolor) if {$_selection >= 0} { $frame.round$_selection configure \ -relief sunken -highlightthickness 1 -borderwidth 2 } $frame.round$count configure \ -relief flat -highlightthickness 2 -borderwidth 1 focus $frame.round$count set _selection $count set bg [$frame.color$count cget -background] set user [expr {$_selection-[llength $_baseColors]}] if {$user >= 0 && [string equal \ [winfo rgb $frame.color$_selection $bg] \ [winfo rgb $frame.color$_selection white]]} { set bg [$frame.color cget -bg] $frame.color$_selection configure -background $bg set _userColors [lreplace $_userColors $user $user $bg] } else { set _hsv [eval rgbToHsv [winfo rgb $frame.color$count $bg]] _set_hue_sat [lindex $_hsv 0] [lindex $_hsv 1] _set_value [lindex $_hsv 2] $frame.color configure -background $bg } } proc SelectColor::_set_rgb {rgb} { variable _selection variable _baseColors variable _userColors variable _widget set frame $_widget(fcolor) $frame.color configure -background $rgb set user [expr {$_selection-[llength $_baseColors]}] if {$user >= 0} { $frame.color$_selection configure -background $rgb set _userColors [lreplace $_userColors $user $user $rgb] } } proc SelectColor::_select_hue_sat {x y} { variable _widget variable _hsv if {$x < 0} { set x 0 } elseif {$x > 200} { set x 200 } if {$y < 0 } { set y 0 } elseif {$y > 200} { set y 200 } set hue [expr {$x/200.0}] set sat [expr {(200-$y)/200.0}] set _hsv [lreplace $_hsv 0 1 $hue $sat] $_widget(chs) coords target [expr {$x-9}] [expr {$y-9}] _draw_values $hue $sat _set_rgb [eval [list format "\#%04x%04x%04x"] [eval [list hsvToRgb] $_hsv]] } proc SelectColor::_set_hue_sat {hue sat} { variable _widget set x [expr {$hue*200-9}] set y [expr {(1-$sat)*200-9}] $_widget(chs) coords target $x $y _draw_values $hue $sat } proc SelectColor::_select_value {x y} { variable _widget variable _hsv if {$y < 0} { set y 0 } elseif {$y > 200} { set y 200 } $_widget(cv) coords target 0 [expr {$y-5}] 10 $y 0 [expr {$y+5}] set _hsv [lreplace $_hsv 2 2 [expr {(200-$y)/200.0}]] _set_rgb [eval [list format "\#%04x%04x%04x"] [eval [list hsvToRgb] $_hsv]] } proc SelectColor::_draw_values {hue sat} { variable _widget for {set val 0} {$val < 40} {incr val} { set l [hsvToRgb $hue $sat [expr {$val/39.0}]] set col [eval [list format "\#%04x%04x%04x"] $l] $_widget(cv) itemconfigure val$val -fill $col -outline $col } } proc SelectColor::_set_value {value} { variable _widget set y [expr {int((1-$value)*200)}] $_widget(cv) coords target 0 [expr {$y-5}] 10 $y 0 [expr {$y+5}] } # -- # Taken from tk8.0/demos/tcolor.tcl # -- # The procedure below converts an HSB value to RGB. It takes hue, saturation, # and value components (floating-point, 0-1.0) as arguments, and returns a # list containing RGB components (integers, 0-65535) as result. The code # here is a copy of the code on page 616 of "Fundamentals of Interactive # Computer Graphics" by Foley and Van Dam. proc SelectColor::hsvToRgb {hue sat val} { set v [expr {round(65535.0*$val)}] if {$sat == 0} { return [list $v $v $v] } else { set hue [expr {$hue*6.0}] if {$hue >= 6.0} { set hue 0.0 } set i [expr {int($hue)}] set f [expr {$hue-$i}] set p [expr {round(65535.0*$val*(1 - $sat))}] set q [expr {round(65535.0*$val*(1 - ($sat*$f)))}] set t [expr {round(65535.0*$val*(1 - ($sat*(1 - $f))))}] switch $i { 0 {return [list $v $t $p]} 1 {return [list $q $v $p]} 2 {return [list $p $v $t]} 3 {return [list $p $q $v]} 4 {return [list $t $p $v]} 5 {return [list $v $p $q]} } } } # -- # Taken from tk8.0/demos/tcolor.tcl # -- # The procedure below converts an RGB value to HSB. It takes red, green, # and blue components (0-65535) as arguments, and returns a list containing # HSB components (floating-point, 0-1) as result. The code here is a copy # of the code on page 615 of "Fundamentals of Interactive Computer Graphics" # by Foley and Van Dam. proc SelectColor::rgbToHsv {red green blue} { if {$red > $green} { set max $red.0 set min $green.0 } else { set max $green.0 set min $red.0 } if {$blue > $max} { set max $blue.0 } else { if {$blue < $min} { set min $blue.0 } } set range [expr {$max-$min}] if {$max == 0} { set sat 0 } else { set sat [expr {($max-$min)/$max}] } if {$sat == 0} { set hue 0 } else { set rc [expr {($max - $red)/$range}] set gc [expr {($max - $green)/$range}] set bc [expr {($max - $blue)/$range}] if {$red == $max} { set hue [expr {.166667*($bc - $gc)}] } else { if {$green == $max} { set hue [expr {.166667*(2 + $rc - $bc)}] } else { set hue [expr {.166667*(4 + $gc - $rc)}] } } if {$hue < 0.0} { set hue [expr {$hue + 1.0}] } } return [list $hue $sat [expr {$max/65535}]] } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | # ---------------------------------------------------------------------------- # combobox.tcl # This file is part of Unifix BWidget Toolkit # $Id: combobox.tcl,v 1.1 2004/12/24 16:32:01 jepler 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 # ---------------------------------------------------------------------------- # ComboBox uses the 8.3 -listvariable listbox option package require Tk 8.3 namespace eval ComboBox { Widget::define ComboBox combobox ArrowButton Entry ListBox Widget::tkinclude ComboBox frame :cmd \ include {-relief -borderwidth -bd -background} \ initialize {-relief sunken -borderwidth 2} \ Widget::bwinclude ComboBox Entry .e \ remove {-relief -bd -borderwidth -bg} \ rename {-background -entrybg} Widget::declare ComboBox { {-height TkResource 0 0 listbox} {-values String "" 0} {-images String "" 0} {-indents String "" 0} {-modifycmd String "" 0} {-postcommand String "" 0} {-expand Enum none 0 {none tab}} {-autocomplete Boolean 0 0} {-bwlistbox Boolean 0 0} {-listboxwidth Int 0 0} {-hottrack Boolean 0 0} } Widget::addmap ComboBox ArrowButton .a { -background {} -foreground {} -disabledforeground {} -state {} } Widget::syncoptions ComboBox Entry .e {-text {}} ::bind BwComboBox <FocusIn> [list after idle {BWidget::refocus %W %W.e}] ::bind BwComboBox <Destroy> [list Widget::destroy %W] ::bind ListBoxHotTrack <Motion> { %W selection clear 0 end %W activate @%x,%y %W selection set @%x,%y } } # ComboBox::create -- # # Create a combobox widget with the given options. # # Arguments: # path name of the new widget. # args optional arguments to the widget. # # Results: # path name of the new widget. proc ComboBox::create { path args } { array set maps [list ComboBox {} :cmd {} .e {} .a {}] array set maps [Widget::parseArgs ComboBox $args] eval [list frame $path] $maps(:cmd) \ [list -highlightthickness 0 -takefocus 0 -class ComboBox] Widget::initFromODB ComboBox $path $maps(ComboBox) bindtags $path [list $path BwComboBox [winfo toplevel $path] all] set entry [eval [list Entry::create $path.e] $maps(.e) \ [list -relief flat -borderwidth 0 -takefocus 1]] ::bind $path.e <FocusOut> [list $path _focus_out] ::bind $path <<TraverseIn>> [list $path _traverse_in] if {[Widget::cget $path -autocomplete]} { ::bind $path.e <KeyRelease> [list $path _auto_complete %K] } if {[string equal $::tcl_platform(platform) "unix"]} { set ipadx 0 set width 11 } else { set ipadx 2 set width 15 } set height [winfo reqheight $entry] set arrow [eval [list ArrowButton::create $path.a] $maps(.a) \ -width $width -height $height \ -highlightthickness 0 -borderwidth 1 -takefocus 0 \ -dir bottom \ -type button \ -ipadx $ipadx \ -command [list [list ComboBox::_mapliste $path]]] pack $arrow -side right -fill y pack $entry -side left -fill both -expand yes set editable [Widget::cget $path -editable] Entry::configure $path.e -editable $editable if {$editable} { ::bind $entry <ButtonPress-1> [list ComboBox::_unmapliste $path] } else { ::bind $entry <ButtonPress-1> [list ArrowButton::invoke $path.a] if { ![string equal [Widget::cget $path -state] "disabled"] } { Entry::configure $path.e -takefocus 1 } } ::bind $path <ButtonPress-1> [list ComboBox::_unmapliste $path] ::bind $entry <Key-Up> [list ComboBox::_unmapliste $path] ::bind $entry <Key-Down> [list ComboBox::_mapliste $path] ::bind $entry <Control-Up> [list ComboBox::_modify_value $path previous] ::bind $entry <Control-Down> [list ComboBox::_modify_value $path next] ::bind $entry <Control-Prior> [list ComboBox::_modify_value $path first] ::bind $entry <Control-Next> [list ComboBox::_modify_value $path last] if {$editable} { set expand [Widget::cget $path -expand] if {[string equal "tab" $expand]} { # Expand entry value on Tab (from -values) ::bind $entry <Tab> "[list ComboBox::_expand $path]; break" } elseif {[string equal "auto" $expand]} { # Expand entry value anytime (from -values) #::bind $entry <Key> "[list ComboBox::_expand $path]; break" } } ## If we have images, we have to use a BWidget ListBox. set bw [Widget::cget $path -bwlistbox] if {[llength [Widget::cget $path -images]]} { Widget::configure $path [list -bwlistbox 1] } else { Widget::configure $path [list -bwlistbox $bw] } return [Widget::create ComboBox $path] } # ComboBox::configure -- # # Configure subcommand for ComboBox widgets. Works like regular # widget configure command. # # Arguments: # path Name of the ComboBox widget. # args Additional optional arguments: # ?-option? # ?-option value ...? # # Results: # Depends on arguments. If no arguments are given, returns a complete # list of configuration information. If one argument is given, returns # the configuration information for that option. If more than one # argument is given, returns nothing. proc ComboBox::configure { path args } { set res [Widget::configure $path $args] set entry $path.e set list [list -images -values -bwlistbox -hottrack] foreach {ci cv cb ch} [eval Widget::hasChangedX $path $list] { break } if { $ci } { set images [Widget::cget $path -images] if {[llength $images]} { Widget::configure $path [list -bwlistbox 1] } else { Widget::configure $path [list -bwlistbox 0] } } set bw [Widget::cget $path -bwlistbox] ## If the images, bwlistbox, hottrack or values have changed, ## destroy the shell so that it will re-create itself the next ## time around. if { $ci || $cb || $ch || ($bw && $cv) } { destroy $path.shell } set chgedit [Widget::hasChangedX $path -editable] if {$chgedit} { if {[Widget::cget $path -editable]} { ::bind $entry <ButtonPress-1> [list ComboBox::_unmapliste $path] Entry::configure $entry -editable true } else { ::bind $entry <ButtonPress-1> [list ArrowButton::invoke $path.a] Entry::configure $entry -editable false # Make sure that non-editable comboboxes can still be tabbed to. if { ![string equal [Widget::cget $path -state] "disabled"] } { Entry::configure $entry -takefocus 1 } } } if {$chgedit || [Widget::hasChangedX $path -expand]} { # Unset what we may have created. ::bind $entry <Tab> {} if {[Widget::cget $path -editable]} { set expand [Widget::cget $path -expand] if {[string equal "tab" $expand]} { # Expand entry value on Tab (from -values) ::bind $entry <Tab> "[list ComboBox::_expand $path]; break" } elseif {[string equal "auto" $expand]} { # Expand entry value anytime (from -values) #::bind $entry <Key> "[list ComboBox::_expand $path]; break" } } } # if the dropdown listbox is shown, simply force the actual entry # colors into it. If it is not shown, the next time the dropdown # is shown it'll get the actual colors anyway if {[winfo exists $path.shell.listb]} { $path.shell.listb configure \ -bg [Widget::cget $path -entrybg] \ -fg [Widget::cget $path -foreground] \ -selectbackground [Widget::cget $path -selectbackground] \ -selectforeground [Widget::cget $path -selectforeground] } return $res } # ---------------------------------------------------------------------------- # Command ComboBox::cget # ---------------------------------------------------------------------------- proc ComboBox::cget { path option } { return [Widget::cget $path $option] } # ---------------------------------------------------------------------------- # Command ComboBox::setvalue # ---------------------------------------------------------------------------- proc ComboBox::setvalue { path index } { set values [Widget::getMegawidgetOption $path -values] set value [Entry::cget $path.e -text] switch -- $index { next { if { [set idx [lsearch -exact $values $value]] != -1 } { incr idx } else { set idx [lsearch -exact $values "$value*"] } } previous { if { [set idx [lsearch -exact $values $value]] != -1 } { incr idx -1 } else { set idx [lsearch -exact $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 { ![string is integer -strict $idx] } { return -code error "bad index \"$index\"" } } else { return -code error "bad index \"$index\"" } } } if { $idx >= 0 && $idx < [llength $values] } { set newval [lindex $values $idx] Entry::configure $path.e -text $newval return 1 } return 0 } proc ComboBox::icursor { path idx } { return [$path.e icursor $idx] } proc ComboBox::get { path } { return [$path.e get] } # ---------------------------------------------------------------------------- # Command ComboBox::getvalue # ---------------------------------------------------------------------------- proc ComboBox::getvalue { path } { set values [Widget::getMegawidgetOption $path -values] set value [Entry::cget $path.e -text] return [lsearch -exact $values $value] } proc ComboBox::getlistbox { path } { _create_popup $path return $path.shell.listb } # ---------------------------------------------------------------------------- # Command ComboBox::post # ---------------------------------------------------------------------------- proc ComboBox::post { path } { _mapliste $path return } proc ComboBox::unpost { path } { _unmapliste $path return } # ---------------------------------------------------------------------------- # Command ComboBox::bind # ---------------------------------------------------------------------------- proc ComboBox::bind { path args } { return [eval [list ::bind $path.e] $args] } proc ComboBox::insert { path idx args } { upvar #0 [Widget::varForOption $path -values] values if {[Widget::cget $path -bwlistbox]} { set l [$path getlistbox] set i [eval $l insert $idx #auto $args] set text [$l itemcget $i -text] if {$idx == "end"} { lappend values $text } else { set values [linsert $values $idx $text] } } else { set values [eval linsert [list $values] $idx $args] } } # ---------------------------------------------------------------------------- # Command ComboBox::_create_popup # ---------------------------------------------------------------------------- proc ComboBox::_create_popup { path } { set shell $path.shell if {[winfo exists $shell]} { return } set lval [Widget::cget $path -values] set h [Widget::cget $path -height] set bw [Widget::cget $path -bwlistbox] if { $h <= 0 } { set len [llength $lval] if { $len < 3 } { set h 3 } elseif { $len > 10 } { set h 10 } else { set h $len } } if { $::tcl_platform(platform) == "unix" } { set sbwidth 11 } else { set sbwidth 15 } toplevel $shell -relief solid -bd 1 wm withdraw $shell update idletasks wm overrideredirect $shell 1 wm transient $shell [winfo toplevel $path] wm withdraw $shell catch { wm attributes $shell -topmost 1 } set sw [ScrolledWindow $shell.sw -managed 0 -size $sbwidth -ipad 0] if {$bw} { set listb [ListBox $shell.listb \ -relief flat -borderwidth 0 -highlightthickness 0 \ -selectmode single -selectfill 1 -autofocus 0 -height $h \ -font [Widget::cget $path -font] \ -bg [Widget::cget $path -entrybg] \ -fg [Widget::cget $path -foreground] \ -selectbackground [Widget::cget $path -selectbackground] \ -selectforeground [Widget::cget $path -selectforeground]] set values [Widget::cget $path -values] set images [Widget::cget $path -images] foreach value $values image $images { $listb insert end #auto -text $value -image $image } $listb bindText <1> "ComboBox::_select $path" $listb bindImage <1> "ComboBox::_select $path" if {[Widget::cget $path -hottrack]} { $listb bindText <Enter> [list $listb selection set] $listb bindImage <Enter> [list $listb selection set] } } else { set listb [listbox $shell.listb \ -relief flat -borderwidth 0 -highlightthickness 0 \ -exportselection false \ -font [Widget::cget $path -font] \ -height $h \ -bg [Widget::cget $path -entrybg] \ -fg [Widget::cget $path -foreground] \ -selectbackground [Widget::cget $path -selectbackground] \ -selectforeground [Widget::cget $path -selectforeground] \ -listvariable [Widget::varForOption $path -values]] ::bind $listb <ButtonRelease-1> [list ComboBox::_select $path @%x,%y] if {[Widget::cget $path -hottrack]} { bindtags $listb [concat [bindtags $listb] ListBoxHotTrack] } } pack $sw -fill both -expand yes $sw setwidget $listb ::bind $listb <Return> "ComboBox::_select $path \[%W curselection]" ::bind $listb <Escape> [list ComboBox::_unmapliste $path] ::bind $listb <FocusOut> [list ComboBox::_focus_out $path] } proc ComboBox::_recreate_popup { path } { variable background variable foreground set shell $path.shell set lval [Widget::cget $path -values] set h [Widget::cget $path -height] set bw [Widget::cget $path -bwlistbox] if { $h <= 0 } { set len [llength $lval] if { $len < 3 } { set h 3 } elseif { $len > 10 } { set h 10 } else { set h $len } } if { $::tcl_platform(platform) == "unix" } { set sbwidth 11 } else { set sbwidth 15 } _create_popup $path if {![Widget::cget $path -editable]} { if {[info exists background]} { $path.e configure -bg $background $path.e configure -fg $foreground unset background unset foreground } } set listb $shell.listb destroy $shell.sw set sw [ScrolledWindow $shell.sw -managed 0 -size $sbwidth -ipad 0] $listb configure \ -height $h \ -font [Widget::cget $path -font] \ -bg [Widget::cget $path -entrybg] \ -fg [Widget::cget $path -foreground] \ -selectbackground [Widget::cget $path -selectbackground] \ -selectforeground [Widget::cget $path -selectforeground] pack $sw -fill both -expand yes $sw setwidget $listb raise $listb } # ---------------------------------------------------------------------------- # Command ComboBox::_mapliste # ---------------------------------------------------------------------------- proc ComboBox::_mapliste { path } { set listb $path.shell.listb if {[winfo exists $path.shell] && [string equal [wm state $path.shell] "normal"]} { _unmapliste $path return } if { [Widget::cget $path -state] == "disabled" } { return } if { [set cmd [Widget::getMegawidgetOption $path -postcommand]] != "" } { uplevel \#0 $cmd } if { ![llength [Widget::getMegawidgetOption $path -values]] } { return } _recreate_popup $path ArrowButton::configure $path.a -relief sunken update set bw [Widget::cget $path -bwlistbox] $listb selection clear 0 end set values [Widget::getMegawidgetOption $path -values] set curval [Entry::cget $path.e -text] if { [set idx [lsearch -exact $values $curval]] != -1 || [set idx [lsearch -exact $values "$curval*"]] != -1 } { if {$bw} { set idx [$listb items $idx] } else { $listb activate $idx } $listb selection set $idx $listb see $idx } else { set idx 0 if {$bw} { set idx [$listb items 0] } else { $listb activate $idx } $listb selection set $idx $listb see $idx } set width [Widget::cget $path -listboxwidth] if {!$width} { set width [winfo width $path] } BWidget::place $path.shell $width 0 below $path wm deiconify $path.shell raise $path.shell BWidget::focus set $listb BWidget::grab global $path } # ---------------------------------------------------------------------------- # Command ComboBox::_unmapliste # ---------------------------------------------------------------------------- proc ComboBox::_unmapliste { path {refocus 1} } { if {[winfo exists $path.shell] && \ [string equal [wm state $path.shell] "normal"]} { BWidget::grab release $path BWidget::focus release $path.shell.listb $refocus # Update now because otherwise [focus -force...] makes the app hang! if {$refocus} { update focus -force $path.e } wm withdraw $path.shell ArrowButton::configure $path.a -relief raised } } # ---------------------------------------------------------------------------- # Command ComboBox::_select # ---------------------------------------------------------------------------- proc ComboBox::_select { path index } { set index [$path.shell.listb index $index] _unmapliste $path if { $index != -1 } { if { [setvalue $path @$index] } { set cmd [Widget::getMegawidgetOption $path -modifycmd] if { $cmd != "" } { uplevel \#0 $cmd } } } $path.e selection clear $path.e selection range 0 end } # ---------------------------------------------------------------------------- # Command ComboBox::_modify_value # ---------------------------------------------------------------------------- proc ComboBox::_modify_value { path direction } { if { [setvalue $path $direction] } { if { [set cmd [Widget::getMegawidgetOption $path -modifycmd]] != "" } { uplevel \#0 $cmd } } } # ---------------------------------------------------------------------------- # Command ComboBox::_expand # ---------------------------------------------------------------------------- proc ComboBox::_expand {path} { set values [Widget::getMegawidgetOption $path -values] if {![llength $values]} { bell return 0 } set found {} set curval [Entry::cget $path.e -text] set curlen [$path.e index insert] if {$curlen < [string length $curval]} { # we are somewhere in the middle of a string. # if the full value matches some string in the listbox, # reorder values to start matching after that string. set idx [lsearch -exact $values $curval] if {$idx >= 0} { set values [concat [lrange $values [expr {$idx+1}] end] \ [lrange $values 0 $idx]] } } if {$curlen == 0} { set found $values } else { foreach val $values { if {[string equal -length $curlen $curval $val]} { lappend found $val } } } if {[llength $found]} { Entry::configure $path.e -text [lindex $found 0] if {[llength $found] > 1} { set best [_best_match $found [string range $curval 0 $curlen]] set blen [string length $best] $path.e icursor $blen $path.e selection range $blen end } } else { bell } return [llength $found] } # best_match -- # finds the best unique match in a list of names # The extra $e in this argument allows us to limit the innermost loop a # little further. # Arguments: # l list to find best unique match in # e currently best known unique match # Returns: # longest unique match in the list # proc ComboBox::_best_match {l {e {}}} { set ec [lindex $l 0] if {[llength $l]>1} { set e [string length $e]; incr e -1 set ei [string length $ec]; incr ei -1 foreach l $l { while {$ei>=$e && [string first $ec $l]} { set ec [string range $ec 0 [incr ei -1]] } } } return $ec } # possibly faster #proc match {string1 string2} { # set i 1 # while {[string equal -length $i $string1 $string2]} { incr i } # return [string range $string1 0 [expr {$i-2}]] #} #proc matchlist {list} { # set list [lsort $list] # return [match [lindex $list 0] [lindex $list end]] #} # ---------------------------------------------------------------------------- # Command ComboBox::_traverse_in # Called when widget receives keyboard focus due to keyboard traversal. # ---------------------------------------------------------------------------- proc ComboBox::_traverse_in { path } { if {[$path.e selection present] != 1} { # Autohighlight the selection, but not if one existed $path.e selection range 0 end } } # ---------------------------------------------------------------------------- # Command ComboBox::_focus_out # ---------------------------------------------------------------------------- proc ComboBox::_focus_out { path } { if {[focus] == ""} { # we lost focus to some other app, make sure we drop the listbox return [_unmapliste $path 0] } } proc ComboBox::_auto_complete { path key } { ## Anything that is all lowercase is either a letter, number ## or special key we're ok with. Everything else is a ## functional key of some kind. if {[string tolower $key] != $key} { return } set text [string map [list {[} {\[} {]} {\]}] [$path.e get]] if {[string equal $text ""]} { return } set values [Widget::cget $path -values] set x [lsearch $values $text*] if {$x < 0} { return } set idx [$path.e index insert] $path.e configure -text [lindex $values $x] $path.e icursor $idx $path.e select range insert end } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/configure.in.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | AC_INIT(init.tcl) AC_CONFIG_AUX_DIR(config) CONFIGDIR=${srcdir}/config AC_SUBST(CONFIGDIR) PACKAGE=bwidget MAJOR_VERSION=1 MINOR_VERSION=6 PATCHLEVEL= VERSION=${MAJOR_VERSION}.${MINOR_VERSION}${PATCHLEVEL} NODOT_VERSION=${MAJOR_VERSION}${MINOR_VERSION} AC_SUBST(PACKAGE) AC_SUBST(VERSION) eval AC_DEFINE_UNQUOTED(VERSION, "${VERSION}") AC_PROG_INSTALL #-------------------------------------------------------------------- # "cygpath" is used on windows to generate native path names for include # files. # These variables should only be used with the compiler and linker since # they generate native path names. # # Unix tclConfig.sh points SRC_DIR at the top-level directory of # the Tcl sources, while the Windows tclConfig.sh points SRC_DIR at # the win subdirectory. Hence the different usages of SRC_DIR below. # # This must be done before calling SC_PUBLIC_TCL_HEADERS #-------------------------------------------------------------------- case "`uname -s`" in *win32* | *WIN32* | *CYGWIN_NT*|*CYGWIN_98*|*CYGWIN_95*) CYGPATH="cygpath -w" ;; *) CYGPATH=echo ;; esac AC_SUBST(CYGPATH) AC_OUTPUT([Makefile]) |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 204 205 206 207 208 209 210 | #!/bin/sh # The next line is executed by /bin/sh, but not tcl \ exec wish "$0" ${1+"$@"} 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 set pwd [pwd] cd [file dirname [info script]] variable DEMODIR [pwd] cd $pwd foreach script { manager.tcl basic.tcl select.tcl dnd.tcl tree.tcl tmpldlg.tcl } { namespace inscope :: source $DEMODIR/$script } } proc Demo::create { } { 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 { } { variable DEMODIR set top [toplevel .intro -relief raised -borderwidth 2] wm withdraw $top wm overrideredirect $top 1 set ximg [label $top.x -bitmap @$DEMODIR/x1.xbm \ -foreground grey90 -background white] set bwimg [label $ximg.bw -bitmap @$DEMODIR/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 Demo::main {} { variable DEMODIR lappend ::auto_path [file dirname $DEMODIR] namespace inscope :: package require BWidget option add *TitleFrame.l.font {helvetica 11 bold italic} wm withdraw . wm title . "BWidget demo" Demo::create BWidget::place . 0 0 center wm deiconify . raise . focus -force . } Demo::main wm geom . [wm geom .] |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 | 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 \ -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 \ -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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 208 209 210 211 212 213 214 | 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 $::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 but0 [button $parent.but0 \ -text "Select a color " \ -command "DemoDlg::_show_color $parent.but0"] 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 $but0 $but1 $but2 $but3 -side left -padx 5 -anchor w } proc DemoDlg::_show_color {w} { set color [SelectColor::menu $w.color [list below $w] \ -color [$w cget -background]] if {[string length $color]} { $w configure -background $color } } 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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 255 256 257 258 259 260 | 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 { # on windows you can get 100x100+-200+200 [PT] regexp {[0-9]+x[0-9]+([+-]{1,2}[0-9]+)([+-]{1,2}[0-9]+)} \ [wm geom .] global_foo global_w global_h # {}'s left off on purpose. [PT] 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 "."] } { # see above re: windows geometry regexp {[0-9]+x[0-9]+([+-]{1,2}[0-9]+)([+-]{1,2}[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 set w .top toplevel $w wm withdraw $w wm protocol $w WM_DELETE_WINDOW { # don't kill me } wm resizable $w 0 0 wm title $w "Drag rectangle to scroll directory tree" wm transient $w . ScrollView $w.sv -window $tree -fill white -relief sunken -bd 1 \ -width 300 -height 300 pack $w.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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | # ---------------------------------------------------------------------------- # dialog.tcl # This file is part of Unifix BWidget Toolkit # $Id: dialog.tcl,v 1.1 2004/12/24 16:32:01 jepler 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 # ---------------------------------------------------------------------------- # JDC: added -transient and -place flag namespace eval Dialog { Widget::define Dialog dialog ButtonBox Widget::bwinclude Dialog ButtonBox .bbox \ remove {-orient} \ initialize {-spacing 10 -padx 10} Widget::declare Dialog { {-title String "" 0} {-geometry 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 "%d >= -1"} {-parent String "" 0} {-side Enum bottom 1 {bottom left top right}} {-anchor Enum c 1 {n e w s c}} {-class String Dialog 1} {-transient Boolean 1 1} {-place Enum center 0 {none center left right above below}} } Widget::addmap Dialog "" :cmd {-background {}} Widget::addmap Dialog "" .frame {-background {}} bind BwDialog <Destroy> [list Dialog::_destroy %W] variable _widget } # ---------------------------------------------------------------------------- # Command Dialog::create # ---------------------------------------------------------------------------- proc Dialog::create { path args } { global tcl_platform variable _widget array set maps [list Dialog {} .bbox {}] array set maps [Widget::parseArgs Dialog $args] # Check to see if the -class flag was specified set dialogClass "Dialog" array set dialogArgs $maps(Dialog) if { [info exists dialogArgs(-class)] } { set dialogClass $dialogArgs(-class) } if { [string equal $tcl_platform(platform) "unix"] } { set re raised set bd 1 } else { set re flat set bd 0 } toplevel $path -relief $re -borderwidth $bd -class $dialogClass Widget::initFromODB Dialog $path $maps(Dialog) bindtags $path [list $path BwDialog all] wm overrideredirect $path 1 wm title $path [Widget::cget $path -title] set parent [Widget::cget $path -parent] if { ![winfo exists $parent] } { set parent [winfo parent $path] } # JDC: made transient optional if { [Widget::getoption $path -transient] } { wm transient $path [winfo toplevel $parent] } wm withdraw $path set side [Widget::cget $path -side] if { [string equal $side "left"] || [string equal $side "right"] } { set orient vertical } else { set orient horizontal } set bbox [eval [list ButtonBox::create $path.bbox] $maps(.bbox) -orient $orient] set frame [frame $path.frame -relief flat -borderwidth 0] set bg [Widget::cget $path -background] $path configure -background $bg $frame configure -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" return [Widget::create Dialog $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 cmd [list ButtonBox::add $path.bbox \ -command [list Dialog::enddialog $path $_widget($path,nbut)]] set res [eval $cmd $args] incr _widget($path,nbut) return $res } # ---------------------------------------------------------------------------- # Command Dialog::itemconfigure # ---------------------------------------------------------------------------- proc Dialog::itemconfigure { path index args } { return [eval [list 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 ""} {overrideredirect 0} {geometry ""}} { 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 equal $side "left"] || [string equal $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 } set geom [Widget::getMegawidgetOption $path -geometry] if { $geom != "" } { wm geometry $path $geom } if { [string equal $geometry ""] && ($geom == "") } { set place [Widget::getoption $path -place] if { ![string equal $place none] } { if { [winfo exists $parent] } { BWidget::place $path 0 0 $place $parent } else { BWidget::place $path 0 0 $place } } } else { if { $geom != "" } { wm geometry $path $geom } else { wm geometry $path $geometry } } update idletasks wm overrideredirect $path $overrideredirect wm deiconify $path # patch by Bastien Chevreux (bach@mwgdna.com) # As seen on Windows systems *sigh* # When the toplevel is withdrawn, the tkwait command will wait forever. # So, check that we are not withdrawn if {![winfo exists $parent] || \ ([wm state [winfo toplevel $parent]] != "withdrawn")} { tkwait visibility $path } BWidget::focus set $path if { [winfo exists $focus] } { focus -force $focus } else { ButtonBox::setfocus $path.bbox default } if { [set grab [Widget::cget $path -modal]] != "none" } { BWidget::grab $grab $path if {[info exists _widget($path,result)]} { 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 Dialog::enddialog $path -1 BWidget::grab release $path BWidget::focus release $path if {[info exists _widget($path,result)]} { unset _widget($path,result) } unset _widget($path,realized) unset _widget($path,nbut) Widget::destroy $path } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 190 191 192 193 194 195 196 197 | # ------------------------------------------------------------------------------ # dragsite.tcl # This file is part of Unifix BWidget Toolkit # $Id: dragsite.tcl,v 1.1 2004/12/24 16:32:01 jepler 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::define DragSite dragsite -classonly Widget::declare DragSite [list \ [list -dragevent Enum 1 0 [list 1 2 3]] \ [list -draginitcmd String "" 0] \ [list -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 [list \ [list -dragenabled Boolean 0 0] \ [list -draginitcmd String "" 0] \ [list -dragendcmd String "" 0] \ [list -dragtype String $type 0] \ [list -dragevent Enum $event 0 [list 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::getMegawidgetOption .drag$path -dragevent] set initcmd [Widget::getMegawidgetOption .drag$path -draginitcmd] set endcmd [Widget::getMegawidgetOption .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 { ![info exists _state] } { # This is just extra protection. There seem to be # rare cases where the motion comes before the press. return } if { [string equal $_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 equal $type "BITMAP"] || [string equal $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 if {[catch {tkwait visibility $_topw}]} { return } 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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 452 453 454 455 | # ------------------------------------------------------------------------------ # dropsite.tcl # This file is part of Unifix BWidget Toolkit # $Id: dropsite.tcl,v 1.1 2004/12/24 16:32:01 jepler 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::define DropSite dropsite -classonly Widget::declare DropSite [list \ [list -dropovercmd String "" 0] \ [list -dropcmd String "" 0] \ [list -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 $::BWIDGET::LIBRARY "images" "opcopy.xbm"] \ move,img @[file join $::BWIDGET::LIBRARY "images" "opmove.xbm"] \ link,img @[file join $::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 [list \ [list -dropenabled Boolean 0 0] \ [list -dropovercmd String "" 0] \ [list -dropcmd String "" 0] \ [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::getMegawidgetOption .drop$path -dropcmd] set types [Widget::getMegawidgetOption .drop$path -droptypes] set overcmd [Widget::getMegawidgetOption .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 equal $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 equal $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 equal $subop "default"]) } { 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 if {[info exists _dragops]} { 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 equal $_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 equal $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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | # ---------------------------------------------------------------------------- # dynhelp.tcl # This file is part of Unifix BWidget Toolkit # $Id: dynhelp.tcl,v 1.1 2004/12/24 16:32:01 jepler 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 # ---------------------------------------------------------------------------- # JDC: allow variable and ballon help at the same timees namespace eval DynamicHelp { Widget::define DynamicHelp dynhelp -classonly Widget::declare DynamicHelp { {-foreground TkResource black 0 label} {-topbackground TkResource black 0 {label -foreground}} {-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 "%d >= 100 & %d <= 2000"} {-state Enum "normal" 0 {normal disabled}} {-padx TkResource 1 0 label} {-pady TkResource 1 0 label} {-bd Synonym -borderwidth} {-bg Synonym -background} {-fg Synonym -foreground} {-topbg Synonym -topbackground} } proc use {} {} variable _registered variable _canvases variable _top ".help_shell" variable _id "" variable _delay 600 variable _current_balloon "" variable _current_variable "" 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> {DynamicHelp::_unset_help %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> {DynamicHelp::_unset_help %W} bind BwHelpMenu <<MenuSelect>> {DynamicHelp::_menu_info select %W} bind BwHelpMenu <Unmap> {DynamicHelp::_menu_info unmap %W} bind BwHelpMenu <Destroy> {DynamicHelp::_unset_help %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 [list \ [list -helptext String "" 0] \ [list -helpvar String "" 0] \ [list -helptype Enum $type 0 [list balloon variable]] \ ] Widget::declare $class $helpoptions } # ---------------------------------------------------------------------------- # Command DynamicHelp::sethelp # ---------------------------------------------------------------------------- proc DynamicHelp::sethelp { path subpath {force 0}} { foreach {ctype ctext cvar} [Widget::hasChangedX $path \ -helptype -helptext -helpvar] break if { $force || $ctype || $ctext || $cvar } { set htype [Widget::cget $path -helptype] switch $htype { balloon { return [register $subpath balloon \ [Widget::cget $path -helptext]] } variable { return [register $subpath variable \ [Widget::cget $path -helpvar] \ [Widget::cget $path -helptext]] } } return [register $subpath $htype] } } # ---------------------------------------------------------------------------- # Command DynamicHelp::register # # DynamicHelp::register path balloon ?itemOrTag? text # DynamicHelp::register path variable ?itemOrTag? text varName # DynamicHelp::register path menu varName # DynamicHelp::register path menuentry index text # ---------------------------------------------------------------------------- proc DynamicHelp::register { path type args } { variable _registered set len [llength $args] if {$type == "balloon" && $len > 1} { set type canvasBalloon } if {$type == "variable" && $len > 2} { set type canvasVariable } if { ![winfo exists $path] } { _unset_help $path return 0 } switch $type { balloon { set text [lindex $args 0] if {$text == ""} { if {[info exists _registered($path,balloon)]} { unset _registered($path,balloon) } return 0 } _add_balloon $path $text } canvasBalloon { set tagOrItem [lindex $args 0] set text [lindex $args 1] if {$text == ""} { if {[info exists _registered($path,$tagOrItem,balloon)]} { unset _registered($path,$tagOrItem,balloon) } return 0 } _add_canvas_balloon $path $text $tagOrItem } variable { set var [lindex $args 0] set text [lindex $args 1] if {$text == "" || $var == ""} { if {[info exists _registered($path,variable)]} { unset _registered($path,variable) } return 0 } _add_variable $path $text $var } canvasVariable { set tagOrItem [lindex $args 0] set var [lindex $args 1] set text [lindex $args 2] if {$text == "" || $var == ""} { if {[info exists _registered($path,$tagOrItem,variable)]} { unset _registered($path,$tagOrItem,variable) } return 0 } _add_canvas_variable $path $text $var $tagOrItem } menu { set var [lindex $args 0] if {$var == ""} { set cpath [BWidget::clonename $path] if {[winfo exists $cpath]} { set path $cpath } if {[info exists _registered($path)]} { unset _registered($path) } return 0 } _add_menu $path $var } menuentry { set cpath [BWidget::clonename $path] if { [winfo exists $cpath] } { set path $cpath } if {![info exists _registered($path)]} { return 0 } set text [lindex $args 1] set index [lindex $args 0] if {$text == "" || $index == ""} { set idx [lsearch $_registed($path) [list $index *]] set _registered($path) [lreplace $_registered($path) $idx $idx] return 0 } _add_menuentry $path $text $index } default { _unset_help $path return 0 } } return 1 } proc DynamicHelp::add { path args } { variable _registered array set data { -type balloon -text "" -item "" -index -1 -command "" -variable "" } if {[winfo exists $path] && [winfo class $path] == "Menu"} { set data(-type) menu } array set data $args set item $path switch -- $data(-type) { "balloon" { if {$data(-item) != ""} { _add_canvas_balloon $path $data(-text) $data(-item) set item $path,$data(-item) } else { _add_balloon $path $data(-text) } if {$data(-variable) != ""} { set _registered($item,balloonVar) $data(-variable) } } "variable" { set var $data(-variable) if {$data(-item) != ""} { _add_canvas_variable $path $data(-text) $var $data(-item) set item $path,$data(-item) } else { _add_variable $path $data(-text) $var } } "menu" { if {$data(-index) != -1} { set cpath [BWidget::clonename $path] if { [winfo exists $cpath] } { set path $cpath } if {![info exists _registered($path)]} { return 0 } _add_menuentry $path $data(-text) $data(-index) set item $path,$data(-index) } else { _add_menu $path $data(-variable) } } default { return 0 } } if {$data(-command) != ""} {set _registered($item,command) $data(-command)} return 1 } proc DynamicHelp::delete { path } { _unset_help $path } proc DynamicHelp::_add_bind_tag { path tag } { set evt [bindtags $path] set idx [lsearch $evt $tag] set evt [lreplace $evt $idx $idx] lappend evt $tag bindtags $path $evt } proc DynamicHelp::_add_balloon { path text } { variable _registered set _registered($path,balloon) $text _add_bind_tag $path BwHelpBalloon } proc DynamicHelp::_add_canvas_balloon { path text tagOrItem } { variable _canvases variable _registered set _registered($path,$tagOrItem,balloon) $text if {![info exists _canvases($path,balloon)]} { ## This canvas doesn't have the bindings yet. _add_bind_tag $path BwHelpBalloon $path bind BwHelpBalloon <Enter> \ {DynamicHelp::_motion_balloon enter %W %X %Y 1} $path bind BwHelpBalloon <Motion> \ {DynamicHelp::_motion_balloon motion %W %X %Y 1} $path bind BwHelpBalloon <Leave> \ {DynamicHelp::_motion_balloon leave %W %X %Y 1} $path bind BwHelpBalloon <Button> \ {DynamicHelp::_motion_balloon button %W %X %Y 1} set _canvases($path,balloon) 1 } $path addtag BwHelpBalloon withtag $tagOrItem } proc DynamicHelp::_add_variable { path text varName } { variable _registered set _registered($path,variable) [list $varName $text] _add_bind_tag $path BwHelpVariable } proc DynamicHelp::_add_canvas_variable { path text varName tagOrItem } { variable _canvases variable _registered set _registered($path,$tagOrItem,variable) [list $varName $text] if {![info exists _canvases($path,variable)]} { ## This canvas doesn't have the bindings yet. _add_bind_tag $path BwHelpVariable $path bind BwHelpVariable <Enter> \ {DynamicHelp::_motion_info %W 1} $path bind BwHelpVariable <Motion> \ {DynamicHelp::_motion_info %W 1} $path bind BwHelpVariable <Leave> \ {DynamicHelp::_leave_info %W 1} set _canvases($path,variable) 1 } $path addtag BwHelpVariable withtag $tagOrItem } proc DynamicHelp::_add_menu { path varName } { variable _registered set cpath [BWidget::clonename $path] if { [winfo exists $cpath] } { set path $cpath } set _registered($path) [list $varName] _add_bind_tag $path BwHelpMenu } proc DynamicHelp::_add_menuentry { path text index } { variable _registered set idx [lsearch $_registered($path) [list $index *]] set list [list $index $text] if { $idx == -1 } { lappend _registered($path) $list } else { set _registered($path) \ [lreplace $_registered($path) $idx $idx $list] } } # ---------------------------------------------------------------------------- # Command DynamicHelp::_motion_balloon # ---------------------------------------------------------------------------- proc DynamicHelp::_motion_balloon { type path x y {isCanvasItem 0} } { variable _top variable _id variable _delay variable _current_balloon set w $path if {$isCanvasItem} { set path [_get_canvas_path $path balloon] } if { $_current_balloon != $path && $type == "enter" } { set _current_balloon $path set type "motion" destroy $_top } if { $_current_balloon == $path } { if { $_id != "" } { after cancel $_id set _id "" } if { $type == "motion" } { if { ![winfo exists $_top] } { set cmd [list DynamicHelp::_show_help $path $w $x $y] set _id [after $_delay $cmd] } } else { destroy $_top set _current_balloon "" } } } # ---------------------------------------------------------------------------- # Command DynamicHelp::_motion_info # ---------------------------------------------------------------------------- proc DynamicHelp::_motion_info { path {isCanvasItem 0} } { variable _saved variable _registered variable _current_variable if {$isCanvasItem} { set path [_get_canvas_path $path variable] } if { $_current_variable != $path && [info exists _registered($path,variable)] } { set varName [lindex $_registered($path,variable) 0] if {![info exists _saved]} { set _saved [GlobalVar::getvar $varName] } set string [lindex $_registered($path,variable) 1] if {[info exists _registered($path,command)]} { set string [eval $_registered($path,command)] } GlobalVar::setvar $varName $string set _current_variable $path } } # ---------------------------------------------------------------------------- # Command DynamicHelp::_leave_info # ---------------------------------------------------------------------------- proc DynamicHelp::_leave_info { path {isCanvasItem 0} } { variable _saved variable _registered variable _current_variable if {$isCanvasItem} { set path [_get_canvas_path $path variable] } if { [info exists _registered($path,variable)] } { set varName [lindex $_registered($path,variable) 0] GlobalVar::setvar $varName $_saved } unset _saved set _current_variable "" } # ---------------------------------------------------------------------------- # 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] set varName [lindex $_registered($path) 0] if { ![string equal $index "none"] && [set idx [lsearch $_registered($path) [list $index *]]] != -1 } { set string [lindex [lindex $_registered($path) $idx] 1] if {[info exists _registered($path,$index,command)]} { set string [eval $_registered($path,$index,command)] } GlobalVar::setvar $varName $string } else { GlobalVar::setvar $varName "" } } } # ---------------------------------------------------------------------------- # Command DynamicHelp::_show_help # ---------------------------------------------------------------------------- proc DynamicHelp::_show_help { path w x y } { variable _top variable _registered variable _id variable _delay if { [Widget::getoption $_top -state] == "disabled" } { return } if { [info exists _registered($path,balloon)] } { destroy $_top set string $_registered($path,balloon) if {[info exists _registered($path,balloonVar)]} { upvar #0 $_registered($path,balloonVar) var if {[info exists var]} { set string $var } } if {[info exists _registered($path,command)]} { set string [eval $_registered($path,command)] } if {$string == ""} { return } toplevel $_top -relief flat \ -bg [Widget::getoption $_top -topbackground] \ -bd [Widget::getoption $_top -borderwidth] \ -screen [winfo screen $w] wm overrideredirect $_top 1 wm transient $_top wm withdraw $_top catch { wm attributes $_top -topmost 1 } label $_top.label -text $string \ -relief flat -bd 0 -highlightthickness 0 \ -padx [Widget::getoption $_top -padx] \ -pady [Widget::getoption $_top -pady] \ -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 if {![winfo exists $_top]} {return} 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 if {![winfo exists $_top]} { return } wm deiconify $_top raise $_top } } # ---------------------------------------------------------------------------- # Command DynamicHelp::_unset_help # ---------------------------------------------------------------------------- proc DynamicHelp::_unset_help { path } { variable _canvases variable _registered if {[info exists _registered($path)]} { unset _registered($path) } if {[winfo exists $path]} { set cpath [BWidget::clonename $path] if {[info exists _registered($cpath)]} { unset _registered($cpath) } } array unset _canvases $path,* array unset _registered $path,* } # ---------------------------------------------------------------------------- # Command DynamicHelp::_get_canvas_path # ---------------------------------------------------------------------------- proc DynamicHelp::_get_canvas_path { path type {item ""} } { variable _registered if {$item == ""} { set item [$path find withtag current] } ## Check the tags related to this item for the one that ## represents our text. If we have text specific to this ## item or for 'all' items, they override any other tags. eval [list lappend tags $item all] [$path itemcget $item -tags] foreach tag $tags { set check $path,$tag if {![info exists _registered($check,$type)]} { continue } return $check } } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | # ------------------------------------------------------------------------------ # entry.tcl # This file is part of Unifix BWidget Toolkit # $Id: entry.tcl,v 1.1 2004/12/24 16:32:01 jepler 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::define Entry entry DragSite DropSite DynamicHelp # Note: -textvariable is pulled off of the tk entry and put onto the # BW Entry so that we avoid the TkResource test for it, which screws up # the existance/non-existance bits of the -textvariable. Widget::tkinclude Entry entry :cmd \ remove { -state -background -foreground -textvariable -disabledforeground -disabledbackground } set declare [list \ [list -background TkResource "" 0 entry] \ [list -foreground TkResource "" 0 entry] \ [list -state Enum normal 0 [list normal disabled]] \ [list -text String "" 0] \ [list -textvariable String "" 0] \ [list -editable Boolean 1 0] \ [list -command String "" 0] \ [list -relief TkResource "" 0 entry] \ [list -borderwidth TkResource "" 0 entry] \ [list -fg Synonym -foreground] \ [list -bg Synonym -background] \ [list -bd Synonym -borderwidth] \ ] if {![package vsatisfies [package provide Tk] 8.4]} { ## If we're not running version 8.4 or higher, get our ## disabled resources from the button widget. lappend declare [list -disabledforeground TkResource "" 0 button] lappend declare [list -disabledbackground TkResource "" 0 \ {button -background}] } else { lappend declare [list -disabledforeground TkResource "" 0 entry] lappend declare [list -disabledbackground TkResource "" 0 entry] } Widget::declare Entry $declare Widget::addmap Entry "" :cmd { -textvariable {} } 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] } # Copy is kind of a special event. It should be enabled when the # widget is editable but not disabled, and not when the widget is disabled. # To make this a bit easier to manage, we will handle it separately. bind BwEntry <<Copy>> {} bind BwEditableEntry <<Copy>> [bind Entry <<Copy>>] bind BwEntry <Return> [list Entry::invoke %W] bind BwEntry <Destroy> [list Entry::_destroy %W] bind BwDisabledEntry <Destroy> [list Entry::_destroy %W] } # ------------------------------------------------------------------------------ # Command Entry::create # ------------------------------------------------------------------------------ proc Entry::create { path args } { variable $path upvar 0 $path data array set maps [list Entry {} :cmd {}] array set maps [Widget::parseArgs Entry $args] set data(afterid) "" eval [list entry $path] $maps(:cmd) Widget::initFromODB Entry $path $maps(Entry) set state [Widget::getMegawidgetOption $path -state] set editable [Widget::getMegawidgetOption $path -editable] set text [Widget::getMegawidgetOption $path -text] if { $editable && [string equal $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 equal $state "disabled"] } { $path configure \ -foreground [Widget::getMegawidgetOption $path -disabledforeground] \ -background [Widget::getMegawidgetOption $path -disabledbackground] } else { $path configure \ -foreground [Widget::getMegawidgetOption $path -foreground] \ -background [Widget::getMegawidgetOption $path -background] bindtags $path [linsert [bindtags $path] 2 BwEditableEntry] } if { [string length $text] } { set varName [$path cget -textvariable] if { ![string equal $varName ""] } { uplevel \#0 [list set $varName [Widget::cget $path -text]] } else { set validateState [$path cget -validate] $path configure -validate none $path delete 0 end $path configure -validate $validateState $path insert 0 [Widget::getMegawidgetOption $path -text] } } 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 Widget::create Entry $path proc ::$path { cmd args } \ "return \[Entry::_path_command $path \$cmd \$args\]" return $path } # ------------------------------------------------------------------------------ # Command Entry::configure # ------------------------------------------------------------------------------ proc Entry::configure { path args } { # Cheat by setting the -text value to the current contents of the entry # This might be better hidden behind a function in ::Widget. set Widget::Entry::${path}:opt(-text) [$path:cmd get] set res [Widget::configure $path $args] # Extract the modified bits that we are interested in. set vars [list chstate cheditable chfg chdfg chbg chdbg chtext] set opts [list -state -editable -foreground -disabledforeground \ -background -disabledbackground -text] foreach $vars [eval Widget::hasChangedX $path $opts] { break } if { $chstate || $cheditable } { set state [Widget::getMegawidgetOption $path -state] set editable [Widget::getMegawidgetOption $path -editable] set btags [bindtags $path] if { $editable && [string equal $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 equal [focus] $path] } { focus . } } } if { $chstate || $chfg || $chdfg || $chbg || $chdbg } { set state [Widget::getMegawidgetOption $path -state] if { [string equal $state "disabled"] } { $path:cmd configure \ -fg [Widget::cget $path -disabledforeground] \ -bg [Widget::cget $path -disabledbackground] } else { $path:cmd configure \ -fg [Widget::cget $path -foreground] \ -bg [Widget::cget $path -background] } } if { $chstate } { if { [string equal $state "disabled"] } { set idx [lsearch -exact [bindtags $path] BwEditableEntry] if { $idx != -1 } { bindtags $path [lreplace [bindtags $path] $idx $idx] } } else { set idx [expr {[lsearch [bindtags $path] Bw*Entry] + 1}] bindtags $path [linsert [bindtags $path] $idx BwEditableEntry] } } if { $cheditable } { if { $editable } { $path:cmd configure -cursor xterm } else { $path:cmd configure -cursor left_ptr } } if { $chtext } { # Oh my lordee-ba-goordee # Do some magic to prevent multiple validation command firings. # If there is a textvariable, set that to the right value; if not, # disable validation, delete the old text, enable, then set the text. set varName [$path:cmd cget -textvariable] if { ![string equal $varName ""] } { uplevel \#0 [list set $varName \ [Widget::getMegawidgetOption $path -text]] } else { set validateState [$path:cmd cget -validate] $path:cmd configure -validate none $path:cmd delete 0 end $path:cmd configure -validate $validateState $path:cmd insert 0 [Widget::getMegawidgetOption $path -text] } } 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 } { if { [string equal "-text" $option] } { return [$path:cmd get] } Widget::cget $path $option } # ------------------------------------------------------------------------------ # Command Entry::invoke # ------------------------------------------------------------------------------ proc Entry::invoke { path } { if { [set cmd [Widget::getMegawidgetOption $path -command]] != "" } { uplevel \#0 $cmd } } # ------------------------------------------------------------------------------ # Command Entry::_path_command # ------------------------------------------------------------------------------ proc Entry::_path_command { path cmd larg } { if {[string equal $cmd "configure"] || [string equal $cmd "cget"]} { return [eval [list Entry::$cmd $path] $larg] } else { return [eval [list $path:cmd $cmd] $larg] } } # ------------------------------------------------------------------------------ # 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 equal $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 equal $type "COLOR"] || [string equal $type "FGCOLOR"] || [string equal $type "BGCOLOR"] } { DropSite::setcursor based_arrow_down return 1 } if { [Widget::getoption $path -editable] && [string equal [Widget::getoption $path -state] "normal"] } { if { ![string equal $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 } } # ------------------------------------------------------------------------------ # Command Entry::_destroy # ------------------------------------------------------------------------------ proc Entry::_destroy { path } { variable $path upvar 0 $path data Widget::destroy $path unset data } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | # ---------------------------------------------------------------------------- # 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 { Widget::define SelectFont font Dialog LabelFrame ScrolledWindow 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} {-families String "all" 1} {-querysystem Boolean 1 0} {-styles String "bold italic underline overstrike" 1} {-command String "" 0} {-sampletext String "Sample Text" 0} {-bg Synonym -background} } variable _families variable _styleOff array set _styleOff [list bold normal italic roman] variable _sizes {4 5 6 7 8 9 10 11 12 13 14 15 16 \ 17 18 19 20 21 22 23 24} # Set up preset lists of fonts, so the user can avoid the painfully slow # loadfont process if desired. if { [string equal $::tcl_platform(platform) "windows"] } { set presetVariable [list \ 7x14 \ Arial \ {Arial Narrow} \ {Lucida Sans} \ {MS Sans Serif} \ {MS Serif} \ {Times New Roman} \ ] set presetFixed [list \ 6x13 \ {Courier New} \ FixedSys \ Terminal \ ] set presetAll [list \ 6x13 \ 7x14 \ Arial \ {Arial Narrow} \ {Courier New} \ FixedSys \ {Lucida Sans} \ {MS Sans Serif} \ {MS Serif} \ Terminal \ {Times New Roman} \ ] } else { set presetVariable [list \ helvetica \ lucida \ lucidabright \ {times new roman} \ ] set presetFixed [list \ courier \ fixed \ {lucida typewriter} \ screen \ serif \ terminal \ ] set presetAll [list \ courier \ fixed \ helvetica \ lucida \ lucidabright \ {lucida typewriter} \ screen \ serif \ terminal \ {times new roman} \ ] } array set _families [list \ presetvariable $presetVariable \ presetfixed $presetFixed \ presetall $presetAll \ ] variable _widget } # ---------------------------------------------------------------------------- # Command SelectFont::create # ---------------------------------------------------------------------------- proc SelectFont::create { path args } { variable _families variable _sizes variable $path upvar 0 $path data # Initialize the internal rep of the widget options Widget::init SelectFont "$path#SelectFont" $args if { [Widget::getoption "$path#SelectFont" -querysystem] } { loadfont [Widget::getoption "$path#SelectFont" -families] } set bg [Widget::getoption "$path#SelectFont" -background] set _styles [Widget::getoption "$path#SelectFont" -styles] 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 if { [Widget::getoption "$path#SelectFont" -querysystem] } { set fam [Widget::getoption "$path#SelectFont" -families] } else { set fam "preset" append fam [Widget::getoption "$path#SelectFont" -families] } eval [list $lbf insert end] $_families($fam) set script "set [list SelectFont::${path}(family)] \[%W curselection\];\ SelectFont::_update [list $path]" bind $lbf <ButtonRelease-1> $script bind $lbf <space> $script bind $lbf <1> [list focus %W] 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 [list $lbs insert end] $_sizes set script "set [list SelectFont::${path}(size)] \[%W curselection\];\ SelectFont::_update [list $path]" bind $lbs <ButtonRelease-1> $script bind $lbs <space> $script bind $lbs <1> [list focus %W] 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 $name 0] } checkbutton $subf.$st -text $name \ -variable SelectFont::$path\($st\) \ -background $bg \ -command [list 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 Widget::create SelectFont $path 0 return [_draw $path] } else { if { [Widget::getoption "$path#SelectFont" -querysystem] } { set fams [Widget::getoption "$path#SelectFont" -families] } else { set fams "preset" append fams [Widget::getoption "$path#SelectFont" -families] } frame $path -relief flat -borderwidth 0 -background $bg bind $path <Destroy> [list SelectFont::_destroy $path] set lbf [ComboBox::create $path.font \ -highlightthickness 0 -takefocus 0 -background $bg \ -values $_families($fams) \ -textvariable SelectFont::$path\(family\) \ -editable 0 \ -modifycmd [list 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 [list 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 [list SelectFont::_modstyle $path $st] pack $path.$st -side left -anchor w } set data(label) "" set data(lbf) $lbf set data(lbs) $lbs _getfont $path return [Widget::create SelectFont $path] } return $path } # ---------------------------------------------------------------------------- # Command SelectFont::configure # ---------------------------------------------------------------------------- proc SelectFont::configure { path args } { set _styles [Widget::getoption "$path#SelectFont" -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 {{which all}} { variable _families # initialize families if {![info exists _families(all)]} { set _families(all) [lsort -dictionary [font families]] } if {[regexp {fixed|variable} $which] \ && ![info exists _families($which)]} { # initialize families set _families(fixed) {} set _families(variable) {} foreach family $_families(all) { if { [font metrics [list $family] -fixed] } { lappend _families(fixed) $family } else { lappend _families(variable) $family } } } return } # ---------------------------------------------------------------------------- # 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::_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 _styleOff variable $path upvar 0 $path data set type [Widget::getoption "$path#SelectFont" -type] set _styles [Widget::getoption "$path#SelectFont" -styles] if { [Widget::getoption "$path#SelectFont" -querysystem] } { set fams [Widget::getoption "$path#SelectFont" -families] } else { set fams "preset" append fams [Widget::getoption "$path#SelectFont" -families] } 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($fams) $data(family)] \ [lindex $_sizes $data(size)]] } else { set font [list $data(family) $data(size)] } foreach st $_styles { if { $data($st) } { lappend font $st } elseif {[info exists _styleOff($st)]} { # This adds the default bold/italic value to a font #lappend font $_styleOff($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 _sizes variable $path upvar 0 $path data array set font [font actual [Widget::getoption "$path#SelectFont" -font]] set data(bold) [expr {![string equal $font(-weight) "normal"]}] set data(italic) [expr {![string equal $font(-slant) "roman"]}] set data(underline) $font(-underline) set data(overstrike) $font(-overstrike) set _styles [Widget::getoption "$path#SelectFont" -styles] if { [Widget::getoption "$path#SelectFont" -querysystem] } { set fams [Widget::getoption "$path#SelectFont" -families] } else { set fams "preset" append fams [Widget::getoption "$path#SelectFont" -families] } if { [Widget::getoption "$path#SelectFont" -type] == "dialog" } { set idxf [lsearch $_families($fams) $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"}] } } } # ---------------------------------------------------------------------------- # Command SelectFont::_destroy # ---------------------------------------------------------------------------- proc SelectFont::_destroy { path } { variable $path upvar 0 $path data unset data Widget::destroy "$path#SelectFont" } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/bold.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/copy.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/cut.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/dragfile.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/dragicon.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/error.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/file.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/folder.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/hourglass.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/info.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/italic.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/new.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/open.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/openfold.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/overstrike.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/palette.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/passwd.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/paste.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/print.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/question.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/redo.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/save.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/target.xbm.
> > > > > > > > > | 1 2 3 4 5 6 7 8 9 | #define target_width 24 #define target_height 24 static unsigned char target_bits[] = { 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0xe0, 0x03, 0x3e, 0xe0, 0x03, 0x3e, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/underline.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/undo.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/images/warning.gif.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/init.tcl.
> > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | if { $tcl_platform(platform) == "windows" } { option add *Listbox.background SystemWindow widgetDefault option add *ListBox.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 $::BWIDGET::LIBRARY "lang" "en.rc"] bind Entry <<TraverseIn>> { %W selection range 0 end; %W icursor end } bind all <Key-Tab> { Widget::traverseTo [Widget::focusNext %W] } bind all <Shift-Key-Tab> { Widget::traverseTo [Widget::focusPrev %W] } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 259 260 261 262 263 264 265 266 267 268 269 270 271 | # ------------------------------------------------------------------------------ # label.tcl # This file is part of Unifix BWidget Toolkit # $Id: label.tcl,v 1.1 2004/12/24 16:32:01 jepler 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::define Label label DragSite DropSite DynamicHelp Widget::tkinclude Label label .l \ remove { -foreground -text -textvariable -underline } Widget::declare Label { {-name String "" 0} {-text String "" 0} {-textvariable String "" 0} {-underline Int -1 0 "%d >= -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 "" .l {-text {} -underline {}} bind BwLabel <FocusIn> [list Label::setfocus %W] bind BwLabel <Destroy> [list Label::_destroy %W] } # ------------------------------------------------------------------------------ # Command Label::create # ------------------------------------------------------------------------------ proc Label::create { path args } { array set maps [list Label {} .l {}] array set maps [Widget::parseArgs Label $args] frame $path -class Label -borderwidth 0 -highlightthickness 0 -relief flat Widget::initFromODB Label $path $maps(Label) eval [list label $path.l] $maps(.l) if { [Widget::cget $path -state] == "normal" } { set fg [Widget::cget $path -foreground] } else { set fg [Widget::cget $path -disabledforeground] } set var [Widget::cget $path -textvariable] if { $var == "" && [Widget::cget $path -image] == "" && [Widget::cget $path -bitmap] == ""} { set desc [BWidget::getname [Widget::cget $path -name]] if { $desc != "" } { set text [lindex $desc 0] set under [lindex $desc 1] } else { set text [Widget::cget $path -text] set under [Widget::cget $path -underline] } } else { set under -1 set text "" } $path.l configure -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 BwLabel [winfo toplevel $path] all] bindtags $path.l [list $path.l $path Label [winfo toplevel $path] all] pack $path.l -expand yes -fill both set dragendcmd [Widget::cget $path -dragendcmd] DragSite::setdrag $path $path.l Label::_init_drag_cmd $dragendcmd 1 DropSite::setdrop $path $path.l Label::_over_cmd Label::_drop_cmd 1 DynamicHelp::sethelp $path $path.l 1 return [Widget::create Label $path] } # ------------------------------------------------------------------------------ # Command Label::configure # ------------------------------------------------------------------------------ proc Label::configure { path args } { set oldunder [$path.l cget -underline] if { $oldunder != -1 } { set oldaccel [string tolower [string index [$path.l 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.l configure -fg $fg } else { $path.l 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> [list Label::setfocus $path] } $path.l configure -text $text -underline $under -textvariable $var } set force [Widget::hasChanged $path -dragendcmd dragend] DragSite::setdrag $path $path.l Label::_init_drag_cmd $dragend $force DropSite::setdrop $path $path.l Label::_over_cmd Label::_drop_cmd DynamicHelp::sethelp $path $path.l return $res } # ------------------------------------------------------------------------------ # Command Label::cget # ------------------------------------------------------------------------------ proc Label::cget { path option } { return [Widget::cget $path $option] } # ------------------------------------------------------------------------------ # Command Label::setfocus # ------------------------------------------------------------------------------ proc Label::setfocus { path } { if { [string equal [Widget::cget $path -state] "normal"] } { set w [Widget::cget $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 } { set path [winfo parent $path] if { [set cmd [Widget::cget $path -draginitcmd]] != "" } { return [uplevel \#0 $cmd [list $path $X $Y $top]] } if { [set data [$path.l cget -image]] != "" } { set type "IMAGE" pack [label $top.l -image $data] } elseif { [set data [$path.l cget -bitmap]] != "" } { set type "BITMAP" pack [label $top.l -bitmap $data] } else { set data [$path.l 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 } { set path [winfo parent $path] if { [set cmd [Widget::cget $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.l 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 } { set path [winfo parent $path] if { [set cmd [Widget::cget $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 } proc Label::_destroy { path } { Widget::destroy $path } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 2004/12/24 16:32:01 jepler Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - LabelEntry::create # - LabelEntry::configure # - LabelEntry::cget # - LabelEntry::bind # ------------------------------------------------------------------------------ namespace eval LabelEntry { Widget::define LabelEntry labelentry Entry LabelFrame Widget::bwinclude LabelEntry LabelFrame .labf \ remove {-relief -borderwidth -focus} \ rename {-text -label} \ prefix {label -justify -width -anchor -height -font -textvariable} 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> [list focus %W.labf] ::bind BwLabelEntry <Destroy> [list LabelEntry::_destroy %W] } # ------------------------------------------------------------------------------ # Command LabelEntry::create # ------------------------------------------------------------------------------ proc LabelEntry::create { path args } { array set maps [list LabelEntry {} :cmd {} .labf {} .e {}] array set maps [Widget::parseArgs LabelEntry $args] eval [list frame $path] $maps(:cmd) -class LabelEntry \ -relief flat -bd 0 -highlightthickness 0 -takefocus 0 Widget::initFromODB LabelEntry $path $maps(LabelEntry) set labf [eval [list LabelFrame::create $path.labf] $maps(.labf) \ [list -relief flat -borderwidth 0 -focus $path.e]] set subf [LabelFrame::getframe $labf] set entry [eval [list Entry::create $path.e] $maps(.e)] pack $entry -in $subf -fill both -expand yes pack $labf -fill both -expand yes bindtags $path [list $path BwLabelEntry [winfo toplevel $path] all] return [Widget::create LabelEntry $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 [list ::bind $path.e] $args] } #------------------------------------------------------------------------------ # Command LabelEntry::_path_command #------------------------------------------------------------------------------ proc LabelEntry::_path_command { path cmd larg } { if { [string equal $cmd "configure"] || [string equal $cmd "cget"] || [string equal $cmd "bind"] } { return [eval [list LabelEntry::$cmd $path] $larg] } else { return [eval [list $path.e:cmd $cmd] $larg] } } proc LabelEntry::_destroy { path } { Widget::destroy $path } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 2004/12/24 16:32:01 jepler Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - LabelFrame::create # - LabelFrame::getframe # - LabelFrame::configure # - LabelFrame::cget # - LabelFrame::align # ------------------------------------------------------------------------------ namespace eval LabelFrame { Widget::define LabelFrame labelframe Label Widget::bwinclude LabelFrame Label .l \ remove { -highlightthickness -highlightcolor -highlightbackground -takefocus -relief -borderwidth -cursor -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> [list Label::setfocus %W.l] bind BwLabelFrame <Destroy> [list LabelFrame::_destroy %W] } # ---------------------------------------------------------------------------- # Command LabelFrame::create # ---------------------------------------------------------------------------- proc LabelFrame::create { path args } { Widget::init LabelFrame $path $args set path [eval [list frame $path] [Widget::subcget $path :cmd] \ -relief flat -bd 0 -takefocus 0 -highlightthickness 0 \ -class LabelFrame] set label [eval [list Label::create $path.l] [Widget::subcget $path .l] \ -takefocus 0 -highlightthickness 0 -relief flat \ -borderwidth 0 -dropenabled 0 -dragenabled 0] set frame [eval [list 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 [list pack $label] $packopt pack $frame -fill both -expand yes bindtags $path [list $path BwLabelFrame [winfo toplevel $path] all] return [Widget::create LabelFrame $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 equal $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 equal $subclass "LabelFrame"] } { if { [string equal $realopt "-text"] } { set textopt $option incr notdone -1 break } if { [string equal $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 } } proc LabelFrame::_destroy { path } { Widget::destroy $path } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 ! daniel@rawbyte.com ! ------------------------------------------------------------------------------ ! --- 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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | # ---------------------------------------------------------------------------- # listbox.tcl # This file is part of Unifix BWidget Toolkit # $Id: listbox.tcl,v 1.1 2004/12/24 16:32:01 jepler 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 { Widget::define ListBox listbox DragSite DropSite DynamicHelp namespace eval Item { Widget::declare ListBox::Item { {-indent Int 0 0 "%d >= 0"} {-text String "" 0} {-font String "" 0} {-foreground String "" 0} {-image TkResource "" 0 label} {-window String "" 0} {-data String "" 0} {-fill Synonym -foreground} {-fg Synonym -foreground} } } DynamicHelp::include ListBox::Item balloon Widget::tkinclude ListBox canvas .c \ 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 } DragSite::include ListBox "LISTBOX_ITEM" 1 DropSite::include ListBox { LISTBOX_ITEM {copy {} move {}} } Widget::declare ListBox { {-deltax Int 10 0 "%d >= 0"} {-deltay Int 15 0 "%d >= 0"} {-padx Int 20 0 "%d >= 0"} {-foreground TkResource "" 0 listbox} {-background TkResource "" 0 listbox} {-selectbackground TkResource "" 0 listbox} {-selectforeground TkResource "" 0 listbox} {-font TkResource "" 0 listbox} {-width TkResource "" 0 listbox} {-height TkResource "" 0 listbox} {-redraw Boolean 1 0} {-multicolumn Boolean 0 0} {-dropovermode Flag "wpi" 0 "wpi"} {-selectmode Enum none 1 {none single multiple}} {-fg Synonym -foreground} {-bg Synonym -background} {-dropcmd String "ListBox::_drag_and_drop" 0} {-autofocus Boolean 1 1} {-selectfill Boolean 0 1} } Widget::addmap ListBox "" .c {-deltay -yscrollincrement} bind ListBox <Destroy> [list ListBox::_destroy %W] bind ListBox <Configure> [list ListBox::_resize %W] bind ListBoxFocus <1> [list focus %W] bind ListBox <Key-Up> [list ListBox::_keyboard_navigation %W -1] bind ListBox <Key-Down> [list ListBox::_keyboard_navigation %W 1] variable _edit } # ---------------------------------------------------------------------------- # Command ListBox::create # ---------------------------------------------------------------------------- proc ListBox::create { path args } { Widget::init ListBox $path $args variable $path upvar 0 $path data frame $path -class ListBox -bd 0 -highlightthickness 0 -relief flat # For 8.4+ we don't want to inherit the padding catch {$path configure -padx 0 -pady 0} # 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 [list canvas $path.c] [Widget::subcget $path .c] \ [list -xscrollincrement 8 -highlightthickness 1] pack $path.c -expand yes -fill both DragSite::setdrag $path $path.c ListBox::_init_drag_cmd \ [Widget::cget $path -dragendcmd] 1 DropSite::setdrop $path $path.c ListBox::_over_cmd ListBox::_drop_cmd 1 Widget::create ListBox $path set w [Widget::cget $path -width] set h [Widget::cget $path -height] set dy [Widget::cget $path -deltay] $path.c configure -width [expr {$w*8}] -height [expr {$h*$dy}] ## Let any click within the canvas focus on the canvas so that ## MouseWheel scroll events will be properly handled by the ## canvas. if {[Widget::cget $path -autofocus]} { bindtags $path.c [concat [bindtags $path.c] ListBoxFocus] BWidget::bindMouseWheel $path.c } switch -exact -- [Widget::getoption $path -selectmode] { single { $path bindText <Button-1> [list ListBox::_mouse_select $path set] $path bindImage <Button-1> [list ListBox::_mouse_select $path set] } multiple { set cmd ListBox::_multiple_select $path bindText <Button-1> [list $cmd $path n %x %y] $path bindText <Shift-Button-1> [list $cmd $path s %x %y] $path bindText <Control-Button-1> [list $cmd $path c %x %y] $path bindImage <Button-1> [list $cmd $path n %x %y] $path bindImage <Shift-Button-1> [list $cmd $path s %x %y] $path bindImage <Control-Button-1> [list $cmd $path c %x %y] } } 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.c configure -height [expr {$h*$dy}] set redraw 1 } if { [Widget::hasChanged $path -width w] } { $path.c configure -width [expr {$w*8}] set redraw 1 } if { [Widget::hasChanged $path -background bg] } { $path.c itemconfigure box -fill $bg } 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.c ListBox::_init_drag_cmd $dragend $force DropSite::setdrop $path $path.c 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 set item [Widget::nextIndex $path $item] if { [lsearch -exact $data(items) $item] != -1 } { return -code error "item \"$item\" already exists" } Widget::init ListBox::Item $path.$item $args set data(items) [linsert $data(items) $index $item] set data(upd,create,$item) $item _redraw_idle $path 2 return $item } # Bastien Chevreux (bach@mwgdna.com) # The multipleinsert command performs inserts several items at once into # the list. It is faster than calling insert multiple times as it uses the # Widget::copyinit command for initializing all items after the 1st. The # speedup factor is between 2 and 3 for typical usage, but could be higher # for inserts with many options. # # Syntax: path and index are as in the insert command # args is a list of even numbered elements where the 1st of each pair # corresponds to the item of 'insert' and the second to args of 'insert'. # ---------------------------------------------------------------------------- # Command ListBox::multipleinsert # ---------------------------------------------------------------------------- proc ListBox::multipleinsert { path index args } { variable $path upvar 0 $path data # If we got only one list as arg, take the first element as args # This enables callers to use # $list multipleinsert index $thelist # instead of # eval $list multipleinsert index $thelist if {[llength $args] == 1} { set args [lindex $args 0] } set count 0 foreach {item iargs} $args { if { [lsearch -exact $data(items) $item] != -1 } { return -code error "item \"$item\" already exists" } if {$count==0} { Widget::init ListBox::Item $path.$item $iargs set firstpath $path.$item } else { Widget::copyinit ListBox::Item $firstpath $path.$item $iargs } set data(items) [linsert $data(items) $index $item] set data(upd,create,$item) $item incr count } _redraw_idle $path 2 return $item } # ---------------------------------------------------------------------------- # Command ListBox::itemconfigure # ---------------------------------------------------------------------------- proc ListBox::itemconfigure { path item args } { variable $path upvar 0 $path data if { [lsearch -exact $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 -foreground fg] set idn [$path.c find withtag n:$item] _set_help $path $item if { $idn == "" } { # item is not drawn yet _redraw_idle $path 2 return $res } set oldb [$path.c bbox $idn] set coords [$path.c 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.c find withtag i:$item] set type [lindex [$path.c gettags $idi] 0] if { [string length $win] } { if { [string equal $type "win"] } { $path.c itemconfigure $idi -window $win } else { $path.c delete $idi $path.c create window $x0 $y0 -window $win -anchor w \ -tags [list win i:$item] } } elseif { [string length $img] } { if { [string equal $type "img"] } { $path.c itemconfigure $idi -image $img } else { $path.c delete $idi $path.c create image $x0 $y0 -image $img -anchor w \ -tags [list img i:$item] } } else { $path.c delete $idi } } if { $cht || $chf || $chfg } { # -text or -font modified, or -foreground modified set fnt [_getoption $path $item -font] set fg [_getoption $path $item -foreground] $path.c itemconfigure $idn -text $txt -font $fnt -fill $fg _redraw_idle $path 1 } if { $chind } { # -indent modified $path.c coords $idn [expr {$x0+$padx}] $y0 $path.c coords i:$item $x0 $y0 _redraw_idle $path 1 } if { [Widget::getoption $path -multicolumn] && ($cht || $chf || $chind) } { set bbox [$path.c 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 != "" } { set map [list %W $path] set script [string map $map $script] $path.c bind "click" $event "$script \[ListBox::_get_current $path]" } else { $path.c bind "click" $event {} } } # ---------------------------------------------------------------------------- # Command ListBox::bindImage # ---------------------------------------------------------------------------- proc ListBox::bindImage { path event script } { if { $script != "" } { set map [list %W $path] set script [string map $map $script] $path.c bind "img" $event "$script \[ListBox::_get_current $path]" } else { $path.c 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 -exact $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 [list 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 -exact $data(items) $item]] == -1 } { return -code error "item \"$item\" does not exist" } set data(items) [linsert [lreplace $data(items) $idx $idx] $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 -exact $data(selitems) $item] == -1 } { if { [lsearch -exact $data(items) $item] != -1 } { lappend data(selitems) $item } } } } add { foreach item $args { if { [lsearch -exact $data(selitems) $item] == -1 } { if { [lsearch -exact $data(items) $item] != -1 } { lappend data(selitems) $item } } } } remove { foreach item $args { if { [set idx [lsearch -exact $data(selitems) $item]] != -1 } { set data(selitems) [lreplace $data(selitems) $idx $idx] } } } clear { set data(selitems) {} } get { return $data(selitems) } includes { return [expr {[lsearch -exact $data(selitems) $args] != -1}] } default { return } } _redraw_idle $path 1 } # ---------------------------------------------------------------------------- # Command ListBox::exists # ---------------------------------------------------------------------------- proc ListBox::exists { path item } { variable $path upvar 0 $path data return [expr {[lsearch -exact $data(items) $item] != -1}] } # ---------------------------------------------------------------------------- # Command ListBox::index # ---------------------------------------------------------------------------- proc ListBox::index { path item } { variable $path upvar 0 $path data if {[string equal $item "active"]} { return [$path selection get] } return [lsearch -exact $data(items) $item] } # ---------------------------------------------------------------------------- # ListBox::find # Returns the item given a position. # findInfo @x,y ?confine? # lineNumber # ---------------------------------------------------------------------------- proc ListBox::find {path findInfo {confine ""}} { variable $path upvar 0 $path widgetData if {[regexp -- {^@([0-9]+),([0-9]+)$} $findInfo match x y]} { set x [$path.c canvasx $x] set y [$path.c canvasy $y] } elseif {[regexp -- {^[0-9]+$} $findInfo lineNumber]} { set dy [Widget::getoption $path -deltay] set y [expr {$dy*($lineNumber+0.5)}] set confine "" } else { return -code error "invalid find spec \"$findInfo\"" } set found 0 set xi 0 foreach xs $widgetData(xlist) { if {$x <= $xs} { foreach id [$path.c find overlapping $xi $y $xs $y] { set ltags [$path.c gettags $id] set item [lindex $ltags 0] if { [string equal $item "item"] || [string equal $item "img"] || [string equal $item "win"] } { # item is the label or image/window of the node set item [string range [lindex $ltags 1] 2 end] set found 1 break } } break } set xi $xs } if {$found} { if {[string equal $confine "confine"]} { # test if x stand inside node bbox set xi [expr {[lindex [$path.c coords n:$item] 0]-[Widget::getoption $path -padx]}] set xs [lindex [$path.c bbox n:$item] 2] if {$x >= $xi && $x <= $xs} { return $item } } else { return $item } } return "" } # ---------------------------------------------------------------------------- # 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.c 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.c find withtag n:$item] if { $idn != "" } { ListBox::_see $path $idn right ListBox::_see $path $idn left set oldfg [$path.c itemcget $idn -fill] set sbg [Widget::getoption $path -selectbackground] set coords [$path.c coords $idn] set x [lindex $coords 0] set y [lindex $coords 1] set bd [expr {[$path.c cget -borderwidth]+[$path.c cget -highlightthickness]}] set w [expr {[winfo width $path] - 2*$bd}] set wmax [expr {[$path.c canvasx $w]-$x}] $path.c itemconfigure $idn -fill [Widget::getoption $path -background] $path.c 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 [_getoption $path $item -foreground] \ -background [Widget::getoption $path -background] \ -selectforeground [Widget::getoption $path -selectforeground] \ -selectbackground $sbg \ -font [_getoption $path $item -font] \ -textvariable ListBox::_edit(text)] pack $ent -ipadx 8 -anchor w set idw [$path.c create window $x $y -window $frame -anchor w] trace variable ListBox::_edit(text) w [list 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 } bindtags $ent [list $ent Entry] bind $ent <Escape> {set ListBox::_edit(wait) 0} bind $ent <Return> {set ListBox::_edit(wait) 1} if { $clickres == 0 || $clickres == 1 } { bind $frame <Button> [list 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 [list ListBox::_update_edit_size $path $ent $idw $wmax] grab release $frame BWidget::focus release $ent destroy $frame $path.c delete $idw $path.c itemconfigure $idn -fill $oldfg $path.c itemconfigure s:$item -fill $sbg -outline $sbg if { $_edit(wait) } { return $_edit(text) } } return "" } # ---------------------------------------------------------------------------- # Command ListBox::xview # ---------------------------------------------------------------------------- proc ListBox::xview { path args } { return [eval [list $path.c xview] $args] } # ---------------------------------------------------------------------------- # Command ListBox::yview # ---------------------------------------------------------------------------- proc ListBox::yview { path args } { return [eval [list $path.c yview] $args] } proc ListBox::getcanvas { path } { return $path.c } proc ListBox::curselection { path } { return [$path selection get] } # ---------------------------------------------------------------------------- # Command ListBox::_update_edit_size # ---------------------------------------------------------------------------- proc ListBox::_update_edit_size { path entry idw wmax args } { set entw [winfo reqwidth $entry] if { $entw >= $wmax } { $path.c itemconfigure $idw -width $wmax } else { $path.c itemconfigure $idw -width 0 } } # ---------------------------------------------------------------------------- # Command ListBox::_getoption # Returns the value of option for node. If empty, returned value is those # of the ListBox. # ---------------------------------------------------------------------------- proc ListBox::_getoption { path item option } { set value [Widget::getoption $path.$item $option] if {![string length $value]} { set value [Widget::getoption $path $option] } return $value } # ---------------------------------------------------------------------------- # 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 } # ---------------------------------------------------------------------------- # Command ListBox::_see # ---------------------------------------------------------------------------- proc ListBox::_see { path idn side } { set bbox [$path.c bbox $idn] set scrl [$path.c cget -scrollregion] set ymax [lindex $scrl 3] set dy [$path.c cget -yscrollincrement] set yv [$path.c 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.c coords $idn] 1]/$dy)}] if { $y < $yv0 } { $path.c yview scroll [expr {$y-$yv0}] units } elseif { $y >= $yv1 } { $path.c yview scroll [expr {$y-$yv1+1}] units } set xmax [lindex $scrl 2] set dx [$path.c cget -xscrollincrement] set xv [$path.c xview] if { [string equal $side "right"] } { set xv1 [expr {round([lindex $xv 1]*$xmax/$dx)}] set x1 [expr {int([lindex $bbox 2]/$dx)}] if { $x1 >= $xv1 } { $path.c 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.c xview scroll [expr {$x0-$xv0}] units } } } # ---------------------------------------------------------------------------- # Command ListBox::_update_scrollregion # ---------------------------------------------------------------------------- proc ListBox::_update_scrollregion { path } { set bd [$path.c cget -borderwidth] set ht [$path.c cget -highlightthickness] set bd [expr {2*($bd + $ht)}] set w [expr {[winfo width $path] - $bd}] set h [expr {[winfo height $path] - $bd}] set xinc [$path.c cget -xscrollincrement] set yinc [$path.c cget -yscrollincrement] set bbox [$path.c bbox item win img] 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.c configure -scrollregion [list 0 0 $w $h] } proc ListBox::_update_select_fill { path } { variable $path upvar 0 $path data set width [winfo width $path] foreach item $data(items) { set bbox [$path.c bbox n:$item] set bbox [list 0 [lindex $bbox 1] $width [lindex $bbox 3]] $path.c coords b:$item $bbox } _redraw_selection $path } # ---------------------------------------------------------------------------- # Command ListBox::_draw_item # ---------------------------------------------------------------------------- proc ListBox::_draw_item { path item x0 x1 y } { set indent [Widget::getoption $path.$item -indent] set selfill [Widget::cget $path -selectfill] set multi [Widget::cget $path -multicolumn] set i [$path.c create text [expr {$x1+$indent}] $y \ -text [Widget::getoption $path.$item -text] \ -fill [_getoption $path $item -foreground] \ -font [_getoption $path $item -font] \ -anchor w \ -tags [list item n:$item click]] if { $selfill && !$multi } { set bg [Widget::cget $path -background] set width [winfo width $path.c] set bbox [$path.c bbox n:$item] set bbox [list 0 [lindex $bbox 1] $width [lindex $bbox 3]] set tags [list box b:$item click] $path.c create rect $bbox -fill $bg -width 0 -tags $tags $path.c raise $i } if { [set win [Widget::getoption $path.$item -window]] != "" } { $path.c create window [expr {$x0+$indent}] $y \ -window $win -anchor w -tags [list win i:$item] } elseif { [set img [Widget::getoption $path.$item -image]] != "" } { $path.c create image [expr {$x0+$indent}] $y \ -image $img -anchor w -tags [list img i:$item] } _set_help $path $item } # ---------------------------------------------------------------------------- # Command ListBox::_redraw_items # ---------------------------------------------------------------------------- proc ListBox::_redraw_items { path } { variable $path upvar 0 $path data set cursor [$path.c cget -cursor] $path.c 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::cget $path -multicolumn] } { set nrows $data(nrows) } else { set nrows [llength $data(items)] } foreach item $data(upd,delete) { $path.c delete i:$item n:$item s:$item b:$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.c coords n:$item [expr {$x1+$indent}] $y0 $path.c 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 [list $path.c 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 [list $path.c bbox] $drawn] lappend data(xlist) [lindex $bbox 2] } set data(upd,delete) {} $path.c configure -cursor $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] set selfill [Widget::getoption $path -selectfill] set multi [Widget::getoption $path -multicolumn] foreach id [$path.c find withtag sel] { set item [string range [lindex [$path.c gettags $id] 1] 2 end] $path.c itemconfigure "n:$item" \ -fill [_getoption $path $item -foreground] } $path.c delete sel foreach item $data(selitems) { set bbox [$path.c bbox "n:$item"] if { $selfill && !$multi } { set bbox2 [$path.c bbox "b:$item"] set w1 [lindex $bbox 2] set w2 [lindex $bbox2 2] if {$w1 < $w2} { set bbox $bbox2 } } if { [llength $bbox] } { set tags [list sel s:$item click] set id [$path.c create rectangle $bbox \ -fill $selbg -outline $selbg -tags $tags] $path.c itemconfigure "n:$item" -fill $selfg $path.c lower $id $path.c lower b:$item } } } # ---------------------------------------------------------------------------- # 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.c cget -borderwidth]+[$path.c cget -highlightthickness]}] set h [expr {[winfo height $path] - 2*$bd}] set nrows [expr {$h/[$path.c 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 if {[Widget::cget $path -selectfill]} { _update_select_fill $path } } else { if {[Widget::cget $path -selectfill]} { _update_select_fill $path } _update_scrollregion $path } } # ---------------------------------------------------------------------------- # Command ListBox::_init_drag_cmd # ---------------------------------------------------------------------------- proc ListBox::_init_drag_cmd { path X Y top } { set path [winfo parent $path] set ltags [$path.c gettags current] set item [lindex $ltags 0] if { [string equal $item "item"] || [string equal $item "img"] || [string equal $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 } { set path [winfo parent $path] variable $path upvar 0 $path data if { [string length $data(dnd,afterid)] } { after cancel $data(dnd,afterid) set data(dnd,afterid) "" } $path.c delete drop set data(dnd,scroll) "" if { [llength $data(dnd,item)] || ![llength $data(items)] } { 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 } { set path [winfo parent $path] variable $path upvar 0 $path data if { [string equal $event "leave"] } { # we leave the window listbox $path.c 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 equal $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.c 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) & 2) && ![llength $data(items)] } { # dropovermode includes position and listbox is empty lappend target "" 0 set vmode [expr {$vmode | 2}] } if { ($data(dnd,mode) & 3) && [llength $data(items)]} { # 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.c canvasx $x] set yc [$path.c canvasy $y] set dy [$path.c 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] set xi [expr {[lindex [$path.c coords n:$item] 0]-[Widget::getoption $path -padx]-1}] 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 switch -exact -- [lindex $res 1] { item {set vmode 1} position {set vmode 2} widget {set vmode 4} } } } else { if { ($vmode & 3) == 3 } { # result have both item and position # we choose the preferred method if { [string equal [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 {[llength $data(items)]} { if { $vmode & 1 } { set data(dnd,item) [list "item" [lindex $target 1]] $path.c create rectangle $xi $yi $xs $ys -tags drop } elseif { $vmode & 2 } { set data(dnd,item) [concat "position" [lindex $target 2]] $path.c 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.c yview] 0] > 0 } { set scroll [list yview -1] DropSite::setcursor sb_up_arrow } } elseif { $y >= $ymax-6 } { if { [lindex [$path.c yview] 1] < 1 } { set scroll [list yview 1] DropSite::setcursor sb_down_arrow } } elseif { $x <= 6 } { if { [lindex [$path.c xview] 0] > 0 } { set scroll [list xview -1] DropSite::setcursor sb_left_arrow } } elseif { $x >= $xmax-6 } { if { [lindex [$path.c xview] 1] < 1 } { set scroll [list xview 1] DropSite::setcursor sb_right_arrow } } if { [string length $data(dnd,afterid)] && ![string equal $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::_multiple_select # ----------------------------------------------------------------------------- proc ListBox::_multiple_select { path mode x y idx } { variable $path upvar 0 $path data if { ![info exists data(anchor)] || ![info exists data(sel_anchor)] } { set data(anchor) $idx set data(sel_anchor) {} } switch -exact -- $mode { n { _mouse_select $path set $idx set data(anchor) $idx set data(sel_anchor) {} } c { set l [_mouse_select $path get] if { [lsearch -exact $l $idx] >= 0 } { _mouse_select $path remove $idx } else { _mouse_select $path add $idx } set data(anchor) $idx set data(sel_anchor) {} } s { eval [list $path _mouse_select remove] $data(sel_anchor) set ix [$path index $idx] set ia [$path index $data(anchor)] if { $ix > $ia } { set istart $ia set iend $ix } else { set istart $ix set iend $ia } for { set i $istart } { $i <= $iend } { incr i } { set l [$path selection get] set t [$path items $i] set li [lsearch -exact $l $t] if { $li < 0 } { _mouse_select $path add $t lappend data(sel_anchor) $t } } } } } # ---------------------------------------------------------------------------- # Command ListBox::_scroll # ---------------------------------------------------------------------------- proc ListBox::_scroll { path cmd dir } { variable $path upvar 0 $path data if { ($dir == -1 && [lindex [$path.c $cmd] 0] > 0) || ($dir == 1 && [lindex [$path.c $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 } } # ListBox::_set_help -- # # Register dynamic help for an item in the listbox. # # Arguments: # path ListBox to query # item Item in the listbox # force Optional argument to force a reset of the help # # Results: # none proc ListBox::_set_help { path node } { Widget::getVariable $path help set item $path.$node set opts [list -helptype -helptext -helpvar] foreach {cty ctx cv} [eval [list Widget::hasChangedX $item] $opts] break set text [Widget::getoption $item -helptext] ## If we've never set help for this item before, and text is not blank, ## we need to setup help. We also need to reset help if any of the ## options have changed. if { (![info exists help($node)] && $text != "") || $cty || $ctx || $cv } { set help($node) 1 set type [Widget::getoption $item -helptype] switch $type { balloon { DynamicHelp::register $path.c balloon n:$node $text DynamicHelp::register $path.c balloon i:$node $text DynamicHelp::register $path.c balloon b:$node $text } variable { set var [Widget::getoption $item -helpvar] DynamicHelp::register $path.c variable n:$node $var $text DynamicHelp::register $path.c variable i:$node $var $text DynamicHelp::register $path.c variable b:$node $var $text } } } } # ListBox::_mouse_select -- # # Handle selection commands that are done by the mouse. If the # selection command returns true, we generate a <<ListboxSelect>> # event for the listbox. # # Arguments: # Standard arguments passed to a selection command. # # Results: # none proc ListBox::_mouse_select { path cmd args } { eval selection [list $path] [list $cmd] $args switch -- $cmd { "add" - "clear" - "remove" - "set" { event generate $path <<ListboxSelect>> } } } proc ListBox::_get_current { path } { set t [$path.c gettags current] return [string range [lindex $t 1] 2 end] } # ListBox::_drag_and_drop -- # # A default command to handle drag-and-drop functions local to this # listbox. With this as the default -dropcmd, the user can simply # enable drag-and-drop and be able to move items within this list # with no further code. # # Arguments: # Standard arguments passed to a dropcmd. # # Results: # none proc ListBox::_drag_and_drop { path from endItem operation type startItem } { set items [$path items] ## This proc only handles drag-and-drop commands within itself. ## If the widget this came from is not our widget (minus the canvas), ## we don't want to do anything. They need to handle this themselves. if {[winfo parent $from] != $path} { return } set place [lindex $endItem 0] set i [lindex $endItem 1] switch -- $place { "position" { set idx $i } "item" { set idx [$path index $i] } } if {$idx > [$path index $startItem]} { incr idx -1 } if {[string equal $operation "copy"]} { set options [Widget::options $path.$startItem] eval $path insert $idx [list $startItem#auto] $options } else { $path move $startItem $idx } } proc ListBox::_keyboard_navigation { path dir } { variable $path upvar 0 $path data set sel [$path index [lindex [$path selection get] end]] if {$dir > 0} { incr sel if {$sel >= [llength $data(items)]} { return } } else { incr sel -1 if {$sel < 0} { return } } _mouse_select $path set [lindex $data(items) $sel] } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | # ---------------------------------------------------------------------------- # mainframe.tcl # This file is part of Unifix BWidget Toolkit # $Id: mainframe.tcl,v 1.1 2004/12/24 16:32:01 jepler Exp $ # ------------------------------------------------------------------------------ # Index of commands: # - MainFrame::create # - MainFrame::configure # - MainFrame::cget # - MainFrame::getframe # - MainFrame::addtoolbar # - MainFrame::gettoolbar # - MainFrame::addindicator # - MainFrame::getindicator # - MainFrame::getmenu # - MainFrame::menuonly # - MainFrame::showtoolbar # - MainFrame::showstatusbar # - MainFrame::_create_menubar # - MainFrame::_create_entries # - MainFrame::_parse_name # - MainFrame::_parse_accelerator # ---------------------------------------------------------------------------- namespace eval MainFrame { Widget::define MainFrame mainframe ProgressBar 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} {-menubarfont String "" 0} {-menuentryfont String "" 0} {-statusbarfont String "" 0} } 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} 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 equal [winfo toplevel $path] $top] } { destroy $path return -code error "parent must be a toplevel" } Widget::init MainFrame $path $args if { $tcl_platform(platform) == "unix" } { set relief raised set bd 1 } else { set relief flat set bd 0 } set topframe [eval frame $path.topf -relief flat -borderwidth 0 \ [Widget::subcget $path .topf]] set userframe [eval frame $path.frame [Widget::subcget $path .frame] \ -relief $relief -borderwidth $bd] set botframe [eval frame $path.botf -relief $relief -borderwidth $bd \ [Widget::subcget $path .botf]] pack $topframe -fill x grid columnconfigure $topframe 0 -weight 1 set bg [Widget::cget $path -background] $path configure -background $bg 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 ------------------------------------------------------------------- if {[string length [Widget::getoption $path -statusbarfont]] >0 } { set sbfnt [list -font [Widget::getoption $path -statusbarfont]] } else { set sbfnt "" } set status [frame $path.status -relief flat -borderwidth 0 \ -takefocus 0 -highlightthickness 0 -background $bg] set label [eval [list label $status.label \ -textvariable [Widget::getoption $path -textvariable] \ -takefocus 0 -highlightthickness 0 -background $bg] $sbfnt] 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 ne -relx 1 -y 0 -relheight 1 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> [list MainFrame::_destroy %W] return [Widget::create MainFrame $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 } } if { [Widget::hasChanged $path -menubarfont newmbfnt] } { if {[string length $newmbfnt]} { set mbfnt [list -font $newmbfnt] } else { set mbfnt "" } set top $_widget($path,top) if {[string equal $top .]} { eval [list .menubar configure] $mbfnt } else { eval [list $top.menubar configure] $mbfnt } } if { [Widget::hasChanged $path -menuentryfont newmefnt] } { if {[string length $newmefnt]} { set mefnt [list -font $newmefnt] } else { set mefnt "" } set top $_widget($path,top) if {[string equal $top .]} { set mb .menubar } else { set mb $top.menubar } set l [winfo children $mb] while {[llength $l]} { set e [lindex $l 0] set l [lrange $l 1 end] if {[string length $e] == 0} {continue} lappend l [winfo children $e] eval [list $e configure] $mefnt } } if { [Widget::hasChanged $path -statusbarfont newsbfnt] } { if {[string length $newsbfnt]} { set sbfnt [list -font $newsbfnt] } else { set sbfnt "" } for {set index 0} {$index<$_widget($path,nindic)} {incr index} { set indic $path.status.indf.f$index eval [list $indic configure] $sbfnt } eval [list $path.status.label configure] $sbfnt $path.status configure -height [winfo reqheight $path.status.label] $path.status.prg configure \ -height [expr {[winfo reqheight $path.status.label]-2}] } 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 -expand yes -fill x 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 if {[string length [Widget::getoption $path -statusbarfont]]} { set sbfnt [list -font [Widget::getoption $path -statusbarfont]] } else { set sbfnt "" } set index $_widget($path,nindic) set indic $path.status.indf.f$index eval [list label $indic] $args -relief sunken -borderwidth 1 \ -takefocus 0 -highlightthickness 0 $sbfnt pack $indic -side left -anchor w -padx 2 -fill y -expand 1 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 # } # } # We need a more sophisticated state system. # The original model was this: each menu item has a list of tags; # whenever any one of those tags changed state, the menu item did too. # This makes it hard to have items that are enabled only when both tagA and # tagB are. The new model therefore only sets the menustate to enabled # when ALL of its tags are enabled. # First see if this is a real tag if { [info exists _widget($path,tagstate,$tag)] } { if { ![string equal $state "disabled"] } { set _widget($path,tagstate,$tag) 1 } else { set _widget($path,tagstate,$tag) 0 } foreach {menu entry} $_widget($path,tags,$tag) { set expression "1" foreach menutag $_widget($path,menutags,[list $menu $entry]) { append expression " && $_widget($path,tagstate,$menutag)" } if { [expr $expression] } { set state normal } else { set state disabled } $menu entryconfigure $entry -state $state } } return } # ----------------------------------------------------------------------------- # Command MainFrame::menuonly # ----------------------d------------------------------------------------------ proc MainFrame::menuonly { path } { variable _widget catch {pack forget $path.sep} catch {pack forget $path.botf.sep} catch {pack forget $path.frame} } # ---------------------------------------------------------------------------- # 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 equal $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 all of the state vars associated with this main frame. foreach index [array names _widget $path,*] { unset _widget($index) } } # ---------------------------------------------------------------------------- # 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) foreach {v x} {mbfnt -menubarfont mefnt -menuentryfont} { if {[string length [Widget::getoption $path $x]]} { set $v [list -font [Widget::getoption $path $x]] } else { set $v "" } } if {$tcl_platform(platform) == "unix"} { lappend mbfnt -borderwidth 1 } set menubar [eval [list menu $top.menubar -tearoff 0 \ -background $bg] $mbfnt] $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 [list $menubar add cascade] $opt [list -menu $menu] eval [list menu $menu -tearoff $tearoff -background $bg] $mefnt foreach tag $tags { lappend _widget($path,tags,$tag) $menubar $count # ericm@scriptics: Add a tagstate tracker if { ![info exists _widget($path,tagstate,$tag)] } { set _widget($path,tagstate,$tag) 1 } } # ericm@scriptics.com: Add mapping from menu items to tags set _widget($path,menutags,[list $menubar $count]) $tags 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 equal $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 # ericm@scriptics: Add a tagstate tracker if { ![info exists _widget($path,tagstate,$tag)] } { set _widget($path,tagstate,$tag) 1 } } # ericm@scriptics.com: Add mapping from menu items to tags set _widget($path,menutags,[list $menu $count]) $tags if { [string equal $type "cascad"] } { set menuid [lindex $entry 3] set tearoff [lindex $entry 4] set submenu $menu.menu$count eval [list $menu add cascade] $opt [list -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] [list $menu invoke $count] } # user options set useropt [lrange $entry 5 end] if { [string equal $type "command"] || [string equal $type "radiobutton"] || [string equal $type "checkbutton"] } { eval [list $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] } } # MainFrame::_parse_accelerator -- # # Given a key combo description, construct an appropriate human readable # string (for display on as a menu accelerator) and the corresponding # bind event. # # Arguments: # desc a list with the following format: # ?sequence? key # sequence may be None, Ctrl, Alt, or CtrlAlt # key may be any key # # Results: # {accel event} a list containing the accelerator string and the event proc MainFrame::_parse_accelerator { desc } { if { [llength $desc] == 1 } { set seq None set key [string tolower [lindex $desc 0]] # If the key is an F key (ie, F1, F2, etc), it has to be capitalized if {[regexp {f1?[0-9]} $key]} { set key [string toupper $key] } } elseif { [llength $desc] == 2 } { set seq [lindex $desc 0] set key [string tolower [lindex $desc 1]] # If the key is an F key (ie, F1, F2, etc), it has to be capitalized if {[regexp {f1?[0-9]} $key]} { set key [string toupper $key] } } else { return {} } switch -- $seq { None { set accel "[string toupper $key]" set event "<Key-$key>" } Ctrl { set accel "Ctrl+[string toupper $key]" set event "<Control-Key-$key>" } Alt { set accel "Alt+[string toupper $key]" set event "<Alt-Key-$key>" } CtrlAlt { set accel "Ctrl+Alt+[string toupper $key]" set event "<Control-Alt-Key-$key>" } default { return -code error "invalid accelerator code $seq" } } return [list $accel $event] } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | # ------------------------------------------------------------------------------ # messagedlg.tcl # This file is part of Unifix BWidget Toolkit # ------------------------------------------------------------------------------ # Index of commands: # - MessageDlg::create # ------------------------------------------------------------------------------ namespace eval MessageDlg { Widget::define MessageDlg messagedlg Dialog Widget::tkinclude MessageDlg message .frame.msg \ remove [list -cursor -highlightthickness \ -highlightbackground -highlightcolor \ -relief -borderwidth -takefocus -textvariable \ ] \ rename [list -text -message] \ initialize [list -aspect 800 -anchor c -justify center] Widget::bwinclude MessageDlg Dialog :cmd \ remove [list -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} {-buttonwidth String 0 0} } Widget::addmap MessageDlg "" tkMBox { -parent {} -message {} -default {} -title {} } } # ------------------------------------------------------------------------------ # Command MessageDlg::create # ------------------------------------------------------------------------------ proc MessageDlg::create { path args } { global tcl_platform array set maps [list MessageDlg {} :cmd {} .frame.msg {} tkMBox {}] array set maps [Widget::parseArgs MessageDlg $args] Widget::initFromODB MessageDlg "$path#Message" $maps(MessageDlg) array set dialogArgs $maps(:cmd) set type [Widget::cget "$path#Message" -type] set icon [Widget::cget "$path#Message" -icon] set width [Widget::cget "$path#Message" -buttonwidth] 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::cget "$path#Message" -buttons]} } # If the user didn't specify a default button, use our type-specific # default, adding its flag/value to the "user" settings and to the tkMBox # settings if { ![info exists dialogArgs(-default)] } { lappend maps(:cmd) -default $defb lappend maps(tkMBox) -default $defb } if { ![info exists dialogArgs(-cancel)] } { lappend maps(:cmd) -cancel $canb } # Same with title as with default if { ![info exists dialogArgs(-title)] } { set frame [frame $path -class MessageDlg] set title [option get $frame "${icon}Title" MessageDlg] destroy $frame if { $title == "" } { set title "Message" } lappend maps(:cmd) -title $title lappend maps(tkMBox) -title $title } # Create the "user" type dialog if { $type == "user" } { if { $icon != "none" } { set image [Bitmap::get $icon] } else { set image "" } eval [list Dialog::create $path] $maps(:cmd) \ [list -image $image -modal local -side bottom -anchor c] foreach but $lbut { Dialog::add $path -text $but -name $but -width $width } set frame [Dialog::getframe $path] eval [list message $frame.msg] $maps(.frame.msg) \ [list -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] destroy $path } else { # Do some translation of args into tk_messageBox syntax, then create # the tk_messageBox array set tkMBoxArgs $maps(tkMBox) set tkMBoxArgs(-default) [lindex $lbut $tkMBoxArgs(-default)] if { ![string equal $icon "none"] } { set tkMBoxArgs(-icon) $icon } if { [info exists tkMBoxArgs(-parent)] } { if { ![winfo exists $tkMBoxArgs(-parent)] } { unset tkMBoxArgs(-parent) } } set tkMBoxArgs(-type) $type set res [eval [list tk_messageBox] [array get tkMBoxArgs]] set res [lsearch $lbut $res] } Widget::destroy "$path#Message" return $res } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | # --------------------------------------------------------------------------- # notebook.tcl # This file is part of Unifix BWidget Toolkit # $Id: notebook.tcl,v 1.1 2004/12/24 16:32:01 jepler 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 # --------------------------------------------------------------------------- namespace eval NoteBook { Widget::define NoteBook notebook ArrowButton DynamicHelp 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} {-foreground String "" 0} {-background String "" 0} {-activeforeground String "" 0} {-activebackground String "" 0} {-disabledforeground String "" 0} } } DynamicHelp::include NoteBook::Page balloon Widget::bwinclude NoteBook ArrowButton .c.fg \ include {-foreground -background -activeforeground \ -activebackground -disabledforeground -repeatinterval \ -repeatdelay -borderwidth} \ initialize {-borderwidth 1} Widget::bwinclude NoteBook ArrowButton .c.fd \ include {-foreground -background -activeforeground \ -activebackground -disabledforeground -repeatinterval \ -repeatdelay -borderwidth} \ initialize {-borderwidth 1} 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 0 {top bottom}} {-homogeneous Boolean 0 0} {-borderwidth Int 1 0 "%d >= 1 && %d <= 2"} {-internalborderwidth Int 10 0 "%d >= 0"} {-width Int 0 0 "%d >= 0"} {-height Int 0 0 "%d >= 0"} {-repeatdelay BwResource "" 0 ArrowButton} {-repeatinterval BwResource "" 0 ArrowButton} {-fg Synonym -foreground} {-bg Synonym -background} {-bd Synonym -borderwidth} {-ibd Synonym -internalborderwidth} {-arcradius Int 2 0 "%d >= 0 && %d <= 8"} {-tabbevelsize Int 0 0 "%d >= 0 && %d <= 8"} {-tabpady Padding {0 6} 0 "%d >= 0"} } Widget::addmap NoteBook "" .c {-background {}} variable _warrow 12 bind NoteBook <Configure> [list NoteBook::_resize %W] bind NoteBook <Destroy> [list NoteBook::_destroy %W] } # --------------------------------------------------------------------------- # 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 _compute_height $path # Create the canvas set w [expr {[Widget::cget $path -width]+4}] set h [expr {[Widget::cget $path -height]+$data(hpage)+4}] frame $path -class NoteBook -borderwidth 0 -highlightthickness 0 \ -relief flat eval [list canvas $path.c] [Widget::subcget $path .c] \ [list -relief flat -borderwidth 0 -highlightthickness 0 \ -width $w -height $h] pack $path.c -expand yes -fill both # Removing the Canvas global bindings from our canvas as # application specific bindings on that tag may interfere with its # operation here. [SF item #459033] set bindings [bindtags $path.c] set pos [lsearch -exact $bindings Canvas] if {$pos >= 0} { set bindings [lreplace $bindings $pos $pos] } bindtags $path.c $bindings # Create the arrow button eval [list ArrowButton::create $path.c.fg] [Widget::subcget $path .c.fg] \ [list -highlightthickness 0 -type button -dir left \ -armcommand [list NoteBook::_xview $path -1]] eval [list ArrowButton::create $path.c.fd] [Widget::subcget $path .c.fd] \ [list -highlightthickness 0 -type button -dir right \ -armcommand [list NoteBook::_xview $path 1]] Widget::create NoteBook $path set bg [Widget::cget $path -background] foreach {data(dbg) data(lbg)} [BWidget::get3dcolor $path $bg] {break} 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 set opts [list -font -homogeneous -tabpady] foreach {cf ch cp} [eval Widget::hasChangedX $path $opts] {break} if {$cf || $ch || $cp} { if { $cf || $cp } { _compute_height $path } _compute_width $path set redraw 1 } set chibd [Widget::hasChanged $path -internalborderwidth ibd] set chbg [Widget::hasChanged $path -background bg] if {$chibd || $chbg} { foreach page $data(pages) { $path.f$page configure \ -borderwidth $ibd -background $bg } } if {$chbg} { 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] || [Widget::hasChanged $path -arcradius radius] || [Widget::hasChanged $path -tabbevelsize bevel] || [Widget::hasChanged $path -side side] } { set redraw 1 } set wc [Widget::hasChanged $path -width w] set hc [Widget::hasChanged $path -height h] if { $wc || $hc } { $path.c configure \ -width [expr {$w + 4}] \ -height [expr {$h + $data(hpage) + 4}] } if { $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 # Sven... well ok so this is called twice in some cases... NoteBook::_redraw $path # Sven end } # --------------------------------------------------------------------------- # Command NoteBook::insert # --------------------------------------------------------------------------- proc NoteBook::insert { path index page args } { variable $path upvar 0 $path data if { [lsearch -exact $data(pages) $page] != -1 } { return -code error "page \"$page\" already exists" } set f $path.f$page Widget::init NoteBook::Page $f $args set data(pages) [linsert $data(pages) $index $page] # If the page doesn't exist, create it; if it does reset its bg and ibd if { ![winfo exists $f] } { frame $f \ -relief flat \ -background [Widget::cget $path -background] \ -borderwidth [Widget::cget $path -internalborderwidth] set data($page,realized) 0 } else { $f configure \ -background [Widget::cget $path -background] \ -borderwidth [Widget::cget $path -internalborderwidth] } _compute_height $path _compute_width $path _draw_page $path $page 1 _set_help $path $page _redraw $path return $f } # --------------------------------------------------------------------------- # 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.c 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 != "" } { append script " \[NoteBook::_get_page_name [list $path] current 2\]" $path.c bind "page" $event $script } else { $path.c 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 -exact $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 } # --------------------------------------------------------------------------- # 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 -exact $data(pages) $page]] == -1 } { return -code error "page \"$page\" does not exists" } return $pos } proc NoteBook::_getoption { path page option } { set value [Widget::cget $path.f$page $option] if {![string length $value]} { set value [Widget::cget $path $option] } return $value } # --------------------------------------------------------------------------- # 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] } { _compute_height $path _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 wmax 0 set wtot 0 set hmax $data(hpage) set font [Widget::cget $path -font] if { ![info exists data(textid)] } { set data(textid) [$path.c create text 0 -100 -font $font -anchor nw] } set id $data(textid) $path.c itemconfigure $id -font $font foreach page $data(pages) { $path.c itemconfigure $id -text [Widget::cget $path.f$page -text] # Get the bbox for this text to determine its width, then substract # 6 from the width to account for canvas bbox oddness w.r.t. widths of # simple text. foreach {x1 y1 x2 y2} [$path.c bbox $id] break set x2 [expr {$x2 - 6}] set wtext [expr {$x2 - $x1 + 20}] if { [set img [Widget::cget $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::cget $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::_compute_height # --------------------------------------------------------------------------- proc NoteBook::_compute_height { path } { variable $path upvar 0 $path data set font [Widget::cget $path -font] set pady0 [Widget::_get_padding $path -tabpady 0] set pady1 [Widget::_get_padding $path -tabpady 1] set metrics [font metrics $font -linespace] set imgh 0 set lines 1 foreach page $data(pages) { set img [Widget::cget $path.f$page -image] set text [Widget::cget $path.f$page -text] set len [llength [split $text \n]] if {$len > $lines} { set lines $len} if {$img != ""} { set h [image height $img] if {$h > $imgh} { set imgh $h } } } set height [expr {$metrics * $lines}] if {$imgh > $height} { set height $imgh } set data(hpage) [expr {$height + $pady0 + $pady1}] } # --------------------------------------------------------------------------- # Command NoteBook::_get_x_page # --------------------------------------------------------------------------- proc NoteBook::_get_x_page { path pos } { variable _warrow variable $path upvar 0 $path data set base $data(base) # notebook tabs start flush with the left side of the notebook set x 0 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.c 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 equal [Widget::cget $path.f$page -state] "disabled"] } { return } switch -- $type { on { $path.c itemconfigure "$page:poly" \ -fill [_getoption $path $page -activebackground] $path.c itemconfigure "$page:text" \ -fill [_getoption $path $page -activeforeground] } off { $path.c itemconfigure "$page:poly" \ -fill [_getoption $path $page -background] $path.c itemconfigure "$page:text" \ -fill [_getoption $path $page -foreground] } } } # --------------------------------------------------------------------------- # Command NoteBook::_select # --------------------------------------------------------------------------- proc NoteBook::_select { path page } { variable $path upvar 0 $path data if {![string equal [Widget::cget $path.f$page -state] "normal"]} { return } set oldsel $data(select) if {[string equal $page $oldsel]} { return } if { ![string equal $oldsel ""] } { set cmd [Widget::cget $path.f$oldsel -leavecmd] if { ![string equal $cmd ""] } { set code [catch {uplevel \#0 $cmd} res] if { $code == 1 || $res == 0 } { return -code $code $res } } set data(select) "" _draw_page $path $oldsel 0 } set data(select) $page if { ![string equal $page ""] } { if { !$data($page,realized) } { set data($page,realized) 1 set cmd [Widget::cget $path.f$page -createcmd] if { ![string equal $cmd ""] } { uplevel \#0 $cmd } } set cmd [Widget::cget $path.f$page -raisecmd] if { ![string equal $cmd ""] } { 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 } _compute_height $path 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 -exact $data(pages) $page] set bg [_getoption $path $page -background] # lookup the tab colors set fgt $data(lbg) set fgb $data(dbg) set h $data(hpage) set xd [_get_x_page $path $pos] set xf [expr {$xd + $data($page,width)}] # Set the initial text offsets -- a few pixels down, centered left-to-right set textOffsetY [expr [Widget::_get_padding $path -tabpady 0] + 3] set textOffsetX 9 # Coordinates of the tab corners are: # c3 c4 # # c2 c5 # # c1 c6 # # where # c1 = $xd, $h # c2 = $xd+$xBevel, $arcRadius+2 # c3 = $xd+$xBevel+$arcRadius, $arcRadius # c4 = $xf+1-$xBevel, $arcRadius # c5 = $xf+$arcRadius-$xBevel, $arcRadius+2 # c6 = $xf+$arcRadius, $h set top 2 set arcRadius [Widget::cget $path -arcradius] set xBevel [Widget::cget $path -tabbevelsize] if { $data(select) != $page } { if { $pos == 0 } { # The leftmost page is a special case -- it is drawn with its # tab a little indented. To achieve this, we incr xd. We also # decr textOffsetX, so that the text doesn't move left/right. incr xd 2 incr textOffsetX -2 } } else { # The selected page's text is raised higher than the others incr top -2 } # Precompute some coord values that we use a lot set topPlusRadius [expr {$top + $arcRadius}] set rightPlusRadius [expr {$xf + $arcRadius}] set leftPlusRadius [expr {$xd + $arcRadius}] # Sven set side [Widget::cget $path -side] set tabsOnBottom [string equal $side "bottom"] set h1 [expr {[winfo height $path]}] set bd [Widget::cget $path -borderwidth] if {$bd < 1} { set bd 1 } if { $tabsOnBottom } { set top [expr {$top * -1}] set topPlusRadius [expr {$topPlusRadius * -1}] # Hrm... the canvas has an issue with drawing diagonal segments # of lines from the bottom to the top, so we have to draw this line # backwards (ie, lt is actually the bottom, drawn from right to left) set lt [list \ $rightPlusRadius [expr {$h1-$h-1}] \ [expr {$rightPlusRadius - $xBevel}] [expr {$h1 + $topPlusRadius}] \ [expr {$xf - $xBevel}] [expr {$h1 + $top}] \ [expr {$leftPlusRadius + $xBevel}] [expr {$h1 + $top}] \ ] set lb [list \ [expr {$leftPlusRadius + $xBevel}] [expr {$h1 + $top}] \ [expr {$xd + $xBevel}] [expr {$h1 + $topPlusRadius}] \ $xd [expr {$h1-$h-1}] \ ] # Because we have to do this funky reverse order thing, we have to # swap the top/bottom colors too. set tmp $fgt set fgt $fgb set fgb $tmp } else { set lt [list \ $xd $h \ [expr {$xd + $xBevel}] $topPlusRadius \ [expr {$leftPlusRadius + $xBevel}] $top \ [expr {$xf + 1 - $xBevel}] $top \ ] set lb [list \ [expr {$xf + 1 - $xBevel}] [expr {$top + 1}] \ [expr {$rightPlusRadius - $xBevel}] $topPlusRadius \ $rightPlusRadius $h \ ] } set img [Widget::cget $path.f$page -image] set ytext $top if { $tabsOnBottom } { # The "+ 2" below moves the text closer to the bottom of the tab, # so it doesn't look so cramped. I should be able to achieve the # same goal by changing the anchor of the text and using this formula: # ytext = $top + $h1 - $textOffsetY # but that doesn't quite work (I think the linespace from the text # gets in the way) incr ytext [expr {$h1 - $h + 2}] } incr ytext $textOffsetY set xtext [expr {$xd + $textOffsetX}] if { $img != "" } { # if there's an image, put it on the left and move the text right set ximg $xtext incr xtext [expr {[image width $img] + 2}] } if { $data(select) == $page } { set bd [Widget::cget $path -borderwidth] if {$bd < 1} { set bd 1 } set fg [_getoption $path $page -foreground] } else { set bd 1 if { [Widget::cget $path.f$page -state] == "normal" } { set fg [_getoption $path $page -foreground] } else { set fg [_getoption $path $page -disabledforeground] } } # --- creation ou modification de l'onglet -------------------------------- # Sven if { $create } { # Create the tab region eval [list $path.c create polygon] [concat $lt $lb] [list \ -tags [list page p:$page $page:poly] \ -outline $bg \ -fill $bg \ ] eval [list $path.c create line] $lt [list \ -tags [list page p:$page $page:top top] -fill $fgt -width $bd] eval [list $path.c create line] $lb [list \ -tags [list page p:$page $page:bot bot] -fill $fgb -width $bd] $path.c create text $xtext $ytext \ -text [Widget::cget $path.f$page -text] \ -font [Widget::cget $path -font] \ -fill $fg \ -anchor nw \ -tags [list page p:$page $page:text] $path.c bind p:$page <ButtonPress-1> \ [list NoteBook::_select $path $page] $path.c bind p:$page <Enter> \ [list NoteBook::_highlight on $path $page] $path.c bind p:$page <Leave> \ [list NoteBook::_highlight off $path $page] } else { $path.c coords "$page:text" $xtext $ytext $path.c itemconfigure "$page:text" \ -text [Widget::cget $path.f$page -text] \ -font [Widget::cget $path -font] \ -fill $fg } eval [list $path.c coords "$page:poly"] [concat $lt $lb] eval [list $path.c coords "$page:top"] $lt eval [list $path.c coords "$page:bot"] $lb $path.c itemconfigure "$page:poly" -fill $bg -outline $bg $path.c itemconfigure "$page:top" -fill $fgt -width $bd $path.c itemconfigure "$page:bot" -fill $fgb -width $bd # Sven end if { $img != "" } { # Sven set id [$path.c find withtag $page:img] if { [string equal $id ""] } { set id [$path.c create image $ximg $ytext \ -anchor nw \ -tags [list page p:$page $page:img]] } $path.c coords $id $ximg $ytext $path.c itemconfigure $id -image $img # Sven end } else { $path.c delete $page:img } if { $data(select) == $page } { $path.c raise p:$page } elseif { $pos == 0 } { if { $data(select) == "" } { $path.c raise p:$page } else { $path.c lower p:$page p:$data(select) } } else { set pred [lindex $data(pages) [expr {$pos-1}]] if { $data(select) != $pred || $pos == 1 } { $path.c lower p:$page p:$pred } else { $path.c 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}] # Sven set side [Widget::cget $path -side] if { [string equal $side "bottom"] } { set h1 [expr {[winfo height $path]-1}] set bd [Widget::cget $path -borderwidth] if {$bd < 1} { set bd 1 } set y0 [expr {$h1 - $data(hpage) + $bd}] } else { set y0 1 } # Sven end (all y positions where replaced with $y0 later) if { $data(base) > 0 } { # Sven if { ![llength [$path.c find withtag "leftarrow"]] } { $path.c create window $xl $y0 \ -width $_warrow \ -height $h \ -anchor nw \ -window $path.c.fg \ -tags "leftarrow" } else { $path.c coords "leftarrow" $xl $y0 $path.c itemconfigure "leftarrow" -width $_warrow -height $h } # Sven end } else { $path.c delete "leftarrow" } if { $data(base) < $nbpages-1 && $data(wpage) + [_get_x_page $path 0] + 6 > $w } { # Sven if { ![llength [$path.c find withtag "rightarrow"]] } { $path.c create window $xr $y0 \ -width $_warrow \ -height $h \ -window $path.c.fd \ -anchor nw \ -tags "rightarrow" } else { $path.c coords "rightarrow" $xr $y0 $path.c itemconfigure "rightarrow" -width $_warrow -height $h } # Sven end } else { $path.c 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::cget $path -borderwidth] if {$bd < 1} { set bd 1 } set x0 [expr {$bd - 1}] set arcRadius [Widget::cget $path -arcradius] # Sven set side [Widget::cget $path -side] if {"$side" == "bottom"} { set y0 0 set y1 [expr {$h - $data(hpage)}] set yo $y1 } else { set y0 $data(hpage) set y1 $h set yo [expr {$h-$y0}] } # Sven end 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 -exact $data(pages) $data(select)]] set xf [expr {$xd + $data($sel,width) + $arcRadius + 1}] set lbg $data(lbg) } # Sven if { [llength [$path.c find withtag rect]] == 0} { $path.c create line $xd $y0 $x0 $y0 $x0 $y1 \ -tags "rect toprect1" $path.c create line $w $y0 $xf $y0 \ -tags "rect toprect2" $path.c create line 1 $h $w $h $w $y0 \ -tags "rect botrect" } if {"$side" == "bottom"} { $path.c coords "toprect1" $w $y0 $x0 $y0 $x0 $y1 $path.c coords "toprect2" $x0 $y1 $xd $y1 $path.c coords "botrect" $xf $y1 $w $y1 $w $y0 $path.c itemconfigure "toprect1" -fill $lbg -width $bd $path.c itemconfigure "toprect2" -fill $dbg -width $bd $path.c itemconfigure "botrect" -fill $dbg -width $bd } else { $path.c coords "toprect1" $xd $y0 $x0 $y0 $x0 $y1 $path.c coords "toprect2" $w $y0 $xf $y0 $path.c coords "botrect" $x0 $h $w $h $w $y0 $path.c itemconfigure "toprect1" -fill $lbg -width $bd $path.c itemconfigure "toprect2" -fill $lbg -width $bd $path.c itemconfigure "botrect" -fill $dbg -width $bd } $path.c raise "rect" # Sven end if { $sel != "" } { # Sven if { [llength [$path.c find withtag "window"]] == 0 } { $path.c create window 2 [expr {$y0+1}] \ -width [expr {$w-3}] \ -height [expr {$yo-3}] \ -anchor nw \ -tags "window" \ -window $path.f$sel } $path.c coords "window" 2 [expr {$y0+1}] $path.c itemconfigure "window" \ -width [expr {$w-3}] \ -height [expr {$yo-3}] \ -window $path.f$sel # Sven end } else { $path.c delete "window" } } # ----------------------------------------------------------------------------- # Command NoteBook::_resize # ----------------------------------------------------------------------------- proc NoteBook::_resize { path } { variable $path upvar 0 $path data if {!$data(realized)} { if { [set width [Widget::cget $path -width]] == 0 || [set height [Widget::cget $path -height]] == 0 } { compute_size $path } set data(realized) 1 } NoteBook::_redraw $path } # Tree::_set_help -- # # Register dynamic help for a node in the tree. # # Arguments: # path Tree to query # node Node in the tree # force Optional argument to force a reset of the help # # Results: # none # Tree::_set_help -- # # Register dynamic help for a node in the tree. # # Arguments: # path Tree to query # node Node in the tree # force Optional argument to force a reset of the help # # Results: # none proc NoteBook::_set_help { path page } { Widget::getVariable $path help set item $path.f$page set opts [list -helptype -helptext -helpvar] foreach {cty ctx cv} [eval [list Widget::hasChangedX $item] $opts] break set text [Widget::getoption $item -helptext] ## If we've never set help for this item before, and text is not blank, ## we need to setup help. We also need to reset help if any of the ## options have changed. if { (![info exists help($page)] && $text != "") || $cty || $ctx || $cv } { set help($page) 1 set type [Widget::getoption $item -helptype] switch $type { balloon { DynamicHelp::register $path.c balloon p:$page $text } variable { set var [Widget::getoption $item -helpvar] DynamicHelp::register $path.c variable p:$page $var $text } } } } proc NoteBook::_get_page_name { path {item current} {tagindex end-1} } { return [string range [lindex [$path.c gettags $item] $tagindex] 2 end] } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 | # ------------------------------------------------------------------------------ # pagesmgr.tcl # This file is part of Unifix BWidget Toolkit # $Id: pagesmgr.tcl,v 1.1 2004/12/24 16:32:01 jepler 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 # ------------------------------------------------------------------------------ package require Tcl 8.1.1 namespace eval PagesManager { Widget::define PagesManager pagesmgr Widget::declare PagesManager { {-background TkResource "" 0 frame} {-cursor TkResource "" 0 frame} {-width Int 0 0 "%d >= 0"} {-height Int 0 0 "%d >= 0"} } Widget::addmap PagesManager "" :cmd { -width {} -height {} -cursor {} } } # ------------------------------------------------------------------------------ # 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 ----------------------------------------------------------------- eval canvas $path -relief flat -bd 0 -highlightthickness 0 \ [Widget::subcget $path :cmd] bind $path <Configure> [list PagesManager::_realize $path] bind $path <Destroy> [list PagesManager::_destroy $path] return [Widget::create PagesManager $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 -exact $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::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> [list PagesManager::_draw_area $path] } # ------------------------------------------------------------------------------ # Command PagesManager::_destroy # ------------------------------------------------------------------------------ proc PagesManager::_destroy { path } { variable $path upvar 0 $path data Widget::destroy $path unset data } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | # ---------------------------------------------------------------------------- # panedw.tcl # This file is part of Unifix BWidget Toolkit # ---------------------------------------------------------------------------- # Index of commands: # - PanedWindow::create # - PanedWindow::configure # - PanedWindow::cget # - PanedWindow::add # - PanedWindow::getframe # - PanedWindow::_apply_weights # - PanedWindow::_destroy # - PanedWindow::_beg_move_sash # - PanedWindow::_move_sash # - PanedWindow::_end_move_sash # - PanedWindow::_realize # ---------------------------------------------------------------------------- # JDC: added option to choose behavior of weights # -weights extra : only apply weights to extra space (as current (>= 1.3.1) with grid command) # -weights available : apply weights to total available space (as before (<1.3.1) with place command) namespace eval PanedWindow { Widget::define PanedWindow panedw namespace eval Pane { Widget::declare PanedWindow::Pane { {-minsize Int 0 0 "%d >= 0"} {-weight Int 1 0 "%d >= 0"} } } Widget::declare PanedWindow { {-side Enum top 1 {top left bottom right}} {-width Int 10 1 "%d >=3"} {-pad Int 4 1 "%d >= 0"} {-background TkResource "" 0 frame} {-bg Synonym -background} {-activator Enum "" 1 {line button}} {-weights Enum extra 1 {extra available}} } variable _panedw } # ---------------------------------------------------------------------------- # Command PanedWindow::create # ---------------------------------------------------------------------------- proc PanedWindow::create { path args } { variable _panedw Widget::init PanedWindow $path $args frame $path -background [Widget::cget $path -background] -class PanedWindow set _panedw($path,nbpanes) 0 set _panedw($path,weights) "" set _panedw($path,configuredone) 0 bind $path <Configure> [list PanedWindow::_realize $path %w %h] bind $path <Destroy> [list PanedWindow::_destroy $path] return [Widget::create PanedWindow $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] set weight [Widget::getoption $path.f$num -weight] lappend _panedw($path,weights) $weight 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 5 -relief raised \ -highlightthickness 0 -bg $bg] set but [frame $frame.but -bd 1 -relief raised \ -highlightthickness 0 -bg $bg -width $wbut -height $wbut] set placeButton 1 set sepsize 2 set activator [Widget::getoption $path -activator] if {$activator == ""} { if { $::tcl_platform(platform) != "windows" } { set activator button } else { set activator line } } if {$activator == "button"} { set activator $but } else { set activator $sep set sepsize 4 $sep configure -bd 3 set placeButton 0 } if {[string equal $side "top"] || [string equal $side "bottom"]} { place $sep -relx 0.5 -y 0 -width $sepsize -relheight 1.0 -anchor n if { $placeButton } { if {[string equal $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 } } $activator 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 $sepsize -relwidth 1.0 -anchor w if { $placeButton } { if {[string equal $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 } } $activator 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 $activator <ButtonPress-1> \ [list PanedWindow::_beg_move_sash $path $num %X %Y] } else { if { [string equal $side "top"] || \ [string equal $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 equal $side "top"] || [string equal $side "bottom"] } { grid $pane -column [expr {2*$num}] -row 0 -sticky nsew grid columnconfigure $path [expr {2*$num}] -weight $weight } else { grid $pane -row [expr {2*$num}] -column 0 -sticky nsew grid rowconfigure $path [expr {2*$num}] -weight $weight } pack $user -fill both -expand yes incr _panedw($path,nbpanes) if {$_panedw($path,configuredone)} { _realize $path [winfo width $path] [winfo height $path] } return $user } # ---------------------------------------------------------------------------- # Command PanedWindow::getframe # ---------------------------------------------------------------------------- proc PanedWindow::getframe { path index } { if { [winfo exists $path.f$index.frame] } { return $path.f$index.frame } } # ---------------------------------------------------------------------------- # 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 equal $side "top"] || [string equal $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> [list PanedWindow::_end_move_sash $path $top $num $xmin $xmax %X rootx width] bind $top <Motion> [list 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> [list PanedWindow::_end_move_sash \ $path $top $num $ymin $ymax %Y rooty height] bind $top <Motion> [list 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> {} _apply_weights $path set _panedw($path,configuredone) 1 return } # ---------------------------------------------------------------------------- # Command PanedWindow::_apply_weights # ---------------------------------------------------------------------------- proc PanedWindow::_apply_weights { path } { variable _panedw set weights [Widget::getoption $path -weights] if {[string equal $weights "extra"]} { return } set side [Widget::getoption $path -side] if {[string equal $side "top"] || [string equal $side "bottom"] } { set size width } else { set size height } set wsash [expr {[Widget::getoption $path -width] + 2*[Widget::getoption $path -pad]}] set rs [winfo $size $path] set s [expr {$rs - ($_panedw($path,nbpanes) - 1) * $wsash}] set tw 0.0 foreach w $_panedw($path,weights) { set tw [expr {$tw + $w}] } for {set i 0} {$i < $_panedw($path,nbpanes)} {incr i} { set rw [lindex $_panedw($path,weights) $i] set ps [expr {int($rw / $tw * $s)}] $path.f$i configure -$size $ps } return } # ---------------------------------------------------------------------------- # 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 } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 177 178 179 180 181 182 183 184 185 | # ----------------------------------------------------------------------------- # passwddlg.tcl # This file is part of Unifix BWidget Toolkit # by Stephane Lavirotte (Stephane.Lavirotte@sophia.inria.fr) # $Id: passwddlg.tcl,v 1.1 2004/12/24 16:32:01 jepler Exp $ # ----------------------------------------------------------------------------- # Index of commands: # - PasswdDlg::create # - PasswdDlg::configure # - PasswdDlg::cget # - PasswdDlg::_verifonlogin # - PasswdDlg::_verifonpasswd # - PasswdDlg::_max #------------------------------------------------------------------------------ namespace eval PasswdDlg { Widget::define PasswdDlg passwddlg Dialog LabelEntry Widget::bwinclude PasswdDlg Dialog :cmd \ remove {-image -bitmap -side -default -cancel -separator} \ initialize {-modal local -anchor c} Widget::bwinclude PasswdDlg LabelEntry .frame.lablog \ remove [list -command -justify -name -show -side \ -state -takefocus -width -xscrollcommand -padx -pady \ -dragenabled -dragendcmd -dragevent -draginitcmd \ -dragtype -dropenabled -dropcmd -dropovercmd -droptypes \ ] \ prefix [list login -editable -helptext -helpvar -label \ -text -textvariable -underline \ ] \ initialize [list -relief sunken -borderwidth 2 \ -labelanchor w -width 15 -loginlabel "Login" \ ] Widget::bwinclude PasswdDlg LabelEntry .frame.labpass \ remove [list -command -width -show -side -takefocus \ -xscrollcommand -dragenabled -dragendcmd -dragevent \ -draginitcmd -dragtype -dropenabled -dropcmd \ -dropovercmd -droptypes -justify -padx -pady -name \ ] \ prefix [list passwd -editable -helptext -helpvar -label \ -state -text -textvariable -underline \ ] \ initialize [list -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} } } # ----------------------------------------------------------------------------- # Command PasswdDlg::create # ----------------------------------------------------------------------------- proc PasswdDlg::create { path args } { array set maps [list PasswdDlg {} :cmd {} .frame.lablog {} \ .frame.labpass {}] array set maps [Widget::parseArgs PasswdDlg $args] Widget::initFromODB PasswdDlg "$path#PasswdDlg" $maps(PasswdDlg) # Extract the PasswdDlg megawidget options (those that don't map to a # subwidget) set type [Widget::cget "$path#PasswdDlg" -type] set cmd [Widget::cget "$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 [list Dialog::create $path] $maps(:cmd) \ [list -class 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> [list Widget::destroy $path\#PasswdDlg] set lablog [eval [list LabelEntry::create $frame.lablog] \ $maps(.frame.lablog) \ [list -name login -dragenabled 0 -dropenabled 0 \ -command [list PasswdDlg::_verifonpasswd \ $path $frame.labpass]]] set labpass [eval [list LabelEntry::create $frame.labpass] \ $maps(.frame.labpass) \ [list -name password -show "*" \ -dragenabled 0 -dropenabled 0 \ -command [list PasswdDlg::_verifonlogin \ $path $frame.lablog]]] # compute label width -- TODO: this should probably not override the # cmdline arg set loglabel [$lablog cget -label] set passlabel [$labpass cget -label] set labwidth [_max [string length $loglabel] [string length $passlabel]] incr labwidth 1 $lablog configure -labelwidth $labwidth $labpass configure -labelwidth $labwidth Widget::create PasswdDlg $path 0 pack $frame.lablog $frame.labpass -fill x -expand 1 # added by bach@mwgdna.com # give focus to loginlabel unless the state is disabled if {[$lablog cget -editable]} { focus $frame.lablog.e } else { focus $frame.labpass.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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 44 45 46 | if {[catch {package require Tcl}]} return package ifneeded BWidget 1.7 "\ package require Tk 8.1.1;\ [list tclPkgSetup $dir BWidget 1.7 { {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}} {ctrlframe.tcl source {ControlFrame ControlFrame::create ControlFrame::use}} {color.tcl source {SelectColor SelectColor::menu SelectColor::dialog SelectColor::setcolor}} {dynhelp.tcl source {DynamicHelp::configure DynamicHelp::use DynamicHelp::register DynamicHelp::include DynamicHelp::add DynamicHelp::delete}} {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}} {wizard.tcl source {Wizard Wizard::create Wizard::use SimpleWizard ClassicWizard}} {xpm2image.tcl source {xpm-to-image}} }]; \ [list namespace eval ::BWIDGET {}]; \ [list set ::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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 | # ---------------------------------------------------------------------------- # 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::define ProgressBar progressbar Widget::declare ProgressBar { {-type Enum normal 0 {normal incremental infinite nonincremental_infinite}} {-maximum Int 100 0 "%d >= 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} {-idle Boolean 0 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 } # ---------------------------------------------------------------------------- # Command ProgressBar::create # ---------------------------------------------------------------------------- proc ProgressBar::create { path args } { variable _widget array set maps [list ProgressBar {} :cmd {} .bar {}] array set maps [Widget::parseArgs ProgressBar $args] eval frame $path $maps(:cmd) -class ProgressBar -bd 0 \ -highlightthickness 0 -relief flat Widget::initFromODB ProgressBar $path $maps(ProgressBar) set c [eval [list canvas $path.bar] $maps(.bar) -highlightthickness 0] set fg [Widget::cget $path -foreground] if { [string equal [Widget::cget $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 set _widget($path,var) [Widget::cget $path -variable] if {$_widget($path,var) != ""} { GlobalVar::tracevar variable $_widget($path,var) w \ [list ProgressBar::_modify $path] set _widget($path,afterid) \ [after idle [list ProgressBar::_modify $path]] } bind $path.bar <Destroy> [list ProgressBar::_destroy $path] bind $path.bar <Configure> [list ProgressBar::_modify $path] return [Widget::create ProgressBar $path] } # ---------------------------------------------------------------------------- # Command ProgressBar::configure # ---------------------------------------------------------------------------- proc ProgressBar::configure { path args } { variable _widget set res [Widget::configure $path $args] if { [Widget::hasChangedX $path -variable] } { set newv [Widget::cget $path -variable] if { $_widget($path,var) != "" } { GlobalVar::tracevar vdelete $_widget($path,var) w \ [list ProgressBar::_modify $path] } if { $newv != "" } { set _widget($path,var) $newv GlobalVar::tracevar variable $newv w \ [list ProgressBar::_modify $path] if {![info exists _widget($path,afterid)]} { set _widget($path,afterid) \ [after idle [list ProgressBar::_modify $path]] } } else { set _widget($path,var) "" } } foreach {cbd cor cma} [Widget::hasChangedX $path -borderwidth \ -orient -maximum] break if { $cbd || $cor || $cma } { if {![info exists _widget($path,afterid)]} { set _widget($path,afterid) \ [after idle [list ProgressBar::_modify $path]] } } if { [Widget::hasChangedX $path -foreground] } { set fg [Widget::cget $path -foreground] $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::_modify # ---------------------------------------------------------------------------- proc ProgressBar::_modify { path args } { variable _widget catch {unset _widget($path,afterid)} 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 && $type != "normal" && \ $type != "nonincremental_infinite"} { 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 {$type == "infinite" || $type == "nonincremental_infinite"} { # JDC: New infinite behaviour set tval [expr {$val % $max}] if { $tval < ($max / 2.0) } { set x0 [expr {double($tval) / double($max) * 1.5}] } else { set x0 [expr {(1.0-(double($tval) / double($max))) * 1.5}] } set x1 [expr {$x0 + 0.25}] if {[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 {[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*(1.0 - double($val)/$max)}] } } } if {![Widget::cget $path -idle]} { update idletasks } } # ---------------------------------------------------------------------------- # Command ProgressBar::_destroy # ---------------------------------------------------------------------------- proc ProgressBar::_destroy { path } { variable _widget if {[info exists _widget($path,afterid)]} { after cancel $_widget($path,afterid) unset _widget($path,afterid) } if {[info exists _widget($path,var)]} { if {$_widget($path,var) != ""} { GlobalVar::tracevar vdelete $_widget($path,var) w \ [list ProgressBar::_modify $path] } unset _widget($path,var) } unset _widget($path,dir) Widget::destroy $path } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 | # ---------------------------------------------------------------------------- # progressdlg.tcl # This file is part of Unifix BWidget Toolkit # ---------------------------------------------------------------------------- # Index of commands: # - ProgressDlg::create # ---------------------------------------------------------------------------- namespace eval ProgressDlg { Widget::define ProgressDlg progressdlg Dialog ProgressBar Widget::bwinclude ProgressDlg Dialog :cmd \ 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 :cmd .frame.msg \ {-width {} -height {} -textvariable {} -font {} -background {}} } # ---------------------------------------------------------------------------- # Command ProgressDlg::create # ---------------------------------------------------------------------------- proc ProgressDlg::create { path args } { array set maps [list ProgressDlg {} :cmd {} .frame.msg {} .frame.pb {}] array set maps [Widget::parseArgs ProgressDlg $args] eval [list Dialog::create] $path $maps(:cmd) \ [list -image [Bitmap::get hourglass] \ -modal none -side bottom -anchor c -class ProgressDlg] Widget::initFromODB ProgressDlg "$path#ProgressDlg" $maps(ProgressDlg) wm protocol $path WM_DELETE_WINDOW {;} set frame [Dialog::getframe $path] bind $frame <Destroy> [list Widget::destroy $path\#ProgressDlg] $frame configure -cursor watch eval [list label $frame.msg] $maps(.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 eval [list ProgressBar::create] $frame.pb $maps(.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 return [Widget::create ProgressDlg $path 0] } # ---------------------------------------------------------------------------- # 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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 211 212 213 214 215 216 217 218 219 220 | # ---------------------------------------------------------------------------- # scrollframe.tcl # This file is part of Unifix BWidget Toolkit # $Id: scrollframe.tcl,v 1.1 2004/12/24 16:32:01 jepler Exp $ # ---------------------------------------------------------------------------- # Index of commands: # - ScrollableFrame::create # - ScrollableFrame::configure # - ScrollableFrame::cget # - ScrollableFrame::getframe # - ScrollableFrame::see # - ScrollableFrame::xview # - ScrollableFrame::yview # - ScrollableFrame::_resize # ---------------------------------------------------------------------------- namespace eval ScrollableFrame { Widget::define ScrollableFrame scrollframe 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> [list ScrollableFrame::_resize %W] bind BwScrollableFrame <Destroy> [list Widget::destroy %W] } # ---------------------------------------------------------------------------- # Command ScrollableFrame::create # ---------------------------------------------------------------------------- proc ScrollableFrame::create { path args } { Widget::init ScrollableFrame $path $args set canvas [eval [list canvas $path] [Widget::subcget $path :cmd] \ -highlightthickness 0 -borderwidth 0 -relief flat] set frame [eval [list 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> \ [list ScrollableFrame::_frameConfigure $canvas $frame %w %h] bindtags $path [list $path BwScrollableFrame [winfo toplevel $path] all] return [Widget::create ScrollableFrame $path] } # ---------------------------------------------------------------------------- # 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} {xOffset 0} {yOffset 0}} { 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 equal $horz "left"] } { if { $x1 > $xb1 } { set dx [expr {$x1-$xb1}] } if { $x0 < $xb0+$dx } { set dx [expr {$x0-$xb0}] } } elseif { [string equal $horz "right"] } { if { $x0 < $xb0 } { set dx [expr {$x0-$xb0}] } if { $x1 > $xb1+$dx } { set dx [expr {$x1-$xb1}] } } if { [string equal $vert "top"] } { if { $y1 > $yb1 } { set dy [expr {$y1-$yb1}] } if { $y0 < $yb0+$dy } { set dy [expr {$y0-$yb0}] } } elseif { [string equal $vert "bottom"] } { if { $y0 < $yb0 } { set dy [expr {$y0-$yb0}] } if { $y1 > $yb1+$dy } { set dy [expr {$y1-$yb1}] } } if {($dx + $xOffset) != 0} { set x [expr {($xb0+$dx+$xOffset)/[winfo width $path.frame]}] $path:cmd xview moveto $x } if {($dy + $yOffset) != 0} { set y [expr {($yb0+$dy+$yOffset)/[winfo height $path.frame]}] $path:cmd yview moveto $y } } # ---------------------------------------------------------------------------- # Command ScrollableFrame::xview # ---------------------------------------------------------------------------- proc ScrollableFrame::xview { path args } { return [eval [list $path:cmd xview] $args] } # ---------------------------------------------------------------------------- # Command ScrollableFrame::yview # ---------------------------------------------------------------------------- proc ScrollableFrame::yview { path args } { return [eval [list $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] } } # ---------------------------------------------------------------------------- # Command ScrollableFrame::_frameConfigure # ---------------------------------------------------------------------------- proc ScrollableFrame::_frameConfigure {canvas frame width height} { # This ensures that we don't get funny scrollability in the frame # when it is smaller than the canvas space if {[winfo height $frame] < [winfo height $canvas]} { set height [winfo height $canvas] } if {[winfo width $frame] < [winfo width $canvas]} { set width [winfo width $canvas] } $canvas:cmd configure -scrollregion [list 0 0 $width $height] } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 | # ------------------------------------------------------------------------------ # scrollview.tcl # This file is part of Unifix BWidget Toolkit # $Id: scrollview.tcl,v 1.1 2004/12/24 16:32:01 jepler 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::define ScrollView scrollview Widget::tkinclude ScrollView canvas :cmd \ include {-relief -borderwidth -background -width -height -cursor} \ initialize {-relief flat -borderwidth 0 -width 30 -height 30 \ -cursor crosshair} 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} } bind BwScrollView <B1-Motion> [list ScrollView::_set_view %W motion %x %y] bind BwScrollView <ButtonPress-1> [list ScrollView::_set_view %W set %x %y] bind BwScrollView <Configure> [list ScrollView::_resize %W] bind BwScrollView <Destroy> [list ScrollView::_destroy %W] } # ------------------------------------------------------------------------------ # Command ScrollView::create # ------------------------------------------------------------------------------ proc ScrollView::create { path args } { Widget::init ScrollView $path $args eval [list canvas $path] [Widget::subcget $path :cmd] -highlightthickness 0 Widget::create ScrollView $path Widget::getVariable $path _widget set w [Widget::cget $path -window] set _widget(bd) [Widget::cget $path -borderwidth] set _widget(width) [Widget::cget $path -width] set _widget(height) [Widget::cget $path -height] if {[winfo exists $w]} { set _widget(oldxscroll) [$w cget -xscrollcommand] set _widget(oldyscroll) [$w cget -yscrollcommand] $w configure \ -xscrollcommand [list ScrollView::_set_hscroll $path] \ -yscrollcommand [list ScrollView::_set_vscroll $path] } $path:cmd create rectangle -2 -2 -2 -2 \ -fill [Widget::cget $path -fill] \ -outline [Widget::cget $path -foreground] \ -tags view bindtags $path [list $path BwScrollView [winfo toplevel $path] all] return $path } # ------------------------------------------------------------------------------ # Command ScrollView::configure # ------------------------------------------------------------------------------ proc ScrollView::configure { path args } { Widget::getVariable $path _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(oldxscroll) \ -yscrollcommand $_widget(oldyscroll) } if { [winfo exists $w] } { set _widget(oldxscroll) [$w cget -xscrollcommand] set _widget(oldyscroll) [$w cget -yscrollcommand] $w configure \ -xscrollcommand [list ScrollView::_set_hscroll $path] \ -yscrollcommand [list ScrollView::_set_vscroll $path] } else { $path:cmd coords view -2 -2 -2 -2 set _widget(oldxscroll) {} set _widget(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::_set_hscroll # ------------------------------------------------------------------------------ proc ScrollView::_set_hscroll { path vmin vmax } { Widget::getVariable $path _widget set c [$path:cmd coords view] set x0 [expr {$vmin*$_widget(width)+$_widget(bd)}] set x1 [expr {$vmax*$_widget(width)+$_widget(bd)-1}] $path:cmd coords view $x0 [lindex $c 1] $x1 [lindex $c 3] if { $_widget(oldxscroll) != "" } { uplevel \#0 $_widget(oldxscroll) $vmin $vmax } } # ------------------------------------------------------------------------------ # Command ScrollView::_set_vscroll # ------------------------------------------------------------------------------ proc ScrollView::_set_vscroll { path vmin vmax } { Widget::getVariable $path _widget set c [$path:cmd coords view] set y0 [expr {$vmin*$_widget(height)+$_widget(bd)}] set y1 [expr {$vmax*$_widget(height)+$_widget(bd)-1}] $path:cmd coords view [lindex $c 0] $y0 [lindex $c 2] $y1 if { $_widget(oldyscroll) != "" } { uplevel \#0 $_widget(oldyscroll) $vmin $vmax } } # ------------------------------------------------------------------------------ # Command ScrollView::_update_scroll # ------------------------------------------------------------------------------ proc ScrollView::_update_scroll { path callscroll hminmax vminmax } { Widget::getVariable $path _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(width)+$_widget(bd)}] set x1 [expr {$hmax*$_widget(width)+$_widget(bd)-1}] set y0 [expr {$vmin*$_widget(height)+$_widget(bd)}] set y1 [expr {$vmax*$_widget(height)+$_widget(bd)-1}] $path:cmd coords view $x0 $y0 $x1 $y1 if { $callscroll } { if { $_widget(oldxscroll) != "" } { uplevel \#0 $_widget(oldxscroll) $hmin $hmax } if { $_widget(oldyscroll) != "" } { uplevel \#0 $_widget(oldyscroll) $vmin $vmax } } } # ------------------------------------------------------------------------------ # Command ScrollView::_set_view # ------------------------------------------------------------------------------ proc ScrollView::_set_view { path cmd x y } { Widget::getVariable $path _widget set w [Widget::getoption $path -window] if {[winfo exists $w]} { if {[string equal $cmd "set"]} { set c [$path:cmd coords view] set x0 [lindex $c 0] set y0 [lindex $c 1] set x1 [lindex $c 2] set y1 [lindex $c 3] if {$x >= $x0 && $x <= $x1 && $y >= $y0 && $y <= $y1} { set _widget(dx) [expr {$x-$x0}] set _widget(dy) [expr {$y-$y0}] return } else { set x0 [expr {$x-($x1-$x0)/2}] set y0 [expr {$y-($y1-$y0)/2}] set _widget(dx) [expr {$x-$x0}] set _widget(dy) [expr {$y-$y0}] set vh [expr {double($x0-$_widget(bd))/$_widget(width)}] set vv [expr {double($y0-$_widget(bd))/$_widget(height)}] } } elseif {[string equal $cmd "motion"]} { set vh [expr {double($x-$_widget(dx)-$_widget(bd))/$_widget(width)}] set vv [expr {double($y-$_widget(dy)-$_widget(bd))/$_widget(height)}] } $w xview moveto $vh $w yview moveto $vv _update_scroll $path 1 [$w xview] [$w yview] } } # ------------------------------------------------------------------------------ # Command ScrollView::_resize # ------------------------------------------------------------------------------ proc ScrollView::_resize { path } { Widget::getVariable $path _widget set _widget(bd) [Widget::getoption $path -borderwidth] set _widget(width) [expr {[winfo width $path]-2*$_widget(bd)}] set _widget(height) [expr {[winfo height $path]-2*$_widget(bd)}] set w [Widget::getoption $path -window] if { [winfo exists $w] } { _update_scroll $path 0 [$w xview] [$w yview] } } # ------------------------------------------------------------------------------ # Command ScrollView::_destroy # ------------------------------------------------------------------------------ proc ScrollView::_destroy { path } { Widget::getVariable $path _widget set w [Widget::getoption $path -window] if { [winfo exists $w] } { $w configure \ -xscrollcommand $_widget(oldxscroll) \ -yscrollcommand $_widget(oldyscroll) } Widget::destroy $path } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 | # ----------------------------------------------------------------------------- # scrollw.tcl # This file is part of Unifix BWidget Toolkit # $Id: scrollw.tcl,v 1.1 2004/12/24 16:32:01 jepler Exp $ # ----------------------------------------------------------------------------- # Index of commands: # - ScrolledWindow::create # - ScrolledWindow::getframe # - ScrolledWindow::setwidget # - ScrolledWindow::configure # - ScrolledWindow::cget # - ScrolledWindow::_set_hframe # - ScrolledWindow::_set_vscroll # - ScrolledWindow::_setData # - ScrolledWindow::_setSBSize # - ScrolledWindow::_realize # ----------------------------------------------------------------------------- namespace eval ScrolledWindow { Widget::define ScrolledWindow scrollw Widget::declare ScrolledWindow { {-background TkResource "" 0 button} {-scrollbar Enum both 0 {none both vertical horizontal}} {-auto Enum both 0 {none both vertical horizontal}} {-sides Enum se 0 {ne en nw wn se es sw ws}} {-size Int 0 1 "%d >= 0"} {-ipad Int 1 1 "%d >= 0"} {-managed Boolean 1 1} {-relief TkResource flat 0 frame} {-borderwidth TkResource 0 0 frame} {-bg Synonym -background} {-bd Synonym -borderwidth} } Widget::addmap ScrolledWindow "" :cmd {-relief {} -borderwidth {}} } # ----------------------------------------------------------------------------- # Command ScrolledWindow::create # ----------------------------------------------------------------------------- proc ScrolledWindow::create { path args } { Widget::init ScrolledWindow $path $args Widget::getVariable $path data set bg [Widget::cget $path -background] set sbsize [Widget::cget $path -size] set sw [frame $path \ -relief flat -borderwidth 0 -background $bg \ -highlightthickness 0 -takefocus 0] scrollbar $path.hscroll \ -highlightthickness 0 -takefocus 0 \ -orient horiz \ -relief sunken \ -bg $bg scrollbar $path.vscroll \ -highlightthickness 0 -takefocus 0 \ -orient vert \ -relief sunken \ -bg $bg set data(realized) 0 _setData $path \ [Widget::cget $path -scrollbar] \ [Widget::cget $path -auto] \ [Widget::cget $path -sides] if {[Widget::cget $path -managed]} { set data(hsb,packed) $data(hsb,present) set data(vsb,packed) $data(vsb,present) } else { set data(hsb,packed) 0 set data(vsb,packed) 0 } if {$sbsize} { $path.vscroll configure -width $sbsize $path.hscroll configure -width $sbsize } else { set sbsize [$path.vscroll cget -width] } set data(ipad) [Widget::cget $path -ipad] if {$data(hsb,packed)} { grid $path.hscroll -column 1 -row $data(hsb,row) \ -sticky ew -ipady $data(ipad) } if {$data(vsb,packed)} { grid $path.vscroll -column $data(vsb,column) -row 1 \ -sticky ns -ipadx $data(ipad) } grid columnconfigure $path 1 -weight 1 grid rowconfigure $path 1 -weight 1 bind $path <Configure> [list ScrolledWindow::_realize $path] bind $path <Destroy> [list ScrolledWindow::_destroy $path] return [Widget::create ScrolledWindow $path] } # ----------------------------------------------------------------------------- # Command ScrolledWindow::getframe # ----------------------------------------------------------------------------- proc ScrolledWindow::getframe { path } { return $path } # ----------------------------------------------------------------------------- # Command ScrolledWindow::setwidget # ----------------------------------------------------------------------------- proc ScrolledWindow::setwidget { path widget } { Widget::getVariable $path data if {[info exists data(widget)] && [winfo exists $data(widget)] && ![string equal $data(widget) $widget]} { grid remove $data(widget) $data(widget) configure -xscrollcommand "" -yscrollcommand "" } set data(widget) $widget grid $widget -in $path -row 1 -column 1 -sticky news $path.hscroll configure -command [list $widget xview] $path.vscroll configure -command [list $widget yview] $widget configure \ -xscrollcommand [list ScrolledWindow::_set_hscroll $path] \ -yscrollcommand [list ScrolledWindow::_set_vscroll $path] } # ----------------------------------------------------------------------------- # Command ScrolledWindow::configure # ----------------------------------------------------------------------------- proc ScrolledWindow::configure { path args } { Widget::getVariable $path data set res [Widget::configure $path $args] if { [Widget::hasChanged $path -background bg] } { $path configure -background $bg catch {$path.hscroll configure -background $bg} catch {$path.vscroll configure -background $bg} } if {[Widget::hasChanged $path -scrollbar scrollbar] | \ [Widget::hasChanged $path -auto auto] | \ [Widget::hasChanged $path -sides sides]} { _setData $path $scrollbar $auto $sides foreach {vmin vmax} [$path.hscroll get] { break } set data(hsb,packed) [expr {$data(hsb,present) && \ (!$data(hsb,auto) || ($vmin != 0 || $vmax != 1))}] foreach {vmin vmax} [$path.vscroll get] { break } set data(vsb,packed) [expr {$data(vsb,present) && \ (!$data(vsb,auto) || ($vmin != 0 || $vmax != 1))}] set data(ipad) [Widget::cget $path -ipad] if {$data(hsb,packed)} { grid $path.hscroll -column 1 -row $data(hsb,row) \ -sticky ew -ipady $data(ipad) } if {$data(vsb,packed)} { grid $path.vscroll -column $data(vsb,column) -row 1 \ -sticky ns -ipadx $data(ipad) } } return $res } # ----------------------------------------------------------------------------- # Command ScrolledWindow::cget # ----------------------------------------------------------------------------- proc ScrolledWindow::cget { path option } { return [Widget::cget $path $option] } # ----------------------------------------------------------------------------- # Command ScrolledWindow::_set_hscroll # ----------------------------------------------------------------------------- proc ScrolledWindow::_set_hscroll { path vmin vmax } { Widget::getVariable $path data if {$data(realized) && $data(hsb,present)} { if {$data(hsb,auto)} { if {$data(hsb,packed) && $vmin == 0 && $vmax == 1} { if {![info exists data(hlock)]} { set data(hsb,packed) 0 grid remove $path.hscroll } } elseif {!$data(hsb,packed) && ($vmin != 0 || $vmax != 1)} { set data(hsb,packed) 1 grid $path.hscroll -column 1 -row $data(hsb,row) \ -sticky ew -ipady $data(ipad) set data(hlock) 1 update idletasks unset data(hlock) } } $path.hscroll set $vmin $vmax } } # ----------------------------------------------------------------------------- # Command ScrolledWindow::_set_vscroll # ----------------------------------------------------------------------------- proc ScrolledWindow::_set_vscroll { path vmin vmax } { Widget::getVariable $path data if {$data(realized) && $data(vsb,present)} { if {$data(vsb,auto)} { if {$data(vsb,packed) && $vmin == 0 && $vmax == 1} { if {![info exists data(vlock)]} { set data(vsb,packed) 0 grid remove $path.vscroll } } elseif {!$data(vsb,packed) && ($vmin != 0 || $vmax != 1) } { set data(vsb,packed) 1 grid $path.vscroll -column $data(vsb,column) -row 1 \ -sticky ns -ipadx $data(ipad) set data(vlock) 1 update idletasks unset data(vlock) } } $path.vscroll set $vmin $vmax } } proc ScrolledWindow::_setData {path scrollbar auto sides} { Widget::getVariable $path data set sb [lsearch {none horizontal vertical both} $scrollbar] set auto [lsearch {none horizontal vertical both} $auto] set data(hsb,present) [expr {($sb & 1) != 0}] set data(hsb,auto) [expr {($auto & 1) != 0}] set data(hsb,row) [expr {[string match *n* $sides] ? 0 : 2}] set data(vsb,present) [expr {($sb & 2) != 0}] set data(vsb,auto) [expr {($auto & 2) != 0}] set data(vsb,column) [expr {[string match *w* $sides] ? 0 : 2}] } # ----------------------------------------------------------------------------- # Command ScrolledWindow::_realize # ----------------------------------------------------------------------------- proc ScrolledWindow::_realize { path } { Widget::getVariable $path data bind $path <Configure> {} set data(realized) 1 } # ----------------------------------------------------------------------------- # Command ScrolledWindow::_destroy # ----------------------------------------------------------------------------- proc ScrolledWindow::_destroy { path } { Widget::destroy $path } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 | # ------------------------------------------------------------------------------ # separator.tcl # This file is part of Unifix BWidget Toolkit # ------------------------------------------------------------------------------ # Index of commands: # - Separator::create # - Separator::configure # - Separator::cget # ------------------------------------------------------------------------------ namespace eval Separator { Widget::define Separator separator Widget::declare Separator { {-background TkResource "" 0 frame} {-cursor TkResource "" 0 frame} {-relief Enum groove 0 {ridge groove}} {-orient Enum horizontal 1 {horizontal vertical}} {-bg Synonym -background} } Widget::addmap Separator "" :cmd { -background {} -cursor {} } bind Separator <Destroy> [list Widget::destroy %W] } # ------------------------------------------------------------------------------ # Command Separator::create # ------------------------------------------------------------------------------ proc Separator::create { path args } { array set maps [list Separator {} :cmd {}] array set maps [Widget::parseArgs Separator $args] eval [list frame $path] $maps(:cmd) -class Separator Widget::initFromODB Separator $path $maps(Separator) if { [Widget::cget $path -orient] == "horizontal" } { $path configure -borderwidth 1 -height 2 } else { $path configure -borderwidth 1 -width 2 } if { [string equal [Widget::cget $path -relief] "groove"] } { $path configure -relief sunken } else { $path configure -relief raised } return [Widget::create Separator $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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 | # spinbox.tcl -- # # BWidget SpinBox implementation. # # Copyright (c) 1999 by Unifix # Copyright (c) 2000 by Ajuba Solutions # All rights reserved. # # RCS: @(#) $Id: spinbox.tcl,v 1.1 2004/12/24 16:32:01 jepler Exp $ # ----------------------------------------------------------------------------- # Index of commands: # - SpinBox::create # - SpinBox::configure # - SpinBox::cget # - SpinBox::setvalue # - SpinBox::_destroy # - SpinBox::_modify_value # - SpinBox::_test_options # ----------------------------------------------------------------------------- namespace eval SpinBox { Widget::define SpinBox spinbox Entry ArrowButton Widget::tkinclude SpinBox frame :cmd \ include {-background -borderwidth -bg -bd -relief} \ 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 {%d >= 0}} {-repeatinterval Int 100 0 {%d >= 0}} {-foreground TkResource black 0 {button}} } Widget::addmap SpinBox "" :cmd {-background {}} Widget::addmap SpinBox ArrowButton .arrup { -foreground {} -background {} -disabledforeground {} -state {} \ -repeatinterval {} -repeatdelay {} } Widget::addmap SpinBox ArrowButton .arrdn { -foreground {} -background {} -disabledforeground {} -state {} \ -repeatinterval {} -repeatdelay {} } ::bind SpinBox <FocusIn> [list after idle {BWidget::refocus %W %W.e}] ::bind SpinBox <Destroy> [list SpinBox::_destroy %W] variable _widget } # ----------------------------------------------------------------------------- # Command SpinBox::create # ----------------------------------------------------------------------------- proc SpinBox::create { path args } { array set maps [list SpinBox {} :cmd {} .e {} .arrup {} .arrdn {}] array set maps [Widget::parseArgs SpinBox $args] eval [list frame $path] $maps(:cmd) \ [list -highlightthickness 0 -takefocus 0 -class SpinBox] Widget::initFromODB SpinBox $path $maps(SpinBox) set entry [eval [list Entry::create $path.e] $maps(.e) -relief flat -bd 0] bindtags $path.e [linsert [bindtags $path.e] 1 SpinBoxEntry] 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 [list ArrowButton::create $path.arrup -dir top] \ $maps(.arrup) \ [list -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 [list ArrowButton::create $path.arrdn -dir bottom] \ $maps(.arrdn) \ [list -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]]] # --- update SpinBox value --- _test_options $path set val [Entry::cget $path.e -text] if { [string equal $val ""] } { Entry::configure $path.e -text $::SpinBox::_widget($path,curval) } else { set ::SpinBox::_widget($path,curval) $val } 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 -side right -fill y pack $entry -side left -fill both -expand yes ::bind $entry <Key-Up> [list SpinBox::_modify_value $path next activate] ::bind $entry <Key-Down> [list SpinBox::_modify_value $path previous activate] ::bind $entry <Key-Prior> [list SpinBox::_modify_value $path last activate] ::bind $entry <Key-Next> [list SpinBox::_modify_value $path first activate] ::bind $farr <Configure> {grid rowconfigure %W 1 -minsize [expr {%h%%2}]} return [Widget::create SpinBox $path] } # ----------------------------------------------------------------------------- # Command SpinBox::configure # ----------------------------------------------------------------------------- proc SpinBox::configure { path args } { set res [Widget::configure $path $args] if { [Widget::hasChangedX $path -values] || [Widget::hasChangedX $path -range] } { _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::getMegawidgetOption $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 --- foreach {vmin vmax incr} [Widget::getMegawidgetOption $path -range] { break } # Allow zero padding on the value; strip it out for calculation by # scanning the value into a floating point number. scan $value %f value 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 Entry::configure $path.e -text $newval return 1 } # ----------------------------------------------------------------------------- # Command SpinBox::getvalue # ----------------------------------------------------------------------------- proc SpinBox::getvalue { path } { variable _widget set values [Widget::getMegawidgetOption $path -values] set value [Entry::cget $path.e -text] if { [llength $values] } { # --- -values SpinBox --- return [lsearch $values $value] } else { foreach {vmin vmax incr} [Widget::getMegawidgetOption $path -range] { break } 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 [list ::bind $path.e] $args] } # ----------------------------------------------------------------------------- # 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::getMegawidgetOption $path -modifycmd]] != "" } { uplevel \#0 $cmd } } # ----------------------------------------------------------------------------- # Command SpinBox::_test_options # ----------------------------------------------------------------------------- proc SpinBox::_test_options { path } { set values [Widget::getMegawidgetOption $path -values] if { [llength $values] } { set ::SpinBox::_widget($path,curval) [lindex $values 0] } else { foreach {vmin vmax incr} [Widget::getMegawidgetOption $path -range] { break } set update 0 if { [catch {expr {int($vmin)}}] } { set vmin 0 set update 1 } if { [catch {expr {$vmax<$vmin}} res] || $res } { set vmax $vmin set update 1 } if { [catch {expr {$incr<0}} res] || $res } { set incr 1 set update 1 } # Only do the set back (which is expensive) if we changed a value if { $update } { Widget::setMegawidgetOption $path -range [list $vmin $vmax $incr] } set ::SpinBox::_widget($path,curval) $vmin } } # ----------------------------------------------------------------------------- # Command SpinBox::_destroy # ----------------------------------------------------------------------------- proc SpinBox::_destroy { path } { variable _widget unset _widget($path,curval) Widget::destroy $path } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/tests/entry.test.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | if { [lsearch [package names] tcltest] == -1 } { package require tcltest namespace import tcltest::* } lappend auto_path /home/ericm/bwidget package require BWidget option add *Entry.borderWidth 2 option add *Entry.highlightThickness 2 option add *Entry.font {Helvetica -12} option add *Entry.relief sunken Entry .e pack .e update set i 0 foreach test { {-background #ff0000 #ff0000 non-existent \ {unknown color name "non-existent"}} {-bd 4 4 bad Value {bad screen distance "badValue"}} {-bg #ff0000 #ff0000 non-existent {unknown color name "non-existent"}} {-borderwidth 1.3 1 badValue {bad screen distance "badValue"}} {-command foo foo {} {}} {-disabledforeground blue blue non-existent \ {unknown color name "non-existent"}} {-editable false false shazbot {expected boolean value but got "shazbot"}} {-exportselection yes 1 xyzzy {expected boolean value but got "xyzzy"}} {-fg #110022 #110022 bogus {unknown color name "bogus"}} {-font {Helvetica 12 italic} {Helvetica 12 italic} {} \ {font "" doesn't exist}} {-foreground #110022 #110022 bogus {unknown color name "bogus"}} {-highlightbackground #123456 #123456 ugly {unknown color name "ugly"}} {-highlightcolor #123456 #123456 bogus {unknown color name "bogus"}} {-highlightthickness 6 6 bogus {bad screen distance "bogus"}} {-highlightthickness -2 0 {} {}} {-insertbackground #110022 #110022 bogus {unknown color name "bogus"}} {-insertborderwidth 1.3 1 2.6x {bad screen distance "2.6x"}} {-insertofftime 100 100 3.2 {expected integer but got "3.2"}} {-insertontime 100 100 3.2 {expected integer but got "3.2"}} {-justify right right bogus \ {bad justification "bogus": must be left, right, or center}} {-relief groove groove 1.5 \ {bad relief "1.5": must be flat, groove, raised, ridge,\ solid, or sunken}} {-selectbackground #110022 #110022 bogus {unknown color name "bogus"}} {-selectborderwidth 1.3 1 badValue {bad screen distance "badValue"}} {-selectforeground #654321 #654321 bogus {unknown color name "bogus"}} {-show * * {} {}} {-state normal normal bogus \ {bad state "bogus": must be disabled or normal}} {-takefocus "any string" "any string" {} {}} {-text foobar foobar {} {}} {-textvariable i i {} {}} {-width 402 402 3p {expected integer but got "3p"}} {-xscrollcommand {Some command} {Some command} {} {}} } { set name [lindex $test 0] test entry-1.$i {configuration options} { .e configure $name [lindex $test 1] list [lindex [.e configure $name] 4] [.e cget $name] } [list [lindex $test 2] [lindex $test 2]] incr i } destroy .e test Entry-2.1 {Entry} { list [catch {Entry} msg] $msg } {1 {no value given for parameter "path" to "Entry"}} test Entry-2.2 {Entry} { list [catch {Entry gorp} msg] $msg } {1 {bad window path name "gorp"}} test Entry-2.3 {Entry procedure} { Entry .e set res [list [winfo exists .e] [winfo class .e] [info commands .e]] destroy .e set res } {1 Entry .e} test Entry-2.4 {Entr procedure} { list [catch {Entry .e -gorp foo} msg] $msg [winfo exists .e] \ [info commands .e] } {1 {unknown option "-gorp"} 0 {}} test Entry-3.1 {disabled state grays widget} { Entry .e -disabledforeground blue -foreground red -state normal set res [list [.e cget -foreground] [.e cget -disabledforeground] \ [.e:cmd cget -foreground]] .e configure -state disabled lappend res [.e:cmd cget -foreground] .e configure -state normal lappend res [.e:cmd cget -foreground] destroy .e set res } {red blue red blue red} test Entry-3.2 {changing disabledforeground of an enabled entry} { Entry .e -disabledforeground blue -foreground red -state normal set res [list [.e cget -foreground] [.e cget -disabledforeground] \ [.e:cmd cget -foreground]] .e configure -disabledforeground green lappend res [.e:cmd cget -foreground] destroy .e set res } {red blue red red} test Entry-3.3 {changing normal foreground of a disabled entry} { Entry .e -disabledforeground blue -foreground red -state disabled set res [list [.e cget -foreground] [.e cget -disabledforeground] \ [.e:cmd cget -foreground]] .e configure -foreground green lappend res [.e:cmd cget -foreground] destroy .e set res } {red blue blue blue} test Entry-3.4 {changing disabled foreground of a disabled entry} { Entry .e -disabledforeground blue -foreground red -state disabled set res [list [.e cget -foreground] [.e cget -disabledforeground] \ [.e:cmd cget -foreground]] .e configure -disabledforeground green lappend res [.e:cmd cget -foreground] destroy .e set res } {red blue blue green} test Entry-4.1 {editable flag enables/disables editing} { Entry .e -editable true set res [expr {[lsearch [bindtags .e] BwDisabledEntry] == -1}] .e configure -editable false lappend res [expr {[lsearch [bindtags .e] BwDisabledEntry] != -1}] destroy .e set res } {1 1} test Entry-4.2 {editable flag does not impact foreground color} { Entry .e -editable 1 -foreground red -disabledforeground blue -state normal set res [list [.e:cmd cget -foreground]] .e configure -editable false lappend res [.e:cmd cget -foreground] destroy .e set res } {red red} test Entry-4.3 {editable flag changes cursor} { Entry .e -editable 1 set res [list [.e:cmd cget -cursor]] .e configure -editable 0 lappend res [.e:cmd cget -cursor] destroy .e set res } [list xterm left_ptr] test Entry-5.1 {-text flag gets entry text} { Entry .e .e delete 0 end .e insert end foobar set res [.e cget -text] destroy .e set res } foobar test Entry-5.2 {-text flag sets entry text} { Entry .e .e delete 0 end .e configure -text barbaz set res [.e get] destroy .e set res } barbaz test Entry-6.1 {-command works} { set ::foo 0 Entry .e -command {incr ::foo} Entry::invoke .e destroy .e set ::foo } 1 tcltest::cleanupTests exit |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 | # ------------------------------------------------------------------------------ # 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::define TitleFrame titleframe Widget::declare TitleFrame { {-relief TkResource groove 0 frame} {-borderwidth TkResource 2 0 frame} {-font TkResource "" 0 label} {-foreground TkResource "" 0 label} {-state TkResource "" 0 label} {-background TkResource "" 0 frame} {-text String "" 0} {-ipad Int 4 0 "%d >=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 "" .l {-state {}} Widget::addmap TitleFrame "" .p {-background {}} Widget::addmap TitleFrame "" .b { -background {} -relief {} -borderwidth {} } Widget::addmap TitleFrame "" .b.p {-background {}} Widget::addmap TitleFrame "" .f {-background {}} } # ------------------------------------------------------------------------------ # Command TitleFrame::create # ------------------------------------------------------------------------------ proc TitleFrame::create { path args } { Widget::init TitleFrame $path $args set frame [eval [list frame $path] [Widget::subcget $path :cmd] \ -class TitleFrame -relief flat -bd 0 -highlightthickness 0] set padtop [eval [list frame $path.p] [Widget::subcget $path :cmd] \ -relief flat -borderwidth 0] set border [eval [list frame $path.b] [Widget::subcget $path .b] -highlightthickness 0] set label [eval [list label $path.l] [Widget::subcget $path .l] \ -highlightthickness 0 \ -relief flat \ -bd 0 -padx 2 -pady 0] set padbot [eval [list frame $border.p] [Widget::subcget $path .p] \ -relief flat -bd 0 -highlightthickness 0] set frame [eval [list frame $path.f] [Widget::subcget $path .f] \ -relief flat -bd 0 -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 y 0 set htop $height set hbot 1 } center { set y 0 set htop [expr {$height/2}] set hbot [expr {$height/2+$height%2+1}] } bottom { set y [expr {$bd+1}] set htop 1 set hbot $height } } $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> [list TitleFrame::_place $path] bind $path <Destroy> [list Widget::destroy %W] return [Widget::create TitleFrame $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 pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | # ---------------------------------------------------------------------------- # tree.tcl # This file is part of Unifix BWidget Toolkit # $Id: tree.tcl,v 1.1 2004/12/24 16:32:01 jepler 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 { Widget::define Tree tree DragSite DropSite DynamicHelp 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} {-selectable Boolean 1 0} {-drawcross Enum auto 0 {auto allways never}} {-padx Int -1 0 "%d >= -1"} {-deltax Int -1 0 "%d >= -1"} {-anchor String "w" 0 ""} } } DynamicHelp::include Tree::Node balloon Widget::tkinclude Tree canvas .c \ 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 "%d >= 0"} {-deltay Int 15 0 "%d >= 0"} {-padx Int 20 0 "%d >= 0"} {-background TkResource "" 0 listbox} {-selectbackground TkResource "" 0 listbox} {-selectforeground TkResource "" 0 listbox} {-selectcommand String "" 0} {-width TkResource "" 0 listbox} {-height TkResource "" 0 listbox} {-selectfill Boolean 0 0} {-showlines Boolean 1 0} {-linesfill TkResource black 0 {listbox -foreground}} {-linestipple TkResource "" 0 {label -bitmap}} {-crossfill TkResource black 0 {listbox -foreground}} {-redraw Boolean 1 0} {-opencmd String "" 0} {-closecmd String "" 0} {-dropovermode Flag "wpn" 0 "wpn"} {-bg Synonym -background} {-crossopenimage String "" 0} {-crosscloseimage String "" 0} {-crossopenbitmap String "" 0} {-crossclosebitmap String "" 0} } DragSite::include Tree "TREE_NODE" 1 DropSite::include Tree { TREE_NODE {copy {} move {}} } Widget::addmap Tree "" .c {-deltay -yscrollincrement} # Trees on windows have a white (system window) background if { $::tcl_platform(platform) == "windows" } { option add *Tree.c.background SystemWindow widgetDefault option add *TreeNode.fill SystemWindowText widgetDefault } bind Tree <FocusIn> [list after idle {BWidget::refocus %W %W.c}] bind Tree <Destroy> [list Tree::_destroy %W] bind Tree <Configure> [list Tree::_update_scrollregion %W] bind TreeSentinalStart <Button-1> { if { $::Tree::sentinal(%W) } { set ::Tree::sentinal(%W) 0 break } } bind TreeSentinalEnd <Button-1> { set ::Tree::sentinal(%W) 0 } bind TreeFocus <Button-1> [list focus %W] variable _edit } # ---------------------------------------------------------------------------- # Command Tree::create # ---------------------------------------------------------------------------- proc Tree::create { path args } { variable $path upvar 0 $path data Widget::init Tree $path $args set ::Tree::sentinal($path.c) 0 if {[Widget::cget $path -crossopenbitmap] == ""} { set file [file join $::BWIDGET::LIBRARY images "minus.xbm"] Widget::configure $path [list -crossopenbitmap @$file] } if {[Widget::cget $path -crossclosebitmap] == ""} { set file [file join $::BWIDGET::LIBRARY images "plus.xbm"] Widget::configure $path [list -crossclosebitmap @$file] } 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) "" frame $path -class Tree -bd 0 -highlightthickness 0 -relief flat \ -takefocus 0 # For 8.4+ we don't want to inherit the padding catch {$path configure -padx 0 -pady 0} eval [list canvas $path.c] [Widget::subcget $path .c] -xscrollincrement 8 bindtags $path.c [list TreeSentinalStart TreeFocus $path.c Canvas \ [winfo toplevel $path] all TreeSentinalEnd] pack $path.c -expand yes -fill both $path.c bind cross <ButtonPress-1> [list Tree::_cross_event $path] # Added by ericm@scriptics.com # These allow keyboard traversal of the tree bind $path.c <KeyPress-Up> [list Tree::_keynav up $path] bind $path.c <KeyPress-Down> [list Tree::_keynav down $path] bind $path.c <KeyPress-Right> [list Tree::_keynav right $path] bind $path.c <KeyPress-Left> [list Tree::_keynav left $path] bind $path.c <KeyPress-space> [list +Tree::_keynav space $path] # These allow keyboard control of the scrolling bind $path.c <Control-KeyPress-Up> [list $path.c yview scroll -1 units] bind $path.c <Control-KeyPress-Down> [list $path.c yview scroll 1 units] bind $path.c <Control-KeyPress-Left> [list $path.c xview scroll -1 units] bind $path.c <Control-KeyPress-Right> [list $path.c xview scroll 1 units] # ericm@scriptics.com BWidget::bindMouseWheel $path.c DragSite::setdrag $path $path.c Tree::_init_drag_cmd \ [Widget::cget $path -dragendcmd] 1 DropSite::setdrop $path $path.c Tree::_over_cmd Tree::_drop_cmd 1 Widget::create Tree $path set w [Widget::cget $path -width] set h [Widget::cget $path -height] set dy [Widget::cget $path -deltay] $path.c configure -width [expr {$w*8}] -height [expr {$h*$dy}] # ericm # Bind <Button-1> to select the clicked node -- no reason not to, right? ## Bind button 1 to select the node via the _mouse_select command. ## This command will generate the proper <<TreeSelect>> virtual event ## when necessary. set selectcmd Tree::_mouse_select Tree::bindText $path <Button-1> [list $selectcmd $path set] Tree::bindImage $path <Button-1> [list $selectcmd $path set] Tree::bindText $path <Control-Button-1> [list $selectcmd $path toggle] Tree::bindImage $path <Control-Button-1> [list $selectcmd $path toggle] # Add sentinal bindings for double-clicking on items, to handle the # gnarly Tk bug wherein: # ButtonClick # ButtonClick # On a canvas item translates into button click on the item, button click # on the canvas, double-button on the item, single button click on the # canvas (which can happen if the double-button on the item causes some # other event to be handled in between when the button clicks are examined # for the canvas) $path.c bind TreeItemSentinal <Double-Button-1> \ [list set ::Tree::sentinal($path.c) 1] # ericm 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.c itemconfigure line -fill $fill -stipple $stipple } if { [Widget::hasChanged $path -crossfill fill] } { $path.c itemconfigure cross -foreground $fill } if {[Widget::hasChanged $path -selectfill fill]} { # Make sure that the full-width boxes have either all or none # of the standard node bindings if {$fill} { foreach event [$path.c bind "node"] { $path.c bind "box" $event [$path.c bind "node" $event] } } else { foreach event [$path.c bind "node"] { $path.c bind "box" $event {} } } } if { $ch1 } { _redraw_idle $path 3 } elseif { $ch2 } { _redraw_idle $path 1 } if { [Widget::hasChanged $path -height h] } { $path.c configure -height [expr {$h*$dy}] } if { [Widget::hasChanged $path -width w] } { $path.c 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.c Tree::_init_drag_cmd $dragend $force DropSite::setdrop $path $path.c 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 set node [_node_name $path $node] set node [Widget::nextIndex $path $node] 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 equal $index "end"]} { lappend data($parent) $node } else { incr index set data($parent) [linsert $data($parent) $index $node] } set data($node) [list $parent] if { [string equal $parent "root"] } { _redraw_idle $path 3 } elseif { [visible $path $parent] } { # parent is visible... if { [Widget::getMegawidgetOption $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 set node [_node_name $path $node] if { [string equal $node "root"] || ![info exists data($node)] } { return -code error "node \"$node\" does not exist" } set result [Widget::configure $path.$node $args] _set_help $path $node 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] } { if {[llength $data($node)] > 1} { # node have subnodes - full redraw _redraw_idle $path 3 } else { # force a redraw of the plus/minus sign set flag [expr {$flag | 8}] } } if {$data(upd,level) < 3 && [Widget::hasChanged $path.$node -padx x]} { _redraw_idle $path 3 } if { $data(upd,level) < 3 && $flag } { if { [set idx [lsearch -exact $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 } { # Instead of upvar'ing $path as data for this test, just directly refer to # it, as that is faster. set node [_node_name $path $node] if { [string equal $node "root"] || \ ![info exists ::Tree::${path}($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 {[string length $script]} { append script " \[Tree::_get_node_name [list $path] current 2\]" } $path.c bind "node" $event $script if {[Widget::getoption $path -selectfill]} { $path.c bind "box" $event $script } else { $path.c bind "box" $event {} } } # ---------------------------------------------------------------------------- # Command Tree::bindImage # ---------------------------------------------------------------------------- proc Tree::bindImage { path event script } { if {[string length $script]} { append script " \[Tree::_get_node_name [list $path] current 2\]" } $path.c bind "img" $event $script if {[Widget::getoption $path -selectfill]} { $path.c bind "box" $event $script } else { $path.c bind "box" $event {} } } # ---------------------------------------------------------------------------- # Command Tree::delete # ---------------------------------------------------------------------------- proc Tree::delete { path args } { variable $path upvar 0 $path data foreach lnodes $args { foreach node $lnodes { set node [_node_name $path $node] if { ![string equal $node "root"] && [info exists data($node)] } { set parent [lindex $data($node) 0] set idx [lsearch -exact $data($parent) $node] set data($parent) [lreplace $data($parent) $idx $idx] _subdelete $path [list $node] } } } _redraw_idle $path 3 } # ---------------------------------------------------------------------------- # Command Tree::move # ---------------------------------------------------------------------------- proc Tree::move { path parent node index } { variable $path upvar 0 $path data set node [_node_name $path $node] if { [string equal $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 equal $p "root"] } { if { [string equal $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 -exact $data($oldp) $node] set data($oldp) [lreplace $data($oldp) $idx $idx] set data($node) [concat [list $parent] [lrange $data($node) 1 end]] if { [string equal $index "end"] } { lappend data($parent) $node } else { incr index set data($parent) [linsert $data($parent) $index $node] } if { ([string equal $oldp "root"] || ([visible $path $oldp] && [Widget::getoption $path.$oldp -open])) || ([string equal $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 set node [_node_name $path $node] 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 { toggle { foreach node $args { set node [_node_name $path $node] if {![info exists data($node)]} { return -code error \ "$path selection toggle: Cannot toggle unknown node \"$node\"." } } foreach node $args { set node [_node_name $path $node] if {[$path selection includes $node]} { $path selection remove $node } else { $path selection add $node } } } set { foreach node $args { set node [_node_name $path $node] if {![info exists data($node)]} { return -code error \ "$path selection set: Cannot select unknown node \"$node\"." } } set data(selnodes) {} foreach node $args { set node [_node_name $path $node] if { [Widget::getoption $path.$node -selectable] } { if { [lsearch -exact $data(selnodes) $node] == -1 } { lappend data(selnodes) $node } } } __call_selectcmd $path } add { foreach node $args { set node [_node_name $path $node] if {![info exists data($node)]} { return -code error \ "$path selection add: Cannot select unknown node \"$node\"." } } foreach node $args { set node [_node_name $path $node] if { [Widget::getoption $path.$node -selectable] } { if { [lsearch -exact $data(selnodes) $node] == -1 } { lappend data(selnodes) $node } } } __call_selectcmd $path } range { # Here's our algorithm: # make a list of all nodes, then take the range from node1 # to node2 and select those nodes # # This works because of how this widget handles redraws: # The tree is always completely redrawn, and always from # top to bottom. So the list of visible nodes *is* the # list of nodes, and we can use that to decide which nodes # to select. if {[llength $args] != 2} { return -code error \ "wrong#args: Expected $path selection range node1 node2" } foreach {node1 node2} $args break set node1 [_node_name $path $node1] set node2 [_node_name $path $node2] if {![info exists data($node1)]} { return -code error \ "$path selection range: Cannot start range at unknown node \"$node1\"." } if {![info exists data($node2)]} { return -code error \ "$path selection range: Cannot end range at unknown node \"$node2\"." } set nodes {} foreach nodeItem [$path.c find withtag node] { set node [Tree::_get_node_name $path $nodeItem 2] if { [Widget::getoption $path.$node -selectable] } { lappend nodes $node } } # surles: Set the root string to the first element on the list. if {$node1 == "root"} { set node1 [lindex $nodes 0] } if {$node2 == "root"} { set node2 [lindex $nodes 0] } # Find the first visible ancestor of node1, starting with node1 while {[set index1 [lsearch -exact $nodes $node1]] == -1} { set node1 [lindex $data($node1) 0] } # Find the first visible ancestor of node2, starting with node2 while {[set index2 [lsearch -exact $nodes $node2]] == -1} { set node2 [lindex $data($node2) 0] } # If the nodes were given in backwards order, flip the # indices now if { $index2 < $index1 } { incr index1 $index2 set index2 [expr {$index1 - $index2}] set index1 [expr {$index1 - $index2}] } set data(selnodes) [lrange $nodes $index1 $index2] __call_selectcmd $path } remove { foreach node $args { set node [_node_name $path $node] if { [set idx [lsearch -exact $data(selnodes) $node]] != -1 } { set data(selnodes) [lreplace $data(selnodes) $idx $idx] } } __call_selectcmd $path } clear { if {[llength $args] != 0} { return -code error \ "wrong#args: Expected $path selection clear" } set data(selnodes) {} __call_selectcmd $path } get { if {[llength $args] != 0} { return -code error \ "wrong#args: Expected $path selection get" } return $data(selnodes) } includes { if {[llength $args] != 1} { return -code error \ "wrong#args: Expected $path selection includes node" } set node [lindex $args 0] set node [_node_name $path $node] return [expr {[lsearch -exact $data(selnodes) $node] != -1}] } default { return } } _redraw_idle $path 1 } proc Tree::getcanvas { path } { return $path.c } proc Tree::__call_selectcmd { path } { variable $path upvar 0 $path data set selectcmd [Widget::getoption $path -selectcommand] if {[llength $selectcmd]} { lappend selectcmd $path lappend selectcmd $data(selnodes) uplevel \#0 $selectcmd } return } # ---------------------------------------------------------------------------- # Command Tree::exists # ---------------------------------------------------------------------------- proc Tree::exists { path node } { variable $path upvar 0 $path data set node [_node_name $path $node] return [info exists data($node)] } # ---------------------------------------------------------------------------- # Command Tree::visible # ---------------------------------------------------------------------------- proc Tree::visible { path node } { set node [_node_name $path $node] set idn [$path.c find withtag n:$node] return [llength $idn] } # ---------------------------------------------------------------------------- # Command Tree::parent # ---------------------------------------------------------------------------- proc Tree::parent { path node } { variable $path upvar 0 $path data set node [_node_name $path $node] 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 set node [_node_name $path $node] if { [string equal $node "root"] || ![info exists data($node)] } { return -code error "node \"$node\" does not exist" } set parent [lindex $data($node) 0] return [expr {[lsearch -exact $data($parent) $node] - 1}] } # ---------------------------------------------------------------------------- # Tree::find # Returns the node given a position. # findInfo @x,y ?confine? # lineNumber # ---------------------------------------------------------------------------- proc Tree::find {path findInfo {confine ""}} { if {[regexp -- {^@([0-9]+),([0-9]+)$} $findInfo match x y]} { set x [$path.c canvasx $x] set y [$path.c canvasy $y] } elseif {[regexp -- {^[0-9]+$} $findInfo lineNumber]} { set dy [Widget::getoption $path -deltay] set y [expr {$dy*($lineNumber+0.5)}] set confine "" } else { return -code error "invalid find spec \"$findInfo\"" } set found 0 set region [$path.c bbox all] if {[llength $region]} { set xi [lindex $region 0] set xs [lindex $region 2] foreach id [$path.c find overlapping $xi $y $xs $y] { set ltags [$path.c gettags $id] set item [lindex $ltags 1] if { [string equal $item "node"] || [string equal $item "img"] || [string equal $item "win"] } { # item is the label or image/window of the node set node [Tree::_get_node_name $path $id 2] set found 1 break } } } if {$found} { if {[string equal $confine "confine"]} { # test if x stand inside node bbox set padx [_get_node_padx $path $node] set xi [expr {[lindex [$path.c coords n:$node] 0] - $padx}] set xs [lindex [$path.c bbox n:$node] 2] if {$x >= $xi && $x <= $xs} { return $node } } else { return $node } } return "" } # ---------------------------------------------------------------------------- # Command Tree::line # Returns the line where is drawn a node. # ---------------------------------------------------------------------------- proc Tree::line {path node} { set node [_node_name $path $node] set item [$path.c find withtag n:$node] if {[string length $item]} { set dy [Widget::getoption $path -deltay] set y [lindex [$path.c coords $item] 1] set line [expr {int($y/$dy)}] } else { set line -1 } return $line } # ---------------------------------------------------------------------------- # Command Tree::nodes # ---------------------------------------------------------------------------- proc Tree::nodes { path node {first ""} {last ""} } { variable $path upvar 0 $path data set node [_node_name $path $node] 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] } } # Tree::visiblenodes -- # # Retrieve a list of all the nodes in a tree. # # Arguments: # path tree to retrieve nodes for. # # Results: # nodes list of nodes in the tree. proc Tree::visiblenodes { path } { variable $path upvar 0 $path data # Root is always open (?), so all of its children automatically get added # to the result, and to the stack. set st [lrange $data(root) 1 end] set result $st while {[llength $st]} { set node [lindex $st end] set st [lreplace $st end end] # Danger, danger! Using getMegawidgetOption is fragile, but much # much faster than going through cget. if { [Widget::getMegawidgetOption $path.$node -open] } { set nodes [lrange $data($node) 1 end] set result [concat $result $nodes] set st [concat $st $nodes] } } return $result } # ---------------------------------------------------------------------------- # Command Tree::see # ---------------------------------------------------------------------------- proc Tree::see { path node } { variable $path upvar 0 $path data set node [_node_name $path $node] if { [Widget::getoption $path -redraw] && $data(upd,afterid) != "" } { after cancel $data(upd,afterid) _redraw_tree $path } set idn [$path.c find withtag n:$node] if { $idn != "" } { Tree::_see $path $idn } } # ---------------------------------------------------------------------------- # Command Tree::opentree # ---------------------------------------------------------------------------- # JDC: added option recursive proc Tree::opentree { path node {recursive 1} } { variable $path upvar 0 $path data set node [_node_name $path $node] if { [string equal $node "root"] || ![info exists data($node)] } { return -code error "node \"$node\" does not exist" } _recexpand $path $node 1 $recursive [Widget::getoption $path -opencmd] _redraw_idle $path 3 } # ---------------------------------------------------------------------------- # Command Tree::closetree # ---------------------------------------------------------------------------- proc Tree::closetree { path node {recursive 1} } { variable $path upvar 0 $path data set node [_node_name $path $node] if { [string equal $node "root"] || ![info exists data($node)] } { return -code error "node \"$node\" does not exist" } _recexpand $path $node 0 $recursive [Widget::getoption $path -closecmd] _redraw_idle $path 3 } proc Tree::toggle { path node } { if {[$path itemcget $node -open]} { $path closetree $node 0 } else { $path opentree $node 0 } } # ---------------------------------------------------------------------------- # Command Tree::edit # ---------------------------------------------------------------------------- proc Tree::edit { path node text {verifycmd ""} {clickres 0} {select 1}} { variable _edit variable $path upvar 0 $path data set node [_node_name $path $node] if { [Widget::getoption $path -redraw] && $data(upd,afterid) != "" } { after cancel $data(upd,afterid) _redraw_tree $path } set idn [$path.c find withtag n:$node] if { $idn != "" } { Tree::_see $path $idn set oldfg [$path.c itemcget $idn -fill] set sbg [Widget::getoption $path -selectbackground] set coords [$path.c coords $idn] set x [lindex $coords 0] set y [lindex $coords 1] set bd [expr {[$path.c cget -borderwidth]+[$path.c cget -highlightthickness]}] set w [expr {[winfo width $path] - 2*$bd}] set wmax [expr {[$path.c canvasx $w]-$x}] set _edit(text) $text set _edit(wait) 0 $path.c itemconfigure $idn -fill [Widget::getoption $path -background] $path.c 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.c create window $x $y -window $frame -anchor w] trace variable Tree::_edit(text) w \ [list 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 } bindtags $ent [list $ent Entry] bind $ent <Escape> {set Tree::_edit(wait) 0} bind $ent <Return> {set Tree::_edit(wait) 1} if { $clickres == 0 || $clickres == 1 } { bind $frame <Button> [list 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 \ [list Tree::_update_edit_size $path $ent $idw $wmax] grab release $frame BWidget::focus release $ent destroy $frame $path.c delete $idw $path.c itemconfigure $idn -fill $oldfg $path.c itemconfigure s:$node -fill $sbg -outline $sbg if { $_edit(wait) } { return $_edit(text) } } return "" } # ---------------------------------------------------------------------------- # Command Tree::xview # ---------------------------------------------------------------------------- proc Tree::xview { path args } { return [eval [list $path.c xview] $args] } # ---------------------------------------------------------------------------- # Command Tree::yview # ---------------------------------------------------------------------------- proc Tree::yview { path args } { return [eval [list $path.c 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.c itemconfigure $idw -width $wmax } else { $path.c itemconfigure $idw -width 0 } } # ---------------------------------------------------------------------------- # Command Tree::_see # ---------------------------------------------------------------------------- proc Tree::_see { path idn } { set bbox [$path.c bbox $idn] set scrl [$path.c cget -scrollregion] set ymax [lindex $scrl 3] set dy [$path.c 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.c coords $idn] 1]/$dy)}] if { $y < $yv0 } { $path.c yview scroll [expr {$y-$yv0}] units } elseif { $y >= $yv1 } { $path.c yview scroll [expr {$y-$yv1+1}] units } set xmax [lindex $scrl 2] set dx [$path.c cget -xscrollincrement] set xv [$path xview] set x0 [expr {int([lindex $bbox 0]/$dx)}] set xv0 [expr {round([lindex $xv 0]*$xmax/$dx)}] set xv1 [expr {round([lindex $xv 1]*$xmax/$dx)}] if { $x0 >= $xv1 || $x0 < $xv0 } { $path.c xview scroll [expr {$x0-$xv0}] units } } # ---------------------------------------------------------------------------- # Command Tree::_recexpand # ---------------------------------------------------------------------------- # JDC : added option recursive proc Tree::_recexpand { path node expand recursive 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 [list $node] } } if { $recursive } { foreach subnode [lrange $data($node) 1 end] { _recexpand $path $subnode $expand $recursive $cmd } } } # ---------------------------------------------------------------------------- # Command Tree::_subdelete # ---------------------------------------------------------------------------- proc Tree::_subdelete { path lnodes } { variable $path upvar 0 $path data set sel $data(selnodes) while { [llength $lnodes] } { set lsubnodes [list] foreach node $lnodes { foreach subnode [lrange $data($node) 1 end] { lappend lsubnodes $subnode } unset data($node) set idx [lsearch -exact $sel $node] if { $idx >= 0 } { set sel [lreplace $sel $idx $idx] } if { [set win [Widget::getoption $path.$node -window]] != "" } { destroy $win } Widget::destroy $path.$node } set lnodes $lsubnodes } set data(selnodes) $sel } # ---------------------------------------------------------------------------- # Command Tree::_update_scrollregion # ---------------------------------------------------------------------------- proc Tree::_update_scrollregion { path } { set bd [expr {2*([$path.c cget -borderwidth]+[$path.c cget -highlightthickness])}] set w [expr {[winfo width $path] - $bd}] set h [expr {[winfo height $path] - $bd}] set xinc [$path.c cget -xscrollincrement] set yinc [$path.c cget -yscrollincrement] set bbox [$path.c bbox node] 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.c configure -scrollregion [list 0 0 $w $h] if {[Widget::getoption $path -selectfill]} { _redraw_selection $path } } # ---------------------------------------------------------------------------- # Command Tree::_cross_event # ---------------------------------------------------------------------------- proc Tree::_cross_event { path } { variable $path upvar 0 $path data set node [Tree::_get_node_name $path current 1] if { [Widget::getoption $path.$node -open] } { Tree::itemconfigure $path $node -open 0 if { [set cmd [Widget::getoption $path -closecmd]] != "" } { uplevel \#0 $cmd [list $node] } } else { Tree::itemconfigure $path $node -open 1 if { [set cmd [Widget::getoption $path -opencmd]] != "" } { uplevel \#0 $cmd [list $node] } } } proc Tree::_draw_cross { path node open x y } { set idc [$path.c find withtag c:$node] if { $open } { set img [Widget::cget $path -crossopenimage] set bmp [Widget::cget $path -crossopenbitmap] } else { set img [Widget::cget $path -crosscloseimage] set bmp [Widget::cget $path -crossclosebitmap] } ## If we already have a cross for this node, we just adjust the image. if {$idc != ""} { if {$img == ""} { $path.c itemconfigure $idc -bitmap $bmp } else { $path.c itemconfigure $idc -image $img } return } ## Create a new image for the cross. If the user has specified an ## image, it overrides a bitmap. if {$img == ""} { $path.c create bitmap $x $y \ -bitmap $bmp \ -background [$path.c cget -background] \ -foreground [Widget::getoption $path -crossfill] \ -tags [list cross c:$node] -anchor c } else { $path.c create image $x $y \ -image $img \ -tags [list cross c:$node] -anchor c } } # ---------------------------------------------------------------------------- # 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.c create line $x0 $y0 $x1 $y0 \ -fill [Widget::getoption $path -linesfill] \ -stipple [Widget::getoption $path -linestipple] \ -tags line } $path.c 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 [Tree::_get_node_tags $path $node [list 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 equal $dc "never"] && ($len || [string equal $dc "allways"])} { _draw_cross $path $node $exp $x0 $y0 } if { [set win [Widget::getoption $path.$node -window]] != "" } { set a [Widget::cget $path.$node -anchor] $path.c create window $x1 $y0 -window $win -anchor $a \ -tags [Tree::_get_node_tags $path $node [list win i:$node]] } elseif { [set img [Widget::getoption $path.$node -image]] != "" } { set a [Widget::cget $path.$node -anchor] $path.c create image $x1 $y0 -image $img -anchor $a \ -tags [Tree::_get_node_tags $path $node [list img i:$node]] } set box [$path.c bbox n:$node i:$node] set id [$path.c create rect 0 [lindex $box 1] \ [winfo screenwidth $path] [lindex $box 3] \ -tags [Tree::_get_node_tags $path $node [list box b:$node]] \ -fill {} -outline {}] $path.c lower $id _set_help $path $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 padx [_get_node_padx $path $node] set deltax [_get_node_deltax $path $node] set yp $y1 set y1 [_draw_node $path $node $x0 [expr {$y1+$deltay}] $deltax $deltay $padx $showlines] } if { $showlines && [llength $nodes] } { set id [$path.c create line $x0 $y0 $x0 [expr {$yp+$deltay}] \ -fill [Widget::getoption $path -linesfill] \ -stipple [Widget::getoption $path -linestipple] \ -tags line] $path.c 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.c find withtag "n:$node"] if { $idn == "" } { continue } set padx [_get_node_padx $path $node] set deltax [_get_node_deltax $path $node] set c [$path.c 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.c find withtag i:$node] set type [lindex [$path.c gettags $idi] 1] if { [string length $win] } { if { [string equal $type "win"] } { $path.c itemconfigure $idi -window $win } else { $path.c delete $idi $path.c create window $x0 $y0 -window $win -anchor w \ -tags [Tree::_get_node_tags $path $node \ [list win i:$node]] } } elseif { [string length $img] } { if { [string equal $type "img"] } { $path.c itemconfigure $idi -image $img } else { $path.c delete $idi $path.c create image $x0 $y0 -image $img -anchor w \ -tags [Tree::_get_node_tags $path $node \ [list img i:$node]] } } else { $path.c 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] if {![string equal $dc "never"] && ($len || [string equal $dc "allways"])} { _draw_cross $path $node $exp $x0 $y0 } else { set idc [$path.c find withtag c:$node] $path.c delete $idc } } if { $flag & 7 } { # -font, -text or -fill modified $path.c 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.c delete all set cursor [$path.c cget -cursor] $path.c 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.c configure -cursor $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] set fill [Widget::getoption $path -selectfill] if {$fill} { set scroll [$path.c cget -scrollregion] if {[llength $scroll]} { set xmax [expr {[lindex $scroll 2]-1}] } else { set xmax [winfo width $path] } } foreach id [$path.c find withtag sel] { set node [Tree::_get_node_name $path $id 1] $path.c itemconfigure "n:$node" -fill [Widget::getoption $path.$node -fill] } $path.c delete sel foreach node $data(selnodes) { set bbox [$path.c bbox "n:$node"] if { [llength $bbox] } { if {$fill} { # get the image to (if any), as it may have different height set bbox [$path.c bbox "n:$node" "i:$node"] set bbox [list 0 [lindex $bbox 1] $xmax [lindex $bbox 3]] } set id [$path.c create rectangle $bbox -tags [list sel s:$node] \ -fill $selbg -outline $selbg] $path.c itemconfigure "n:$node" -fill $selfg $path.c 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 "" } # ---------------------------------------------------------------------------- # Command Tree::_init_drag_cmd # ---------------------------------------------------------------------------- proc Tree::_init_drag_cmd { path X Y top } { set path [winfo parent $path] set ltags [$path.c gettags current] set item [lindex $ltags 1] if { [string equal $item "node"] || [string equal $item "img"] || [string equal $item "win"] } { set node [Tree::_get_node_name $path current 2] 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 } { set path [winfo parent $path] variable $path upvar 0 $path data $path.c 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 } { set path [winfo parent $path] variable $path upvar 0 $path data if { [string equal $event "leave"] } { # we leave the window tree $path.c 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 equal $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.c bbox all] if { [llength $bbox] } { set data(dnd,xs) [lindex $bbox 2] set data(dnd,empty) 0 } else { set data(dnd,xs) 0 set data(dnd,empty) 1 } set data(dnd,node) {} } set x [expr {$X-[winfo rootx $path]}] set y [expr {$Y-[winfo rooty $path]}] $path.c 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 } if { ($data(dnd,mode) & 2) && $data(dnd,empty) } { # dropovermode includes position and tree is empty lappend target [list root 0] set vmode [expr {$vmode | 2}] } set xc [$path.c canvasx $x] set xs $data(dnd,xs) if { $xc <= $xs } { set yc [$path.c canvasy $y] set dy [$path.c cget -yscrollincrement] set line [expr {int($yc/$dy)}] set xi 0 set yi [expr {$line*$dy}] set ys [expr {$yi+$dy}] set found 0 foreach id [$path.c find overlapping $xi $yi $xs $ys] { set ltags [$path.c gettags $id] set item [lindex $ltags 1] if { [string equal $item "node"] || [string equal $item "img"] || [string equal $item "win"] } { # item is the label or image/window of the node set node [Tree::_get_node_name $path $id 2] set found 1 break } } if {$found} { set padx [_get_node_padx $path $node] set deltax [_get_node_deltax $path $node] set xi [expr {[lindex [$path.c coords n:$node] 0] - $padx - 1}] 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 -exact $data($parent) $node] set xli [expr {$xi - $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 -exact $data($parent) $node] - 1}] set xli [expr {$xi - $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" } } } } 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 equal $mode "node"] } { set newmode 1 } elseif { ($vmode & 2) && [string equal $mode "position"] } { set newmode 2 } elseif { ($vmode & 4) && [string equal $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 equal [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 } } if {!$data(dnd,empty)} { # draw dnd visual following vmode if { $vmode & 1 } { set data(dnd,node) [list "node" [lindex $target 1]] $path.c create rectangle $xi $yi $xs $ys -tags drop } elseif { $vmode & 2 } { set data(dnd,node) [concat "position" [lindex $target 2]] $path.c 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.c yview] 0] > 0 } { set scroll [list yview -1] DropSite::setcursor sb_up_arrow } } elseif { $y >= $ymax-6 } { if { [lindex [$path.c yview] 1] < 1 } { set scroll [list yview 1] DropSite::setcursor sb_down_arrow } } elseif { $x <= 6 } { if { [lindex [$path.c xview] 0] > 0 } { set scroll [list xview -1] DropSite::setcursor sb_left_arrow } } elseif { $x >= $xmax-6 } { if { [lindex [$path.c xview] 1] < 1 } { set scroll [list xview 1] DropSite::setcursor sb_right_arrow } } if { [string length $data(dnd,afterid)] && ![string equal $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.c $cmd] 0] > 0) || ($dir == 1 && [lindex [$path.c $cmd] 1] < 1) } { $path.c $cmd scroll $dir units set data(dnd,afterid) [after 100 Tree::_scroll $path $cmd $dir] } else { set data(dnd,afterid) "" DropSite::setcursor dot } } # Tree::_keynav -- # # Handle navigational keypresses on the tree. # # Arguments: # which tag indicating the direction of motion: # up move to the node graphically above current # down move to the node graphically below current # left close current if open, else move to parent # right open current if closed, else move to child # open open current if closed, close current if open # win name of the tree widget # # Results: # None. proc Tree::_keynav {which win} { # Keyboard navigation is riddled with special cases. In order to avoid # the complex logic, we will instead make a list of all the visible, # selectable nodes, then do a simple next or previous operation. # One easy way to get all of the visible nodes is to query the canvas # object for all the items with the "node" tag; since the tree is always # completely redrawn, this list will be in vertical order. set nodes {} foreach nodeItem [$win.c find withtag node] { set node [Tree::_get_node_name $win $nodeItem 2] if { [Widget::cget $win.$node -selectable] } { lappend nodes $node } } # Keyboard navigation is all relative to the current node # surles: Get the current node for single or multiple selection schemas. set node [_get_current_node $win] switch -exact -- $which { "up" { # Up goes to the node that is vertically above the current node # (NOT necessarily the current node's parent) if { [string equal $node ""] } { return } set index [lsearch -exact $nodes $node] incr index -1 if { $index >= 0 } { $win selection set [lindex $nodes $index] _set_current_node $win [lindex $nodes $index] $win see [lindex $nodes $index] return } } "down" { # Down goes to the node that is vertically below the current node if { [string equal $node ""] } { $win selection set [lindex $nodes 0] _set_current_node $win [lindex $nodes 0] $win see [lindex $nodes 0] return } set index [lsearch -exact $nodes $node] incr index if { $index < [llength $nodes] } { $win selection set [lindex $nodes $index] _set_current_node $win [lindex $nodes $index] $win see [lindex $nodes $index] return } } "right" { # On a right arrow, if the current node is closed, open it. # If the current node is open, go to its first child if { [string equal $node ""] } { return } set open [$win itemcget $node -open] if { $open } { if { [llength [$win nodes $node]] } { set index [lsearch -exact $nodes $node] incr index if { $index < [llength $nodes] } { $win selection set [lindex $nodes $index] _set_current_node $win [lindex $nodes $index] $win see [lindex $nodes $index] return } } } else { $win itemconfigure $node -open 1 if { [set cmd [Widget::getoption $win -opencmd]] != "" } { uplevel \#0 $cmd [list $node] } return } } "left" { # On a left arrow, if the current node is open, close it. # If the current node is closed, go to its parent. if { [string equal $node ""] } { return } set open [$win itemcget $node -open] if { $open } { $win itemconfigure $node -open 0 if { [set cmd [Widget::getoption $win -closecmd]] != "" } { uplevel \#0 $cmd [list $node] } return } else { set parent [$win parent $node] if { [string equal $parent "root"] } { set parent $node } else { while { ![$win itemcget $parent -selectable] } { set parent [$win parent $parent] if { [string equal $parent "root"] } { set parent $node break } } } $win selection set $parent _set_current_node $win $parent $win see $parent return } } "space" { if { [string equal $node ""] } { return } set open [$win itemcget $node -open] if { [llength [$win nodes $node]] } { # Toggle the open status of the chosen node. $win itemconfigure $node -open [expr {$open?0:1}] if {$open} { # Node was open, is now closed. Call the close-cmd if { [set cmd [Widget::getoption $win -closecmd]] != "" } { uplevel \#0 $cmd [list $node] } } else { # Node was closed, is now open. Call the open-cmd if { [set cmd [Widget::getoption $win -opencmd]] != "" } { uplevel \#0 $cmd [list $node] } } } } } return } # Tree::_get_current_node -- # # Get the current node for either single or multiple # node selection trees. If the tree allows for # multiple selection, return the cursor node. Otherwise, # if there is a selection, return the first node in the # list. If there is no selection, return the root node. # # arguments: # win name of the tree widget # # Results: # The current node. proc Tree::_get_current_node {win} { if {[info exists selectTree::selectCursor($win)]} { set result $selectTree::selectCursor($win) } elseif {[set selList [$win selection get]] != {}} { set result [lindex $selList 0] } else { set result "" } return $result } # Tree::_set_current_node -- # # Set the current node for either single or multiple # node selection trees. # # arguments: # win Name of the tree widget # node The current node. # # Results: # None. proc Tree::_set_current_node {win node} { if {[info exists selectTree::selectCursor($win)]} { set selectTree::selectCursor($win) $node } return } # Tree::_get_node_name -- # # Given a canvas item, get the name of the tree node represented by that # item. # # Arguments: # path tree to query # item Optional canvas item to examine; if omitted, # defaults to "current" # tagindex Optional tag index, since the n:nodename tag is not # in the same spot for all canvas items. If omitted, # defaults to "end-1", so it works with "current" item. # # Results: # node name of the tree node. proc Tree::_get_node_name {path {item current} {tagindex end-1}} { return [string range [lindex [$path.c gettags $item] $tagindex] 2 end] } # Tree::_get_node_padx -- # # Given a node in the tree, return it's padx value. If the value is # less than 0, default to the padx of the entire tree. # # Arguments: # path Tree to query # node Node in the tree # # Results: # padx The numeric padx value proc Tree::_get_node_padx {path node} { set padx [Widget::getoption $path.$node -padx] if {$padx < 0} { set padx [Widget::getoption $path -padx] } return $padx } # Tree::_get_node_deltax -- # # Given a node in the tree, return it's deltax value. If the value is # less than 0, default to the deltax of the entire tree. # # Arguments: # path Tree to query # node Node in the tree # # Results: # deltax The numeric deltax value proc Tree::_get_node_deltax {path node} { set deltax [Widget::getoption $path.$node -deltax] if {$deltax < 0} { set deltax [Widget::getoption $path -deltax] } return $deltax } # Tree::_get_node_tags -- # # Given a node in the tree, return a list of tags to apply to its # canvas item. # # Arguments: # path Tree to query # node Node in the tree # tags A list of tags to add to the final list # # Results: # list The list of tags to apply to the canvas item proc Tree::_get_node_tags {path node {tags ""}} { eval [list lappend list TreeItemSentinal] $tags if {[Widget::getoption $path.$node -helptext] == ""} { return $list } switch -- [Widget::getoption $path.$node -helptype] { balloon { lappend list BwHelpBalloon } variable { lappend list BwHelpVariable } } return $list } # Tree::_set_help -- # # Register dynamic help for a node in the tree. # # Arguments: # path Tree to query # node Node in the tree # force Optional argument to force a reset of the help # # Results: # none proc Tree::_set_help { path node } { Widget::getVariable $path help set item $path.$node set opts [list -helptype -helptext -helpvar] foreach {cty ctx cv} [eval [list Widget::hasChangedX $item] $opts] break set text [Widget::getoption $item -helptext] ## If we've never set help for this item before, and text is not blank, ## we need to setup help. We also need to reset help if any of the ## options have changed. if { (![info exists help($node)] && $text != "") || $cty || $ctx || $cv } { set help($node) 1 set type [Widget::getoption $item -helptype] switch $type { balloon { DynamicHelp::register $path.c balloon n:$node $text DynamicHelp::register $path.c balloon i:$node $text DynamicHelp::register $path.c balloon b:$node $text } variable { set var [Widget::getoption $item -helpvar] DynamicHelp::register $path.c variable n:$node $var $text DynamicHelp::register $path.c variable i:$node $var $text DynamicHelp::register $path.c variable b:$node $var $text } } } } proc Tree::_mouse_select { path cmd args } { eval selection [list $path] [list $cmd] $args switch -- $cmd { "add" - "clear" - "remove" - "set" - "toggle" { event generate $path <<TreeSelect>> } } } proc Tree::_node_name { path node } { set map [list & _ | _ ^ _ ! _] return [string map $map $node] } # ---------------------------------------------------------------------------- # 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 } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | # ---------------------------------------------------------------------------- # utils.tcl # This file is part of Unifix BWidget Toolkit # $Id: utils.tcl,v 1.1 2004/12/24 16:32:01 jepler 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 [list trace $cmd $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 1 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 incorrect: $cmd" } } set lfont [split $font "-"] if { [llength $lfont] != 15 } { return -code error "XLFDfont: description XLFD incorrect: $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 # ---------------------------------------------------------------------------- # # Notes: # For Windows systems with more than one monitor the available screen area may # have negative positions. Geometry settings with negative numbers are used # under X to place wrt the right or bottom of the screen. On windows, Tk # continues to do this. However, a geometry such as 100x100+-200-100 can be # used to place a window onto a secondary monitor. Passing the + gets Tk # to pass the remainder unchanged so the Windows manager then handles -200 # which is a position on the left hand monitor. # I've tested this for left, right, above and below the primary monitor. # Currently there is no way to ask Tk the extent of the Windows desktop in # a multi monitor system. Nor what the legal co-ordinate range might be. # 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 list [list "at" "center" "left" "right" "above" "below"] set idx [lsearch $list $where] if { $idx == -1 } { return -code error [BWidget::badOptionString position $where $list] } if { $idx == 0 } { set err [catch { # purposely removed the {} around these expressions - [PT] set x [expr int([lindex $args 1])] set y [expr int([lindex $args 2])] }] if { $err } { return -code error "BWidget::place: incorrect position" } if {$::tcl_platform(platform) == "windows"} { # handle windows multi-screen. -100 != +-100 if {[string index [lindex $args 1] 0] != "-"} { set x "+$x" } if {[string index [lindex $args 2] 0] != "-"} { set y "+$y" } } else { 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" } } else { set widget . } 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 {$::tcl_platform(platform) != "windows"} { 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 {$::tcl_platform(platform) != "windows"} { 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 {$::tcl_platform(platform) != "windows"} { 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 equal $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 {refocus 1} } { variable _fstack if { $option == "release" } { while { [llength $_fstack] } { set oldf [lindex $_fstack end] set _fstack [lreplace $_fstack end end] if { ![string equal $oldf $path] && [winfo exists $oldf] } { if {$refocus} {catch {::focus -force $oldf}} return } } } elseif { $option == "set" } { lappend _fstack [::focus] ::focus -force $path } } # BWidget::refocus -- # # Helper function used to redirect focus from a container frame in # a megawidget to a component widget. Only redirects focus if # focus is already on the container. # # Arguments: # container container widget to redirect from. # component component widget to redirect to. # # Results: # None. proc BWidget::refocus {container component} { if { [string equal $container [::focus]] } { ::focus $component } return } # BWidget::badOptionString -- # # Helper function to return a proper error string when an option # doesn't match a list of given options. # # Arguments: # type A string that represents the type of option. # value The value that is in-valid. # list A list of valid options. # # Results: # None. proc BWidget::badOptionString {type value list} { set last [lindex $list end] set list [lreplace $list end end] return "bad $type \"$value\": must be [join $list ", "], or $last" } proc BWidget::wrongNumArgsString { string } { return "wrong # args: should be \"$string\"" } proc BWidget::read_file { file } { set fp [open $file] set x [read $fp [file size $file]] close $fp return $x } proc BWidget::classes { class } { variable use ${class}::use set classes [list $class] if {![info exists use($class)]} { return } foreach class $use($class) { eval lappend classes [classes $class] } return [lsort -unique $classes] } proc BWidget::library { args } { variable use set libs [list widget init utils] set classes [list] foreach class $args { ${class}::use eval lappend classes [classes $class] } eval lappend libs [lsort -unique $classes] set library "" foreach lib $libs { if {![info exists use($lib,file)]} { set file [file join $::BWIDGET::LIBRARY $lib.tcl] } else { set file [file join $::BWIDGET::LIBRARY $use($lib,file).tcl] } append library [read_file $file] } return $library } proc BWidget::inuse { class } { variable ::Widget::_inuse if {![info exists _inuse($class)]} { return 0 } return [expr $_inuse($class) > 0] } proc BWidget::write { filename {mode w} } { variable use if {![info exists use(classes)]} { return } set classes [list] foreach class $use(classes) { if {![inuse $class]} { continue } lappend classes $class } set fp [open $filename $mode] puts $fp [eval library $classes] close $fp return } # BWidget::bindMouseWheel -- # # Bind mouse wheel actions to a given widget. # # Arguments: # widget - The widget to bind. # # Results: # None. proc BWidget::bindMouseWheel { widget } { bind $widget <MouseWheel> {%W yview scroll [expr {-%D/24}] units} bind $widget <Shift-MouseWheel> {%W yview scroll [expr {-%D/120}] pages} bind $widget <Control-MouseWheel> {%W yview scroll [expr {-%D/120}] units} bind $widget <Button-4> {event generate %W <MouseWheel> -delta 120} bind $widget <Button-5> {event generate %W <MouseWheel> -delta -120} } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 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 | # ---------------------------------------------------------------------------- # widget.tcl # This file is part of Unifix BWidget Toolkit # $Id: widget.tcl,v 1.1 2004/12/24 16:32:01 jepler 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::options # - 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 # ---------------------------------------------------------------------------- # Each megawidget gets a namespace of the same name inside the Widget namespace # Each of these has an array opt, which contains information about the # megawidget options. It maps megawidget options to a list with this format: # {optionType defaultValue isReadonly {additionalOptionalInfo}} # Option types and their additional optional info are: # TkResource {genericTkWidget genericTkWidgetOptionName} # BwResource {nothing} # Enum {list of enumeration values} # Int {Boundary information} # Boolean {nothing} # String {nothing} # Flag {string of valid flag characters} # Synonym {nothing} # Color {nothing} # # Next, each namespace has an array map, which maps class options to their # component widget options: # map(-foreground) => {.e -foreground .f -foreground} # # Each has an array ${path}:opt, which contains the value of each megawidget # option for a particular instance $path of the megawidget, and an array # ${path}:mod, which stores the "changed" status of configuration options. # Steps for creating a bwidget megawidget: # 1. parse args to extract subwidget spec # 2. Create frame with appropriate class and command line options # 3. Get initialization options from optionDB, using frame # 4. create subwidgets # Uses newer string operations package require Tcl 8.1.1 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 Color Widget::_test_color Padding Widget::_test_padding } 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 = {pref 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 ${class}::map$subpath submap upvar 0 ${class}::optionExports exports set foo [$tkwidget ".ericFoo###"] # 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]] # Add an option database entry for this option set optionDbName ".[lindex [_configure_option $option ""] 0]" if { ![string equal $subpath ":cmd"] } { set optionDbName "$subpath$optionDbName" } option add *${class}$optionDbName $value widgetDefault lappend exports($option) "$optionDbName" # Store the forward and backward mappings for this # option <-> realoption pair lappend classmap($option) $subpath "" $realopt set submap($realopt) $option } } } ::destroy $foo } # ---------------------------------------------------------------------------- # 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 ${class}::map$subpath submap upvar 0 ${class}::optionExports exports upvar 0 ${subclass}::opt subclassopt upvar 0 ${subclass}::optionExports subexports # create resources informations from BWidget resources foreach {option optdesc} [array get subclassopt] { set subOption $option if { (![info exists include] || [info exists include($option)]) && ![info exists remove($option)] } { set type [lindex $optdesc 0] if { [string equal $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]] # Add an option database entry for this option foreach optionDbName $subexports($subOption) { if { ![string equal $subpath ":cmd"] } { set optionDbName "$subpath$optionDbName" } # Only add the option db entry if we are overriding the # normal widget default if { [info exists initialize($option)] } { option add *${class}$optionDbName $value \ widgetDefault } lappend exports($option) "$optionDbName" } # Store the forward and backward mappings for this # option <-> realoption pair lappend classmap($option) $subpath $subclass $realopt set submap($realopt) $option } } } } # ---------------------------------------------------------------------------- # Command Widget::declare # Declares new options to BWidget class. # ---------------------------------------------------------------------------- proc Widget::declare { class optlist } { variable _optiontype namespace eval $class {} upvar 0 ${class}::opt classopt upvar 0 ${class}::optionExports exports upvar 0 ${class}::optionClass optionClass 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 equal $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 equal $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 optionDbName ".[lindex [_configure_option $option ""] 0]" option add *${class}${optionDbName} $value widgetDefault set exports($option) $optionDbName set classopt($option) [list $type $value $ro $arg] continue } # retreive default value for TkResource if { [string equal $type "TkResource"] } { set tkwidget [lindex $arg 0] set foo [$tkwidget ".ericFoo##"] 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 ind [lsearch $tkoptions [list $realopt *]] set value [lindex [lindex $tkoptions $ind] end] } set optionDbName ".[lindex [_configure_option $option ""] 0]" option add *${class}${optionDbName} $value widgetDefault set exports($option) $optionDbName set classopt($option) [list TkResource $value $ro \ [list $tkwidget $realopt]] set optionClass($option) [lindex [$foo configure $realopt] 1] ::destroy $foo continue } set optionDbName ".[lindex [_configure_option $option ""] 0]" option add *${class}${optionDbName} $value widgetDefault set exports($option) $optionDbName # for any other resource type, we keep original optdesc set classopt($option) [list $type $value $ro $arg] } } proc Widget::define { class filename args } { variable ::BWidget::use set use($class) $args set use($class,file) $filename lappend use(classes) $class if {[set x [lsearch -exact $args "-classonly"]] > -1} { set args [lreplace $args $x $x] } else { interp alias {} ::${class} {} ${class}::create proc ::${class}::use {} {} bind $class <Destroy> [list Widget::destroy %W] } foreach class $args { ${class}::use } } proc Widget::create { class path {rename 1} } { if {$rename} { rename $path ::$path:cmd } proc ::$path { cmd args } \ [subst {return \[eval \[linsert \$args 0 ${class}::\$cmd [list $path]\]\]}] return $path } # ---------------------------------------------------------------------------- # Command Widget::addmap # ---------------------------------------------------------------------------- proc Widget::addmap { class subclass subpath options } { upvar 0 ${class}::opt classopt upvar 0 ${class}::optionExports exports upvar 0 ${class}::optionClass optionClass upvar 0 ${class}::map classmap upvar 0 ${class}::map$subpath submap foreach {option realopt} $options { if { ![string length $realopt] } { set realopt $option } set val [lindex $classopt($option) 1] set optDb ".[lindex [_configure_option $realopt ""] 0]" if { ![string equal $subpath ":cmd"] } { set optDb "$subpath$optDb" } option add *${class}${optDb} $val widgetDefault lappend exports($option) $optDb # Store the forward and backward mappings for this # option <-> realoption pair lappend classmap($option) $subpath $subclass $realopt set submap($realopt) $option } } # ---------------------------------------------------------------------------- # 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 _inuse upvar 0 ${class}::opt classopt upvar 0 ${class}::$path:opt pathopt upvar 0 ${class}::$path:mod pathmod upvar 0 ${class}::map classmap upvar 0 ${class}::$path:init pathinit if { [info exists pathopt] } { unset pathopt } if { [info exists pathmod] } { unset pathmod } # We prefer to use the actual widget for option db queries, but if it # doesn't exist yet, do the next best thing: create a widget of the # same class and use that. set fpath $path set rdbclass [string map [list :: ""] $class] if { ![winfo exists $path] } { set fpath ".#BWidgetClass#$class" if { ![winfo exists $fpath] } { frame $fpath -class $rdbclass } } foreach {option optdesc} [array get classopt] { set pathmod($option) 0 if { [info exists classmap($option)] } { continue } set type [lindex $optdesc 0] if { [string equal $type "Synonym"] } { continue } if { [string equal $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] } } if {![info exists _inuse($class)]} { set _inuse($class) 0 } incr _inuse($class) set Widget::_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 equal $type "Synonym"] } { set option [lindex $optdesc 1] set optdesc $classopt($option) set type [lindex $optdesc 0] } set pathopt($option) [$Widget::_optiontype($type) $option $value [lindex $optdesc 3]] set pathinit($option) $pathopt($option) } } # Bastien Chevreux (bach@mwgdna.com) # # copyinit performs basically the same job as init, but it uses a # existing template to initialize its values. So, first a perferct copy # from the template is made just to be altered by any existing options # afterwards. # But this still saves time as the first initialization parsing block is # skipped. # As additional bonus, items that differ in just a few options can be # initialized faster by leaving out the options that are equal. # This function is currently used only by ListBox::multipleinsert, but other # calls should follow :) # ---------------------------------------------------------------------------- # Command Widget::copyinit # ---------------------------------------------------------------------------- proc Widget::copyinit { class templatepath path options } { upvar 0 ${class}::opt classopt \ ${class}::$path:opt pathopt \ ${class}::$path:mod pathmod \ ${class}::$path:init pathinit \ ${class}::$templatepath:opt templatepathopt \ ${class}::$templatepath:mod templatepathmod \ ${class}::$templatepath:init templatepathinit if { [info exists pathopt] } { unset pathopt } if { [info exists pathmod] } { unset pathmod } # We use the template widget for option db copying, but it has to exist! array set pathmod [array get templatepathmod] array set pathopt [array get templatepathopt] array set pathinit [array get templatepathinit] set Widget::_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 equal $type "Synonym"] } { set option [lindex $optdesc 1] set optdesc $classopt($option) set type [lindex $optdesc 0] } set pathopt($option) [$Widget::_optiontype($type) $option $value [lindex $optdesc 3]] set pathinit($option) $pathopt($option) } } # Widget::parseArgs -- # # Given a widget class and a command-line spec, cannonize and validate # the given options, and return a keyed list consisting of the # component widget and its masked portion of the command-line spec, and # one extra entry consisting of the portion corresponding to the # megawidget itself. # # Arguments: # class widget class to parse for. # options command-line spec # # Results: # result keyed list of portions of the megawidget and that segment of # the command line in which that portion is interested. proc Widget::parseArgs {class options} { upvar 0 ${class}::opt classopt upvar 0 ${class}::map classmap foreach {option val} $options { if { ![info exists classopt($option)] } { error "unknown option \"$option\"" } set optdesc $classopt($option) set type [lindex $optdesc 0] if { [string equal $type "Synonym"] } { set option [lindex $optdesc 1] set optdesc $classopt($option) set type [lindex $optdesc 0] } if { [string equal $type "TkResource"] } { # Make sure that the widget used for this TkResource exists Widget::_get_tkwidget_options [lindex [lindex $optdesc 3] 0] } set val [$Widget::_optiontype($type) $option $val [lindex $optdesc 3]] if { [info exists classmap($option)] } { foreach {subpath subclass realopt} $classmap($option) { lappend maps($subpath) $realopt $val } } else { lappend maps($class) $option $val } } return [array get maps] } # Widget::initFromODB -- # # Initialize a megawidgets options with information from the option # database and from the command-line arguments given. # # Arguments: # class class of the widget. # path path of the widget -- should already exist. # options command-line arguments. # # Results: # None. proc Widget::initFromODB {class path options} { variable _inuse variable _class upvar 0 ${class}::$path:opt pathopt upvar 0 ${class}::$path:mod pathmod upvar 0 ${class}::map classmap if { [info exists pathopt] } { unset pathopt } if { [info exists pathmod] } { unset pathmod } # We prefer to use the actual widget for option db queries, but if it # doesn't exist yet, do the next best thing: create a widget of the # same class and use that. set fpath [_get_window $class $path] set rdbclass [string map [list :: ""] $class] if { ![winfo exists $path] } { set fpath ".#BWidgetClass#$class" if { ![winfo exists $fpath] } { frame $fpath -class $rdbclass } } foreach {option optdesc} [array get ${class}::opt] { set pathmod($option) 0 if { [info exists classmap($option)] } { continue } set type [lindex $optdesc 0] if { [string equal $type "Synonym"] } { continue } if { [string equal $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] } } if {![info exists _inuse($class)]} { set _inuse($class) 0 } incr _inuse($class) set _class($path) $class array set pathopt $options } # ---------------------------------------------------------------------------- # Command Widget::destroy # ---------------------------------------------------------------------------- proc Widget::destroy { path } { variable _class variable _inuse if {![info exists _class($path)]} { return } set class $_class($path) upvar 0 ${class}::$path:opt pathopt upvar 0 ${class}::$path:mod pathmod upvar 0 ${class}::$path:init pathinit if {[info exists _inuse($class)]} { incr _inuse($class) -1 } if {[info exists pathopt]} { unset pathopt } if {[info exists pathmod]} { unset pathmod } if {[info exists pathinit]} { unset pathinit } if {![string equal [info commands $path] ""]} { rename $path "" } ## Unset any variables used in this widget. foreach var [info vars ::${class}::$path:*] { unset $var } unset _class($path) } # ---------------------------------------------------------------------------- # 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 equal $type "Synonym"] } { set option [lindex $optdesc 1] set optdesc $classopt($option) set type [lindex $optdesc 0] } if { ![lindex $optdesc 2] } { set newval [$_optiontype($type) $option $value [lindex $optdesc 3]] if { [info exists classmap($option)] } { set window [_get_window $class $window] foreach {subpath subclass realopt} $classmap($option) { if { [string length $subclass] } { set curval [${subclass}::cget $window$subpath $realopt] ${subclass}::configure $window$subpath $realopt $newval } else { set curval [$window$subpath cget $realopt] $window$subpath configure $realopt $newval } } } else { set curval $pathopt($option) set pathopt($option) $newval } set pathmod($option) [expr {![string equal $newval $curval]}] } } return {} } # ---------------------------------------------------------------------------- # Command Widget::cget # ---------------------------------------------------------------------------- proc Widget::cget { path option } { if { ![info exists ::Widget::_class($path)] } { return -code error "unknown widget $path" } set class $::Widget::_class($path) if { ![info exists ${class}::opt($option)] } { return -code error "unknown option \"$option\"" } set optdesc [set ${class}::opt($option)] set type [lindex $optdesc 0] if {[string equal $type "Synonym"]} { set option [lindex $optdesc 1] } if { [info exists ${class}::map($option)] } { foreach {subpath subclass realopt} [set ${class}::map($option)] {break} set path "[_get_window $class $path]$subpath" return [$path cget $realopt] } upvar 0 ${class}::$path:opt pathopt set pathopt($option) } # ---------------------------------------------------------------------------- # Command Widget::subcget # ---------------------------------------------------------------------------- proc Widget::subcget { path subwidget } { set class $::Widget::_class($path) upvar 0 ${class}::$path:opt pathopt upvar 0 ${class}::map$subwidget submap upvar 0 ${class}::$path:init pathinit set result {} foreach realopt [array names submap] { if { [info exists pathinit($submap($realopt))] } { lappend result $realopt $pathopt($submap($realopt)) } } return $result } # ---------------------------------------------------------------------------- # Command Widget::hasChanged # ---------------------------------------------------------------------------- proc Widget::hasChanged { path option pvalue } { upvar $pvalue value set class $::Widget::_class($path) upvar 0 ${class}::$path:mod pathmod set value [Widget::cget $path $option] set result $pathmod($option) set pathmod($option) 0 return $result } proc Widget::hasChangedX { path option args } { set class $::Widget::_class($path) upvar 0 ${class}::$path:mod pathmod set result $pathmod($option) set pathmod($option) 0 foreach option $args { lappend result $pathmod($option) set pathmod($option) 0 } set 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 Widget::configure $path [list $option $value] } # ---------------------------------------------------------------------------- # Command Widget::getoption # ---------------------------------------------------------------------------- proc Widget::getoption { path option } { # set class $::Widget::_class($path) # upvar 0 ${class}::$path:opt pathopt # return $pathopt($option) return [Widget::cget $path $option] } # Widget::getMegawidgetOption -- # # Bypass the superfluous checks in cget and just directly peer at the # widget's data space. This is much more fragile than cget, so it # should only be used with great care, in places where speed is critical. # # Arguments: # path widget to lookup options for. # option option to retrieve. # # Results: # value option value. proc Widget::getMegawidgetOption {path option} { set class $::Widget::_class($path) upvar 0 ${class}::${path}:opt pathopt set pathopt($option) } # Widget::setMegawidgetOption -- # # Bypass the superfluous checks in cget and just directly poke at the # widget's data space. This is much more fragile than configure, so it # should only be used with great care, in places where speed is critical. # # Arguments: # path widget to lookup options for. # option option to retrieve. # value option value. # # Results: # value option value. proc Widget::setMegawidgetOption {path option value} { set class $::Widget::_class($path) upvar 0 ${class}::${path}:opt pathopt set pathopt($option) $value } # ---------------------------------------------------------------------------- # 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 equal [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 equal $type "Synonym"] } { set syn $option set option [lindex $optdesc 1] set optdesc $classopt($option) set type [lindex $optdesc 0] } else { set syn "" } if { [string equal $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 equal $type "Synonym"] } { set option [lindex $optdesc 1] set optdesc $classopt($option) set type [lindex $optdesc 0] } if { [string equal $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 set widget ".#BWidget#$tkwidget" if { ![winfo exists $widget] || ![info exists _tk_widget($tkwidget)] } { set widget [$tkwidget $widget] # JDC: Withdraw toplevels, otherwise visible if {[string equal $tkwidget "toplevel"]} { wm withdraw $widget } 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] # JDC: used 4 (was 3) to get def from optiondb set def [lindex [lindex $config $idx] 4] lappend _tk_widget($tkwidget) [list $opt $syn $def] } else { # JDC: used 4 (was 3) to get def from optiondb set def [lindex $optlist 4] 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] foreach {tkwidget realopt} $arg break 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_color # ---------------------------------------------------------------------------- proc Widget::_test_color { option value arg } { if {[catch {winfo rgb . $value} color]} { return -code error "bad $option value \"$value\": must be a colorname \ or #RRGGBB triplet" } return $value } # ---------------------------------------------------------------------------- # Command Widget::_test_string # ---------------------------------------------------------------------------- proc Widget::_test_string { option value arg } { set 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 } { if { ![string is int -strict $value] || \ ([string length $arg] && \ ![expr [string map [list %d $value] $arg]]) } { return -code error "bad $option value\ \"$value\": must be integer ($arg)" } return $value } # ----------------------------------------------------------------------------- # Command Widget::_test_boolean # ----------------------------------------------------------------------------- proc Widget::_test_boolean { option value arg } { if { ![string is boolean -strict $value] } { return -code error "bad $option value \"$value\": must be boolean" } # Get the canonical form of the boolean value (1 for true, 0 for false) return [string is true $value] } # ----------------------------------------------------------------------------- # Command Widget::_test_padding # ----------------------------------------------------------------------------- proc Widget::_test_padding { option values arg } { set len [llength $values] if {$len < 1 || $len > 2} { return -code error "bad pad value \"$values\":\ must be positive screen distance" } foreach value $values { if { ![string is int -strict $value] || \ ([string length $arg] && \ ![expr [string map [list %d $value] $arg]]) } { return -code error "bad pad value \"$value\":\ must be positive screen distance ($arg)" } } return $values } # Widget::_get_padding -- # # Return the requesting padding value for a padding option. # # Arguments: # path Widget to get the options for. # option The name of the padding option. # index The index of the padding. If the index is empty, # the first padding value is returned. # # Results: # Return a numeric value that can be used for padding. proc Widget::_get_padding { path option {index 0} } { set pad [Widget::cget $path $option] set val [lindex $pad $index] if {$val == ""} { set val [lindex $pad 0] } return $val } # ----------------------------------------------------------------------------- # 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 == 0)} { return 0 } set top [winfo toplevel $w] foreach tags [bindtags $w] { if { ![string equal $tags $top] && ![string equal $tags "all"] && [regexp Key [bind $tags]] } { return 1 } } return 0 } proc Widget::traverseTo { w } { set focus [focus] if {![string equal $focus ""]} { event generate $focus <<TraverseOut>> } focus $w event generate $w <<TraverseIn>> } # Widget::varForOption -- # # Retrieve a fully qualified variable name for the option specified. # If the option is not one for which a variable exists, throw an error # (ie, those options that map directly to widget options). # # Arguments: # path megawidget to get an option var for. # option option to get a var for. # # Results: # varname name of the variable, fully qualified, suitable for tracing. proc Widget::varForOption {path option} { variable _class variable _optiontype set class $_class($path) upvar 0 ${class}::$path:opt pathopt if { ![info exists pathopt($option)] } { error "unable to find variable for option \"$option\"" } set varname "::Widget::${class}::$path:opt($option)" return $varname } # Widget::getVariable -- # # Get a variable from within the namespace of the widget. # # Arguments: # path Megawidget to get the variable for. # varName The variable name to retrieve. # newVarName The variable name to refer to in the calling proc. # # Results: # Creates a reference to newVarName in the calling proc. proc Widget::getVariable { path varName {newVarName ""} } { variable _class set class $_class($path) if {![string length $newVarName]} { set newVarName $varName } uplevel 1 [list upvar \#0 ${class}::$path:$varName $newVarName] } # Widget::options -- # # Return a key-value list of options for a widget. This can # be used to serialize the options of a widget and pass them # on to a new widget with the same options. # # Arguments: # path Widget to get the options for. # args A list of options. If empty, all options are returned. # # Results: # Returns list of options as: -option value -option value ... proc Widget::options { path args } { if {[llength $args]} { foreach option $args { lappend options [_get_configure $path $option] } } else { set options [_get_configure $path {}] } set result [list] foreach list $options { if {[llength $list] < 5} { continue } lappend result [lindex $list 0] [lindex $list end] } return $result } # Widget::getOption -- # # Given a list of widgets, determine which option value to use. # The widgets are given to the command in order of highest to # lowest. Starting with the lowest widget, whichever one does # not match the default option value is returned as the value. # If all the widgets are default, we return the highest widget's # value. # # Arguments: # option The option to check. # default The default value. If any widget in the list # does not match this default, its value is used. # args A list of widgets. # # Results: # Returns the value of the given option to use. # proc Widget::getOption { option default args } { for {set i [expr [llength $args] -1]} {$i >= 0} {incr i -1} { set widget [lindex $args $i] set value [Widget::cget $widget $option] if {[string equal $value $default]} { continue } return $value } return $value } proc Widget::nextIndex { path node } { Widget::getVariable $path autoIndex if {![info exists autoIndex]} { set autoIndex -1 } return [string map [list #auto [incr autoIndex]] $node] } proc Widget::exists { path } { variable _class return [info exists _class($path)] } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/wizard.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 | # ------------------------------------------------------------------------------ # wizard.tcl # # ------------------------------------------------------------------------------ # Index of commands: # # Public commands # - Wizard::create # - Wizard::configure # - Wizard::cget # # Private commands (event bindings) # - Wizard::_destroy # ------------------------------------------------------------------------------ namespace eval Wizard { Widget::define Wizard wizard ButtonBox Separator PagesManager namespace eval Step { Widget::declare Wizard::Step { {-type String "step" 1 } {-data String "" 0 } {-title String "" 0 } {-default String "next" 0 } {-text1 String "" 0 } {-text2 String "" 0 } {-text3 String "" 0 } {-text4 String "" 0 } {-text5 String "" 0 } {-icon String "" 0 } {-image String "" 0 } {-bitmap String "" 0 } {-iconbitmap String "" 0 } {-create Boolean "0" 1 } {-appendorder Boolean "1" 0 } {-nexttext String "Next >" 0 } {-backtext String "< Back" 0 } {-helptext String "Help" 0 } {-canceltext String "Cancel" 0 } {-finishtext String "Finish" 0 } {-separatortext String "" 0 } {-createcommand String "" 0 } {-raisecommand String "" 0 } {-nextcommand String "" 0 } {-backcommand String "" 0 } {-helpcommand String "" 0 } {-cancelcommand String "" 0 } {-finishcommand String "" 0 } } } namespace eval Branch { Widget::declare Wizard::Branch { {-type String "branch" 1 } {-command String "" 0 } {-action Enum "merge" 0 {merge terminate} } } } namespace eval Widget { Widget::declare Wizard::Widget { {-type String "widget" 1 } {-step String "" 1 } {-widget String "" 1 } } } namespace eval layout {} Widget::tkinclude Wizard frame :cmd \ include { -width -height -background -foreground -cursor } Widget::declare Wizard { {-type Enum "dialog" 1 {dialog frame} } {-width TkResource "450" 0 frame} {-height TkResource "300" 0 frame} {-relief TkResource "flat" 0 frame} {-borderwidth TkResource "0" 0 frame} {-background TkResource "" 0 frame} {-foreground String "black" 0 } {-title String "Wizard" 0 } {-autobuttons Boolean "1" 0 } {-helpbutton Boolean "0" 1 } {-finishbutton Boolean "0" 1 } {-resizable String "0 0" 0 } {-separator Boolean "1" 1 } {-parent String "." 1 } {-transient Boolean "1" 1 } {-place Enum "center" 1 {none center left right above below}} {-icon String "" 0 } {-image String "" 0 } {-bitmap String "" 0 } {-iconbitmap String "" 0 } {-raisecommand String "" 0 } {-createcommand String "" 0 } {-separatortext String "" 0 } {-fg Synonym -foreground } {-bg Synonym -background } {-bd Synonym -borderwidth } } image create photo Wizard::none Widget::addmap Wizard "" :cmd { -background {} -relief {} -borderwidth {} } Widget::addmap Wizard "" .steps { -width {} -height {} } bind Wizard <Destroy> [list Wizard::_destroy %W] } # ------------------------------------------------------------------------------ # Command Wizard::create # ------------------------------------------------------------------------------ proc Wizard::create { path args } { array set maps [list Wizard {} :cmd {}] array set maps [Widget::parseArgs Wizard $args] Widget::initFromODB Wizard $path $maps(Wizard) Widget::getVariable $path data Widget::getVariable $path branches array set data { steps "" buttons "" order "" current "" } array set branches { root "" } set frame $path set type [Widget::cget $path -type] if {[string equal $type "dialog"]} { set top $path eval [list toplevel $path] $maps(:cmd) -class Wizard wm withdraw $path wm protocol $path WM_DELETE_WINDOW [list $path cancel] if {[Widget::cget $path -transient]} { wm transient $path [Widget::cget $path -parent] } eval wm resizable $path [Widget::cget $path -resizable] bind $path <Escape> [list $path cancel] bind $path <<WizardFinish>> [list destroy $path] bind $path <<WizardCancel>> [list destroy $path] } else { set top [winfo toplevel $path] eval [list frame $path] $maps(:cmd) -class Wizard } wm title $top [Widget::cget $path -title] PagesManager $path.steps pack $path.steps -expand 1 -fill both widgets $path set steps -widget $path.steps if {[Widget::cget $path -separator]} { frame $path.separator pack $path.separator -fill x label $path.separator.l -text [Widget::cget $path -separatortext] pack $path.separator.l -side left Separator $path.separator.s -orient horizontal pack $path.separator.s -side left -expand 1 -fill x -pady 2 widgets $path set separator -widget $path.separator.s widgets $path set separatortext -widget $path.separator.l widgets $path set separatorframe -widget $path.separator } ButtonBox $path.buttons -spacing 2 -homogeneous 1 pack $path.buttons -anchor se -padx 10 -pady 5 widgets $path set buttons -widget $path.buttons insert $path button end back -text "< Back" -command "$path back" -width 12 insert $path button end next -text "Next >" -command "$path next" if {[Widget::cget $path -finishbutton]} { insert $path button end finish -text "Finish" -command "$path finish" } insert $path button end cancel -text "Cancel" -command "$path cancel" if {[Widget::cget $path -helpbutton]} { $path.buttons configure -spacing 10 insert $path button 0 help -text "Help" -command "$path help" $path.buttons configure -spacing 2 } return [Widget::create Wizard $path] } # ------------------------------------------------------------------------------ # Command Wizard::configure # ------------------------------------------------------------------------------ proc Wizard::configure { path args } { set res [Widget::configure $path $args] if {[Widget::hasChanged $path -title title]} { wm title [winfo toplevel $path] $title } if {[Widget::hasChanged $path -resizable resize]} { eval wm resizable [winfo toplevel $path] $resize } return $res } # ------------------------------------------------------------------------------ # Command Wizard::cget # ------------------------------------------------------------------------------ proc Wizard::cget { path option } { return [Widget::cget $path $option] } proc Wizard::itemcget { path item option } { Widget::getVariable $path items Widget::getVariable $path steps Widget::getVariable $path buttons Widget::getVariable $path widgets if {![exists $path $item]} { ## It's not an item. Just pass the configure to the widget. set item [$path widgets get $item] return [eval $item configure $args] } if {[_is_step $path $item]} { ## It's a step return [Widget::cget $items($item) $option] } if {[_is_branch $path $item]} { ## It's a branch return [Widget::cget $items($item) $option] } if {[info exists buttons($item)]} { ## It's a button return [$path.buttons itemcget $items($item) $option] } return -code error "item \"$item\" does not exist" } proc Wizard::itemconfigure { path item args } { Widget::getVariable $path items Widget::getVariable $path steps Widget::getVariable $path buttons Widget::getVariable $path widgets if {![exists $path $item]} { ## It's not an item. Just pass the configure to the widget. set item [$path widgets get $item] return [eval $item configure $args] } if {[info exists steps($item)]} { ## It's a step. set res [Widget::configure $items($item) $args] if {$item == [$path step current]} { if {[Widget::hasChanged $items($item) -title title]} { wm title [winfo toplevel $path] $title } } return $res } if {[_is_branch $path $item]} { ## It's a branch return [Widget::configure $items($item) $args] } if {[info exists buttons($item)]} { ## It's a button. return [eval $path.buttons itemconfigure [list $items($item)] $args] } return -code error "item \"$item\" does not exist" } proc Wizard::show { path } { wm deiconify [winfo toplevel $path] } proc Wizard::invoke { path button } { Widget::getVariable $path buttons if {![info exists buttons($button)]} { return -code error "button \"$button\" does not exist" } [$path widgets get $button] invoke } proc Wizard::insert { path type idx args } { Widget::getVariable $path items Widget::getVariable $path widgets Widget::getVariable $path branches switch -- $type { "button" { set node [lindex $args 0] } "step" - "branch" { set node [lindex $args 1] set branch [lindex $args 0] if {![info exists branches($branch)]} { return -code error "branch \"$branch\" does not exist" } } default { set types [list button branch step] set err [BWidget::badOptionString option $type $types] return -code error $err } } if {[exists $path $node]} { return -code error "item \"$node\" already exists" } eval _insert_$type $path $idx $args } proc Wizard::back { path } { Widget::getVariable $path data Widget::getVariable $path items set step [$path raise] if {![string equal $step ""]} { set cmd [Widget::cget $items($step) -backcommand] if {![string equal $cmd ""]} { set res [uplevel #0 $cmd] if {!$res} { return } } } set data(order) [lreplace $data(order) end end] set item [lindex $data(order) end] $path raise $item event generate $path <<WizardStep>> event generate $path <<WizardBack>> return $item } proc Wizard::next { path } { Widget::getVariable $path data Widget::getVariable $path items set step [$path raise] if {![string equal $step ""]} { set cmd [Widget::cget $items($step) -nextcommand] if {![string equal $cmd ""]} { set res [uplevel #0 $cmd] if {!$res} { return } } } set item [step $path next] if {[Widget::cget $items($item) -appendorder]} { lappend data(order) $item } $path raise $item event generate $path <<WizardStep>> event generate $path <<WizardNext>> return $item } proc Wizard::cancel { path } { Widget::getVariable $path items set step [$path raise] if {![string equal $step ""]} { set cmd [Widget::cget $items($step) -cancelcommand] if {![string equal $cmd ""]} { set res [uplevel #0 $cmd] if {!$res} { return } } } event generate $path <<WizardCancel>> } proc Wizard::finish { path } { Widget::getVariable $path items set step [$path raise] if {![string equal $step ""]} { set cmd [Widget::cget $items($step) -finishcommand] if {![string equal $cmd ""]} { set res [uplevel #0 $cmd] if {!$res} { return } } } event generate $path <<WizardFinish>> } proc Wizard::help { path } { Widget::getVariable $path items set step [$path raise] if {![string equal $step ""]} { set cmd [Widget::cget $items($step) -helpcommand] if {![string equal $cmd ""]} { uplevel #0 $cmd } } event generate $path <<WizardHelp>> } proc Wizard::step { path node {start ""} {traverse 1} } { Widget::getVariable $path data Widget::getVariable $path items Widget::getVariable $path branches if {![string equal $start ""]} { if {![exists $path $start]} { return -code error "item \"$start\" does not exist" } } switch -- $node { "current" { set item [$path raise] } "end" - "last" { ## Keep looping through 'next' until we hit the end. set item [$path step next] while {![string equal $item ""]} { set last $item set item [$path step next $item] } set item $last } "back" - "previous" { if {[string equal $start ""]} { set item [lindex $data(order) end-1] } else { set idx [lsearch $data(order) $start] incr idx -1 if {$idx < 0} { return } set item [lindex $data(order) $idx] } } "next" { set step [$path raise] if {![string equal $start ""]} { set step $start } set branch [$path branch $step] if {$traverse && [_is_branch $path $step]} { ## This step is a branch. Let's figure out where to go next. if {[traverse $path $step]} { ## It's ok to traverse into this branch. ## Set step to null so that we'll end up finding the ## first step in the branch. set branch $step set step "" } } set idx [lsearch $branches($branch) $step] incr idx set item [lindex $branches($branch) $idx] if {$idx >= [llength $branches($branch)]} { ## We've reached the end of this branch. ## If it's the root branch, or this branch terminates we return. if {[string equal $branch "root"] || [Widget::cget $items($branch) -action] == "terminate"} { return } ## We want to merge back with our parent branch. set item [step $path next $branch 0] } ## If this step is a branch, find the next step after it. if {$traverse && [_is_branch $path $item]} { set item [$path step next $item] } } default { if {![exists $path $node]} { return -code error "item \"$node\" does not exist" } set item $node } } return $item } proc Wizard::nodes { path branch {first ""} {last ""} } { Widget::getVariable $path data Widget::getVariable $path branches if {$first == ""} { return $branches($branch) } if {$last == ""} { return [lindex $branches($branch) $first] } return [lrange $data(steps) $first $last] } proc Wizard::index { path item } { Widget::getVariable $path branches set branch [$path branch $item] return [lsearch $branches($branch) $item] } proc Wizard::raise { path {item ""} } { Widget::getVariable $path data Widget::getVariable $path items set steps $path.steps set buttons $path.buttons if {[string equal $item ""]} { return $data(current) } $path createStep $item ## Eval the global raisecommand if we have one, appending the item. set cmd [Widget::cget $path -raisecommand] if {![string equal $cmd ""]} { uplevel #0 $cmd [list $item] } ## Eval this item's raisecommand if we have one. set cmd [Widget::cget $items($item) -raisecommand] if {![string equal $cmd ""]} { uplevel #0 $cmd } set title [getoption $path $item -title] wm title [winfo toplevel $path] $title if {[Widget::cget $path -separator]} { set txt [getoption $path $item -separatortext] $path itemconfigure separatortext -text $txt } set default [Widget::cget $items($item) -default] set button [lsearch $data(buttons) $default] $buttons setfocus $button $steps raise $item set data(current) $item set back [$path step back] set next [$path step next] if {[Widget::cget $path -autobuttons]} { set txt [Widget::cget $items($item) -backtext] $path itemconfigure back -text $txt -state normal set txt [Widget::cget $items($item) -nexttext] $path itemconfigure next -text $txt -state normal set txt [Widget::cget $items($item) -canceltext] $path itemconfigure cancel -text $txt -state normal if {[Widget::cget $path -helpbutton]} { set txt [Widget::cget $items($item) -helptext] $path itemconfigure help -text $txt } if {[Widget::cget $path -finishbutton]} { set txt [Widget::cget $items($item) -finishtext] $path itemconfigure finish -text $txt -state disabled } if {[string equal $back ""]} { $path itemconfigure back -state disabled } if {[string equal $next ""]} { if {[Widget::cget $path -finishbutton]} { $path itemconfigure next -state disabled $path itemconfigure finish -state normal } else { set txt [Widget::cget $items($item) -finishtext] $path itemconfigure next -text $txt -command [list $path finish] } $path itemconfigure back -state disabled $path itemconfigure cancel -state disabled } else { set txt [Widget::cget $items($item) -nexttext] $path itemconfigure next -text $txt -command [list $path next] } } event generate $path <<WizardStep>> if {[string equal $next ""]} { event generate $path <<WizardLastStep>> } if {[string equal $back ""]} { event generate $path <<WizardFirstStep>> } return $item } proc Wizard::widgets { path command args } { Widget::getVariable $path items Widget::getVariable $path widgets Widget::getVariable $path stepWidgets switch -- $command { "set" { set node [lindex $args 0] if {[string equal $node ""]} { set err [BWidget::wrongNumArgsString \ "$path widgets set <name> ?option ..?"] return -code error $err } set args [lreplace $args 0 0] set item $path.#widget#$node Widget::init Wizard::Widget $item $args set step [Widget::cget $item -step] set widget [Widget::cget $item -widget] if {[string equal $step ""]} { set widgets($node) $widget } else { set stepWidgets($step,$node) $widget } return $widget } "get" { set node [lindex $args 0] if {[string equal $node ""]} { return [array names widgets] } set args [lreplace $args 0 0] array set map [list Wizard::Widget {}] array set map [Widget::parseArgs Wizard::Widget $args] array set data $map(Wizard::Widget) if {[info exists data(-step)]} { set step $data(-step) } else { set step [$path step current] } ## If a widget exists for this step, return it. if {[info exists stepWidgets($step,$node)]} { return $stepWidgets($step,$node) } ## See if a widget exists on the global level. if {![info exists widgets($node)]} { return -code error "item \"$node\" does not exist" } return $widgets($node) } default { set err [BWidget::badOptionString option $command [list get set]] return -code error $err } } } proc Wizard::variable { path step option } { set item $path.$step return [Widget::varForOption $item $option] } proc Wizard::branch { path {node "current"} } { Widget::getVariable $path data if {[string equal $node "current"]} { set item [$path step current] } if {[string equal $node ""]} { return "root" } if {[info exists data($node,branch)]} { return $data($node,branch) } return -code error "item \"$node\" does not exist" } proc Wizard::traverse { path node } { Widget::getVariable $path items if {$node == "root"} { return 1 } if {![_is_branch $path $node]} { return -code error "branch \"$node\" does not exist" } set cmd [Widget::cget $items($node) -command] if {[string equal $cmd ""]} { return 1 } return [uplevel #0 $cmd] } proc Wizard::exists { path item } { Widget::getVariable $path items return [info exists items($item)] } proc Wizard::createStep { path item {delete 0} } { Widget::getVariable $path data Widget::getVariable $path items Widget::getVariable $path steps if {![_is_step $path $item]} { return } if {$delete} { if {[$path.steps exists $item]} { $path.steps delete $item } if {[info exists data($item,realized)]} { unset data($item,realized) } } if {![info exists data($item,realized)]} { ## Eval the global createcommand if we have one, appending the item. set cmd [Widget::cget $path -createcommand] if {![string equal $cmd ""]} { uplevel #0 $cmd [list $item] } ## Eval this item's createcommand if we have one. set cmd [Widget::cget $items($item) -createcommand] if {![string equal $cmd ""]} { uplevel #0 $cmd } set data($item,realized) 1 } return } proc Wizard::getoption { path item option } { Widget::getVariable $path items return [Widget::getOption $option "" $path $items($item)] } proc Wizard::reorder { path parent nodes } { Widget::getVariable $path branches set branches($parent) $nodes } proc Wizard::_insert_button { path idx node args } { Widget::getVariable $path data Widget::getVariable $path items Widget::getVariable $path buttons Widget::getVariable $path widgets set buttons($node) 1 set widgets($node) [eval $path.buttons insert $idx $args] set item [string map [list $path.buttons.b {}] $widgets($node)] set items($node) $item return $widgets($node) } proc Wizard::_insert_step { path idx branch node args } { Widget::getVariable $path data Widget::getVariable $path steps Widget::getVariable $path items Widget::getVariable $path widgets Widget::getVariable $path branches set steps($node) 1 lappend data(steps) $node set data($node,branch) $branch if {$idx == "end"} { lappend branches($branch) $node } else { set branches($branch) [linsert $branches($branch) $idx $node] } set items($node) $path.$node Widget::init Wizard::Step $items($node) $args set widgets($node) [$path.steps add $node] if {[Widget::cget $items($node) -create]} { $path createStep $node } return $widgets($node) } proc Wizard::_insert_branch { path idx branch node args } { Widget::getVariable $path data Widget::getVariable $path items Widget::getVariable $path branches set branches($node) [list] lappend data(branches) $node set data($node,branch) $branch if {$idx == "end"} { lappend branches($branch) $node } else { set branches($branch) [linsert $branches($branch) $idx $node] } set items($node) $path.$node Widget::init Wizard::Branch $items($node) $args } proc Wizard::_is_step { path node } { Widget::getVariable $path steps return [info exists steps($node)] } proc Wizard::_is_branch { path node } { Widget::getVariable $path branches return [info exists branches($node)] } # ------------------------------------------------------------------------------ # Command Wizard::_destroy # ------------------------------------------------------------------------------ proc Wizard::_destroy { path } { Widget::destroy $path } proc SimpleWizard { path args } { option add *WizLayoutSimple*Label.padX 5 interactive option add *WizLayoutSimple*Label.anchor nw interactive option add *WizLayoutSimple*Label.justify left interactive option add *WizLayoutSimple*Label.borderWidth 0 interactive option add *WizLayoutSimple*Label.highlightThickness 0 interactive set cmd [list Wizard::layout::simple $path] return [eval [list Wizard $path] $args [list -createcommand $cmd]] } proc ClassicWizard { path args } { option add *WizLayoutClassic*Label.padX 5 interactive option add *WizLayoutClassic*Label.anchor nw interactive option add *WizLayoutClassic*Label.justify left interactive option add *WizLayoutClassic*Label.borderWidth 0 interactive option add *WizLayoutClassic*Label.highlightThickness 0 interactive set cmd [list Wizard::layout::classic $path] return [eval [list Wizard $path] $args [list -createcommand $cmd]] } proc Wizard::layout::simple { wizard step } { set frame [$wizard widgets get $step] set layout [$wizard widgets set layout -widget $frame.layout -step $step] foreach w [list titleframe pretext posttext clientArea] { set $w [$wizard widgets set $w -widget $layout.$w -step $step] } foreach w [list title subtitle icon] { set $w [$wizard widgets set $w -widget $titleframe.$w -step $step] } frame $layout -class WizLayoutSimple pack $layout -expand 1 -fill both # Client area. This is where the caller places its widgets. frame $clientArea -bd 8 -relief flat Separator $layout.sep1 -relief groove -orient horizontal # title and subtitle and icon frame $titleframe -bd 4 -relief flat -background white label $title -background white -textvariable [$wizard variable $step -text1] label $subtitle -height 2 -background white -padx 15 -width 40 \ -textvariable [$wizard variable $step -text2] label $icon -borderwidth 0 -background white -anchor c set iconImage [$wizard getoption $step -icon] if {![string equal $iconImage ""]} { $icon configure -image $iconImage } set labelfont [font actual [$title cget -font]] $title configure -font [concat $labelfont -weight bold] # put the title, subtitle and icon inside the frame we've built for them grid $title -in $titleframe -row 0 -column 0 -sticky nsew grid $subtitle -in $titleframe -row 1 -column 0 -sticky nsew grid $icon -in $titleframe -row 0 -column 1 -rowspan 2 -padx 8 grid columnconfigure $titleframe 0 -weight 1 grid columnconfigure $titleframe 1 -weight 0 # pre and post text. label $pretext -textvariable [$wizard variable $step -text3] label $posttext -textvariable [$wizard variable $step -text4] # when our label widgets change size we want to reset the # wraplength to that same size. foreach widget {title subtitle pretext posttext} { bind [set $widget] <Configure> { # yeah, I know this looks weird having two after idle's, but # it helps prevent the geometry manager getting into a tight # loop under certain circumstances # # note that subtracting 10 is just a somewhat arbitrary number # to provide a little padding... after idle {after idle {%W configure -wraplength [expr {%w -10}]}} } } grid $titleframe -row 0 -column 0 -sticky nsew -padx 0 grid $layout.sep1 -row 1 -sticky ew grid $pretext -row 2 -sticky nsew -padx 8 -pady 8 grid $clientArea -row 3 -sticky nsew -padx 8 -pady 8 grid $posttext -row 4 -sticky nsew -padx 8 -pady 8 grid columnconfigure $layout 0 -weight 1 grid rowconfigure $layout 0 -weight 0 grid rowconfigure $layout 1 -weight 0 grid rowconfigure $layout 2 -weight 0 grid rowconfigure $layout 3 -weight 1 grid rowconfigure $layout 4 -weight 0 } proc Wizard::layout::classic { wizard step } { set frame [$wizard widgets get $step] set layout [$wizard widgets set layout -widget $frame.layout -step $step] foreach w [list title subtitle icon pretext posttext clientArea] { set $w [$wizard widgets set $w -widget $layout.$w -step $step] } frame $layout -class WizLayoutClassic pack $layout -expand 1 -fill both # Client area. This is where the caller places its widgets. frame $clientArea -bd 8 -relief flat Separator $layout.sep1 -relief groove -orient vertical # title and subtitle label $title -textvariable [$wizard variable $step -text1] label $subtitle -textvariable [$wizard variable $step -text2] -height 2 array set labelfont [font actual [$title cget -font]] incr labelfont(-size) 6 set labelfont(-weight) bold $title configure -font [array get labelfont] # pre and post text. label $pretext -textvariable [$wizard variable $step -text3] label $posttext -textvariable [$wizard variable $step -text4] # when our label widgets change size we want to reset the # wraplength to that same size. foreach widget {title subtitle pretext posttext} { bind [set $widget] <Configure> { # yeah, I know this looks weird having two after idle's, but # it helps prevent the geometry manager getting into a tight # loop under certain circumstances # # note that subtracting 10 is just a somewhat arbitrary number # to provide a little padding... after idle {after idle {%W configure -wraplength [expr {%w -10}]}} } } label $icon -borderwidth 1 -relief sunken -background white \ -anchor c -width 96 -image Wizard::none set iconImage [$wizard getoption $step -icon] if {![string equal $iconImage ""]} { $icon configure -image $iconImage } grid $icon -row 0 -column 0 -sticky nsew -padx 8 -pady 8 -rowspan 5 grid $title -row 0 -column 1 -sticky ew -padx 8 -pady 8 grid $subtitle -row 1 -column 1 -sticky ew -padx 8 -pady 8 grid $pretext -row 2 -column 1 -sticky ew -padx 8 grid $clientArea -row 3 -column 1 -sticky nsew -padx 8 grid $posttext -row 4 -column 1 -sticky ew -padx 8 -pady 24 grid columnconfigure $layout 0 -weight 0 grid columnconfigure $layout 1 -weight 1 grid rowconfigure $layout 0 -weight 0 grid rowconfigure $layout 1 -weight 0 grid rowconfigure $layout 2 -weight 0 grid rowconfigure $layout 3 -weight 1 grid rowconfigure $layout 4 -weight 0 } |
Added pybwidget-0.1.2_1.7.0/BWidget-1.7.0/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 2004/12/24 16:32:02 jepler Exp $ # ------------------------------------------------------------------------------ # # Copyright 1996 by Roger E. Critchlow Jr., San Francisco, California # All rights reserved, fair use permitted, caveat emptor. # rec@elf.org # # ---------------------------------------------------------------------------- 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 equal $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 equal $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 } |
Added pybwidget-0.1.2_1.7.0/PKG-INFO.
> > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 | Metadata-Version: 1.0 Name: pybwidget Version: 0.1.2_1.7.0 Summary: BWidget for Tkinter Home-page: http://tkinter.unpythonic.net/bwidget Author: Jeff Epler Author-email: jepler@unpy.net License: Free to use and distribute (see LICENSE.txt) Description: UNKNOWN Platform: UNKNOWN |
Added pybwidget-0.1.2_1.7.0/README.html.
> > > > > > > > > | 1 2 3 4 5 6 7 8 9 | This is a little-tested wrapper for "bwidget", a set of widgets for Tk. Please report your experiences, good or bad, on the Tkinter mailing list: <UL> <LI> <A HREF="mailto:tkinter-discuss@python.org">tkinter-discuss@python.org</A> <LI> <A HREF="http://mail.python.org/mailman/listinfo/tkinter-discuss"> http://mail.python.org/mailman/listinfo/tkinter-discuss</A> </UL> A copy of bwidget 1.7.0 is included for your convenience. <P>To install, use a command like <tt>python setup.py install</tt>. |
Added pybwidget-0.1.2_1.7.0/build/lib/bwidget/__init__.py.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | """Wrapper for BWidget family of widgets""" # The authors hereby grant permission to use, copy, modify, distribute, # and license this software and its documentation for any purpose, provided # that existing copyright notices are retained in all copies and that this # notice is included verbatim in any distributions. No written agreement, # license, or royalty fee is required for any of the authorized uses. # Modifications to this software may be copyrighted by their authors # and need not follow the licensing terms described here, provided that # the new terms are clearly indicated on the first page of each file where # they apply. # # IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY # FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES # ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY # DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE # IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE # NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR # MODIFICATIONS. # # GOVERNMENT USE: If you are acquiring this software on behalf of the # U.S. government, the Government shall have only "Restricted Rights" # in the software and related documentation as defined in the Federal # Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you # are acquiring the software on behalf of the Department of Defense, the # software shall be classified as "Commercial Computer Software" and the # Government shall have only "Restricted Rights" as defined in Clause # 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the # authors grant the U.S. Government and others acting in its behalf # permission to use and distribute the software in accordance with the # terms specified in this license. __author__ = "Jeff Epler <jepler AT unpy DOT net>" __all__ = """ Entry Label Button ArrowButton ProgressBar ScrollView Separator MainFrame LabelFrame TitleFrame PanelFrame ScrolledWindow ScrollableFrame PanedWindow ButtonBox PagesManager NoteBook Dialog StatusBar LabelEntry ComboBox SpinBox Tree ListBox MessageDialog ProgressDialog PasswordDialog SelectFont SelectColor SelectColorMenu CASCADE CHECKBUTTON COMMAND RADIOBUTTON SEPARATOR STATUS PROGRESSION LINK """.split() import tkinter, types, os, sys, types import collections ROOT='root' def _wrap(wrapper, oldfunc): return types.FunctionType(wrapper.__code__, wrapper.__globals__, oldfunc.__name__, wrapper.__defaults__, wrapper.__closure__) def returnswidget(f): def w(self, *args, **kw): r = f(self, *args, **kw) return self.nametowidget(str(r)) return _wrap(w, f) def makeswidget(f, t): def w(self, *args, **kw): r = str(f(self, *args, **kw)) try: return self.nametowidget(r) except KeyError: return makewidget(self, t, str(r)) return _wrap(w, f) def nametowidget(self, name): """Return the Tkinter instance of a widget identified by its Tcl name NAME.""" w = self if name[0] == '.': w = w._root() name = name[1:] while name: i = name.find('.') if i >= 0: name, tail = name[:i], name[i+1:] else: tail = '' while tail: try: w.children[name] except KeyError: j = tail.find('.') if j >= 0: name, tail = name + "." + tail[:j], tail[j+1:] else: name, tail = name + "." + tail, '' else: break w = w.children[name] name = tail return w tkinter.Misc.nametowidget = nametowidget def makewidget(master, klass, path): path = str(path) self = klass() self._name = path[len(master._w)+1:] self._w = path self.children = {} master.children[self._name] = self self.master = master self.tk = master.tk return self _datadir = os.path.join(sys.prefix, "share", "pybwidget") class BWidget: def _require(self, master): auto_path = master.tk.call("set", "auto_path") if not _datadir in auto_path: master.tk.call("lappend", "auto_path", _datadir) master.tk.call("package", "require", "BWidget") def __init__(self, master, cnf={}, **kw): self._require(master) tkinter.Widget.__init__(self, master, self.__class__.__name__, cnf, kw) # Simple Widgets class Entry(BWidget, tkinter.Entry): def invoke(self): return self.tk.call(self._w, "invoke") class Label(BWidget, tkinter.Label): def setfocus(self): return self.tk.call(self._w, "setfocus") class Button(BWidget, tkinter.Button): pass class ArrowButton(BWidget, tkinter.Button): pass class ProgressBar(BWidget, tkinter.Widget): pass class ScrollView(BWidget, tkinter.Widget): pass class Separator(BWidget, tkinter.Widget): pass # Manager Widgets class _Frame: def getframe(self): return self.tk.call(self._w, "getframe") getframe = makeswidget(getframe, tkinter.Frame) class _Items: def itemcget(self, index, option): return self.tk.call(self._w, "itemcget", index, '-' + option) def itemconfigure(self, index, cnf=None, **kw): return self._configure(('itemconfigure', index), cnf, kw) LINK="link" CASCADE="cascade" CHECKBUTTON="checkbutton" COMMAND="command" RADIOBUTTON="radiobutton" SEPARATOR="separator" STATUS = "status" PROGRESSION = "progression" class MainFrame(BWidget, _Frame, tkinter.Widget): def addindicator(self, **kw): return self.tk.call(self._w, "addindicator", *self._options(kw)) addindicator = makeswidget(addindicator, Label) def getindicator(self, i): return self.tk.call(self._w, "getindicator", i) getindicator = returnswidget(getindicator) def getmenu(self): return self.tk.call(self._w, "getmenu") getmenu = returnswidget(getmenu) def setmenustate(self, tag, state): return self.tk.call(self._w, "setmenustate", tag, state) def showstatusbar(self, name): return self.tk.call(self._w, "showstatusbar", name) def showtoolbar(self, index, bool_): return self.tk.call(self._w, "showtoolbar", index, bool_) class LabelFrame(BWidget, _Frame, tkinter.Widget): def align(self, others): return self.tk.call("LabelFrame::align", self, *others) class TitleFrame(BWidget, _Frame, tkinter.Frame): pass class PanelFrame(BWidget, tkinter.Frame): pass class ScrolledWindow(BWidget, _Frame, tkinter.Frame): def setwidget(self, child): return self.tk.call(self._w, "setwidget", child) class ScrollableFrame(BWidget, _Frame, tkinter.Frame): def see(self, w, vert=None, horiz=None): if vert is None and horiz is None: return self.tk.call(self._w, "see", w) return self.tk.call(self._w, "see", w, vert, horiz) def xview(self, *args): return self.tk.call(self._w, "xview", *args) def yview(self, *args): return self.tk.call(self._w, "yview", *args) class PanedWindow(BWidget, tkinter.Frame): def add(self, **kw): return self.tk.call(self._w, "add", *self._options(kw)) add = makeswidget(add, tkinter.Frame) def getframe(self, index): return self.tk.call(self._w, "getframe", index) getframe = makeswidget(getframe, tkinter.Frame) class ButtonBox(BWidget, _Items, tkinter.Frame): def add(self, **kw): return self.tk.call(self._w, "add", *self._options(kw)) add = makeswidget(add, Button) def delete(self, index): self.tk.call(self._w, "delete", index) def index(self, item): self.tk.call(self._w, "index", item) def insert(self, index, *kw): return self.tk.call(self._w, "insert", index, *self._options(kw)) insert = makeswidget(insert, Button) def invoke(self, index): return self.tk.call(self._w, "invoke", index) def setfocus(self, index): return self.tk.call(self._w, "setfocus", index) class PagesManager(BWidget, tkinter.Frame): def add(self, page): return self.tk.call(self._w, "add", page) add = makeswidget(add, tkinter.Frame) def compute_size(self): return self.tk.call(self._w, "compute_size") def delete(self, page): return self.tk.call(self._w, "delete", page) def getframe(self, page): return self.tk.call(self._w, "delete", page) getframe = makeswidget(getframe, tkinter.Frame) def pages(self, *args): return self.tk.call(self._w, "pages", *args) def raise_page(self, page=None): if page is None: return self.tk.call(self._w, "raise") return self.tk.call(self._w, "raise", page) class NoteBook(BWidget, tkinter.Frame, _Items): def bindtabs(self, event, func): if isinstance(func, collections.Callable): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindtabs", event, command) def delete(self, page, destroyframe=True): return self.tk.call(self._w, "delete", page, destroyframe) def insert(self, index, page, **kw): return self.tk.call(self._w, "insert", index, page, *self._options(kw)) insert = makeswidget(insert, tkinter.Frame) def move(self, page, index): return self.tk.call(self._w, "move", page, index) def see(self, page): return self.tk.call(self._w, "see", page) # XXX these methods are from PagesManager but inheritance # won't work, because NoteBook has no 'add' command def compute_size(self): return self.tk.call(self._w, "compute_size") def delete(self, page): return self.tk.call(self._w, "delete", page) def getframe(self, page): return self.tk.call(self._w, "delete", page) getframe = makeswidget(getframe, tkinter.Frame) def pages(self, *args): return self.tk.call(self._w, "pages", *args) def raise_page(self, page=None): if page is None: return self.tk.call(self._w, "raise") return self.tk.call(self._w, "raise", page) class Dialog(ButtonBox, tkinter.BaseWidget, _Frame): def draw(self, focus=None): if focus is None: return self.tk.call(self, "draw") return self.tk.call(self._w, "draw", focus) def enddialog(self): return self.tk.call(self._w, "enddialog") def withdraw(self): return self.tk.call(self._w, "withdraw") class StatusBar(BWidget): pass class LabelEntry(Entry): pass class ComboBox(Entry): def bind_entry(self, *args): return self.tk.call(self._w, "bind", *args) def getlistbox(self): r = str(self.tk.call(self._w, "getlistbox")) try: return self.nametowidget(r) except KeyError: c = self.tk.call("winfo", "class", r) if c == "ListBox": return makewidget(self, ListBox, r) else: return makewidget(self, tkinter.Listbox, r) def getvalue(self): return self.tk.call(self._w, "getvalue") def post(self): return self.tk.call(self._w, "post") def setvalue(self, index): return self.tk.call(self._w, "setvalue", index) def unpost(self): return self.tk.call(self._w, "unpost") class SpinBox(Entry): def bind_entry(self, *args): return self.tk.call(self._w, "bind", *args) def setvalue(self, index): return self.tk.call(self._w, "setvalue", index) def getvalue(self): return self.tk.call(self._w, "getvalue") class Tree(BWidget, tkinter.Widget, _Items): def bind_image(self, event, func): if isinstance(func, collections.Callable): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindImage", event, command) bindImage = bind_image def bind_text(self, event, func): if isinstance(func, collections.Callable): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindText", event, command) bindText = bind_text def closetree(self, node): return self.tk.call(self._w, "closetree", node) def delete(self, arg, *args): return self.tk.call(self._w, "delete", arg, *args) def edit(self, node, text, *args): "edit(self, node, text, verifycmd=None, clickres=None, select=None)" return self.tk.call(self._w, "edit", node, text, *args) def exists(self, node): return self.tk.call(self._w, "exists", node) def index(self, node): return self.tk.call(self._w, "index", node) def insert(self, index, parent, node="#auto", **kw): return self.tk.call(self._w, "insert", index, parent, node, *self._options(kw)) def move(self, parent, node, index): return self.tk.call(self._w, "move", parent, node, index) def nodes(self, node, *args): return self.tk.call(self._w, "nodes", node, *args) def opentree(self, node, recurse=True): return self.tk.call(self._w, "opentree", node, recurse) def parent(self, node): return self.tk.call(self._w, "parent", node) def reorder(self, node, neworder): return self.tk.call(self._w, "reorder", node, neworder) def see(self, node): return self.tk.call(self._w, "see", node) def selection_add(self, *args): return self.tk.call(self._w, "selection", "add", *args) def selection_clear(self): return self.tk.call(self._w, "selection", "clear") def selection_get(self): return self.tk.call(self._w, "selection", "get") def selection_includes(self, node): return self.tk.call(self._w, "selection", "includes", node) def selection_remove(self, *args): return self.tk.call(self._w, "selection", "remove", *args) def selection_set(self, *args): return self.tk.call(self._w, "selection", "set", *args) def selection_toggle(self, *args): return self.tk.call(self._w, "selection", "toggle", *args) def toggle(self, node): return self.tk.call(self._w, "toggle", node) def visible(self, node): return self.tk.call(self._w, "visible", node) def xview(self, *args): return self.tk.call(self.xview, *args) def yview(self, *args): return self.tk.call(self.yview, *args) class ListBox(BWidget, tkinter.Widget, _Items): def bind_image(self, event, func): if isinstance(func, collections.Callable): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindImage", event, command) bindImage = bind_image def bind_text(self, event, func): if isinstance(func, collections.Callable): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindText", event, func) bindText = bind_text def delete(self, arg, *args): return self.tk.call(self._w, "delete", arg, *args) def edit(self, item, text, *args): "edit(self, item, text, verifycmd=None, clickres=None, select=None)" return self.tk.call(self._w, "edit", item, text, *args) def exists(self, item): return self.tk.call(self._w, "exists", item) def index(self, item): return self.tk.call(self._w, "index", item) def insert(self, index, item="#auto", **kw): return self.tk.call(self._w, "insert", index, item, *self._options(kw)) def items(self, item, *args): return self.tk.call(self._w, "items", *args) def move(self, parent, item, index): return self.tk.call(self._w, "move", parent, item, index) def reorder(self, node, neworder): return self.tk.call(self._w, "reorder", node, neworder) def see(self, node): return self.tk.call(self._w, "see", node) def selection_add(self, *args): return self.tk.call(self._w, "selection", "add", *args) def selection_clear(self): return self.tk.call(self._w, "selection", "clear") def selection_get(self): return self.tk.call(self._w, "selection", "get") def selection_includes(self, node): return self.tk.call(self._w, "selection", "includes", node) def selection_remove(self, *args): return self.tk.call(self._w, "selection", "remove", *args) def selection_set(self, *args): return self.tk.call(self._w, "selection", "set", *args) def selection_toggle(self, *args): return self.tk.call(self._w, "selection", "toggle", *args) def xview(self, *args): return self.tk.call(self.xview, *args) def yview(self, *args): return self.tk.call(self.yview, *args) class MessageDialog(Dialog): def __init__(self, master, cnf={}, **kw): self._require(master) tkinter.Widget.__init__(self, master, "MessageDlg", cnf, kw) class ProgressDialog(Dialog): def __init__(self, master, cnf={}, **kw): self._require(master) tkinter.Widget.__init__(self, master, "ProgressDlg", cnf, kw) class PasswordDialog(Dialog): def __init__(self, master, cnf={}, **kw): self._require(master) tkinter.Widget.__init__(self, master, "PasswdDlg", cnf, kw) class SelectFont(Dialog): pass class SelectColor(Dialog): def setcolor(self, index, color): self.tk.call("SelectColor::setcolor", index, color) def SelectColorMenu(master, *args, **kw): i = id([]) if master._w=='.': w = '.' + name else: w = master._w + '.' + name return master.tk.call("SelectColor::menu", args, *master._options(kw)) |
Added pybwidget-0.1.2_1.7.0/bwidget/__init__.py.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | """Wrapper for BWidget family of widgets""" # The authors hereby grant permission to use, copy, modify, distribute, # and license this software and its documentation for any purpose, provided # that existing copyright notices are retained in all copies and that this # notice is included verbatim in any distributions. No written agreement, # license, or royalty fee is required for any of the authorized uses. # Modifications to this software may be copyrighted by their authors # and need not follow the licensing terms described here, provided that # the new terms are clearly indicated on the first page of each file where # they apply. # # IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY # FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES # ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY # DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE # IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE # NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR # MODIFICATIONS. # # GOVERNMENT USE: If you are acquiring this software on behalf of the # U.S. government, the Government shall have only "Restricted Rights" # in the software and related documentation as defined in the Federal # Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you # are acquiring the software on behalf of the Department of Defense, the # software shall be classified as "Commercial Computer Software" and the # Government shall have only "Restricted Rights" as defined in Clause # 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the # authors grant the U.S. Government and others acting in its behalf # permission to use and distribute the software in accordance with the # terms specified in this license. __author__ = "Jeff Epler <jepler AT unpy DOT net>" __all__ = """ Entry Label Button ArrowButton ProgressBar ScrollView Separator MainFrame LabelFrame TitleFrame PanelFrame ScrolledWindow ScrollableFrame PanedWindow ButtonBox PagesManager NoteBook Dialog StatusBar LabelEntry ComboBox SpinBox Tree ListBox MessageDialog ProgressDialog PasswordDialog SelectFont SelectColor SelectColorMenu CASCADE CHECKBUTTON COMMAND RADIOBUTTON SEPARATOR STATUS PROGRESSION LINK """.split() import tkinter, types, os, sys, types import collections ROOT='root' def _wrap(wrapper, oldfunc): return types.FunctionType(wrapper.__code__, wrapper.__globals__, oldfunc.__name__, wrapper.__defaults__, wrapper.__closure__) def returnswidget(f): def w(self, *args, **kw): r = f(self, *args, **kw) return self.nametowidget(str(r)) return _wrap(w, f) def makeswidget(f, t): def w(self, *args, **kw): r = str(f(self, *args, **kw)) try: return self.nametowidget(r) except KeyError: return makewidget(self, t, str(r)) return _wrap(w, f) def nametowidget(self, name): """Return the Tkinter instance of a widget identified by its Tcl name NAME.""" w = self if name[0] == '.': w = w._root() name = name[1:] while name: i = name.find('.') if i >= 0: name, tail = name[:i], name[i+1:] else: tail = '' while tail: try: w.children[name] except KeyError: j = tail.find('.') if j >= 0: name, tail = name + "." + tail[:j], tail[j+1:] else: name, tail = name + "." + tail, '' else: break w = w.children[name] name = tail return w tkinter.Misc.nametowidget = nametowidget def makewidget(master, klass, path): path = str(path) self = klass() self._name = path[len(master._w)+1:] self._w = path self.children = {} master.children[self._name] = self self.master = master self.tk = master.tk return self _datadir = os.path.join(sys.prefix, "share", "pybwidget") class BWidget: def _require(self, master): auto_path = master.tk.call("set", "auto_path") if not _datadir in auto_path: master.tk.call("lappend", "auto_path", _datadir) master.tk.call("package", "require", "BWidget") def __init__(self, master, cnf={}, **kw): self._require(master) tkinter.Widget.__init__(self, master, self.__class__.__name__, cnf, kw) # Simple Widgets class Entry(BWidget, tkinter.Entry): def invoke(self): return self.tk.call(self._w, "invoke") class Label(BWidget, tkinter.Label): def setfocus(self): return self.tk.call(self._w, "setfocus") class Button(BWidget, tkinter.Button): pass class ArrowButton(BWidget, tkinter.Button): pass class ProgressBar(BWidget, tkinter.Widget): pass class ScrollView(BWidget, tkinter.Widget): pass class Separator(BWidget, tkinter.Widget): pass # Manager Widgets class _Frame: def getframe(self): return self.tk.call(self._w, "getframe") getframe = makeswidget(getframe, tkinter.Frame) class _Items: def itemcget(self, index, option): return self.tk.call(self._w, "itemcget", index, '-' + option) def itemconfigure(self, index, cnf=None, **kw): return self._configure(('itemconfigure', index), cnf, kw) LINK="link" CASCADE="cascade" CHECKBUTTON="checkbutton" COMMAND="command" RADIOBUTTON="radiobutton" SEPARATOR="separator" STATUS = "status" PROGRESSION = "progression" class MainFrame(BWidget, _Frame, tkinter.Widget): def addindicator(self, **kw): return self.tk.call(self._w, "addindicator", *self._options(kw)) addindicator = makeswidget(addindicator, Label) def getindicator(self, i): return self.tk.call(self._w, "getindicator", i) getindicator = returnswidget(getindicator) def getmenu(self): return self.tk.call(self._w, "getmenu") getmenu = returnswidget(getmenu) def setmenustate(self, tag, state): return self.tk.call(self._w, "setmenustate", tag, state) def showstatusbar(self, name): return self.tk.call(self._w, "showstatusbar", name) def showtoolbar(self, index, bool_): return self.tk.call(self._w, "showtoolbar", index, bool_) class LabelFrame(BWidget, _Frame, tkinter.Widget): def align(self, others): return self.tk.call("LabelFrame::align", self, *others) class TitleFrame(BWidget, _Frame, tkinter.Frame): pass class PanelFrame(BWidget, tkinter.Frame): pass class ScrolledWindow(BWidget, _Frame, tkinter.Frame): def setwidget(self, child): return self.tk.call(self._w, "setwidget", child) class ScrollableFrame(BWidget, _Frame, tkinter.Frame): def see(self, w, vert=None, horiz=None): if vert is None and horiz is None: return self.tk.call(self._w, "see", w) return self.tk.call(self._w, "see", w, vert, horiz) def xview(self, *args): return self.tk.call(self._w, "xview", *args) def yview(self, *args): return self.tk.call(self._w, "yview", *args) class PanedWindow(BWidget, tkinter.Frame): def add(self, **kw): return self.tk.call(self._w, "add", *self._options(kw)) add = makeswidget(add, tkinter.Frame) def getframe(self, index): return self.tk.call(self._w, "getframe", index) getframe = makeswidget(getframe, tkinter.Frame) class ButtonBox(BWidget, _Items, tkinter.Frame): def add(self, **kw): return self.tk.call(self._w, "add", *self._options(kw)) add = makeswidget(add, Button) def delete(self, index): self.tk.call(self._w, "delete", index) def index(self, item): self.tk.call(self._w, "index", item) def insert(self, index, *kw): return self.tk.call(self._w, "insert", index, *self._options(kw)) insert = makeswidget(insert, Button) def invoke(self, index): return self.tk.call(self._w, "invoke", index) def setfocus(self, index): return self.tk.call(self._w, "setfocus", index) class PagesManager(BWidget, tkinter.Frame): def add(self, page): return self.tk.call(self._w, "add", page) add = makeswidget(add, tkinter.Frame) def compute_size(self): return self.tk.call(self._w, "compute_size") def delete(self, page): return self.tk.call(self._w, "delete", page) def getframe(self, page): return self.tk.call(self._w, "delete", page) getframe = makeswidget(getframe, tkinter.Frame) def pages(self, *args): return self.tk.call(self._w, "pages", *args) def raise_page(self, page=None): if page is None: return self.tk.call(self._w, "raise") return self.tk.call(self._w, "raise", page) class NoteBook(BWidget, tkinter.Frame, _Items): def bindtabs(self, event, func): if isinstance(func, collections.Callable): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindtabs", event, command) def delete(self, page, destroyframe=True): return self.tk.call(self._w, "delete", page, destroyframe) def insert(self, index, page, **kw): return self.tk.call(self._w, "insert", index, page, *self._options(kw)) insert = makeswidget(insert, tkinter.Frame) def move(self, page, index): return self.tk.call(self._w, "move", page, index) def see(self, page): return self.tk.call(self._w, "see", page) # XXX these methods are from PagesManager but inheritance # won't work, because NoteBook has no 'add' command def compute_size(self): return self.tk.call(self._w, "compute_size") def delete(self, page): return self.tk.call(self._w, "delete", page) def getframe(self, page): return self.tk.call(self._w, "delete", page) getframe = makeswidget(getframe, tkinter.Frame) def pages(self, *args): return self.tk.call(self._w, "pages", *args) def raise_page(self, page=None): if page is None: return self.tk.call(self._w, "raise") return self.tk.call(self._w, "raise", page) class Dialog(ButtonBox, tkinter.BaseWidget, _Frame): def draw(self, focus=None): if focus is None: return self.tk.call(self, "draw") return self.tk.call(self._w, "draw", focus) def enddialog(self): return self.tk.call(self._w, "enddialog") def withdraw(self): return self.tk.call(self._w, "withdraw") class StatusBar(BWidget): pass class LabelEntry(Entry): pass class ComboBox(Entry): def bind_entry(self, *args): return self.tk.call(self._w, "bind", *args) def getlistbox(self): r = str(self.tk.call(self._w, "getlistbox")) try: return self.nametowidget(r) except KeyError: c = self.tk.call("winfo", "class", r) if c == "ListBox": return makewidget(self, ListBox, r) else: return makewidget(self, tkinter.Listbox, r) def getvalue(self): return self.tk.call(self._w, "getvalue") def post(self): return self.tk.call(self._w, "post") def setvalue(self, index): return self.tk.call(self._w, "setvalue", index) def unpost(self): return self.tk.call(self._w, "unpost") class SpinBox(Entry): def bind_entry(self, *args): return self.tk.call(self._w, "bind", *args) def setvalue(self, index): return self.tk.call(self._w, "setvalue", index) def getvalue(self): return self.tk.call(self._w, "getvalue") class Tree(BWidget, tkinter.Widget, _Items): def bind_image(self, event, func): if isinstance(func, collections.Callable): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindImage", event, command) bindImage = bind_image def bind_text(self, event, func): if isinstance(func, collections.Callable): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindText", event, command) bindText = bind_text def closetree(self, node): return self.tk.call(self._w, "closetree", node) def delete(self, arg, *args): return self.tk.call(self._w, "delete", arg, *args) def edit(self, node, text, *args): "edit(self, node, text, verifycmd=None, clickres=None, select=None)" return self.tk.call(self._w, "edit", node, text, *args) def exists(self, node): return self.tk.call(self._w, "exists", node) def index(self, node): return self.tk.call(self._w, "index", node) def insert(self, index, parent, node="#auto", **kw): return self.tk.call(self._w, "insert", index, parent, node, *self._options(kw)) def move(self, parent, node, index): return self.tk.call(self._w, "move", parent, node, index) def nodes(self, node, *args): return self.tk.call(self._w, "nodes", node, *args) def opentree(self, node, recurse=True): return self.tk.call(self._w, "opentree", node, recurse) def parent(self, node): return self.tk.call(self._w, "parent", node) def reorder(self, node, neworder): return self.tk.call(self._w, "reorder", node, neworder) def see(self, node): return self.tk.call(self._w, "see", node) def selection_add(self, *args): return self.tk.call(self._w, "selection", "add", *args) def selection_clear(self): return self.tk.call(self._w, "selection", "clear") def selection_get(self): return self.tk.call(self._w, "selection", "get") def selection_includes(self, node): return self.tk.call(self._w, "selection", "includes", node) def selection_remove(self, *args): return self.tk.call(self._w, "selection", "remove", *args) def selection_set(self, *args): return self.tk.call(self._w, "selection", "set", *args) def selection_toggle(self, *args): return self.tk.call(self._w, "selection", "toggle", *args) def toggle(self, node): return self.tk.call(self._w, "toggle", node) def visible(self, node): return self.tk.call(self._w, "visible", node) def xview(self, *args): return self.tk.call(self.xview, *args) def yview(self, *args): return self.tk.call(self.yview, *args) class ListBox(BWidget, tkinter.Widget, _Items): def bind_image(self, event, func): if isinstance(func, collections.Callable): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindImage", event, command) bindImage = bind_image def bind_text(self, event, func): if isinstance(func, collections.Callable): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindText", event, func) bindText = bind_text def delete(self, arg, *args): return self.tk.call(self._w, "delete", arg, *args) def edit(self, item, text, *args): "edit(self, item, text, verifycmd=None, clickres=None, select=None)" return self.tk.call(self._w, "edit", item, text, *args) def exists(self, item): return self.tk.call(self._w, "exists", item) def index(self, item): return self.tk.call(self._w, "index", item) def insert(self, index, item="#auto", **kw): return self.tk.call(self._w, "insert", index, item, *self._options(kw)) def items(self, item, *args): return self.tk.call(self._w, "items", *args) def move(self, parent, item, index): return self.tk.call(self._w, "move", parent, item, index) def reorder(self, node, neworder): return self.tk.call(self._w, "reorder", node, neworder) def see(self, node): return self.tk.call(self._w, "see", node) def selection_add(self, *args): return self.tk.call(self._w, "selection", "add", *args) def selection_clear(self): return self.tk.call(self._w, "selection", "clear") def selection_get(self): return self.tk.call(self._w, "selection", "get") def selection_includes(self, node): return self.tk.call(self._w, "selection", "includes", node) def selection_remove(self, *args): return self.tk.call(self._w, "selection", "remove", *args) def selection_set(self, *args): return self.tk.call(self._w, "selection", "set", *args) def selection_toggle(self, *args): return self.tk.call(self._w, "selection", "toggle", *args) def xview(self, *args): return self.tk.call(self.xview, *args) def yview(self, *args): return self.tk.call(self.yview, *args) class MessageDialog(Dialog): def __init__(self, master, cnf={}, **kw): self._require(master) tkinter.Widget.__init__(self, master, "MessageDlg", cnf, kw) class ProgressDialog(Dialog): def __init__(self, master, cnf={}, **kw): self._require(master) tkinter.Widget.__init__(self, master, "ProgressDlg", cnf, kw) class PasswordDialog(Dialog): def __init__(self, master, cnf={}, **kw): self._require(master) tkinter.Widget.__init__(self, master, "PasswdDlg", cnf, kw) class SelectFont(Dialog): pass class SelectColor(Dialog): def setcolor(self, index, color): self.tk.call("SelectColor::setcolor", index, color) def SelectColorMenu(master, *args, **kw): i = id([]) if master._w=='.': w = '.' + name else: w = master._w + '.' + name return master.tk.call("SelectColor::menu", args, *master._options(kw)) |
Added pybwidget-0.1.2_1.7.0/bwidget/__init__.py-orig.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | """Wrapper for BWidget family of widgets""" # The authors hereby grant permission to use, copy, modify, distribute, # and license this software and its documentation for any purpose, provided # that existing copyright notices are retained in all copies and that this # notice is included verbatim in any distributions. No written agreement, # license, or royalty fee is required for any of the authorized uses. # Modifications to this software may be copyrighted by their authors # and need not follow the licensing terms described here, provided that # the new terms are clearly indicated on the first page of each file where # they apply. # # IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY # FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES # ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY # DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE # IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE # NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR # MODIFICATIONS. # # GOVERNMENT USE: If you are acquiring this software on behalf of the # U.S. government, the Government shall have only "Restricted Rights" # in the software and related documentation as defined in the Federal # Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you # are acquiring the software on behalf of the Department of Defense, the # software shall be classified as "Commercial Computer Software" and the # Government shall have only "Restricted Rights" as defined in Clause # 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the # authors grant the U.S. Government and others acting in its behalf # permission to use and distribute the software in accordance with the # terms specified in this license. __author__ = "Jeff Epler <jepler AT unpy DOT net>" __all__ = """ Entry Label Button ArrowButton ProgressBar ScrollView Separator MainFrame LabelFrame TitleFrame PanelFrame ScrolledWindow ScrollableFrame PanedWindow ButtonBox PagesManager NoteBook Dialog StatusBar LabelEntry ComboBox SpinBox Tree ListBox MessageDialog ProgressDialog PasswordDialog SelectFont SelectColor SelectColorMenu CASCADE CHECKBUTTON COMMAND RADIOBUTTON SEPARATOR STATUS PROGRESSION LINK """.split() import Tkinter, types, os, sys, new ROOT='root' def _wrap(wrapper, oldfunc): return new.function(wrapper.func_code, wrapper.func_globals, oldfunc.func_name, wrapper.func_defaults, wrapper.func_closure) def returnswidget(f): def w(self, *args, **kw): r = f(self, *args, **kw) return self.nametowidget(str(r)) return _wrap(w, f) def makeswidget(f, t): def w(self, *args, **kw): r = str(f(self, *args, **kw)) try: return self.nametowidget(r) except KeyError: return makewidget(self, t, str(r)) return _wrap(w, f) def nametowidget(self, name): """Return the Tkinter instance of a widget identified by its Tcl name NAME.""" w = self if name[0] == '.': w = w._root() name = name[1:] while name: i = name.find('.') if i >= 0: name, tail = name[:i], name[i+1:] else: tail = '' while tail: try: w.children[name] except KeyError: j = tail.find('.') if j >= 0: name, tail = name + "." + tail[:j], tail[j+1:] else: name, tail = name + "." + tail, '' else: break w = w.children[name] name = tail return w Tkinter.Misc.nametowidget = nametowidget def makewidget(master, klass, path): path = str(path) self = types.InstanceType(klass) self._name = path[len(master._w)+1:] self._w = path self.children = {} master.children[self._name] = self self.master = master self.tk = master.tk return self _datadir = os.path.join(sys.prefix, "share", "pybwidget") class BWidget: def _require(self, master): auto_path = master.tk.call("set", "auto_path") if not _datadir in auto_path: master.tk.call("lappend", "auto_path", _datadir) master.tk.call("package", "require", "BWidget") def __init__(self, master, cnf={}, **kw): self._require(master) Tkinter.Widget.__init__(self, master, self.__class__.__name__, cnf, kw) # Simple Widgets class Entry(BWidget, Tkinter.Entry): def invoke(self): return self.tk.call(self._w, "invoke") class Label(BWidget, Tkinter.Label): def setfocus(self): return self.tk.call(self._w, "setfocus") class Button(BWidget, Tkinter.Button): pass class ArrowButton(BWidget, Tkinter.Button): pass class ProgressBar(BWidget, Tkinter.Widget): pass class ScrollView(BWidget, Tkinter.Widget): pass class Separator(BWidget, Tkinter.Widget): pass # Manager Widgets class _Frame: def getframe(self): return self.tk.call(self._w, "getframe") getframe = makeswidget(getframe, Tkinter.Frame) class _Items: def itemcget(self, index, option): return self.tk.call(self._w, "itemcget", index, '-' + option) def itemconfigure(self, index, cnf=None, **kw): return self._configure(('itemconfigure', index), cnf, kw) LINK="link" CASCADE="cascade" CHECKBUTTON="checkbutton" COMMAND="command" RADIOBUTTON="radiobutton" SEPARATOR="separator" STATUS = "status" PROGRESSION = "progression" class MainFrame(BWidget, _Frame, Tkinter.Widget): def addindicator(self, **kw): return self.tk.call(self._w, "addindicator", *self._options(kw)) addindicator = makeswidget(addindicator, Label) def getindicator(self, i): return self.tk.call(self._w, "getindicator", i) getindicator = returnswidget(getindicator) def getmenu(self): return self.tk.call(self._w, "getmenu") getmenu = returnswidget(getmenu) def setmenustate(self, tag, state): return self.tk.call(self._w, "setmenustate", tag, state) def showstatusbar(self, name): return self.tk.call(self._w, "showstatusbar", name) def showtoolbar(self, index, bool_): return self.tk.call(self._w, "showtoolbar", index, bool_) class LabelFrame(BWidget, _Frame, Tkinter.Widget): def align(self, others): return self.tk.call("LabelFrame::align", self, *others) class TitleFrame(BWidget, _Frame, Tkinter.Frame): pass class PanelFrame(BWidget, Tkinter.Frame): pass class ScrolledWindow(BWidget, _Frame, Tkinter.Frame): def setwidget(self, child): return self.tk.call(self._w, "setwidget", child) class ScrollableFrame(BWidget, _Frame, Tkinter.Frame): def see(self, w, vert=None, horiz=None): if vert is None and horiz is None: return self.tk.call(self._w, "see", w) return self.tk.call(self._w, "see", w, vert, horiz) def xview(self, *args): return self.tk.call(self._w, "xview", *args) def yview(self, *args): return self.tk.call(self._w, "yview", *args) class PanedWindow(BWidget, Tkinter.Frame): def add(self, **kw): return self.tk.call(self._w, "add", *self._options(kw)) add = makeswidget(add, Tkinter.Frame) def getframe(self, index): return self.tk.call(self._w, "getframe", index) getframe = makeswidget(getframe, Tkinter.Frame) class ButtonBox(BWidget, _Items, Tkinter.Frame): def add(self, **kw): return self.tk.call(self._w, "add", *self._options(kw)) add = makeswidget(add, Button) def delete(self, index): self.tk.call(self._w, "delete", index) def index(self, item): self.tk.call(self._w, "index", item) def insert(self, index, *kw): return self.tk.call(self._w, "insert", index, *self._options(kw)) insert = makeswidget(insert, Button) def invoke(self, index): return self.tk.call(self._w, "invoke", index) def setfocus(self, index): return self.tk.call(self._w, "setfocus", index) class PagesManager(BWidget, Tkinter.Frame): def add(self, page): return self.tk.call(self._w, "add", page) add = makeswidget(add, Tkinter.Frame) def compute_size(self): return self.tk.call(self._w, "compute_size") def delete(self, page): return self.tk.call(self._w, "delete", page) def getframe(self, page): return self.tk.call(self._w, "delete", page) getframe = makeswidget(getframe, Tkinter.Frame) def pages(self, *args): return self.tk.call(self._w, "pages", *args) def raise_page(self, page=None): if page is None: return self.tk.call(self._w, "raise") return self.tk.call(self._w, "raise", page) class NoteBook(BWidget, Tkinter.Frame, _Items): def bindtabs(self, event, func): if callable(func): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindtabs", event, command) def delete(self, page, destroyframe=True): return self.tk.call(self._w, "delete", page, destroyframe) def insert(self, index, page, **kw): return self.tk.call(self._w, "insert", index, page, *self._options(kw)) insert = makeswidget(insert, Tkinter.Frame) def move(self, page, index): return self.tk.call(self._w, "move", page, index) def see(self, page): return self.tk.call(self._w, "see", page) # XXX these methods are from PagesManager but inheritance # won't work, because NoteBook has no 'add' command def compute_size(self): return self.tk.call(self._w, "compute_size") def delete(self, page): return self.tk.call(self._w, "delete", page) def getframe(self, page): return self.tk.call(self._w, "delete", page) getframe = makeswidget(getframe, Tkinter.Frame) def pages(self, *args): return self.tk.call(self._w, "pages", *args) def raise_page(self, page=None): if page is None: return self.tk.call(self._w, "raise") return self.tk.call(self._w, "raise", page) class Dialog(ButtonBox, Tkinter.BaseWidget, _Frame): def draw(self, focus=None): if focus is None: return self.tk.call(self, "draw") return self.tk.call(self._w, "draw", focus) def enddialog(self): return self.tk.call(self._w, "enddialog") def withdraw(self): return self.tk.call(self._w, "withdraw") class StatusBar(BWidget): pass class LabelEntry(Entry): pass class ComboBox(Entry): def bind_entry(self, *args): return self.tk.call(self._w, "bind", *args) def getlistbox(self): r = str(self.tk.call(self._w, "getlistbox")) try: return self.nametowidget(r) except KeyError: c = self.tk.call("winfo", "class", r) if c == "ListBox": return makewidget(self, ListBox, r) else: return makewidget(self, Tkinter.Listbox, r) def getvalue(self): return self.tk.call(self._w, "getvalue") def post(self): return self.tk.call(self._w, "post") def setvalue(self, index): return self.tk.call(self._w, "setvalue", index) def unpost(self): return self.tk.call(self._w, "unpost") class SpinBox(Entry): def bind_entry(self, *args): return self.tk.call(self._w, "bind", *args) def setvalue(self, index): return self.tk.call(self._w, "setvalue", index) def getvalue(self): return self.tk.call(self._w, "getvalue") class Tree(BWidget, Tkinter.Widget, _Items): def bind_image(self, event, func): if callable(func): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindImage", event, command) bindImage = bind_image def bind_text(self, event, func): if callable(func): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindText", event, command) bindText = bind_text def closetree(self, node): return self.tk.call(self._w, "closetree", node) def delete(self, arg, *args): return self.tk.call(self._w, "delete", arg, *args) def edit(self, node, text, *args): "edit(self, node, text, verifycmd=None, clickres=None, select=None)" return self.tk.call(self._w, "edit", node, text, *args) def exists(self, node): return self.tk.call(self._w, "exists", node) def index(self, node): return self.tk.call(self._w, "index", node) def insert(self, index, parent, node="#auto", **kw): return self.tk.call(self._w, "insert", index, parent, node, *self._options(kw)) def move(self, parent, node, index): return self.tk.call(self._w, "move", parent, node, index) def nodes(self, node, *args): return self.tk.call(self._w, "nodes", node, *args) def opentree(self, node, recurse=True): return self.tk.call(self._w, "opentree", node, recurse) def parent(self, node): return self.tk.call(self._w, "parent", node) def reorder(self, node, neworder): return self.tk.call(self._w, "reorder", node, neworder) def see(self, node): return self.tk.call(self._w, "see", node) def selection_add(self, *args): return self.tk.call(self._w, "selection", "add", *args) def selection_clear(self): return self.tk.call(self._w, "selection", "clear") def selection_get(self): return self.tk.call(self._w, "selection", "get") def selection_includes(self, node): return self.tk.call(self._w, "selection", "includes", node) def selection_remove(self, *args): return self.tk.call(self._w, "selection", "remove", *args) def selection_set(self, *args): return self.tk.call(self._w, "selection", "set", *args) def selection_toggle(self, *args): return self.tk.call(self._w, "selection", "toggle", *args) def toggle(self, node): return self.tk.call(self._w, "toggle", node) def visible(self, node): return self.tk.call(self._w, "visible", node) def xview(self, *args): return self.tk.call(self.xview, *args) def yview(self, *args): return self.tk.call(self.yview, *args) class ListBox(BWidget, Tkinter.Widget, _Items): def bind_image(self, event, func): if callable(func): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindImage", event, command) bindImage = bind_image def bind_text(self, event, func): if callable(func): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindText", event, func) bindText = bind_text def delete(self, arg, *args): return self.tk.call(self._w, "delete", arg, *args) def edit(self, item, text, *args): "edit(self, item, text, verifycmd=None, clickres=None, select=None)" return self.tk.call(self._w, "edit", item, text, *args) def exists(self, item): return self.tk.call(self._w, "exists", item) def index(self, item): return self.tk.call(self._w, "index", item) def insert(self, index, item="#auto", **kw): return self.tk.call(self._w, "insert", index, item, *self._options(kw)) def items(self, item, *args): return self.tk.call(self._w, "items", *args) def move(self, parent, item, index): return self.tk.call(self._w, "move", parent, item, index) def reorder(self, node, neworder): return self.tk.call(self._w, "reorder", node, neworder) def see(self, node): return self.tk.call(self._w, "see", node) def selection_add(self, *args): return self.tk.call(self._w, "selection", "add", *args) def selection_clear(self): return self.tk.call(self._w, "selection", "clear") def selection_get(self): return self.tk.call(self._w, "selection", "get") def selection_includes(self, node): return self.tk.call(self._w, "selection", "includes", node) def selection_remove(self, *args): return self.tk.call(self._w, "selection", "remove", *args) def selection_set(self, *args): return self.tk.call(self._w, "selection", "set", *args) def selection_toggle(self, *args): return self.tk.call(self._w, "selection", "toggle", *args) def xview(self, *args): return self.tk.call(self.xview, *args) def yview(self, *args): return self.tk.call(self.yview, *args) class MessageDialog(Dialog): def __init__(self, master, cnf={}, **kw): self._require(master) Tkinter.Widget.__init__(self, master, "MessageDlg", cnf, kw) class ProgressDialog(Dialog): def __init__(self, master, cnf={}, **kw): self._require(master) Tkinter.Widget.__init__(self, master, "ProgressDlg", cnf, kw) class PasswordDialog(Dialog): def __init__(self, master, cnf={}, **kw): self._require(master) Tkinter.Widget.__init__(self, master, "PasswdDlg", cnf, kw) class SelectFont(Dialog): pass class SelectColor(Dialog): def setcolor(self, index, color): self.tk.call("SelectColor::setcolor", index, color) def SelectColorMenu(master, *args, **kw): i = id([]) if master._w=='.': w = '.' + name else: w = master._w + '.' + name return master.tk.call("SelectColor::menu", args, *master._options(kw)) |
Added pybwidget-0.1.2_1.7.0/bwidget/__init__.py.bak.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | """Wrapper for BWidget family of widgets""" # The authors hereby grant permission to use, copy, modify, distribute, # and license this software and its documentation for any purpose, provided # that existing copyright notices are retained in all copies and that this # notice is included verbatim in any distributions. No written agreement, # license, or royalty fee is required for any of the authorized uses. # Modifications to this software may be copyrighted by their authors # and need not follow the licensing terms described here, provided that # the new terms are clearly indicated on the first page of each file where # they apply. # # IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY # FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES # ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY # DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # # THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES, # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. THIS SOFTWARE # IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE # NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR # MODIFICATIONS. # # GOVERNMENT USE: If you are acquiring this software on behalf of the # U.S. government, the Government shall have only "Restricted Rights" # in the software and related documentation as defined in the Federal # Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you # are acquiring the software on behalf of the Department of Defense, the # software shall be classified as "Commercial Computer Software" and the # Government shall have only "Restricted Rights" as defined in Clause # 252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the # authors grant the U.S. Government and others acting in its behalf # permission to use and distribute the software in accordance with the # terms specified in this license. __author__ = "Jeff Epler <jepler AT unpy DOT net>" __all__ = """ Entry Label Button ArrowButton ProgressBar ScrollView Separator MainFrame LabelFrame TitleFrame PanelFrame ScrolledWindow ScrollableFrame PanedWindow ButtonBox PagesManager NoteBook Dialog StatusBar LabelEntry ComboBox SpinBox Tree ListBox MessageDialog ProgressDialog PasswordDialog SelectFont SelectColor SelectColorMenu CASCADE CHECKBUTTON COMMAND RADIOBUTTON SEPARATOR STATUS PROGRESSION LINK """.split() import Tkinter, types, os, sys, new ROOT='root' def _wrap(wrapper, oldfunc): return new.function(wrapper.func_code, wrapper.func_globals, oldfunc.func_name, wrapper.func_defaults, wrapper.func_closure) def returnswidget(f): def w(self, *args, **kw): r = f(self, *args, **kw) return self.nametowidget(str(r)) return _wrap(w, f) def makeswidget(f, t): def w(self, *args, **kw): r = str(f(self, *args, **kw)) try: return self.nametowidget(r) except KeyError: return makewidget(self, t, str(r)) return _wrap(w, f) def nametowidget(self, name): """Return the Tkinter instance of a widget identified by its Tcl name NAME.""" w = self if name[0] == '.': w = w._root() name = name[1:] while name: i = name.find('.') if i >= 0: name, tail = name[:i], name[i+1:] else: tail = '' while tail: try: w.children[name] except KeyError: j = tail.find('.') if j >= 0: name, tail = name + "." + tail[:j], tail[j+1:] else: name, tail = name + "." + tail, '' else: break w = w.children[name] name = tail return w Tkinter.Misc.nametowidget = nametowidget def makewidget(master, klass, path): path = str(path) self = types.InstanceType(klass) self._name = path[len(master._w)+1:] self._w = path self.children = {} master.children[self._name] = self self.master = master self.tk = master.tk return self _datadir = os.path.join(sys.prefix, "share", "pybwidget") class BWidget: def _require(self, master): auto_path = master.tk.call("set", "auto_path") if not _datadir in auto_path: master.tk.call("lappend", "auto_path", _datadir) master.tk.call("package", "require", "BWidget") def __init__(self, master, cnf={}, **kw): self._require(master) Tkinter.Widget.__init__(self, master, self.__class__.__name__, cnf, kw) # Simple Widgets class Entry(BWidget, Tkinter.Entry): def invoke(self): return self.tk.call(self._w, "invoke") class Label(BWidget, Tkinter.Label): def setfocus(self): return self.tk.call(self._w, "setfocus") class Button(BWidget, Tkinter.Button): pass class ArrowButton(BWidget, Tkinter.Button): pass class ProgressBar(BWidget, Tkinter.Widget): pass class ScrollView(BWidget, Tkinter.Widget): pass class Separator(BWidget, Tkinter.Widget): pass # Manager Widgets class _Frame: def getframe(self): return self.tk.call(self._w, "getframe") getframe = makeswidget(getframe, Tkinter.Frame) class _Items: def itemcget(self, index, option): return self.tk.call(self._w, "itemcget", index, '-' + option) def itemconfigure(self, index, cnf=None, **kw): return self._configure(('itemconfigure', index), cnf, kw) LINK="link" CASCADE="cascade" CHECKBUTTON="checkbutton" COMMAND="command" RADIOBUTTON="radiobutton" SEPARATOR="separator" STATUS = "status" PROGRESSION = "progression" class MainFrame(BWidget, _Frame, Tkinter.Widget): def addindicator(self, **kw): return self.tk.call(self._w, "addindicator", *self._options(kw)) addindicator = makeswidget(addindicator, Label) def getindicator(self, i): return self.tk.call(self._w, "getindicator", i) getindicator = returnswidget(getindicator) def getmenu(self): return self.tk.call(self._w, "getmenu") getmenu = returnswidget(getmenu) def setmenustate(self, tag, state): return self.tk.call(self._w, "setmenustate", tag, state) def showstatusbar(self, name): return self.tk.call(self._w, "showstatusbar", name) def showtoolbar(self, index, bool_): return self.tk.call(self._w, "showtoolbar", index, bool_) class LabelFrame(BWidget, _Frame, Tkinter.Widget): def align(self, others): return self.tk.call("LabelFrame::align", self, *others) class TitleFrame(BWidget, _Frame, Tkinter.Frame): pass class PanelFrame(BWidget, Tkinter.Frame): pass class ScrolledWindow(BWidget, _Frame, Tkinter.Frame): def setwidget(self, child): return self.tk.call(self._w, "setwidget", child) class ScrollableFrame(BWidget, _Frame, Tkinter.Frame): def see(self, w, vert=None, horiz=None): if vert is None and horiz is None: return self.tk.call(self._w, "see", w) return self.tk.call(self._w, "see", w, vert, horiz) def xview(self, *args): return self.tk.call(self._w, "xview", *args) def yview(self, *args): return self.tk.call(self._w, "yview", *args) class PanedWindow(BWidget, Tkinter.Frame): def add(self, **kw): return self.tk.call(self._w, "add", *self._options(kw)) add = makeswidget(add, Tkinter.Frame) def getframe(self, index): return self.tk.call(self._w, "getframe", index) getframe = makeswidget(getframe, Tkinter.Frame) class ButtonBox(BWidget, _Items, Tkinter.Frame): def add(self, **kw): return self.tk.call(self._w, "add", *self._options(kw)) add = makeswidget(add, Button) def delete(self, index): self.tk.call(self._w, "delete", index) def index(self, item): self.tk.call(self._w, "index", item) def insert(self, index, *kw): return self.tk.call(self._w, "insert", index, *self._options(kw)) insert = makeswidget(insert, Button) def invoke(self, index): return self.tk.call(self._w, "invoke", index) def setfocus(self, index): return self.tk.call(self._w, "setfocus", index) class PagesManager(BWidget, Tkinter.Frame): def add(self, page): return self.tk.call(self._w, "add", page) add = makeswidget(add, Tkinter.Frame) def compute_size(self): return self.tk.call(self._w, "compute_size") def delete(self, page): return self.tk.call(self._w, "delete", page) def getframe(self, page): return self.tk.call(self._w, "delete", page) getframe = makeswidget(getframe, Tkinter.Frame) def pages(self, *args): return self.tk.call(self._w, "pages", *args) def raise_page(self, page=None): if page is None: return self.tk.call(self._w, "raise") return self.tk.call(self._w, "raise", page) class NoteBook(BWidget, Tkinter.Frame, _Items): def bindtabs(self, event, func): if callable(func): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindtabs", event, command) def delete(self, page, destroyframe=True): return self.tk.call(self._w, "delete", page, destroyframe) def insert(self, index, page, **kw): return self.tk.call(self._w, "insert", index, page, *self._options(kw)) insert = makeswidget(insert, Tkinter.Frame) def move(self, page, index): return self.tk.call(self._w, "move", page, index) def see(self, page): return self.tk.call(self._w, "see", page) # XXX these methods are from PagesManager but inheritance # won't work, because NoteBook has no 'add' command def compute_size(self): return self.tk.call(self._w, "compute_size") def delete(self, page): return self.tk.call(self._w, "delete", page) def getframe(self, page): return self.tk.call(self._w, "delete", page) getframe = makeswidget(getframe, Tkinter.Frame) def pages(self, *args): return self.tk.call(self._w, "pages", *args) def raise_page(self, page=None): if page is None: return self.tk.call(self._w, "raise") return self.tk.call(self._w, "raise", page) class Dialog(ButtonBox, Tkinter.BaseWidget, _Frame): def draw(self, focus=None): if focus is None: return self.tk.call(self, "draw") return self.tk.call(self._w, "draw", focus) def enddialog(self): return self.tk.call(self._w, "enddialog") def withdraw(self): return self.tk.call(self._w, "withdraw") class StatusBar(BWidget): pass class LabelEntry(Entry): pass class ComboBox(Entry): def bind_entry(self, *args): return self.tk.call(self._w, "bind", *args) def getlistbox(self): r = str(self.tk.call(self._w, "getlistbox")) try: return self.nametowidget(r) except KeyError: c = self.tk.call("winfo", "class", r) if c == "ListBox": return makewidget(self, ListBox, r) else: return makewidget(self, Tkinter.Listbox, r) def getvalue(self): return self.tk.call(self._w, "getvalue") def post(self): return self.tk.call(self._w, "post") def setvalue(self, index): return self.tk.call(self._w, "setvalue", index) def unpost(self): return self.tk.call(self._w, "unpost") class SpinBox(Entry): def bind_entry(self, *args): return self.tk.call(self._w, "bind", *args) def setvalue(self, index): return self.tk.call(self._w, "setvalue", index) def getvalue(self): return self.tk.call(self._w, "getvalue") class Tree(BWidget, Tkinter.Widget, _Items): def bind_image(self, event, func): if callable(func): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindImage", event, command) bindImage = bind_image def bind_text(self, event, func): if callable(func): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindText", event, command) bindText = bind_text def closetree(self, node): return self.tk.call(self._w, "closetree", node) def delete(self, arg, *args): return self.tk.call(self._w, "delete", arg, *args) def edit(self, node, text, *args): "edit(self, node, text, verifycmd=None, clickres=None, select=None)" return self.tk.call(self._w, "edit", node, text, *args) def exists(self, node): return self.tk.call(self._w, "exists", node) def index(self, node): return self.tk.call(self._w, "index", node) def insert(self, index, parent, node="#auto", **kw): return self.tk.call(self._w, "insert", index, parent, node, *self._options(kw)) def move(self, parent, node, index): return self.tk.call(self._w, "move", parent, node, index) def nodes(self, node, *args): return self.tk.call(self._w, "nodes", node, *args) def opentree(self, node, recurse=True): return self.tk.call(self._w, "opentree", node, recurse) def parent(self, node): return self.tk.call(self._w, "parent", node) def reorder(self, node, neworder): return self.tk.call(self._w, "reorder", node, neworder) def see(self, node): return self.tk.call(self._w, "see", node) def selection_add(self, *args): return self.tk.call(self._w, "selection", "add", *args) def selection_clear(self): return self.tk.call(self._w, "selection", "clear") def selection_get(self): return self.tk.call(self._w, "selection", "get") def selection_includes(self, node): return self.tk.call(self._w, "selection", "includes", node) def selection_remove(self, *args): return self.tk.call(self._w, "selection", "remove", *args) def selection_set(self, *args): return self.tk.call(self._w, "selection", "set", *args) def selection_toggle(self, *args): return self.tk.call(self._w, "selection", "toggle", *args) def toggle(self, node): return self.tk.call(self._w, "toggle", node) def visible(self, node): return self.tk.call(self._w, "visible", node) def xview(self, *args): return self.tk.call(self.xview, *args) def yview(self, *args): return self.tk.call(self.yview, *args) class ListBox(BWidget, Tkinter.Widget, _Items): def bind_image(self, event, func): if callable(func): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindImage", event, command) bindImage = bind_image def bind_text(self, event, func): if callable(func): command = self.register( func ) else: command = func return self.tk.call(self._w, "bindText", event, func) bindText = bind_text def delete(self, arg, *args): return self.tk.call(self._w, "delete", arg, *args) def edit(self, item, text, *args): "edit(self, item, text, verifycmd=None, clickres=None, select=None)" return self.tk.call(self._w, "edit", item, text, *args) def exists(self, item): return self.tk.call(self._w, "exists", item) def index(self, item): return self.tk.call(self._w, "index", item) def insert(self, index, item="#auto", **kw): return self.tk.call(self._w, "insert", index, item, *self._options(kw)) def items(self, item, *args): return self.tk.call(self._w, "items", *args) def move(self, parent, item, index): return self.tk.call(self._w, "move", parent, item, index) def reorder(self, node, neworder): return self.tk.call(self._w, "reorder", node, neworder) def see(self, node): return self.tk.call(self._w, "see", node) def selection_add(self, *args): return self.tk.call(self._w, "selection", "add", *args) def selection_clear(self): return self.tk.call(self._w, "selection", "clear") def selection_get(self): return self.tk.call(self._w, "selection", "get") def selection_includes(self, node): return self.tk.call(self._w, "selection", "includes", node) def selection_remove(self, *args): return self.tk.call(self._w, "selection", "remove", *args) def selection_set(self, *args): return self.tk.call(self._w, "selection", "set", *args) def selection_toggle(self, *args): return self.tk.call(self._w, "selection", "toggle", *args) def xview(self, *args): return self.tk.call(self.xview, *args) def yview(self, *args): return self.tk.call(self.yview, *args) class MessageDialog(Dialog): def __init__(self, master, cnf={}, **kw): self._require(master) Tkinter.Widget.__init__(self, master, "MessageDlg", cnf, kw) class ProgressDialog(Dialog): def __init__(self, master, cnf={}, **kw): self._require(master) Tkinter.Widget.__init__(self, master, "ProgressDlg", cnf, kw) class PasswordDialog(Dialog): def __init__(self, master, cnf={}, **kw): self._require(master) Tkinter.Widget.__init__(self, master, "PasswdDlg", cnf, kw) class SelectFont(Dialog): pass class SelectColor(Dialog): def setcolor(self, index, color): self.tk.call("SelectColor::setcolor", index, color) def SelectColorMenu(master, *args, **kw): i = id([]) if master._w=='.': w = '.' + name else: w = master._w + '.' + name return master.tk.call("SelectColor::menu", args, *master._options(kw)) |
Added pybwidget-0.1.2_1.7.0/bwidget/__init__.pyc.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/bwidget/__pycache__/__init__.cpython-34.pyc.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/bwidget/__pycache__/__init__.cpython-35.pyc.
cannot compute difference between binary files
Added pybwidget-0.1.2_1.7.0/setup.py.
> > > > > > > > > > > > > > > > > > > > > > > > > > | 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 | from glob import glob from distutils.core import setup import os version = "0.1.2_1.7.0" _datadir = os.path.join("share", "pybwidget") prefix = "BWidget-1.7.0" def files(dir, pat): return os.path.join(_datadir, dir), glob(os.path.join(prefix, dir, pat)) setup( name="pybwidget", version=version, description="BWidget for Tkinter", author="Jeff Epler", author_email="jepler@unpy.net", packages=['bwidget'], data_files = [ files(".", "*.tcl"), files(".", "LICENSE.txt"), files("images", "*.gif"), files("images", "*.xbm"), files("lang", "*.rc"), ], url="http://tkinter.unpythonic.net/bwidget", license="Free to use and distribute (see LICENSE.txt)" ) |
Added pybwidget-0.1.2_1.7.0/tabdemo.py.
> > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import bwidget, tkinter, sys, os app = tkinter.Tk(); app.wm_title("pybwidget demo") notebook = bwidget.NoteBook(app, arcradius=2); notebook.pack() files = sys.argv[0], tkinter.__file__, bwidget.__file__ for i, f in enumerate(files): if f.endswith(".pyc"): f = f[:-1] page = notebook.insert(tkinter.END, i, text=os.path.basename(f)) sw = bwidget.ScrolledWindow(page) text = tkinter.Text(sw) text.insert(tkinter.END, open(f).read()) sw.setwidget(text) sw.pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=True) notebook.compute_size() app.mainloop() |
Added pybwidget-0.1.2_1.7.0/tabdemo.py.bak.
> > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import bwidget, Tkinter, sys, os app = Tkinter.Tk(); app.wm_title("pybwidget demo") notebook = bwidget.NoteBook(app, arcradius=2); notebook.pack() files = sys.argv[0], Tkinter.__file__, bwidget.__file__ for i, f in enumerate(files): if f.endswith(".pyc"): f = f[:-1] page = notebook.insert(Tkinter.END, i, text=os.path.basename(f)) sw = bwidget.ScrolledWindow(page) text = Tkinter.Text(sw) text.insert(Tkinter.END, open(f).read()) sw.setwidget(text) sw.pack(side=Tkinter.TOP, fill=Tkinter.BOTH, expand=True) notebook.compute_size() app.mainloop() |
Added pybwidget-0.1.2_1.7.0/test.py.
> > > > > > | 1 2 3 4 5 6 | from tkinter import * from bwidget import * t = Tk() b = Button(t, relief=LINK, text="bwidget button", command=t.destroy) b.pack() t.mainloop() |
Added pybwidget-0.1.2_1.7.0/test.py.bak.
> > > > > > | 1 2 3 4 5 6 | from Tkinter import * from bwidget import * t = Tk() b = Button(t, relief=LINK, text="bwidget button", command=t.destroy) b.pack() t.mainloop() |