UNIXworkcode

1 /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- 2 * 3 * ***** BEGIN LICENSE BLOCK ***** 4 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 5 * 6 * The contents of this file are subject to the Mozilla Public License Version 7 * 1.1 (the "License"); you may not use this file except in compliance with 8 * the License. You may obtain a copy of the License at 9 * http://www.mozilla.org/MPL/ 10 * 11 * Software distributed under the License is distributed on an "AS IS" basis, 12 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 13 * for the specific language governing rights and limitations under the 14 * License. 15 * 16 * The Original Code is the Microline Widget Library, originally made available under the NPL by Neuron Data <http://www.neurondata.com>. 17 * 18 * The Initial Developer of the Original Code is 19 * Netscape Communications Corporation. 20 * Portions created by the Initial Developer are Copyright (C) 1998 21 * the Initial Developer. All Rights Reserved. 22 * 23 * Contributor(s): 24 * 25 * Alternatively, the contents of this file may be used under the terms of 26 * either the GNU General Public License Version 2 or later (the "GPL"), or 27 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), 28 * in which case the provisions of the GPL or the LGPL are applicable instead 29 * of those above. If you wish to allow use of your version of this file only 30 * under the terms of either the GPL or the LGPL, and not to allow others to 31 * use your version of this file under the terms of the MPL, indicate your 32 * decision by deleting the provisions above and replace them with the notice 33 * and other provisions required by the GPL or the LGPL. If you do not delete 34 * the provisions above, a recipient may use your version of this file under 35 * the terms of any one of the MPL, the GPL or the LGPL. 36 * 37 * In addition, as a special exception to the GNU GPL, the copyright holders 38 * give permission to link the code of this program with the Motif and Open 39 * Motif libraries (or with modified versions of these that use the same 40 * license), and distribute linked combinations including the two. You 41 * must obey the GNU General Public License in all respects for all of 42 * the code used other than linking with Motif/Open Motif. If you modify 43 * this file, you may extend this exception to your version of the file, 44 * but you are not obligated to do so. If you do not wish to do so, 45 * delete this exception statement from your version. 46 * 47 * ***** END LICENSE BLOCK ***** */ 48 49 50 #include <XmL/XmL.h> 51 #include <XmL/Folder.h> 52 #include <XmL/Grid.h> 53 #include <XmL/Progress.h> 54 #include <XmL/Tree.h> 55 56 #include <Xm/Xm.h> 57 #include <Xm/DialogS.h> 58 #include <Xm/Form.h> 59 #include <Xm/Label.h> 60 #include <Xm/PushB.h> 61 #include <Xm/DrawingA.h> 62 #include <Xm/Text.h> 63 #include <Xm/ToggleB.h> 64 #include <Xm/Protocols.h> 65 66 #include <X11/IntrinsicP.h> 67 #include <X11/cursorfont.h> 68 69 #include <stdlib.h> 70 #include <stdio.h> 71 #include <unistd.h> 72 73 static void CreateWidgetEdit(); 74 static Widget AddWidgetSample(); 75 static void CreateText(); 76 static void CreatePixmap(); 77 void AddCoverTabForm(); 78 void AddIntroTabForm(); 79 void AddFolderTabForm(); 80 void AddGridTabForm(); 81 void AddProgTabForm(); 82 void AddTreeTabForm(); 83 84 /* 85 Main Window 86 */ 87 88 static void exitCB(); 89 static void editCB(); 90 static void folderCB(); 91 92 #define BOLDFONT "-*-helvetica-bold-r-*--*-100-*-*-*-*-iso8859-1" 93 94 main(argc, argv) 95 int argc; 96 char *argv[]; 97 { 98 XtAppContext context; 99 Widget w, shell, form, folder; 100 int i; 101 XrmDatabase db; 102 static String resources[] = 103 { 104 "*fontList: -*-helvetica-medium-r-*--*-100-*-*-*-*-iso8859-1", 105 "*XmText.fontList: -*-helvetica-medium-r-*--*-100-*-*-*-*-iso8859-1", 106 "*XmLProgress.fontList: -*-helvetica-bold-r-*--*-100-*-*-*-*-iso8859-1", 107 "*background: #D0D0D0", 108 "*foreground: black", 109 "*topShadowColor: white", 110 "*bottomShadowColor: #404040", 111 "*XmLGrid.topShadowColor: #F0F0F0", 112 "*XmLGrid.selectBackground: #000060", 113 "*XmLGrid.selectForeground: white", 114 "*XmLProgress.topShadowColor: #E0E0E0", 115 "*XmLProgress.bottomShadowColor: #404040", 116 "*XmToggleButton.selectColor: blue", 117 "*XmToggleButton.marginHeight: 0", 118 "*XmToggleButton.spacing: 4", 119 "*XmText.marginHeight: 2", 120 "*XmForm.marginHeight: 8", 121 "*XmForm.marginWidth: 10", 122 "*XmForm.horizontalSpacing: 8", 123 "*XmForm.verticalSpacing: 10", 124 "*XmLabel.marginWidth: 0", 125 "*XmLFolder.XmForm.marginHeight: 16", 126 "*XmLFolder.XmForm.marginWidth: 16", 127 "*XmPushButton.marginHeight: 4", 128 "*WidgetEdit*name.foreground: #000060", 129 "*WidgetEdit*class.foreground: #000060", 130 "*WidgetEdit*XmText.background: white", 131 "*XmLTree.blankBackground: white", 132 "*XmLTree.selectBackground: #000060", 133 "*XmLTree.selectForeground: white", 134 "*XmLTree.connectingLineColor: black", 135 NULL 136 }; 137 138 shell = XtVaAppInitialize(&context, "Test", NULL, 0, 139 #ifdef X11R4 140 (Cardinal *)&argc, argv, resources, NULL); 141 #else 142 (int *)&argc, argv, resources, NULL); 143 #endif 144 145 /* Force override of the falback resources. Normally, we would 146 have an app-default file or similar but since this is a demo, 147 we don't want the user to have to set anything up to run */ 148 db = XtDatabase(XtDisplay(shell)); 149 i = 0; 150 while (resources[i]) 151 { 152 XrmPutLineResource(&db, resources[i]); 153 i++; 154 } 155 156 XtVaSetValues( 157 shell, 158 XmNtitle, "Microline Widget Library", 159 NULL); 160 161 form = XtVaCreateWidget("form", 162 xmFormWidgetClass, shell, 163 XmNshadowThickness, 0, 164 NULL); 165 166 w = XtVaCreateManagedWidget("Exit", 167 xmPushButtonWidgetClass, form, 168 XmNrightAttachment, XmATTACH_FORM, 169 XmNbottomAttachment, XmATTACH_FORM, 170 XmNwidth, 100, 171 NULL); 172 XtAddCallback(w, XmNactivateCallback, exitCB, (XtPointer)shell); 173 174 w = XtVaCreateManagedWidget("Editor", 175 xmPushButtonWidgetClass, form, 176 XmNrightAttachment, XmATTACH_WIDGET, 177 XmNrightWidget, w, 178 XmNbottomAttachment, XmATTACH_FORM, 179 XmNwidth, 100, 180 NULL); 181 XtAddCallback(w, XmNactivateCallback, editCB, NULL); 182 CreateWidgetEdit(form); 183 184 folder = XtVaCreateManagedWidget("folder", 185 xmlFolderWidgetClass, form, 186 XmNtopAttachment, XmATTACH_FORM, 187 XmNleftAttachment, XmATTACH_FORM, 188 XmNrightAttachment, XmATTACH_FORM, 189 XmNbottomAttachment, XmATTACH_WIDGET, 190 XmNbottomWidget, w, 191 XmNbottomOffset, 5, 192 XmNtabsPerRow, 3, 193 NULL); 194 AddCoverTabForm(folder); 195 AddIntroTabForm(folder); 196 AddGridTabForm(folder); 197 AddTreeTabForm(folder); 198 AddFolderTabForm(folder); 199 AddProgTabForm(folder); 200 201 XtAddCallback(folder, XmNactivateCallback, folderCB, NULL); 202 203 XtManageChild(form); 204 205 XtRealizeWidget(shell); 206 XtAppMainLoop(context); 207 } 208 209 static void exitCB(w, clientData, callData) 210 Widget w; 211 XtPointer clientData; 212 XtPointer callData; 213 { 214 Widget shell; 215 216 shell = (Widget)clientData; 217 exit(0); 218 } 219 220 /* 221 Widget Editor Functions 222 */ 223 224 static void _getResourceAsString(); 225 static void _editCB(); 226 static void _editCommandCB(); 227 static void _editChooseCB(); 228 static void _editShowCB(); 229 static void _editCloseCB(); 230 static void _wmCloseCB(); 231 232 Widget _editDialog, _editClassL, _editNameL, _editGrid, _editCommandT; 233 Widget _editWidget; 234 Boolean _editShowInherited, _editDialogUp; 235 int _editRow, _editCol; 236 237 static void CreateWidgetEdit(parent) 238 Widget parent; 239 { 240 Widget form, w; 241 Widget chooseB, closeB; 242 Atom WM_DELETE_WINDOW; 243 244 _editWidget = 0; 245 _editShowInherited = 0; 246 _editDialogUp = False; 247 248 _editDialog = XtVaAppCreateShell("WidgetEdit", "WidgetEdit", 249 topLevelShellWidgetClass, XtDisplay(parent), 250 XtNtitle, "Widget Editor", 251 XmNdeleteResponse, XmDO_NOTHING, 252 NULL); 253 254 WM_DELETE_WINDOW = XmInternAtom(XtDisplay(parent), 255 "WM_DELETE_WINDOW", False); 256 XmAddWMProtocolCallback(_editDialog, WM_DELETE_WINDOW, 257 _wmCloseCB, (XtPointer)_editDialog); 258 259 form = XtVaCreateWidget("form", 260 xmFormWidgetClass, _editDialog, 261 XmNautoUnmanage, False, 262 XmNshadowThickness, 0, 263 NULL); 264 265 /* Top Row */ 266 w = XtVaCreateManagedWidget("Name:", 267 xmLabelWidgetClass, form, 268 XmNleftAttachment, XmATTACH_FORM, 269 XmNtopAttachment, XmATTACH_FORM, 270 NULL); 271 _editNameL = XtVaCreateManagedWidget("name", 272 xmLabelWidgetClass, form, 273 XmNleftAttachment, XmATTACH_WIDGET, 274 XmNleftWidget, w, 275 XmNtopAttachment, XmATTACH_FORM, 276 NULL); 277 278 w = XtVaCreateManagedWidget("Class:", 279 xmLabelWidgetClass, form, 280 XmNleftAttachment, XmATTACH_WIDGET, 281 XmNleftWidget, _editNameL, 282 XmNtopAttachment, XmATTACH_FORM, 283 NULL); 284 _editClassL = XtVaCreateManagedWidget("class", 285 xmLabelWidgetClass, form, 286 XmNleftAttachment, XmATTACH_WIDGET, 287 XmNleftWidget, w, 288 XmNtopAttachment, XmATTACH_FORM, 289 NULL); 290 291 w = XtVaCreateManagedWidget("Show All", 292 xmToggleButtonWidgetClass, form, 293 XmNtopAttachment, XmATTACH_FORM, 294 XmNtopOffset, 4, 295 XmNrightAttachment, XmATTACH_FORM, 296 NULL); 297 XtAddCallback(w, XmNvalueChangedCallback, _editShowCB, 0); 298 299 _editGrid = XtVaCreateManagedWidget("Grid", 300 xmlGridWidgetClass, form, 301 XtVaTypedArg, XmNblankBackground, XmRString, "white", 6, 302 XmNcolumns, 4, 303 XmNsimpleWidths, "16c 18c 24c 16c", 304 XmNvisibleColumns, 9, 305 XmNheadingRows, 1, 306 XmNvsbDisplayPolicy, XmSTATIC, 307 XmNsimpleHeadings, "Class|Type|Resource|Value", 308 XmNvisibleRows, 8, 309 XmNshadowThickness, 0, 310 XmNscrollBarMargin, 4, 311 XmNselectionPolicy, XmSELECT_NONE, 312 XmNallowColumnResize, True, 313 XmNtopAttachment, XmATTACH_WIDGET, 314 XmNtopWidget, w, 315 XmNleftAttachment, XmATTACH_FORM, 316 XmNrightAttachment, XmATTACH_FORM, 317 NULL); 318 319 XtVaSetValues(_editGrid, 320 XmNcellDefaults, True, 321 XmNcellMarginRight, 2, 322 XmNcellAlignment, XmALIGNMENT_LEFT, 323 XtVaTypedArg, XmNcellBackground, XmRString, "white", 6, 324 XmNcellLeftBorderType, XmBORDER_NONE, 325 XmNcellRightBorderType, XmBORDER_NONE, 326 XmNcellTopBorderType, XmBORDER_NONE, 327 XmNcellBottomBorderType, XmBORDER_NONE, 328 NULL); 329 XtVaSetValues(_editGrid, 330 XmNcellDefaults, True, 331 XmNcolumn, 3, 332 XmNcellEditable, True, 333 NULL); 334 335 XtAddCallback(_editGrid, XmNeditCallback, _editCB, 0); 336 337 w = XtVaCreateManagedWidget("Command", 338 xmLabelWidgetClass, form, 339 XmNbottomAttachment, XmATTACH_FORM, 340 XmNbottomOffset, 11, 341 XmNleftAttachment, XmATTACH_FORM, 342 NULL); 343 _editCommandT = XtVaCreateManagedWidget("editCommandT", 344 xmTextWidgetClass, form, 345 XmNbottomAttachment, XmATTACH_FORM, 346 XmNleftAttachment, XmATTACH_WIDGET, 347 XmNleftWidget, w, 348 NULL); 349 XtAddCallback(_editCommandT, XmNactivateCallback, _editCommandCB, 0); 350 351 /* Bottom Row */ 352 chooseB = XtVaCreateManagedWidget("Choose", 353 xmPushButtonWidgetClass, form, 354 XmNbottomAttachment, XmATTACH_FORM, 355 XmNmarginWidth, 18, 356 NULL); 357 XtAddCallback(chooseB, XmNactivateCallback, _editChooseCB, 0); 358 closeB = XtVaCreateManagedWidget("Close", 359 xmPushButtonWidgetClass, form, 360 XmNrightAttachment, XmATTACH_FORM, 361 XmNbottomAttachment, XmATTACH_FORM, 362 XmNmarginWidth, 24, 363 NULL); 364 XtAddCallback(closeB, XmNactivateCallback, _editCloseCB, 0); 365 XtVaSetValues(chooseB, 366 XmNrightAttachment, XmATTACH_WIDGET, 367 XmNrightWidget, closeB, 368 NULL); 369 XtVaSetValues(_editCommandT, 370 XmNrightAttachment, XmATTACH_WIDGET, 371 XmNrightWidget, chooseB, 372 NULL); 373 XtVaSetValues(_editGrid, 374 XmNbottomAttachment, XmATTACH_WIDGET, 375 XmNbottomWidget, closeB, 376 NULL); 377 XtManageChild(form); 378 } 379 380 static void SetEditWidget(w) 381 Widget w; 382 { 383 WidgetClass wc, superWc; 384 XtResourceList resList; 385 char className[50], *resName, *resType; 386 Cardinal resCount; 387 int i, j, n, skip, done, superSize; 388 char resVal[50], line[100]; 389 XmString str; 390 char *s; 391 static char *skipType[] = 392 { 393 "Callback", 394 0 395 }; 396 397 _editWidget = w; 398 if (_editWidget) 399 s = XtName(_editWidget); 400 else 401 s = "none"; 402 if (s) 403 { 404 str = XmStringCreateSimple(s); 405 XtVaSetValues(_editNameL, XmNlabelString, str, NULL); 406 XmStringFree(str); 407 } 408 if (_editWidget) 409 { 410 wc = XtClass(_editWidget); 411 s = wc->core_class.class_name; 412 } 413 else 414 s = "none"; 415 if (s) 416 { 417 str = XmStringCreateSimple(s); 418 XtVaSetValues(_editClassL, XmNlabelString, str, NULL); 419 XmStringFree(str); 420 } 421 if (!_editWidget) 422 { 423 XmLGridDeleteAllRows(_editGrid, XmCONTENT); 424 return; 425 } 426 n = 0; 427 done = 0; 428 XtVaSetValues(_editGrid, XmNlayoutFrozen, True, NULL); 429 XmLGridDeleteAllRows(_editGrid, XmCONTENT); 430 while (!done) 431 { 432 if (!wc) 433 { 434 wc = XtClass(XtParent(_editWidget)); 435 XtGetConstraintResourceList(wc, &resList, &resCount); 436 sprintf(className, "%s [C]", wc->core_class.class_name); 437 superSize = 0; 438 done = 1; 439 } 440 else 441 { 442 XtGetResourceList(wc, &resList, &resCount); 443 sprintf(className, wc->core_class.class_name); 444 superWc = wc->core_class.superclass; 445 if (superWc) 446 superSize = superWc->core_class.widget_size; 447 } 448 for (i = 0; i < resCount; i++) 449 { 450 resName = resList[i].resource_name; 451 resType = resList[i].resource_type; 452 if (resList[i].resource_offset < superSize) 453 continue; 454 skip = 0; 455 for (j = 0; skipType[j]; j++) 456 if (!strcmp(skipType[j], resType)) 457 skip = 1; 458 if (skip) 459 continue; 460 _getResourceAsString(resName, resType, resVal); 461 sprintf(line, "%s|%s|%s|%s", className, resType, resName, resVal); 462 XmLGridAddRows(_editGrid, XmCONTENT, -1, 1); 463 XmLGridSetStringsPos(_editGrid, XmCONTENT, n, XmCONTENT, 0, line); 464 n++; 465 } 466 wc = wc->core_class.superclass; 467 XtFree((char *)resList); 468 if (_editShowInherited == False) 469 done = 1; 470 } 471 XtVaSetValues(_editGrid, XmNlayoutFrozen, False, NULL); 472 } 473 474 static void _getResourceAsString(res, type, str) 475 char *res; 476 char *type; 477 char *str; 478 { 479 Boolean bool; 480 Dimension dimension; 481 int i; 482 static char *skipRes[] = 483 { 484 XmNrowExpands, 485 XmNrowIsExpanded, 486 XmNrowHeight, 487 XmNrowLevel, 488 XmNcolumnWidth, 489 XmNcellColumnSpan, 490 XmNcellEditable, 491 XmNcellMarginBottom, 492 XmNcellMarginLeft, 493 XmNcellMarginRight, 494 XmNcellMarginTop, 495 XmNcellRowSpan, 496 XmNcellToggleSet, 497 0 498 }; 499 500 for (i = 0; skipRes[i]; i++) 501 if (!strcmp(skipRes[i], res)) 502 { 503 sprintf(str, ""); 504 return; 505 } 506 if (!strcmp(type, XmRInt)) 507 { 508 XtVaGetValues(_editWidget, res, &i, NULL); 509 sprintf(str, "%d", i); 510 } 511 else if (!strcmp(type, XmRDimension)) 512 { 513 XtVaGetValues(_editWidget, res, &dimension, NULL); 514 sprintf(str, "%d", (int)dimension); 515 } 516 else if (!strcmp(type, XmRBoolean)) 517 { 518 XtVaGetValues(_editWidget, res, &bool, NULL); 519 if (bool == True) 520 sprintf(str, "True"); 521 else 522 sprintf(str, "False"); 523 } 524 else 525 sprintf(str, ""); 526 } 527 528 static void _editCB(w, clientData, callData) 529 Widget w; 530 XtPointer clientData; 531 XtPointer callData; 532 { 533 XmLGridCallbackStruct *cbs; 534 int resRow, rowType, row, rowEnd, colType, col, colEnd; 535 XmLGridRow rowp; 536 XmLGridColumn colp; 537 XmString resStr, valStr; 538 char *s, *resS, *valS; 539 static char *emptyValS = ""; 540 541 cbs = (XmLGridCallbackStruct *)callData; 542 if (cbs->reason != XmCR_EDIT_COMPLETE) 543 return; 544 resRow = cbs->row; 545 546 /* get resource and value */ 547 rowp = XmLGridGetRow(_editGrid, XmCONTENT, resRow); 548 colp = XmLGridGetColumn(_editGrid, XmCONTENT, 2); 549 XtVaGetValues(_editGrid, 550 XmNrowPtr, rowp, 551 XmNcolumnPtr, colp, 552 XmNcellString, &resStr, 553 NULL); 554 if (!resStr) 555 resS = 0; 556 else 557 XmStringGetLtoR(resStr, XmSTRING_DEFAULT_CHARSET, &resS); 558 colp = XmLGridGetColumn(_editGrid, XmCONTENT, 3); 559 XtVaGetValues(_editGrid, 560 XmNrowPtr, rowp, 561 XmNcolumnPtr, colp, 562 XmNcellString, &valStr, 563 NULL); 564 if (!valStr) 565 valS = emptyValS; 566 else 567 XmStringGetLtoR(valStr, XmSTRING_DEFAULT_CHARSET, &valS); 568 569 if (XmLIsGrid(_editWidget)) 570 XtVaSetValues(_editWidget, 571 XmNrow, _editRow, 572 XmNcolumn, _editCol, 573 XtVaTypedArg, resS, 574 XmRString, valS, strlen(valS) + 1, 575 NULL); 576 else 577 XtVaSetValues(_editWidget, 578 XtVaTypedArg, resS, 579 XmRString, valS, strlen(valS) + 1, 580 NULL); 581 582 if (resS) 583 XtFree(resS); 584 if (resStr) 585 XmStringFree(resStr); 586 if (valS != emptyValS) 587 XtFree(valS); 588 if (valStr) 589 XmStringFree(valStr); 590 } 591 592 static void _editCommandCB(w, clientData, callData) 593 Widget w; 594 XtPointer clientData; 595 XtPointer callData; 596 { 597 char op[40], *cmd; 598 int *rowPos, *colPos, *newPos; 599 int i, l1, l2, l3, l4, n, count; 600 XmString str; 601 602 cmd = XmTextGetString(_editCommandT); 603 if (_editWidget && XmLIsGrid(_editWidget)) 604 { 605 n = sscanf(cmd, "%s %d %d %d %d", op, &l1, &l2, &l3, &l4); 606 /* Tree commands */ 607 if (!strcmp(op, "addTreeRow") && n == 5) 608 { 609 str = XmStringCreateSimple("New Node"); 610 XmLTreeAddRow(_editWidget, l1, (Boolean)l2, (Boolean)l3, l4, 611 XmUNSPECIFIED_PIXMAP, XmUNSPECIFIED_PIXMAP, str); 612 XmStringFree(str); 613 } 614 /* Grid commands */ 615 else if (!strcmp(op, "addHRows") && n == 3) 616 XmLGridAddRows(_editWidget, XmHEADING, l1, l2); 617 else if (!strcmp(op, "addFRows") && n == 3) 618 XmLGridAddRows(_editWidget, XmFOOTER, l1, l2); 619 else if (!strcmp(op, "addRows") && n == 3) 620 XmLGridAddRows(_editWidget, XmCONTENT, l1, l2); 621 else if (!strcmp(op, "addHColumns") && n == 3) 622 XmLGridAddColumns(_editWidget, XmHEADING, l1, l2); 623 else if (!strcmp(op, "addFColumns") && n == 3) 624 XmLGridAddColumns(_editWidget, XmFOOTER, l1, l2); 625 else if (!strcmp(op, "addColumns") && n == 3) 626 XmLGridAddColumns(_editWidget, XmCONTENT, l1, l2); 627 else if (!strcmp(op, "deleteHRows") && n == 3) 628 XmLGridDeleteRows(_editWidget, XmHEADING, l1, l2); 629 else if (!strcmp(op, "deleteFRows") && n == 3) 630 XmLGridDeleteRows(_editWidget, XmFOOTER, l1, l2); 631 else if (!strcmp(op, "deleteRows") && n == 3) 632 XmLGridDeleteRows(_editWidget, XmCONTENT, l1, l2); 633 else if (!strcmp(op, "deleteHColumns") && n == 3) 634 XmLGridDeleteColumns(_editWidget, XmHEADING, l1, l2); 635 else if (!strcmp(op, "deleteFColumns") && n == 3) 636 XmLGridDeleteColumns(_editWidget, XmFOOTER, l1, l2); 637 else if (!strcmp(op, "deleteColumns") && n == 3) 638 XmLGridDeleteColumns(_editWidget, XmCONTENT, l1, l2); 639 else if (!strcmp(op, "copyPos") && n == 3) 640 XmLGridCopyPos(_editWidget, CurrentTime, XmCONTENT, 641 l1, XmCONTENT, l2, 3, 3); 642 else if (!strcmp(op, "copySelected") && n == 1) 643 XmLGridCopySelected(_editWidget, CurrentTime); 644 else if (!strcmp(op, "paste") && n == 1) 645 XmLGridPaste(_editWidget); 646 else if (!strcmp(op, "pastePos") && n == 3) 647 XmLGridPastePos(_editWidget, XmCONTENT, l1, XmCONTENT, l2); 648 else if (!strcmp(op, "moveColumns") && n == 1) 649 XmLGridMoveColumns(_editWidget, 3, 1, 2); 650 else if (!strcmp(op, "moveRows") && n == 1) 651 XmLGridMoveRows(_editWidget, 3, 1, 2); 652 else if (!strcmp(op, "printSelected") && n == 1) 653 { 654 printf ("--- Current Selections ---\n"); 655 count = XmLGridGetSelectedRowCount(_editWidget); 656 if (count) 657 { 658 rowPos = (int *)malloc(sizeof(int) * count); 659 XmLGridGetSelectedRows(_editWidget, rowPos, count); 660 printf ("Selected Rows: "); 661 for (i = 0; i < count; i++) 662 printf ("%d ", rowPos[i]); 663 printf ("\n"); 664 free((char *)rowPos); 665 } 666 667 count = XmLGridGetSelectedColumnCount(_editWidget); 668 if (count) 669 { 670 colPos = (int *)malloc(sizeof(int) * count); 671 XmLGridGetSelectedColumns(_editWidget, colPos, count); 672 printf ("Selected Columns: "); 673 for (i = 0; i < count; i++) 674 printf ("%d ", colPos[i]); 675 printf ("\n"); 676 free((char *)colPos); 677 } 678 679 count = XmLGridGetSelectedCellCount(_editWidget); 680 if (count) 681 { 682 colPos = (int *)malloc(sizeof(int) * count); 683 rowPos = (int *)malloc(sizeof(int) * count); 684 XmLGridGetSelectedCells(_editWidget, rowPos, colPos, count); 685 printf ("Selected Cells: "); 686 for (i = 0; i < count; i++) 687 printf ("[%d %d] ", rowPos[i], colPos[i]); 688 printf ("\n"); 689 free((char *)colPos); 690 free((char *)rowPos); 691 } 692 } 693 else if (!strcmp(op, "setCell") && n == 3) 694 { 695 printf ("WidgetEdit: set row %d col %d\n", l1, l2); 696 _editRow = l1; 697 _editCol = l2; 698 } 699 else if (!strcmp(op, "reorderColumns") && n == 1) 700 { 701 XtVaGetValues(_editWidget, 702 XmNcolumns, &count, 703 NULL); 704 newPos = (int *)malloc(count * sizeof(int)); 705 for (i = 0; i < count; i++) 706 newPos[i] = i + 1; 707 newPos[count - 1] = 0; 708 XmLGridReorderColumns(_editWidget, newPos, 0, count); 709 free((char *)newPos); 710 } 711 else if (!strcmp(op, "reorderRows") && n == 1) 712 { 713 XtVaGetValues(_editWidget, 714 XmNrows, &count, 715 NULL); 716 newPos = (int *)malloc(count * sizeof(int)); 717 for (i = 0; i < count; i++) 718 newPos[i] = i + 1; 719 newPos[count - 1] = 0; 720 XmLGridReorderRows(_editWidget, newPos, 0, count); 721 free((char *)newPos); 722 } 723 else if (!strcmp(op, "write") && n == 1) 724 XmLGridWrite(_editWidget, stdout, XmFORMAT_DELIMITED, '|', True); 725 else if (!strcmp(op, "writeXL") && n == 1) 726 XmLGridWrite(_editWidget, stdout, XmFORMAT_XL, 0, True); 727 else if (!strcmp(op, "writePAD") && n == 1) 728 XmLGridWrite(_editWidget, stdout, XmFORMAT_PAD, 0, True); 729 else if (!strcmp(op, "writePos") && n == 3) 730 XmLGridWritePos(_editWidget, stdout, XmFORMAT_DELIMITED, '|', 731 True, XmCONTENT, 0, XmCONTENT, 0, l1, l2); 732 else 733 fprintf(stderr, "WidgetEdit: unknown command %s\n", cmd); 734 } 735 XtFree(cmd); 736 XmTextSetString(_editCommandT, ""); 737 } 738 739 static void _editChooseCB(w, clientData, callData) 740 Widget w; 741 XtPointer clientData; 742 XtPointer callData; 743 { 744 Cursor cursor; 745 Widget editW; 746 747 cursor = XCreateFontCursor(XtDisplay(w), XC_hand2); 748 editW = XmTrackingLocate(w, cursor, False); 749 if (editW) 750 SetEditWidget(editW); 751 XFreeCursor(XtDisplay(w), cursor); 752 } 753 754 static void _editShowCB(w, clientData, callData) 755 Widget w; 756 XtPointer clientData; 757 XtPointer callData; 758 { 759 XmToggleButtonCallbackStruct *cbs; 760 761 cbs = (XmToggleButtonCallbackStruct *)callData; 762 _editShowInherited = cbs->set; 763 SetEditWidget(_editWidget); 764 } 765 766 static void _wmCloseCB(w, clientData, callData) 767 Widget w; 768 XtPointer clientData; 769 XtPointer callData; 770 { 771 XtPopdown(XmLShellOfWidget((Widget)clientData)); 772 _editDialogUp = False; 773 } 774 775 static void _editCloseCB(w, clientData, callData) 776 Widget w; 777 XtPointer clientData; 778 XtPointer callData; 779 { 780 XtPopdown(XmLShellOfWidget(w)); 781 _editDialogUp = False; 782 } 783 784 /* 785 Callbacks which manipulate the Widget Editor 786 */ 787 788 static void folderCB(w, clientData, callData) 789 Widget w; 790 XtPointer clientData; 791 XtPointer callData; 792 { 793 XmLFolderCallbackStruct *cbs; 794 extern Widget _folder, _grid, _progress, _tree; 795 796 cbs = (XmLFolderCallbackStruct *)callData; 797 switch (cbs->pos) 798 { 799 case 2: 800 _editWidget = _grid; 801 break; 802 case 3: 803 _editWidget = _tree; 804 break; 805 case 4: 806 _editWidget = _folder; 807 break; 808 case 5: 809 _editWidget = _progress; 810 break; 811 default: 812 _editWidget = 0; 813 break; 814 } 815 if (_editDialogUp == True) 816 SetEditWidget(_editWidget); 817 } 818 819 static void editCB(w, clientData, callData) 820 Widget w; 821 XtPointer clientData; 822 XtPointer callData; 823 { 824 SetEditWidget(_editWidget); 825 XtPopup(_editDialog, XtGrabNone); 826 _editDialogUp = True; 827 } 828 829 /* 830 Utility to add a sample tab and form to a folder, returning the form in 831 the sample Folder created. 832 */ 833 834 static Widget AddWidgetSample(folder, name, desc) 835 Widget folder; 836 char *name, *desc; 837 { 838 Widget form, sampleFolder, sampleForm; 839 XmString str; 840 char buf[20]; 841 int i; 842 843 sprintf(buf, "%s Widget", name); 844 str = XmStringCreateSimple(buf); 845 form = XmLFolderAddTabForm(folder, str); 846 XmStringFree(str); 847 sampleFolder = XtVaCreateManagedWidget("sampleFolder", 848 xmlFolderWidgetClass, form, 849 XmNtabPlacement, XmFOLDER_RIGHT, 850 XmNleftAttachment, XmATTACH_FORM, 851 XmNtopAttachment, XmATTACH_FORM, 852 XmNrightAttachment, XmATTACH_FORM, 853 XmNbottomAttachment, XmATTACH_POSITION, 854 XmNbottomPosition, 55, 855 XmNtabsPerRow, 3, 856 NULL); 857 for (i = 0; i < 3; i++) 858 { 859 if (!i) 860 sprintf(buf, "%s One", name); 861 else if (i == 1) 862 sprintf(buf, "%s Two", name); 863 else 864 sprintf(buf, "%s Three", name); 865 str = XmStringCreateSimple(buf); 866 XmLFolderAddTab(sampleFolder, str); 867 XmStringFree(str); 868 } 869 sampleForm = XtVaCreateManagedWidget("sampleForm", 870 xmFormWidgetClass, sampleFolder, 871 NULL); 872 CreateText(form, desc, sampleFolder, 1); 873 return sampleForm; 874 } 875 876 static void CreateText(form, data, topWidget, scrollVert) 877 Widget form; 878 char *data; 879 Widget topWidget; 880 int scrollVert; 881 { 882 Widget text, sb; 883 int n; 884 Arg args[20]; 885 886 XtSetArg(args[0], XmNleftAttachment, XmATTACH_FORM); 887 XtSetArg(args[1], XmNrightAttachment, XmATTACH_FORM); 888 XtSetArg(args[2], XmNbottomAttachment, XmATTACH_FORM); 889 XtSetArg(args[3], XmNwordWrap, True); 890 XtSetArg(args[4], XmNscrollHorizontal, False); 891 XtSetArg(args[5], XmNeditMode, XmMULTI_LINE_EDIT); 892 XtSetArg(args[6], XmNeditable, False); 893 XtSetArg(args[7], XmNcursorPositionVisible, False); 894 XtSetArg(args[8], XmNhighlightThickness, 0); 895 XtSetArg(args[9], XmNtopAttachment, XmATTACH_WIDGET); 896 XtSetArg(args[10], XmNtopWidget, topWidget); 897 n = 11; 898 if (!scrollVert) 899 { 900 XtSetArg(args[11], XmNscrollVertical, False); 901 n = 12; 902 } 903 text = XmCreateScrolledText(form, "text", args, n); 904 XmTextSetString(text, data); 905 XtManageChild(text); 906 XtVaSetValues(text, 907 XtVaTypedArg, XmNbackground, XmRString, "#D0D0D0", 8, 908 XtVaTypedArg, XmNforeground, XmRString, "black", 6, 909 XmNshadowThickness, 0, 910 NULL); 911 if (scrollVert) 912 { 913 XtVaGetValues(XtParent(text), 914 XmNverticalScrollBar, &sb, 915 NULL); 916 XtVaSetValues(sb, 917 XmNshadowThickness, 2, 918 NULL); 919 } 920 #ifndef MOTIF11 921 /* multiple drop site in the same area conflict with one another */ 922 /* even if they are unmanaged - a Motif bug */ 923 XmDropSiteUnregister(text); 924 #endif 925 } 926 927 static void CreatePixmap(w, color, pixmap, pixmask, bits, width, height) 928 Widget w; 929 int color; 930 Pixmap *pixmap, *pixmask; 931 char *bits; 932 int width, height; 933 { 934 Display *dpy; 935 Window root; 936 int depth; 937 XColor col; 938 Pixel black, white, fg, bg; 939 940 dpy = XtDisplay(w); 941 root = DefaultRootWindow(dpy); 942 depth = DefaultDepthOfScreen(XtScreen(w)); 943 black = BlackPixelOfScreen(XtScreen(w)); 944 white = WhitePixelOfScreen(XtScreen(w)); 945 XtVaGetValues(w, 946 XmNbackground, &bg, 947 NULL); 948 col.red = 0; 949 col.green = 0; 950 col.blue = 0; 951 if (color == 0) 952 fg = white; 953 else if (color == 1) 954 fg = black; 955 else 956 { 957 if (color == 2) 958 col.green = 40000; 959 else if (color == 3) 960 col.red = 45000; 961 else if (color == 4) 962 col.blue = 30000; 963 col.flags = DoRed | DoGreen | DoBlue; 964 XAllocColor(dpy, DefaultColormapOfScreen(XtScreen(w)), &col); 965 fg = col.pixel; 966 } 967 *pixmap = XCreatePixmapFromBitmapData(dpy, root, bits, 968 width, height, fg, bg, depth); 969 *pixmask = XCreatePixmapFromBitmapData(dpy, root, bits, 970 width, height, 1L, 0L, 1); 971 } 972 973 /* 974 Cover Tab Form 975 */ 976 977 #define cover_width 230 978 #define cover_height 240 979 static unsigned char cover_bits[] = { 980 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 981 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 982 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 983 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 984 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00, 985 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 986 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00, 987 0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 988 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00, 989 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 990 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x03,0x00,0x00,0x00,0x00, 991 0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0xff, 992 0x01,0x00,0xc0,0x0f,0x00,0x00,0xe0,0x00,0x80,0x03,0x00,0x00,0x3c,0x00,0x00, 993 0x00,0x00,0x38,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x80,0xff,0x01, 994 0x00,0x30,0x1c,0x00,0x00,0xe0,0x00,0x80,0x01,0x00,0x00,0x3e,0x00,0x00,0x00, 995 0x00,0x18,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x60,0xe0,0x01,0x00, 996 0x0c,0x38,0x00,0x00,0x20,0x00,0x80,0x01,0x00,0x80,0x01,0x00,0x00,0x00,0x00, 997 0x18,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x10,0xe0,0x00,0x00,0x06, 998 0x78,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x1c, 999 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x10,0xd0,0x00,0x00,0x03,0x70, 1000 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x0c,0x00, 1001 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x18,0xd8,0x00,0x80,0x01,0x70,0x00, 1002 0x00,0x00,0x00,0xc0,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00, 1003 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x18,0xc8,0x00,0x80,0x01,0x70,0x18,0x08, 1004 0x30,0xe0,0xc0,0xe0,0x01,0x60,0x00,0x00,0x3c,0x00,0x0f,0x0c,0x1e,0x00,0x00, 1005 0x00,0xc0,0x00,0x00,0x00,0x00,0x18,0xc4,0x00,0xc0,0x01,0x70,0x1e,0x0e,0x3c, 1006 0xf0,0xe1,0xf0,0x01,0x70,0x00,0x00,0x7f,0xc0,0x1f,0x0e,0x1f,0x00,0x00,0x00, 1007 0xc0,0x00,0x00,0x00,0x00,0x38,0xc6,0x00,0xc0,0x00,0xf0,0x0d,0x06,0x1b,0x8c, 1008 0x61,0x98,0x00,0x70,0x00,0x80,0x79,0x60,0x1e,0x86,0x09,0x00,0x00,0x00,0xc0, 1009 0x00,0x00,0x00,0x00,0x08,0xc3,0x00,0xe0,0x00,0x70,0x0c,0x06,0x18,0x8e,0x60, 1010 0x04,0x00,0x30,0x00,0xe0,0x70,0x38,0x1c,0x46,0x00,0x00,0x00,0x00,0xc0,0x00, 1011 0x00,0x00,0x00,0x00,0xe1,0x00,0xe0,0x00,0x70,0x0e,0x07,0x1c,0x06,0x70,0x03, 1012 0x00,0x30,0x00,0x60,0x70,0x18,0x1c,0x37,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 1013 0x00,0x00,0x80,0xe1,0x00,0xe0,0x00,0x30,0x06,0x03,0x1c,0x07,0xf0,0x01,0x00, 1014 0x30,0x00,0x70,0x70,0x1c,0x1c,0x1f,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 1015 0x00,0xc0,0xff,0x00,0xe0,0x00,0x38,0x06,0x03,0x0c,0x07,0xf0,0x01,0x00,0x38, 1016 0x00,0x30,0x70,0x0c,0x1c,0x1f,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 1017 0x60,0xe0,0x00,0xe0,0x00,0x18,0x86,0x03,0x0c,0x03,0xb0,0x03,0x00,0x18,0x00, 1018 0x39,0x30,0x0e,0x0c,0x3b,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x20, 1019 0xe0,0x00,0xe0,0x00,0x18,0x87,0x01,0x8e,0x03,0x38,0x03,0x00,0x18,0x80,0x39, 1020 0x38,0x0e,0x8e,0x33,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x10,0x60, 1021 0x00,0xe0,0x00,0x0c,0x83,0x01,0x8e,0x03,0x38,0x03,0x00,0x0c,0x80,0x38,0x18, 1022 0x0e,0x86,0x33,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x1c,0x60,0x00, 1023 0xc0,0x01,0x06,0xc3,0x11,0x86,0x03,0x19,0x07,0x00,0x04,0xe0,0x38,0x0c,0x0e, 1024 0x83,0x71,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0xc0,0x0f,0xe0,0x0c,0xc0, 1025 0x01,0x03,0xb3,0x0d,0xe6,0xc3,0x18,0x06,0x80,0xff,0x7f,0x78,0x06,0x9e,0x81, 1026 0x61,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0xc0,0x07,0xe0,0x07,0x80,0xc7, 1027 0x81,0xcf,0x03,0x9f,0x3f,0x1c,0x0e,0xc0,0xff,0x7f,0xf8,0x03,0xfe,0xc0,0xe1, 1028 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0xe0,0x01,0x70,0x00,0x00,0xff,0x01, 1029 0xc3,0x00,0x06,0x0f,0x0c,0x0c,0xe0,0xff,0x3f,0xf0,0x00,0x3c,0xc0,0xc0,0x00, 1030 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00, 1031 0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00, 1032 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x04,0x00, 1033 0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00, 1034 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x04,0x00,0x00, 1035 0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00, 1036 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x04,0x00,0x00,0x00, 1037 0x00,0x70,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x87,0x00,0x00,0x00,0xc0, 1038 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x0e,0x00,0x00,0x00,0x00, 1039 0xe0,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xce,0x00,0x00,0x00,0xc0,0x00, 1040 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x03,0x00,0x00,0x00,0x00,0x80, 1041 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0xc0,0x00,0x00, 1042 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1043 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 1044 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1045 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 1046 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1047 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 1048 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1049 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 1050 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00, 1051 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1052 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00, 1053 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1054 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 1055 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1056 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1057 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1058 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1059 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1060 0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1061 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1062 0x0c,0x00,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1063 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06, 1064 0x00,0x18,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1065 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00, 1066 0x18,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 1067 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x1c, 1068 0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 1069 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x0c,0x30, 1070 0x38,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 1071 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x07,0x03,0x00,0x0c,0x38,0x3c, 1072 0xd8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 1073 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0xe1,0x7f,0x80,0xff,0x39,0x3b,0xc6, 1074 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 1075 0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x91,0x03,0x40,0x0e,0xd8,0x38,0xc7,0x01, 1076 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 1077 0x00,0x00,0x00,0x00,0x00,0x83,0x81,0x01,0x00,0x06,0x38,0x18,0xe3,0x00,0x00, 1078 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 1079 0x00,0x00,0x00,0x80,0xc3,0x81,0x01,0x00,0x06,0x1c,0x9c,0x33,0x00,0x00,0x00, 1080 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1081 0x00,0x00,0x80,0xc1,0xc0,0x01,0x00,0x07,0x0c,0x9c,0x1b,0x00,0x00,0x00,0x00, 1082 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1083 0x00,0x80,0xc1,0xc0,0x01,0x00,0x07,0x0c,0xcc,0x07,0x00,0x00,0x00,0x00,0x00, 1084 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1085 0xc0,0xe1,0xc0,0x00,0x00,0x03,0x0c,0xcc,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 1086 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 1087 0xe1,0xc0,0x00,0x00,0x03,0x0e,0xce,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1088 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x71, 1089 0xe4,0x10,0x80,0x43,0x06,0xce,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1090 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x6d,0xe3, 1091 0x0c,0x80,0x33,0x06,0xee,0xe3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1092 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xe3,0xe0,0x03, 1093 0x80,0x0f,0x07,0xde,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1094 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x31,0xc0,0x00,0x00, 1095 0x03,0x01,0x86,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 1096 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1097 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 1098 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1099 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 1100 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1101 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 1102 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1103 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 1104 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1105 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 1106 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1107 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 1108 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1109 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1110 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1111 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1112 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1113 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1114 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1115 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1116 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1117 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1118 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1119 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1120 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1121 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1122 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1123 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1124 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 1125 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1126 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 1127 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1128 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 1129 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1130 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 1131 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1132 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 1133 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1134 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 1135 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1136 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 1137 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1138 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1139 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1140 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1141 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1142 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1143 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1144 0x00,0x00,0x00,0x00,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1145 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1146 0xff,0xff,0x3f,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1147 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1148 0xff,0x3f,0xc0,0xfc,0xff,0xff,0xff,0xff,0x3f,0xf8,0xff,0xff,0xff,0x1f,0xfe, 1149 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1150 0x3f,0xc0,0x0c,0xfe,0x1f,0x3e,0xfc,0x07,0xe3,0x0f,0x00,0xff,0x03,0xf0,0x1f, 1151 0xfe,0x0f,0x1f,0xfe,0xcf,0x07,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, 1152 0xc0,0x0c,0xfe,0x1f,0x3e,0xfc,0xc3,0xdf,0x0f,0x1f,0xfc,0xf1,0xc3,0x1f,0xfe, 1153 0x0f,0x1f,0xfc,0xcf,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0, 1154 0x0c,0xfc,0x0f,0x3e,0xfc,0xf1,0x9f,0x0f,0x3f,0xfc,0xf8,0x87,0x1f,0xfe,0x0f, 1155 0x1f,0xfc,0xcf,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x0c, 1156 0xfc,0x0f,0x3e,0xfc,0xf8,0x3f,0x0f,0x7f,0x7c,0xf8,0x0f,0x1f,0xfe,0x0f,0x1f, 1157 0xf8,0xcf,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x0c,0xf8, 1158 0x07,0x3e,0x7c,0xf8,0x7f,0x0e,0x7f,0x78,0xfc,0x0f,0x1f,0xfe,0x0f,0x1f,0xf0, 1159 0xcf,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x0c,0xf8,0x07, 1160 0x3e,0x7c,0xfc,0xff,0x0f,0x7f,0x38,0xfc,0x1f,0x1e,0xfe,0x0f,0x9f,0xf0,0xcf, 1161 0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x4c,0xf8,0x17,0x3e, 1162 0x3c,0xfc,0xff,0x0f,0x7f,0x38,0xfe,0x1f,0x1e,0xfe,0x0f,0x9f,0xe0,0xcf,0x87, 1163 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x4c,0xf0,0x13,0x3e,0x3c, 1164 0xfc,0xff,0x0f,0x7f,0x18,0xfe,0x1f,0x1e,0xfe,0x0f,0x9f,0xc1,0xcf,0x87,0xff, 1165 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0xf0,0x13,0x3e,0x3c,0xfc, 1166 0xff,0x0f,0x7f,0x18,0xfe,0x1f,0x1c,0xfe,0x0f,0x9f,0x83,0xcf,0x87,0xff,0xff, 1167 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0xe0,0x19,0x3e,0x1c,0xfe,0xff, 1168 0x0f,0x3f,0x1c,0xfe,0x1f,0x1c,0xfe,0x0f,0x9f,0x83,0xcf,0x87,0xff,0xff,0xff, 1169 0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0xe1,0x19,0x3e,0x1c,0xfe,0xff,0x0f, 1170 0x1f,0x1c,0xfe,0x3f,0x1c,0xfe,0x0f,0x9f,0x07,0xcf,0x07,0x80,0xff,0xff,0xff, 1171 0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0xe1,0x1d,0x3e,0x1c,0xfe,0xff,0x0f,0x01, 1172 0x1f,0xfe,0x3f,0x1c,0xfe,0x0f,0x9f,0x0f,0xce,0x07,0x80,0xff,0xff,0xff,0xff, 1173 0xff,0xff,0xff,0x3f,0xc0,0xcc,0xc1,0x1c,0x3e,0x1c,0xfe,0xff,0x0f,0xc3,0x1f, 1174 0xfe,0x3f,0x1c,0xfe,0x0f,0x9f,0x0f,0xce,0x87,0xff,0xff,0xff,0xff,0xff,0xff, 1175 0xff,0xff,0x3f,0xc0,0xcc,0xc3,0x1c,0x3e,0x1c,0xfe,0xff,0x0f,0xc3,0x1f,0xfe, 1176 0x3f,0x1c,0xfe,0x0f,0x9f,0x1f,0xcc,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1177 0xff,0x3f,0xc0,0xcc,0x03,0x1e,0x3e,0x1c,0xfc,0xff,0x0f,0x87,0x1f,0xfe,0x1f, 1178 0x1c,0xfe,0x0f,0x9f,0x3f,0xc8,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1179 0x3f,0xc0,0xcc,0x07,0x1e,0x3e,0x1c,0xfc,0xff,0x0f,0x87,0x1f,0xfe,0x1f,0x1e, 1180 0xfe,0x0f,0x9f,0x7f,0xc8,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f, 1181 0xc0,0xcc,0x07,0x1e,0x3e,0x3c,0xfc,0xff,0x0f,0x0f,0x3f,0xfe,0x1f,0x1e,0xfe, 1182 0x0f,0x9f,0x7f,0xc0,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0, 1183 0xcc,0x07,0x1f,0x3e,0x3c,0xfc,0xff,0x0c,0x0f,0x3f,0xfc,0x1f,0x1e,0xfe,0x0f, 1184 0x9f,0xff,0xc0,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc, 1185 0x0f,0x1f,0x3e,0x7c,0xf8,0x7f,0x0e,0x1f,0x3e,0xfc,0x0f,0x1f,0xfe,0x0f,0x9f, 1186 0xff,0xc1,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0x8f, 1187 0x1f,0x3e,0xfc,0xf0,0x3f,0x0f,0x1f,0x7e,0xfc,0x8f,0x1f,0xfe,0x0f,0x9f,0xff, 1188 0xc1,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0x9f,0x1f, 1189 0x3e,0xfc,0xe0,0x1f,0x0f,0x3f,0xfc,0xf8,0x87,0x1f,0xfe,0x0f,0x9f,0xff,0xc3, 1190 0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0x9f,0x1f,0x3e, 1191 0xfc,0x83,0x87,0x0f,0x3f,0xfc,0xf1,0xc3,0x1f,0x00,0x0c,0x9f,0xff,0xc7,0x07, 1192 0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0xff,0x1f,0x3e,0xfc, 1193 0x07,0xe0,0x0f,0x7f,0xf8,0x03,0xf0,0x1f,0x00,0x0c,0x9f,0xff,0xc7,0x07,0x00, 1194 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff, 1195 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1196 0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff, 1197 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1198 0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1199 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1200 0xff,0xff,0xff,0xff,0x3f,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1201 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1202 0x00,0x00,0x00,0x00,0xc0,0xf0,0x07,0xf8,0x03,0xfc,0xf9,0x81,0xff,0xff,0x00, 1203 0x00,0xf8,0x0f,0x00,0xfc,0xff,0x7f,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00, 1204 0x00,0x00,0x00,0xc0,0xe0,0x07,0xf8,0x03,0xfc,0xf8,0x81,0xff,0xff,0x03,0x00, 1205 0xff,0x7f,0x00,0xfc,0xff,0x7f,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00, 1206 0x00,0x00,0xc0,0xe0,0x07,0xf8,0x07,0xfc,0xf8,0x81,0xff,0xff,0x0f,0x80,0xff, 1207 0xff,0x01,0xfc,0xff,0x7f,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 1208 0x00,0xc0,0xe0,0x0f,0xf8,0x07,0xfc,0xf8,0x81,0xff,0xff,0x1f,0xc0,0xff,0xff, 1209 0x03,0xfc,0xff,0x7f,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1210 0xc0,0xc0,0x0f,0xfc,0x07,0x7e,0xf8,0x81,0x1f,0xc0,0x3f,0xe0,0x0f,0xf8,0x07, 1211 0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 1212 0xc0,0x0f,0xfc,0x07,0x7e,0xf8,0x81,0x1f,0x00,0x3f,0xf0,0x07,0xe0,0x0f,0xfc, 1213 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0, 1214 0x0f,0xbc,0x0f,0x7e,0xf8,0x81,0x1f,0x00,0x7f,0xf8,0x03,0xc0,0x0f,0xfc,0x00, 1215 0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x80,0x1f, 1216 0xbc,0x0f,0x3e,0xf8,0x81,0x1f,0x00,0x7e,0xf8,0x01,0x00,0x00,0xfc,0x00,0x00, 1217 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x80,0x1f,0xbe, 1218 0x0f,0x3f,0xf8,0x81,0x1f,0x00,0xfe,0xf8,0x01,0x00,0x00,0xfc,0x00,0x00,0x00, 1219 0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x80,0x1f,0xbe,0x0f, 1220 0x3f,0xf8,0x81,0x1f,0x00,0xfc,0xfc,0x00,0x00,0x00,0xfc,0xff,0x3f,0x00,0xfc, 1221 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x1f,0x1e,0x1f,0x1f, 1222 0xf8,0x81,0x1f,0x00,0xfc,0xfc,0x00,0xfe,0x0f,0xfc,0xff,0x3f,0x00,0xfc,0x00, 1223 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x3f,0x1e,0x1f,0x1f,0xf8, 1224 0x81,0x1f,0x00,0xfc,0xfc,0x00,0xfe,0x0f,0xfc,0xff,0x3f,0x00,0xfc,0x00,0x00, 1225 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x3f,0x1f,0x9f,0x1f,0xf8,0x81, 1226 0x1f,0x00,0xfc,0xfc,0x00,0xfe,0x0f,0xfc,0xff,0x3f,0x00,0xfc,0x00,0x00,0x00, 1227 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x3e,0x1f,0x9e,0x0f,0xf8,0x81,0x1f, 1228 0x00,0xfc,0xfc,0x00,0xfe,0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00, 1229 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x7e,0x0f,0xbe,0x0f,0xf8,0x81,0x1f,0x00, 1230 0xfc,0xfc,0x01,0x80,0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00, 1231 0x00,0x00,0x00,0x00,0xc0,0x00,0x7e,0x0f,0xbe,0x0f,0xf8,0x81,0x1f,0x00,0x7e, 1232 0xf8,0x01,0x80,0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00, 1233 0x00,0x00,0x00,0xc0,0x00,0xfc,0x0f,0xfc,0x07,0xf8,0x81,0x1f,0x00,0x7f,0xf8, 1234 0x03,0xc0,0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1235 0x00,0x00,0xc0,0x00,0xfc,0x07,0xfc,0x07,0xf8,0x81,0x1f,0x00,0x3f,0xf0,0x07, 1236 0xe0,0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1237 0x00,0xc0,0x00,0xf8,0x07,0xfc,0x07,0xf8,0x81,0x1f,0xc0,0x3f,0xe0,0x1f,0xf8, 1238 0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1239 0xc0,0x00,0xf8,0x07,0xfc,0x03,0xf8,0x81,0xff,0xff,0x1f,0xc0,0xff,0xff,0x0f, 1240 0xfc,0xff,0xff,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 1241 0x00,0xf8,0x07,0xf8,0x03,0xf8,0x81,0xff,0xff,0x0f,0x80,0xff,0x7f,0x0f,0xfc, 1242 0xff,0xff,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 1243 0xf0,0x03,0xf8,0x03,0xf8,0x81,0xff,0xff,0x03,0x00,0xfe,0x3f,0x0f,0xfc,0xff, 1244 0xff,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf0, 1245 0x03,0xf8,0x01,0xf8,0x81,0xff,0xff,0x00,0x00,0xf0,0x07,0x0f,0xfc,0xff,0xff, 1246 0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 1247 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1248 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 1249 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1250 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 1251 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1252 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 1253 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1254 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1255 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00, 1256 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1257 0xc0,0x01,0x00,0x3c,0xf0,0xff,0x07,0xe0,0xff,0x0f,0x00,0x80,0x03,0x00,0xfe, 1258 0xff,0xe1,0x03,0x00,0x38,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 1259 0x01,0x00,0x3c,0xf0,0x00,0x1f,0xe0,0x01,0x3f,0x00,0x80,0x03,0x00,0x1e,0xe0, 1260 0xc3,0x07,0x00,0x1c,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01, 1261 0x00,0x3c,0xf0,0x00,0x3c,0xe0,0x01,0x78,0x00,0xc0,0x07,0x00,0x1e,0x80,0x8f, 1262 0x0f,0x00,0x0e,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00, 1263 0x3c,0xf0,0x00,0x3c,0xe0,0x01,0xf8,0x00,0xc0,0x07,0x00,0x1e,0x00,0x0f,0x1f, 1264 0x00,0xe7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c, 1265 0xf0,0x00,0x3c,0xe0,0x01,0xf0,0x00,0x60,0x0f,0x00,0x1e,0x00,0x0f,0x1e,0x80, 1266 0x43,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0, 1267 0x00,0x3c,0xe0,0x01,0xf0,0x00,0x30,0x1f,0x00,0x1e,0x00,0x0f,0x3c,0x80,0x41, 1268 0xc5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00, 1269 0x3c,0xe0,0x01,0x78,0x00,0x30,0x1e,0x00,0x1e,0x00,0x0f,0x78,0xc0,0x01,0xc0, 1270 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00,0x1c, 1271 0xe0,0x01,0x78,0x00,0x18,0x3c,0x00,0x1e,0x80,0x07,0xf8,0xe0,0x00,0xc0,0x00, 1272 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x80,0x07,0xe0, 1273 0x01,0x3e,0x00,0x18,0x3c,0x00,0x1e,0xc0,0x03,0xf0,0x61,0x00,0xc0,0x00,0x00, 1274 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0xff,0x00,0xe0,0xff, 1275 0x07,0x00,0x0c,0x78,0x00,0xfe,0x7f,0x00,0xe0,0x19,0x00,0xc0,0x00,0x00,0x00, 1276 0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0xc0,0x0f,0xe0,0x7f,0x00, 1277 0x00,0x0c,0xf8,0x00,0xfe,0x07,0x00,0xc0,0x1f,0x00,0xc0,0x00,0x00,0x00,0x00, 1278 0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00,0x1e,0xe0,0xfd,0x00,0x00, 1279 0xfe,0xff,0x00,0x9e,0x0f,0x00,0x80,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 1280 0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00,0x7c,0xe0,0xf9,0x00,0x00,0xff, 1281 0xff,0x01,0x1e,0x1f,0x00,0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 1282 0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00,0x78,0xe0,0xf1,0x03,0x00,0x03,0xe0, 1283 0x01,0x1e,0x3e,0x00,0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1284 0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00,0x78,0xe0,0xc1,0x07,0x80,0x01,0xc0,0x03, 1285 0x1e,0x78,0x00,0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1286 0xc0,0x01,0x00,0x3c,0xf0,0x00,0x78,0xe0,0x81,0x07,0x80,0x01,0xc0,0x03,0x1e, 1287 0xf0,0x00,0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 1288 0x01,0x00,0x3c,0xf0,0x00,0x78,0xe0,0x01,0x1f,0xc0,0x00,0x80,0x07,0x1e,0xe0, 1289 0x03,0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01, 1290 0x00,0x3c,0xf0,0x00,0x78,0xe0,0x01,0x3e,0xe0,0x00,0x00,0x0f,0x1e,0xc0,0x07, 1291 0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00, 1292 0x3c,0xf0,0x00,0x3c,0xe0,0x01,0x7c,0x60,0x00,0x00,0x0e,0x1e,0x80,0x07,0x00, 1293 0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x1f,0x3c, 1294 0xf0,0x00,0x0f,0xe0,0x01,0xf8,0x71,0x00,0x00,0x1e,0x1e,0x00,0x1f,0x00,0x0f, 1295 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x1f,0x3c,0xf0, 1296 0xff,0x03,0xe0,0x01,0xe0,0x33,0x00,0x00,0x1c,0x1e,0x00,0x3e,0x00,0x0f,0x00, 1297 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1298 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 1299 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1300 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 1301 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1302 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 1303 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1304 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 1305 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1306 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 1307 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1308 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 1309 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1310 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 1311 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1312 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1313 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1314 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1315 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1316 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1317 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0, 1318 0x03,0x00,0xfc,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1319 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x0f, 1320 0x00,0xfe,0x01,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1321 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x1c,0x00, 1322 0x87,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1323 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x18,0x00,0x03, 1324 0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1325 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x18,0x80,0x01,0x06, 1326 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1327 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x80,0x01,0x06,0xc0, 1328 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1329 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x80,0x01,0x06,0xc0,0x00, 1330 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1331 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0x80,0x01,0x06,0xc0,0x00,0x00, 1332 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1333 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,0x80,0x01,0x06,0xc0,0x00,0x00,0x00, 1334 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1335 0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x80,0x01,0x06,0xc0,0x00,0x00,0x00,0x00, 1336 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1337 0x00,0x00,0x00,0x00,0x00,0x30,0x80,0x01,0x06,0xc0,0x00,0x00,0x00,0x00,0x00, 1338 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1339 0x00,0x00,0x00,0x00,0x30,0x80,0x01,0x06,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 1340 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1341 0x00,0x00,0x00,0x30,0x80,0x01,0x06,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1342 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1343 0x00,0x0c,0x30,0x80,0x01,0x06,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1344 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1345 0x1c,0x38,0x00,0x03,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1346 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18, 1347 0x1c,0x00,0x87,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1348 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x0f, 1349 0x06,0xfe,0x01,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1350 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x03,0x06, 1351 0xfc,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1352 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1353 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1354 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1355 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1356 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 1357 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1358 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 1359 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1360 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 1361 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1362 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 1363 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1364 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 1365 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1366 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 1367 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1368 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 1369 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1370 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1371 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1372 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1373 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1374 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1375 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1376 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1377 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1378 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1379 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1380 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1381 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1382 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1383 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1384 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1385 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 1386 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1387 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 1388 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1389 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 1390 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1391 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 1392 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1393 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00, 1394 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1395 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 1396 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1397 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 1398 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1399 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1400 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1401 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1402 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1403 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1404 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1405 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1406 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1407 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1408 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1409 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1410 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1411 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1412 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1413 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1414 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 1415 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1416 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 1417 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1418 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 1419 0x00,0x80,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1420 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 1421 0x40,0x20,0x40,0x70,0x38,0x3c,0x00,0x82,0xc3,0xe1,0x40,0x90,0x00,0x00,0x48, 1422 0x00,0x00,0x78,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x20, 1423 0x46,0x60,0x88,0x44,0x04,0x00,0x43,0x24,0x12,0xc1,0x18,0x00,0x00,0x08,0x00, 1424 0x00,0x84,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x10,0x89, 1425 0x50,0x88,0x44,0x02,0x80,0x42,0x24,0x12,0xc0,0x98,0x18,0xe5,0x48,0x1a,0x0e, 1426 0x84,0x38,0x7f,0x44,0x8e,0x72,0x00,0x00,0xc0,0x00,0x00,0x00,0x90,0x90,0x40, 1427 0x88,0x44,0x1e,0x00,0x42,0x24,0xd2,0x40,0x95,0x24,0x13,0x49,0x26,0x11,0x04, 1428 0x44,0x52,0x44,0x91,0x89,0x00,0x00,0xc0,0x00,0x00,0x00,0x90,0x80,0x40,0xc8, 1429 0x64,0x22,0x00,0x42,0x26,0x33,0x41,0x95,0x04,0x11,0x49,0x22,0x11,0x78,0x44, 1430 0x92,0x2a,0x90,0x88,0x00,0x00,0xc0,0x00,0x00,0x00,0x90,0x80,0x40,0xb0,0x58, 1431 0x20,0x00,0x82,0xc5,0x12,0x41,0x95,0x04,0x11,0x49,0x22,0x1f,0x80,0x44,0x92, 1432 0x2a,0x9e,0xf8,0x00,0x00,0xc0,0x00,0x00,0x00,0x90,0x90,0x40,0x80,0x40,0x20, 1433 0x00,0x02,0x04,0x12,0x41,0x95,0x04,0x11,0x49,0x22,0x01,0x84,0x44,0x92,0x2a, 1434 0x91,0x08,0x00,0x00,0xc0,0x00,0x00,0x00,0x10,0x89,0x40,0x88,0x44,0x22,0x00, 1435 0x42,0x24,0x12,0x41,0x92,0x24,0x11,0x49,0x22,0x11,0x84,0x44,0x12,0x11,0x99, 1436 0x88,0x00,0x00,0xc0,0x00,0x00,0x00,0x20,0x46,0x40,0x70,0x38,0x1c,0x02,0x82, 1437 0xc3,0xe1,0x40,0x92,0x18,0xe1,0x48,0x22,0x0e,0x78,0x38,0x32,0x11,0x96,0x70, 1438 0x00,0x00,0xc0,0x00,0x00,0x00,0x40,0x20,0x00,0x00,0x00,0x00,0x02,0x00,0x00, 1439 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1440 0x00,0xc0,0x00,0x00,0x00,0x80,0x1f,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00, 1441 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1442 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1443 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 1444 }; 1445 1446 Pixmap coverPixmapW, coverPixmapB, coverPixmask; 1447 GC coverGC; 1448 1449 static void CoverExpose(); 1450 1451 void AddCoverTabForm(folder) 1452 Widget folder; 1453 { 1454 Widget form, da; 1455 Display *dpy; 1456 Window root; 1457 XmString str; 1458 1459 str = XmStringCreateSimple("Cover Page"); 1460 form = XmLFolderAddTabForm(folder, str); 1461 XmStringFree(str); 1462 CreatePixmap(form, 0, &coverPixmapW, &coverPixmask, 1463 (char *)cover_bits, cover_width, cover_height); 1464 CreatePixmap(form, 1, &coverPixmapB, &coverPixmask, 1465 (char *)cover_bits, cover_width, cover_height); 1466 1467 dpy = XtDisplay(form); 1468 root = DefaultRootWindow(dpy); 1469 coverGC = XCreateGC(dpy, root, 0, NULL); 1470 da = XtVaCreateManagedWidget("drawArea", 1471 xmDrawingAreaWidgetClass, form, 1472 XmNleftAttachment, XmATTACH_FORM, 1473 XmNrightAttachment, XmATTACH_FORM, 1474 XmNtopAttachment, XmATTACH_FORM, 1475 XmNbottomAttachment, XmATTACH_FORM, 1476 NULL); 1477 XtAddCallback(da, XmNexposeCallback, CoverExpose, NULL); 1478 1479 } 1480 1481 static void CoverExpose(w, clientData, callData) 1482 Widget w; 1483 XtPointer clientData, callData; 1484 { 1485 XRectangle rect; 1486 Pixel black, white; 1487 1488 XClearArea(XtDisplay(w), XtWindow(w), 0, 0, 0, 0, False); 1489 black = BlackPixelOfScreen(XtScreen(w)); 1490 white = WhitePixelOfScreen(XtScreen(w)); 1491 rect.x = 1; 1492 rect.y = 1; 1493 XtVaGetValues(w, 1494 XmNwidth, &rect.width, 1495 XmNheight, &rect.height, 1496 NULL); 1497 XmLPixmapDraw(w, coverPixmapW, coverPixmask, cover_width, cover_height, 1498 XmALIGNMENT_CENTER, coverGC, &rect, &rect); 1499 rect.x = 0; 1500 rect.y = 0; 1501 XmLPixmapDraw(w, coverPixmapB, coverPixmask, cover_width, cover_height, 1502 XmALIGNMENT_CENTER, coverGC, &rect, &rect); 1503 } 1504 1505 /* 1506 Intro Tab Form 1507 */ 1508 1509 #define logo_width 230 1510 #define logo_height 90 1511 static unsigned char logo_bits[] = { 1512 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1513 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 1514 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1515 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 1516 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1517 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00, 1518 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1519 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xf8,0xff,0xff,0xff, 1520 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1521 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0xf8,0xff,0xff,0xff,0xff, 1522 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1523 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0xf8,0xff,0xff,0xff,0xff,0x7f, 1524 0xf0,0xff,0xff,0xff,0x3f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1525 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x18,0xfc,0x3f,0x7c,0xf8,0x0f,0xc6, 1526 0x1f,0x00,0xfe,0x07,0xe0,0x3f,0xfc,0x1f,0x3e,0xfc,0x9f,0x0f,0x00,0xfe,0xff, 1527 0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x18,0xfc,0x3f,0x7c,0xf8,0x87,0xbf,0x1f, 1528 0x3e,0xf8,0xe3,0x87,0x3f,0xfc,0x1f,0x3e,0xf8,0x9f,0x0f,0xff,0xff,0xff,0xff, 1529 0xff,0xff,0xff,0xff,0x7f,0xc0,0x18,0xf8,0x1f,0x7c,0xf8,0xe3,0x3f,0x1f,0x7e, 1530 0xf8,0xf1,0x0f,0x3f,0xfc,0x1f,0x3e,0xf8,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff, 1531 0xff,0xff,0xff,0x7f,0xc0,0x18,0xf8,0x1f,0x7c,0xf8,0xf1,0x7f,0x1e,0xfe,0xf8, 1532 0xf0,0x1f,0x3e,0xfc,0x1f,0x3e,0xf0,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff, 1533 0xff,0xff,0x7f,0xc0,0x18,0xf0,0x0f,0x7c,0xf8,0xf0,0xff,0x1c,0xfe,0xf0,0xf8, 1534 0x1f,0x3e,0xfc,0x1f,0x3e,0xe0,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1535 0xff,0x7f,0xc0,0x18,0xf0,0x0f,0x7c,0xf8,0xf8,0xff,0x1f,0xfe,0x70,0xf8,0x3f, 1536 0x3c,0xfc,0x1f,0x3e,0xe1,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1537 0x7f,0xc0,0x98,0xf0,0x2f,0x7c,0x78,0xf8,0xff,0x1f,0xfe,0x70,0xfc,0x3f,0x3c, 1538 0xfc,0x1f,0x3e,0xc1,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 1539 0xc0,0x98,0xe0,0x27,0x7c,0x78,0xf8,0xff,0x1f,0xfe,0x30,0xfc,0x3f,0x3c,0xfc, 1540 0x1f,0x3e,0x83,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0, 1541 0x98,0xe1,0x27,0x7c,0x78,0xf8,0xff,0x1f,0xfe,0x30,0xfc,0x3f,0x38,0xfc,0x1f, 1542 0x3e,0x07,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98, 1543 0xc1,0x33,0x7c,0x38,0xfc,0xff,0x1f,0x7e,0x38,0xfc,0x3f,0x38,0xfc,0x1f,0x3e, 1544 0x07,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0xc3, 1545 0x33,0x7c,0x38,0xfc,0xff,0x1f,0x3e,0x38,0xfc,0x7f,0x38,0xfc,0x1f,0x3e,0x0f, 1546 0x9e,0x0f,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0xc3,0x3b, 1547 0x7c,0x38,0xfc,0xff,0x1f,0x02,0x3e,0xfc,0x7f,0x38,0xfc,0x1f,0x3e,0x1f,0x9c, 1548 0x0f,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x83,0x39,0x7c, 1549 0x38,0xfc,0xff,0x1f,0x86,0x3f,0xfc,0x7f,0x38,0xfc,0x1f,0x3e,0x1f,0x9c,0x0f, 1550 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x87,0x39,0x7c,0x38, 1551 0xfc,0xff,0x1f,0x86,0x3f,0xfc,0x7f,0x38,0xfc,0x1f,0x3e,0x3f,0x98,0x0f,0xff, 1552 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x07,0x3c,0x7c,0x38,0xf8, 1553 0xff,0x1f,0x0e,0x3f,0xfc,0x3f,0x38,0xfc,0x1f,0x3e,0x7f,0x90,0x0f,0xff,0xff, 1554 0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x0f,0x3c,0x7c,0x38,0xf8,0xff, 1555 0x1f,0x0e,0x3f,0xfc,0x3f,0x3c,0xfc,0x1f,0x3e,0xff,0x90,0x0f,0xff,0xff,0xff, 1556 0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x0f,0x3c,0x7c,0x78,0xf8,0xff,0x1f, 1557 0x1e,0x7e,0xfc,0x3f,0x3c,0xfc,0x1f,0x3e,0xff,0x80,0x0f,0xff,0xff,0xff,0xff, 1558 0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x0f,0x3e,0x7c,0x78,0xf8,0xff,0x19,0x1e, 1559 0x7e,0xf8,0x3f,0x3c,0xfc,0x1f,0x3e,0xff,0x81,0x0f,0xff,0xff,0xff,0xff,0xff, 1560 0xff,0xff,0xff,0x7f,0xc0,0x98,0x1f,0x3e,0x7c,0xf8,0xf0,0xff,0x1c,0x3e,0x7c, 1561 0xf8,0x1f,0x3e,0xfc,0x1f,0x3e,0xff,0x83,0x0f,0xff,0xff,0xff,0xff,0xff,0xff, 1562 0xff,0xff,0x7f,0xc0,0x98,0x1f,0x3f,0x7c,0xf8,0xe1,0x7f,0x1e,0x3e,0xfc,0xf8, 1563 0x1f,0x3f,0xfc,0x1f,0x3e,0xff,0x83,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1564 0xff,0x7f,0xc0,0x98,0x3f,0x3f,0x7c,0xf8,0xc1,0x3f,0x1e,0x7e,0xf8,0xf1,0x0f, 1565 0x3f,0xfc,0x1f,0x3e,0xff,0x87,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1566 0x7f,0xc0,0x98,0x3f,0x3f,0x7c,0xf8,0x07,0x0f,0x1f,0x7e,0xf8,0xe3,0x87,0x3f, 1567 0x00,0x18,0x3e,0xff,0x8f,0x0f,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x7f, 1568 0xc0,0x98,0xff,0x3f,0x7c,0xf8,0x0f,0xc0,0x1f,0xfe,0xf0,0x07,0xe0,0x3f,0x00, 1569 0x18,0x3e,0xff,0x8f,0x0f,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0, 1570 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1571 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0xf8, 1572 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1573 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0xf8,0xff, 1574 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 1575 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x00,0x00,0x00, 1576 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1577 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xe0,0x0f,0xf0,0x07, 1578 0xf8,0xf3,0x03,0xff,0xff,0x01,0x00,0xf0,0x1f,0x00,0xf8,0xff,0xff,0xfc,0xff, 1579 0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0,0x0f,0xf0,0x07,0xf8, 1580 0xf1,0x03,0xff,0xff,0x07,0x00,0xfe,0xff,0x00,0xf8,0xff,0xff,0xfc,0xff,0xff, 1581 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0,0x0f,0xf0,0x0f,0xf8,0xf1, 1582 0x03,0xff,0xff,0x1f,0x00,0xff,0xff,0x03,0xf8,0xff,0xff,0xfc,0xff,0xff,0x03, 1583 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0,0x1f,0xf0,0x0f,0xf8,0xf1,0x03, 1584 0xff,0xff,0x3f,0x80,0xff,0xff,0x07,0xf8,0xff,0xff,0xfc,0xff,0xff,0x03,0x00, 1585 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x80,0x1f,0xf8,0x0f,0xfc,0xf0,0x03,0x3f, 1586 0x80,0x7f,0xc0,0x1f,0xf0,0x0f,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x00, 1587 0x00,0x00,0x00,0x00,0x00,0xc0,0x80,0x1f,0xf8,0x0f,0xfc,0xf0,0x03,0x3f,0x00, 1588 0x7e,0xe0,0x0f,0xc0,0x1f,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00, 1589 0x00,0x00,0x00,0x00,0xc0,0x80,0x1f,0x78,0x1f,0xfc,0xf0,0x03,0x3f,0x00,0xfe, 1590 0xf0,0x07,0x80,0x1f,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00, 1591 0x00,0x00,0x00,0xc0,0x00,0x3f,0x78,0x1f,0x7c,0xf0,0x03,0x3f,0x00,0xfc,0xf0, 1592 0x03,0x00,0x00,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 1593 0x00,0x00,0xc0,0x00,0x3f,0x7c,0x1f,0x7e,0xf0,0x03,0x3f,0x00,0xfc,0xf1,0x03, 1594 0x00,0x00,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1595 0x00,0xc0,0x00,0x3f,0x7c,0x1f,0x7e,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x01,0x00, 1596 0x00,0xf8,0xff,0x7f,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1597 0xc0,0x00,0x3e,0x3c,0x3e,0x3e,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x01,0xfc,0x1f, 1598 0xf8,0xff,0x7f,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 1599 0x00,0x7e,0x3c,0x3e,0x3e,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x01,0xfc,0x1f,0xf8, 1600 0xff,0x7f,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 1601 0x7e,0x3e,0x3e,0x3f,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x01,0xfc,0x1f,0xf8,0xff, 1602 0x7f,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x7c, 1603 0x3e,0x3c,0x1f,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x01,0xfc,0x1f,0xf8,0x01,0x00, 1604 0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xfc,0x1e, 1605 0x7c,0x1f,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x03,0x00,0x1f,0xf8,0x01,0x00,0x00, 1606 0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xfc,0x1e,0x7c, 1607 0x1f,0xf0,0x03,0x3f,0x00,0xfc,0xf0,0x03,0x00,0x1f,0xf8,0x01,0x00,0x00,0xf8, 1608 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf8,0x1f,0xf8,0x0f, 1609 0xf0,0x03,0x3f,0x00,0xfe,0xf0,0x07,0x80,0x1f,0xf8,0x01,0x00,0x00,0xf8,0x01, 1610 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf8,0x0f,0xf8,0x0f,0xf0, 1611 0x03,0x3f,0x00,0x7e,0xe0,0x0f,0xc0,0x1f,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00, 1612 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf0,0x0f,0xf8,0x0f,0xf0,0x03, 1613 0x3f,0x80,0x7f,0xc0,0x3f,0xf0,0x1f,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00, 1614 0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf0,0x0f,0xf8,0x07,0xf0,0x03,0xff, 1615 0xff,0x3f,0x80,0xff,0xff,0x1f,0xf8,0xff,0xff,0x01,0xf8,0x01,0x00,0x00,0x00, 1616 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf0,0x0f,0xf0,0x07,0xf0,0x03,0xff,0xff, 1617 0x1f,0x00,0xff,0xff,0x1e,0xf8,0xff,0xff,0x01,0xf8,0x01,0x00,0x00,0x00,0x00, 1618 0x00,0x00,0x00,0x00,0xc0,0x00,0xe0,0x07,0xf0,0x07,0xf0,0x03,0xff,0xff,0x07, 1619 0x00,0xfc,0x7f,0x1e,0xf8,0xff,0xff,0x01,0xf8,0x01,0x00,0x00,0x00,0x00,0x00, 1620 0x00,0x00,0x00,0xc0,0x00,0xe0,0x07,0xf0,0x03,0xf0,0x03,0xff,0xff,0x01,0x00, 1621 0xe0,0x0f,0x1e,0xf8,0xff,0xff,0x01,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 1622 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1623 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1624 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1625 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1626 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1627 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0, 1628 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1629 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00, 1630 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1631 0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00, 1632 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0xff,0x0f,0xc0,0xff, 1633 0x1f,0x00,0x00,0x07,0x00,0xfc,0xff,0xc3,0x07,0x00,0x70,0xc0,0x00,0x00,0x00, 1634 0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x3e,0xc0,0x03,0x7e, 1635 0x00,0x00,0x07,0x00,0x3c,0xc0,0x87,0x0f,0x00,0x38,0xc0,0x00,0x00,0x00,0x00, 1636 0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xf0,0x00, 1637 0x80,0x0f,0x00,0x3c,0x00,0x1f,0x1f,0x00,0x1c,0xc0,0x00,0x00,0x00,0x00,0x00, 1638 0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xf0,0x01,0x80, 1639 0x0f,0x00,0x3c,0x00,0x1e,0x3e,0x00,0xce,0xcf,0x00,0x00,0x00,0x00,0x00,0x00, 1640 0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xe0,0x01,0xc0,0x1e, 1641 0x00,0x3c,0x00,0x1e,0x3c,0x00,0x87,0xce,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1642 0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xe0,0x01,0x60,0x3e,0x00, 1643 0x3c,0x00,0x1e,0x78,0x00,0x83,0xca,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1644 0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xf0,0x00,0x60,0x3c,0x00,0x3c, 1645 0x00,0x1e,0xf0,0x80,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, 1646 0x03,0x00,0x78,0xe0,0x01,0x38,0xc0,0x03,0xf0,0x00,0x30,0x78,0x00,0x3c,0x00, 1647 0x0f,0xf0,0xc1,0x01,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03, 1648 0x00,0x78,0xe0,0x01,0x0f,0xc0,0x03,0x7c,0x00,0x30,0x78,0x00,0x3c,0x80,0x07, 1649 0xe0,0xc3,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00, 1650 0x78,0xe0,0xff,0x01,0xc0,0xff,0x0f,0x00,0x18,0xf0,0x00,0xfc,0xff,0x00,0xc0, 1651 0x33,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78, 1652 0xe0,0x81,0x1f,0xc0,0xff,0x00,0x00,0x18,0xf0,0x01,0xfc,0x0f,0x00,0x80,0x3f, 1653 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0, 1654 0x01,0x3c,0xc0,0xfb,0x01,0x00,0xfc,0xff,0x01,0x3c,0x1f,0x00,0x00,0x1f,0x00, 1655 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01, 1656 0xf8,0xc0,0xf3,0x01,0x00,0xfe,0xff,0x03,0x3c,0x3e,0x00,0x00,0x1e,0x00,0xc0, 1657 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0xf0, 1658 0xc0,0xe3,0x07,0x00,0x06,0xc0,0x03,0x3c,0x7c,0x00,0x00,0x1e,0x00,0xc0,0x00, 1659 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0xf0,0xc0, 1660 0x83,0x0f,0x00,0x03,0x80,0x07,0x3c,0xf0,0x00,0x00,0x1e,0x00,0xc0,0x00,0x00, 1661 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0xf0,0xc0,0x03, 1662 0x0f,0x00,0x03,0x80,0x07,0x3c,0xe0,0x01,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00, 1663 0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0xf0,0xc0,0x03,0x3e, 1664 0x80,0x01,0x00,0x0f,0x3c,0xc0,0x07,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00,0x00, 1665 0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0xf0,0xc0,0x03,0x7c,0xc0, 1666 0x01,0x00,0x1e,0x3c,0x80,0x0f,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00,0x00,0x00, 1667 0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xf8,0xc0,0x00, 1668 0x00,0x1c,0x3c,0x00,0x0f,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00, 1669 0x00,0x00,0x80,0x03,0x3e,0x78,0xe0,0x01,0x1e,0xc0,0x03,0xf0,0xe3,0x00,0x00, 1670 0x3c,0x3c,0x00,0x3e,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1671 0x00,0x80,0xff,0x3f,0x78,0xe0,0xff,0x07,0xc0,0x03,0xc0,0x67,0x00,0x00,0x38, 1672 0x3c,0x00,0x7c,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1673 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1674 0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1675 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1676 0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1677 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1678 0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1679 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1680 0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1681 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1682 0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1683 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1684 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 1685 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0 1686 }; 1687 1688 void AddIntroTabForm(folder) 1689 Widget folder; 1690 { 1691 Widget form, label; 1692 Pixmap pixmap, pixmask; 1693 XmString str; 1694 static char *desc = 1695 "Welcome to a Quick Look at the Microline Widget Library version 3.0. \ 1696 This program presents an overview of widgets contained in the library.\ 1697 \n\n\ 1698 If you understand widget resources, you may want to try clicking the Editor \ 1699 button to display and edit some of the example widget''s resources. \ 1700 Please note that the editor is blank for the Cover Page and this \ 1701 Introduction screen.\ 1702 \n\n\ 1703 Further information on the library including pricing, supported platforms, \ 1704 licensing policies, etc. may be found on our web site \ 1705 http://www.mlsoft.com. You can also email us at info@mlsoft.com.\ 1706 \n\n\ 1707 Microline Widget Library is a trademark of Microline Software. \ 1708 All other trademarks are the property of their respective owners."; 1709 1710 str = XmStringCreateSimple("Introduction"); 1711 form = XmLFolderAddTabForm(folder, str); 1712 XmStringFree(str); 1713 CreatePixmap(form, 1, &pixmap, &pixmask, 1714 (char *)logo_bits, logo_width, logo_height); 1715 label = XtVaCreateManagedWidget("label", 1716 xmLabelWidgetClass, form, 1717 XmNlabelType, XmPIXMAP, 1718 XmNlabelPixmap, pixmap, 1719 XmNmarginHeight, 25, 1720 XmNtopAttachment, XmATTACH_FORM, 1721 XmNleftAttachment, XmATTACH_FORM, 1722 XmNrightAttachment, XmATTACH_FORM, 1723 NULL); 1724 1725 CreateText(form, desc, label, 0); 1726 } 1727 1728 /* 1729 Folder Tab Form 1730 */ 1731 1732 1733 #define sphere_width 10 1734 #define sphere_height 10 1735 static unsigned char sphere_bits[] = { 1736 0x00, 0x00, 0x78, 0x00, 0xf4, 0x00, 0xe2, 0x01, 0xf6, 0x01, 0xfe, 0x01, 1737 0xfe, 0x01, 0xfc, 0x00, 0x78, 0x00, 0x00, 0x00}; 1738 1739 1740 #define cross_width 10 1741 #define cross_height 10 1742 static unsigned char cross_bits[] = { 1743 0x00, 0x00, 0x30, 0x00, 0xb4, 0x00, 0x30, 0x00, 0xfe, 0x01, 0xfe, 0x01, 1744 0x30, 0x00, 0xb4, 0x00, 0x30, 0x00, 0x00, 0x00}; 1745 1746 static Pixmap spherePixmap; 1747 static Pixmap spherePixmask; 1748 static Pixmap crossPixmap; 1749 static Pixmap crossPixmask; 1750 1751 static void FolderSwitchCB(); 1752 1753 Widget _folder; 1754 1755 void AddFolderTabForm(folder) 1756 Widget folder; 1757 { 1758 Widget form, w, sampleForm; 1759 XmString str; 1760 int i; 1761 static char *labels[] = 1762 { 1763 "Configuration", "Appearance", "Documents", "Keys" }; 1764 static char *desc = 1765 "The Folder widget provides a folder containing single or \ 1766 multiple rows of tabs along the top, bottom, left or right \ 1767 and an area managed by the tabs in the center.\ 1768 \n\n\ 1769 The Folder One sample contains a single row of tabs with arc-style \ 1770 corners, each containing a pixmap image.\ 1771 \n\n\ 1772 The Folder Two sample also contains a single row of tabs but placed on the \ 1773 bottom with the \"none\" corner style. If you increase \ 1774 the width of the demo program, you will notice that this row of tabs \ 1775 will always fill the entire row with the individual tabs taking up \ 1776 a width proportional to their contents and the width of the row.\ 1777 \n\n\ 1778 The Folder Three sample contains tabs in 2 rows placed on the right. \ 1779 Again, the size of the tabs are proportional to the size of \ 1780 their contents and will fit to the row.\ 1781 \n\n\ 1782 The Folder is a Manager widget and each tab \ 1783 consists of a Primitive widget (usually a DrawnButton widget) \ 1784 surrounded by tab decorations including an optional pixmap. \ 1785 Any non-Primitive widget children of the Folder are placed in \ 1786 the center area. Tab widgets may be assigned a widget \ 1787 in the center area of the folder to display/manage when the \ 1788 tab is selected or the application can change the contents \ 1789 in the center area itself as tabs are selected.\ 1790 \n\n\ 1791 Resources exist to set the style of the corners, pixmaps \ 1792 to display in the tabs, number of tabs per row, \ 1793 various colors, sizes and spacing in and around the tabs. \ 1794 Also, since the tabs themselves \ 1795 have Primitive widgets like DrawnButtons inside of them, they \ 1796 retain all display abilities of their respective Primitive \ 1797 widgets. DrawnButton tabs, for example, may be displayed with \ 1798 different fonts, character sets, colors, alignments, etc.\ 1799 \n\n\ 1800 Tabs may be be added or deleted by adding or deleting \ 1801 Primitive-based widgets to the Folder. Callbacks are provided \ 1802 which can notify an application when a tab is activated, allowing \ 1803 the application to either accept or reject the activation.\ 1804 \n\n\ 1805 The 3.0 release adds multiple rows of tabs, improved tab layout \ 1806 and also a rewrite of the Folder''s geometry management.\ 1807 \n\n\ 1808 Keyboard traversal of the tabs is supported by using the arrow \ 1809 keys to move from one tab to the next. Tabs may be activated \ 1810 by either selection with the mouse or by activating their \ 1811 underlying Primitive widget. For example, DrawnButton tabs \ 1812 may be activated by pressing the space bar when focus is in the tab."; 1813 1814 form = AddWidgetSample(folder, "Folder", desc); 1815 _folder = XtVaCreateManagedWidget("sampleFolder", 1816 xmlFolderWidgetClass, form, 1817 XmNleftAttachment, XmATTACH_FORM, 1818 XmNtopAttachment, XmATTACH_FORM, 1819 XmNrightAttachment, XmATTACH_FORM, 1820 XmNbottomAttachment, XmATTACH_FORM, 1821 XmNmarginWidth, 4, 1822 NULL); 1823 CreatePixmap(_folder, 4, &spherePixmap, &spherePixmask, 1824 (char *)sphere_bits, sphere_width, sphere_height); 1825 CreatePixmap(_folder, 2, &crossPixmap, &crossPixmask, 1826 (char *)cross_bits, cross_width, cross_height); 1827 for (i = 0; i < 4; i++) 1828 { 1829 str = XmStringCreateSimple(labels[i]); 1830 w = XmLFolderAddTab(_folder, str); 1831 XmStringFree(str); 1832 if (i % 2) 1833 XtVaSetValues(w, 1834 XmNtabPixmap, crossPixmap, 1835 XmNtabInactivePixmap, crossPixmap, 1836 NULL); 1837 else 1838 XtVaSetValues(w, 1839 XmNtabPixmap, spherePixmap, 1840 XmNtabInactivePixmap, spherePixmap, 1841 NULL); 1842 } 1843 sampleForm = XtVaCreateManagedWidget("sampleForm", 1844 xmFormWidgetClass, _folder, 1845 NULL); 1846 str = XmStringCreateLtoR("\nSample Folder\nPage Area\n", 1847 XmSTRING_DEFAULT_CHARSET); 1848 XtVaCreateManagedWidget("label", 1849 xmLabelWidgetClass, sampleForm, 1850 XmNlabelString, str, 1851 XmNleftAttachment, XmATTACH_FORM, 1852 XmNrightAttachment, XmATTACH_FORM, 1853 XmNtopAttachment, XmATTACH_FORM, 1854 XmNbottomAttachment, XmATTACH_FORM, 1855 NULL); 1856 XmStringFree(str); 1857 1858 1859 XtAddCallback(XtParent(form), XmNactivateCallback, FolderSwitchCB, NULL); 1860 } 1861 1862 static void FolderSwitchCB(w, clientData, callData) 1863 Widget w; 1864 XtPointer clientData, callData; 1865 { 1866 XmLFolderCallbackStruct *cbs; 1867 1868 cbs = (XmLFolderCallbackStruct *)callData; 1869 if (cbs->pos == 0) 1870 XtVaSetValues(_folder, 1871 XmNcornerStyle, XmCORNER_ARC, 1872 XmNcornerDimension, 2, 1873 XmNtabPlacement, XmFOLDER_TOP, 1874 XmNtabsPerRow, 0, 1875 NULL); 1876 else if (cbs->pos == 1) 1877 XtVaSetValues(_folder, 1878 XmNcornerStyle, XmCORNER_NONE, 1879 XmNtabPlacement, XmFOLDER_BOTTOM, 1880 XmNtabsPerRow, 4, 1881 NULL); 1882 else 1883 XtVaSetValues(_folder, 1884 XmNcornerStyle, XmCORNER_ARC, 1885 XmNcornerDimension, 3, 1886 XmNtabPlacement, XmFOLDER_RIGHT, 1887 XmNtabsPerRow, 2, 1888 NULL); 1889 } 1890 1891 /* 1892 Grid Tab Form 1893 */ 1894 1895 static void GridSwitchCB(); 1896 static void GridSample1(); 1897 static void GridSample2(); 1898 static void GridSample3(); 1899 Widget _grid; 1900 1901 void AddGridTabForm(folder) 1902 Widget folder; 1903 { 1904 Widget form; 1905 XmString str; 1906 static char *desc = 1907 "The Grid widget provides an editable grid of \ 1908 cells containing text or images in rows and columns.\ 1909 \n\n\ 1910 The Grid One sample above is a multiple row selection Grid which \ 1911 allows column resizing by dragging column headings larger or smaller. \ 1912 It contains one heading row and has columns fixed on the left and right. \ 1913 The arrows in the Price column are an example of pixmap (image) cell \ 1914 types.\ 1915 \n\n\ 1916 The Grid Two sample demonstrates cell spanning (the 1995 Income \ 1917 Summary heading spans 2 columns) and control of cell borders, \ 1918 colors and alignment. This Grid is set to not allow selection.\ 1919 \n\n\ 1920 The Grid Three sample allows editing and is set to allow \ 1921 selection of mulitple rows, columns and/or cells. Note that an \ 1922 edit may be accepted by pressing Return or by moving to a new \ 1923 location and may be rejected with the Escape key. You may \ 1924 edit an existing cell''s contents using the F2 or Insert key. \ 1925 This Grid also supports interactive row and column resizing. \ 1926 Drag and drop is permitted by selecting an area to be dragged \ 1927 and performing a drag-and-drop operation (using mouse button 2) \ 1928 to copy the selected area to another location.\ 1929 \n\n\ 1930 The Grid includes a number of advanced features such as:\ 1931 \n\ 1932 - string (editable or non-editable XmString format) or pixmap cells\n\ 1933 - keyboard traversal using arrow keys, page keys, etc.\n\ 1934 - add, delete, reorder, move and hiding of rows/columns\n\ 1935 - heading, content and footer rows/columns\n\ 1936 - top, bottom, left and/or right fixed rows/columns\n\ 1937 - rows/column intelligently size to cell fonts/images\n\ 1938 - user-adjustable row/column sizes\n\ 1939 - cells may span rows/columns\n\ 1940 - full control of cell borders and colors\n\ 1941 - 9 cell alignment options (top-left, center, etc)\n\ 1942 - uses reference-counted cell attributes to save memory\n\ 1943 - SetValues on ranges of cells/rows/columns\n\ 1944 - callbacks for select, activate, draw, edit, focus, etc.\n\ 1945 - cut, paste, drag and drop of cell contents\n\ 1946 - ASCII file import and export\ 1947 \n\n\ 1948 The Grid widget is ideal for replacing single-column Motif \ 1949 scrolled lists with multi-column lists. Its also perfect for creating \ 1950 high-performance tables. Tables may be created where the data \ 1951 displayed is not kept in the Grid itself but retrieved from a \ 1952 database when it needs to be displayed. This direct database \ 1953 access can save memory and time loading/storing the table. \ 1954 Click-sorting may be added to the table to allow a user to \ 1955 sort rows by clicking on a column heading.\ 1956 \n\n\ 1957 Cell attributes in the Grid are reference counted. If a number \ 1958 of cells in the Grid have similar attributes (color, fonts, etc) \ 1959 they may all contain a pointer to the same attributes structure \ 1960 instead of creating an attributes structure for each individual \ 1961 cell. This reference counting is transparent to a programmer \ 1962 creating a Grid.\ 1963 \n\n\ 1964 Cells may have borders set on the top, bottom, left and right and \ 1965 have a number of color/alignment options. Keyboard traversal is \ 1966 provided using the standard Motif key mappings of Page Up, \ 1967 Page Down, Home, etc. Selection modes are provided to allow \ 1968 selection of a single row (browse mode or single mode), multiple \ 1969 rows and arbitrary regions of rows, columns and cells. \ 1970 Functions are provided to easily import data to and from text \ 1971 files.\ 1972 \n\n\ 1973 The 3.0 release has added resources allowing you to specify cell \ 1974 defaults on a per-column basis (e.g. all cells in column 2 will be \ 1975 editable). Also, the Grid''s layout has improved for sizing policies \ 1976 where scrollbars appear as needed. The Grid now will use all the \ 1977 space it can for data instead of not using the space where the \ 1978 scrollbars would appear. \ 1979 \n\n\ 1980 A number of resources have been added in the 3.0 release to support \ 1981 better integration with interface builders. You can now add and \ 1982 delete rows and also set column widths and simple headings through \ 1983 resources.\ 1984 \n\n\ 1985 Internally the Grid is a Manager widget which contains two \ 1986 ScrollBar children and one Text widget child."; 1987 1988 form = AddWidgetSample(folder, "Grid", desc); 1989 1990 _grid = XtVaCreateManagedWidget("grid", 1991 xmlGridWidgetClass, form, 1992 XmNleftAttachment, XmATTACH_FORM, 1993 XmNrightAttachment, XmATTACH_FORM, 1994 XmNtopAttachment, XmATTACH_FORM, 1995 XmNbottomAttachment, XmATTACH_FORM, 1996 NULL); 1997 GridSample1(); 1998 XtAddCallback(XtParent(form), XmNactivateCallback, GridSwitchCB, NULL); 1999 } 2000 2001 static void GridSwitchCB(w, clientData, callData) 2002 Widget w; 2003 XtPointer clientData, callData; 2004 { 2005 XmLFolderCallbackStruct *cbs; 2006 Pixel bg; 2007 2008 cbs = (XmLFolderCallbackStruct *)callData; 2009 2010 /* reset defaults to grid */ 2011 XtVaSetValues(_grid, 2012 XmNallowDragSelected, False, 2013 XmNallowDrop, False, 2014 XmNallowColumnResize, False, 2015 XmNallowRowResize, False, 2016 XmNhighlightRowMode, False, 2017 XmNheadingRows, 0, 2018 XmNrows, 0, 2019 XmNfooterRows, 0, 2020 XmNheadingColumns, 0, 2021 XmNcolumns, 0, 2022 XmNfooterColumns, 0, 2023 XmNshadowThickness, 2, 2024 XmNtopFixedCount, 0, 2025 XmNbottomFixedCount, 0, 2026 XmNleftFixedCount, 0, 2027 XmNrightFixedCount, 0, 2028 NULL); 2029 XtVaGetValues(_grid, 2030 XmNbackground, &bg, 2031 NULL); 2032 XtVaSetValues(_grid, 2033 XmNcellDefaults, True, 2034 XmNcellBackground, bg, 2035 XmNcellAlignment, XmALIGNMENT_CENTER, 2036 XmNcellLeftBorderType, XmBORDER_LINE, 2037 XmNcellRightBorderType, XmBORDER_LINE, 2038 XmNcellTopBorderType, XmBORDER_LINE, 2039 XmNcellBottomBorderType, XmBORDER_LINE, 2040 NULL); 2041 2042 if (cbs->pos == 0) 2043 GridSample1(); 2044 else if (cbs->pos == 1) 2045 GridSample2(); 2046 else 2047 GridSample3(); 2048 } 2049 2050 static Pixmap upPixmap = XmUNSPECIFIED_PIXMAP; 2051 static Pixmap upPixmask; 2052 static Pixmap downPixmap = XmUNSPECIFIED_PIXMAP; 2053 static Pixmap downPixmask; 2054 2055 #define up_width 12 2056 #define up_height 16 2057 static unsigned char up_bits[] = { 2058 0x00, 0x00, 0x60, 0x00, 0xf0, 0x00, 0xf8, 0x01, 0xfc, 0x03, 0xfe, 0x07, 2059 0xfe, 0x07, 0xf6, 0x06, 0xf2, 0x04, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 2060 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x00, 0x00}; 2061 2062 #define down_width 12 2063 #define down_height 16 2064 static unsigned char down_bits[] = { 2065 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 2066 0xf0, 0x00, 0xf2, 0x04, 0xf6, 0x06, 0xfe, 0x07, 0xfe, 0x07, 0xfc, 0x03, 2067 0xf8, 0x01, 0xf0, 0x00, 0x60, 0x00, 0x00, 0x00}; 2068 2069 static void GridSample1() 2070 { 2071 static char *data = 2072 "Name|Price||Change|Close Date|Location|Yield\n\ 2073 TZZ 3.0 Tana Zin|102.23||-1.2|1/1/94|Tomano, RE|5.6%\n\ 2074 BLC 4.5 Board L|103.23||+2.5|2/15/94|Rino, LO|6.8%\n\ 2075 DGB 5.4 Dig Gen|101.53||+3.7|6/20/94|Carolana, CA|7.5%\n\ 2076 KLC 5.3 Kord L|108.98||-2.5|2/15/94|Cannes, CA|8.7%\n\ 2077 LLO 3.4 Liw Lol|107.24||+2.2|2/20/94|Tenise, MI|6.7%\n\ 2078 MMN 3.1 Mon Mor|105.63||+1.4|2/15/94|Waterton, MN|6.3%\n\ 2079 PLP 4.3 Pol Lab|102.12||-2.3|2/20/94|Holard, LM|7.6%\n\ 2080 SZN 4.5 Siml Zi|101.11||+1.6|2/15/94|Tempest, CA|5.4%\n\ 2081 TTL 5.6 Towa Tin|101.12||+2.7|3/15/94|Conila, OK|6.7%\n\ 2082 ULD 5.4 Upl La D|105.12||-2.2|4/15/94|Mandrill, HI|7.8%"; 2083 2084 XtVaSetValues(_grid, XmNlayoutFrozen, True, NULL); 2085 2086 XtVaSetValues(_grid, 2087 XmNallowColumnResize, True, 2088 XmNselectionPolicy, XmSELECT_MULTIPLE_ROW, 2089 XmNhighlightRowMode, True, 2090 XmNheadingRows, 1, 2091 XmNcolumns, 7, 2092 XmNsimpleWidths, "18c 8c 16p 8c 12c 16c 6c", 2093 XmNrightFixedCount, 1, 2094 XmNleftFixedCount, 1, 2095 NULL); 2096 XtVaSetValues(_grid, 2097 XmNcellDefaults, True, 2098 XtVaTypedArg, XmNcellBackground, XmRString, "white", 6, 2099 XmNcellLeftBorderType, XmBORDER_NONE, 2100 XmNcellRightBorderType, XmBORDER_NONE, 2101 XmNcellTopBorderType, XmBORDER_NONE, 2102 XmNcellBottomBorderType, XmBORDER_NONE, 2103 NULL); 2104 XtVaSetValues(_grid, 2105 XmNrowType, XmHEADING, 2106 XmNcolumn, 1, 2107 XmNcellColumnSpan, 1, 2108 NULL); 2109 XtVaSetValues(_grid, 2110 XmNcellDefaults, True, 2111 XmNcellAlignment, XmALIGNMENT_RIGHT, 2112 NULL); 2113 XtVaSetValues(_grid, 2114 XmNcellDefaults, True, 2115 XmNcolumn, 0, 2116 XmNcellAlignment, XmALIGNMENT_LEFT, 2117 NULL); 2118 XtVaSetValues(_grid, 2119 XmNcellDefaults, True, 2120 XmNcolumn, 1, 2121 XmNcellRightBorderType, XmBORDER_NONE, 2122 NULL); 2123 XtVaSetValues(_grid, 2124 XmNcellDefaults, True, 2125 XmNcolumn, 2, 2126 XmNcellType, XmPIXMAP_CELL, 2127 XmNcellLeftBorderType, XmBORDER_NONE, 2128 NULL); 2129 XmLGridAddRows(_grid, XmCONTENT, -1, 10); 2130 XmLGridSetStrings(_grid, data); 2131 2132 if (upPixmap == XmUNSPECIFIED_PIXMAP) 2133 CreatePixmap(_grid, 2, &upPixmap, &upPixmask, 2134 (char *)up_bits, up_width, up_height); 2135 if (downPixmap == XmUNSPECIFIED_PIXMAP) 2136 CreatePixmap(_grid, 3, &downPixmap, &downPixmask, 2137 (char *)down_bits, down_width, down_height); 2138 XtVaSetValues(_grid, 2139 XmNcolumn, 2, 2140 XmNcellPixmap, upPixmap, 2141 XmNcellPixmapMask, upPixmask, 2142 NULL); 2143 XtVaSetValues(_grid, 2144 XmNcolumn, 2, 2145 XmNrowStep, 3, 2146 XmNcellPixmap, downPixmap, 2147 XmNcellPixmapMask, downPixmask, 2148 NULL); 2149 2150 XtVaSetValues(_grid, XmNlayoutFrozen, False, NULL); 2151 } 2152 2153 2154 static void GridSample2() 2155 { 2156 static char *data = 2157 "|1995 Income Summary\n\ 2158 |Shampoo|Conditioner|Soap|Total\n\ 2159 Revenues:\n\ 2160 Sales|$ 1,600,000|$ 1,000,000|$ 800,000|$ 3,400,000\n\ 2161 Less Discounts|(16,000)|(10,000)|(8,000)|(34,000)\n\ 2162 Less Return Allowance|(8,000)|(5,000)|(4,000)|(17,000)\n\ 2163 Net Revenue|1,576,000|985,000|792,000|3,349,000\n\ 2164 \n\ 2165 Less Expenses:\n\ 2166 Cost of Goods Sold|(640,000)|(330,000)|(264,000)|(1,234,000)\n\ 2167 Salary Expense|(380,000)|(280,000)|(180,000)|(840,000)\n\ 2168 Marketing Expense|(157,600)|(98,500)|(79,200)|(335,300)\n\ 2169 Rent Expense|(36,000)|(36,000)|(36,000)|(108,000)\n\ 2170 Misc. Other Expense|(36,408)|(22,335)|(16,776)|(75,519)\n\ 2171 Total Expenses|(1,250,008)|(766,835)|(575,976)|(2,592,819)\n\ 2172 \n\ 2173 Income Tax Expense|(130,397)|(87,266)|(86,410)|(304,072)\n\ 2174 Net Income|195,595|130,899|129,614|456,109"; 2175 2176 XtVaSetValues(_grid, XmNlayoutFrozen, True, NULL); 2177 2178 XtVaSetValues(_grid, 2179 XmNheadingColumns, 1, 2180 XmNcolumns, 3, 2181 XmNfooterColumns, 1, 2182 XmNsimpleWidths, "22c 12c 12c 12c 12c", 2183 XmNselectionPolicy, XmSELECT_NONE, 2184 NULL); 2185 2186 /* add 'Income Summary' heading row */ 2187 XtVaSetValues(_grid, 2188 XmNcellDefaults, True, 2189 XmNcellLeftBorderType, XmBORDER_NONE, 2190 XmNcellRightBorderType, XmBORDER_NONE, 2191 XmNcellTopBorderType, XmBORDER_NONE, 2192 XtVaTypedArg, XmNcellBottomBorderColor, XmRString, "black", 6, 2193 XmNcellAlignment, XmALIGNMENT_CENTER, 2194 XtVaTypedArg, XmNcellForeground, XmRString, "#000080", 8, 2195 NULL); 2196 XmLGridAddRows(_grid, XmHEADING, -1, 1); 2197 XtVaSetValues(_grid, 2198 XmNrowType, XmHEADING, 2199 XmNrow, 0, 2200 XmNcolumn, 0, 2201 XmNcellColumnSpan, 2, 2202 NULL); 2203 2204 /* add 'Shampoo Conditioner Soap' heading row */ 2205 XtVaSetValues(_grid, 2206 XmNcellDefaults, True, 2207 XtVaTypedArg, XmNcellBackground, XmRString, "white", 6, 2208 XtVaTypedArg, XmNcellForeground, XmRString, "black", 6, 2209 XmNcellBottomBorderType, XmBORDER_NONE, 2210 NULL); 2211 XmLGridAddRows(_grid, XmHEADING, -1, 1); 2212 2213 /* bold heading rows */ 2214 XtVaSetValues(_grid, 2215 XmNrowType, XmHEADING, 2216 XmNcolumnType, XmALL_TYPES, 2217 XtVaTypedArg, XmNcellFontList, XmRString, 2218 BOLDFONT, strlen(BOLDFONT) + 1, 2219 NULL); 2220 2221 /* add content and footer rows */ 2222 XtVaSetValues(_grid, 2223 XmNcellDefaults, True, 2224 XmNcellAlignment, XmALIGNMENT_RIGHT, 2225 NULL); 2226 XmLGridAddRows(_grid, XmCONTENT, -1, 15); 2227 XmLGridAddRows(_grid, XmFOOTER, -1, 1); 2228 2229 /* left justify left-most (heading) column */ 2230 XtVaSetValues(_grid, 2231 XmNcolumn, 0, 2232 XmNcolumnType, XmHEADING, 2233 XmNrowType, XmALL_TYPES, 2234 XmNcellAlignment, XmALIGNMENT_LEFT, 2235 NULL); 2236 2237 /* bold 'Revenues' cell */ 2238 XtVaSetValues(_grid, 2239 XmNcolumnType, XmHEADING, 2240 XmNcolumn, 0, 2241 XmNrow, 0, 2242 XtVaTypedArg, XmNcellFontList, XmRString, 2243 BOLDFONT, strlen(BOLDFONT) + 1, 2244 NULL); 2245 2246 /* bold 'Less Expenses' cell */ 2247 XtVaSetValues(_grid, 2248 XmNcolumnType, XmHEADING, 2249 XmNcolumn, 0, 2250 XmNrow, 6, 2251 XtVaTypedArg, XmNcellFontList, XmRString, 2252 BOLDFONT, strlen(BOLDFONT) + 1, 2253 NULL); 2254 2255 /* grey middle and footer content column */ 2256 XtVaSetValues(_grid, 2257 XmNrowType, XmALL_TYPES, 2258 XmNcolumnType, XmALL_TYPES, 2259 XmNcolumnRangeStart, 2, 2260 XmNcolumnRangeEnd, 4, 2261 XmNcolumnStep, 2, 2262 XtVaTypedArg, XmNcellBackground, XmRString, "#E8E8E8", 8, 2263 NULL); 2264 2265 /* set 'Income Summary' heading row yellow */ 2266 XtVaSetValues(_grid, 2267 XmNcolumnType, XmALL_TYPES, 2268 XmNrowType, XmHEADING, 2269 XmNrow, 0, 2270 XtVaTypedArg, XmNcellBackground, XmRString, "#FFFF00", 8, 2271 NULL); 2272 2273 /* blue and bold 'Net Revenue' and 'Total Expenses' rows */ 2274 XtVaSetValues(_grid, 2275 XmNrowRangeStart, 4, 2276 XmNrowRangeEnd, 12, 2277 XmNrowStep, 8, 2278 XmNcolumnType, XmALL_TYPES, 2279 XtVaTypedArg, XmNcellForeground, XmRString, "white", 6, 2280 XtVaTypedArg, XmNcellBackground, XmRString, "#000080", 8, 2281 XtVaTypedArg, XmNcellFontList, XmRString, 2282 BOLDFONT, strlen(BOLDFONT) + 1, 2283 NULL); 2284 2285 /* blue and bold 'Net Income' footer row */ 2286 XtVaSetValues(_grid, 2287 XmNrow, 0, 2288 XmNrowType, XmFOOTER, 2289 XmNcolumnType, XmALL_TYPES, 2290 XtVaTypedArg, XmNcellForeground, XmRString, "white", 6, 2291 XtVaTypedArg, XmNcellBackground, XmRString, "#000080", 8, 2292 XtVaTypedArg, XmNcellFontList, XmRString, 2293 BOLDFONT, strlen(BOLDFONT) + 1, 2294 NULL); 2295 XmLGridSetStrings(_grid, data); 2296 2297 XtVaSetValues(_grid, XmNlayoutFrozen, False, NULL); 2298 2299 } 2300 2301 static void GridSample3() 2302 { 2303 char buf[4]; 2304 int i; 2305 2306 XtVaSetValues(_grid, XmNlayoutFrozen, True, NULL); 2307 2308 XtVaSetValues(_grid, 2309 XmNallowDragSelected, True, 2310 XmNallowDrop, True, 2311 XmNhsbDisplayPolicy, XmSTATIC, 2312 XmNvsbDisplayPolicy, XmSTATIC, 2313 XmNselectionPolicy, XmSELECT_CELL, 2314 XmNallowColumnResize, True, 2315 XmNallowRowResize, True, 2316 XmNshadowThickness, 1, 2317 NULL); 2318 XtVaSetValues(_grid, 2319 XmNcellDefaults, True, 2320 XmNcellEditable, True, 2321 XmNcellAlignment, XmALIGNMENT_RIGHT, 2322 XtVaTypedArg, XmNcellBackground, XmRString, "white", 6, 2323 XmNcellLeftBorderType, XmBORDER_NONE, 2324 XmNcellTopBorderType, XmBORDER_NONE, 2325 NULL); 2326 XtVaSetValues(_grid, 2327 XmNheadingRows, 1, 2328 XmNheadingColumns, 1, 2329 XmNcolumns, 26, 2330 XmNrows, 100, 2331 NULL); 2332 2333 XtVaSetValues(_grid, XmNlayoutFrozen, False, NULL); 2334 for (i = 0; i < 26; i++) 2335 { 2336 sprintf(buf, "%c", 'A' + i); 2337 XmLGridSetStringsPos(_grid, XmHEADING, 0, XmCONTENT, i, buf); 2338 } 2339 for (i = 0; i < 100; i++) 2340 { 2341 sprintf(buf, "%d", i + 1); 2342 XmLGridSetStringsPos(_grid, XmCONTENT, i, XmHEADING, 0, buf); 2343 } 2344 XtVaSetValues(_grid, 2345 XmNrowType, XmALL_TYPES, 2346 XmNcolumnType, XmHEADING, 2347 XmNcolumn, 0, 2348 XmNcellAlignment, XmALIGNMENT_CENTER, 2349 XtVaTypedArg, XmNcellBackground, XmRString, "#C0C0C0", 8, 2350 XtVaTypedArg, XmNcellFontList, XmRString, 2351 BOLDFONT, strlen(BOLDFONT) + 1, 2352 XmNcellLeftBorderType, XmBORDER_LINE, 2353 XmNcellTopBorderType, XmBORDER_LINE, 2354 NULL); 2355 XtVaSetValues(_grid, 2356 XmNrowType, XmHEADING, 2357 XmNrow, 0, 2358 XmNcellAlignment, XmALIGNMENT_CENTER, 2359 XtVaTypedArg, XmNcellBackground, XmRString, "#C0C0C0", 8, 2360 XtVaTypedArg, XmNcellFontList, XmRString, 2361 BOLDFONT, strlen(BOLDFONT) + 1, 2362 XmNcellLeftBorderType, XmBORDER_LINE, 2363 XmNcellTopBorderType, XmBORDER_LINE, 2364 NULL); 2365 } 2366 2367 /* 2368 Progress Tab Form 2369 */ 2370 2371 static void ProgSwitchCB(); 2372 static void ProgSweepCB(); 2373 Widget _progress; 2374 2375 void AddProgTabForm(folder) 2376 Widget folder; 2377 { 2378 Widget form, button; 2379 XmString str; 2380 static char *desc = 2381 "The Progress widget may be used to chart the completion of a task.\ 2382 \n\n\ 2383 The Progress One sample displays a standard bar-style Progress widget. \ 2384 You may press the Quick Sweep or the Slow Sweep button to chart progress \ 2385 of a simulated task.\ 2386 \n\n\ 2387 The Progress Two sample displays a box-style Progress widget with 20 boxes.\ 2388 \n\n\ 2389 The Progress Three sample contains a bar-style Progress widget which \ 2390 displays elapsed time and estimated time to completion. \ 2391 Press the Slow Sweep button to display this behavior. These \ 2392 times are calculated automatically by the Progress widget. \ 2393 \n\n\ 2394 Resources exist to set colors, fonts, shadows, the style of the \ 2395 meter bar and the values used to determine level of completeness. \ 2396 \n\n\ 2397 The Progress widget is a subclasss of the Primitive widget."; 2398 2399 form = AddWidgetSample(folder, "Progress", desc); 2400 _progress = XtVaCreateManagedWidget("progress", 2401 xmlProgressWidgetClass, form, 2402 XmNleftAttachment, XmATTACH_FORM, 2403 XmNrightAttachment, XmATTACH_FORM, 2404 XmNtopAttachment, XmATTACH_POSITION, 2405 XmNtopPosition, 30, 2406 XmNheight, 24, 2407 XmNvalue, 50, 2408 XtVaTypedArg, XmNforeground, XmRString, "#0000C0", 8, 2409 XtVaTypedArg, XmNbackground, XmRString, "white", 6, 2410 NULL); 2411 button = XtVaCreateManagedWidget("Quick Sweep", 2412 xmPushButtonWidgetClass, form, 2413 XmNbottomAttachment, XmATTACH_FORM, 2414 XmNrightAttachment, XmATTACH_FORM, 2415 XmNmarginWidth, 15, 2416 NULL); 2417 XtAddCallback(button, XmNactivateCallback, ProgSweepCB, (XtPointer)1); 2418 button = XtVaCreateManagedWidget("Slow Sweep", 2419 xmPushButtonWidgetClass, form, 2420 XmNrightAttachment, XmATTACH_WIDGET, 2421 XmNrightWidget, button, 2422 XmNbottomAttachment, XmATTACH_FORM, 2423 XmNmarginWidth, 15, 2424 NULL); 2425 XtAddCallback(button, XmNactivateCallback, ProgSweepCB, (XtPointer)0); 2426 XtAddCallback(XtParent(form), XmNactivateCallback, ProgSwitchCB, NULL); 2427 } 2428 2429 static void ProgSwitchCB(w, clientData, callData) 2430 Widget w; 2431 XtPointer clientData, callData; 2432 { 2433 XmLFolderCallbackStruct *cbs; 2434 2435 cbs = (XmLFolderCallbackStruct *)callData; 2436 if (cbs->pos == 0) 2437 XtVaSetValues(_progress, 2438 XmNvalue, 50, 2439 XmNshadowThickness, 2, 2440 XmNmeterStyle, XmMETER_BAR, 2441 XtVaTypedArg, XmNforeground, XmRString, "#0000C0", 8, 2442 XmNshowTime, False, 2443 NULL); 2444 else if (cbs->pos == 1) 2445 XtVaSetValues(_progress, 2446 XmNvalue, 50, 2447 XmNshadowThickness, 1, 2448 XmNmeterStyle, XmMETER_BOXES, 2449 XmNnumBoxes, 20, 2450 XtVaTypedArg, XmNforeground, XmRString, "#0000C0", 8, 2451 XmNshowTime, False, 2452 NULL); 2453 else 2454 XtVaSetValues(_progress, 2455 XmNvalue, 50, 2456 XmNshadowThickness, 2, 2457 XmNmeterStyle, XmMETER_BAR, 2458 XtVaTypedArg, XmNforeground, XmRString, "#E00000", 8, 2459 XmNshowTime, True, 2460 NULL); 2461 } 2462 2463 static void ProgSweepCB(w, clientData, callData) 2464 Widget w; 2465 XtPointer clientData; 2466 XtPointer callData; 2467 { 2468 int i, quickSweep; 2469 2470 quickSweep = (int)clientData; 2471 if (quickSweep) 2472 for (i = 0; i <= 100; i += 4) 2473 XtVaSetValues(_progress, 2474 XmNvalue, i, 2475 NULL); 2476 else 2477 { 2478 for (i = 0; i <= 100; i += 23) 2479 { 2480 XtVaSetValues(_progress, 2481 XmNvalue, i, 2482 NULL); 2483 sleep(1); 2484 } 2485 XtVaSetValues(_progress, 2486 XmNvalue, 100, 2487 NULL); 2488 } 2489 } 2490 2491 /* 2492 Tree Tab Form 2493 */ 2494 2495 static void TreeSwitchCB(); 2496 static void TreeSample(); 2497 Widget _tree; 2498 2499 void AddTreeTabForm(folder) 2500 Widget folder; 2501 { 2502 Widget form, w; 2503 XmString str; 2504 static char *desc = 2505 "The Tree widget may be used to display hierarchical data and \ 2506 parent-child relationships.\ 2507 \n\n\ 2508 The Tree One sample contains a simple Tree in browse select mode. \ 2509 Note that horizontal scrolling is on a per-pixel basis while vertical \ 2510 scrolling is on a per-row basis and the horizontal and vertical \ 2511 scrollbars only appear as needed. The plus and minus indicators \ 2512 may be used to expand and collapse rows. Activating a row \ 2513 with Return or by double clicking on it will toggle the expanded \ 2514 state of the row.\ 2515 \n\n\ 2516 The Tree Two sample contains a Tree in multiple row select mode with \ 2517 application defined pixmaps.\ 2518 \n\n\ 2519 The Tree Three sample displays a Tree in browse select mode containing \ 2520 multiple columns. The columns support interactive resizing by \ 2521 dragging a column heading larger or smaller.\ 2522 \n\n\ 2523 The Tree widget is a subclass of the Grid, meaning it includes all the \ 2524 functionality of the Grid widget. This includes selection policies \ 2525 of single row, multiple row, etc. as well as full control over colors, \ 2526 fonts, alignment, borders, etc. on a per-cell basis. The Tree \ 2527 also supports all the other features of the Grid, including heading, \ 2528 content and footer rows and columns, various cell types etc.\ 2529 \n\n\ 2530 An application may add rows to the Tree and let the Tree handle \ 2531 the expansion and collapse of rows, or for large trees, \ 2532 an application may handle the expansion and collapse of rows \ 2533 by adding (creating) and deleting rows dynamically as needed.\ 2534 \n\n\ 2535 Resources exist to set the indent level, various colors of the \ 2536 Tree, etc. As stated earlier, the Tree also contains all the \ 2537 resources available in the Grid.\ 2538 \n\n\ 2539 This widget is new in the 3.0 release."; 2540 2541 form = AddWidgetSample(folder, "Tree", desc); 2542 _tree = XtVaCreateManagedWidget("tree", 2543 xmlTreeWidgetClass, form, 2544 XmNleftAttachment, XmATTACH_FORM, 2545 XmNrightAttachment, XmATTACH_FORM, 2546 XmNtopAttachment, XmATTACH_FORM, 2547 XmNbottomAttachment, XmATTACH_FORM, 2548 NULL); 2549 TreeSample(0); 2550 XtAddCallback(XtParent(form), XmNactivateCallback, TreeSwitchCB, NULL); 2551 } 2552 2553 static void TreeSwitchCB(w, clientData, callData) 2554 Widget w; 2555 XtPointer clientData, callData; 2556 { 2557 XmLFolderCallbackStruct *cbs; 2558 2559 cbs = (XmLFolderCallbackStruct *)callData; 2560 TreeSample(cbs->pos); 2561 } 2562 2563 #define dot_width 16 2564 #define dot_height 16 2565 static unsigned char dot_bits[] = { 2566 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xe0, 0x0f, 0xb0, 0x1f, 2567 0x18, 0x3f, 0xb8, 0x3f, 0xf8, 0x3f, 0xf8, 0x3f, 0xf8, 0x3f, 0xf0, 0x1f, 2568 0xe0, 0x0f, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00}; 2569 2570 #define win_width 16 2571 #define win_height 16 2572 static unsigned char win_bits[] = { 2573 0x00, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x08, 0x40, 0xe8, 0x6f, 0xe8, 0x61, 2574 0xe8, 0x61, 0xe8, 0x61, 0x28, 0x60, 0x28, 0x60, 0x28, 0x60, 0x08, 0x60, 2575 0x08, 0x60, 0xe8, 0x7f, 0xf0, 0x7f, 0x00, 0x00}; 2576 2577 static Pixmap dotPixmap = XmUNSPECIFIED_PIXMAP; 2578 static Pixmap dotPixmask; 2579 static Pixmap winPixmap = XmUNSPECIFIED_PIXMAP; 2580 static Pixmap winPixmask; 2581 2582 static void TreeSample(num) 2583 int num; 2584 { 2585 XmLTreeRowDefinition *rows; 2586 int i, n, size, level; 2587 Pixel bg; 2588 char buf[80]; 2589 static struct 2590 { 2591 Boolean expands; 2592 int level; 2593 } defs[10] = 2594 { 2595 True, 0, 2596 True, 1, 2597 True, 2, 2598 False, 3, 2599 False, 2, 2600 False, 2, 2601 True, 1, 2602 False, 2, 2603 False, 2, 2604 True, 2, 2605 }; 2606 2607 if (dotPixmap == XmUNSPECIFIED_PIXMAP) 2608 CreatePixmap(_tree, 4, &dotPixmap, &dotPixmask, 2609 (char *)dot_bits, dot_width, dot_height); 2610 if (winPixmap == XmUNSPECIFIED_PIXMAP) 2611 CreatePixmap(_tree, 1, &winPixmap, &winPixmask, 2612 (char *)win_bits, win_width, win_height); 2613 2614 XtVaSetValues(_tree, 2615 XmNlayoutFrozen, True, 2616 NULL); 2617 2618 XmLGridDeleteAllRows(_tree, XmCONTENT); 2619 XtVaSetValues(_tree, 2620 XmNallowColumnResize, False, 2621 XmNheadingRows, 0, 2622 XmNcolumns, 1, 2623 XmNshadowThickness, 1, 2624 XmNselectionPolicy, XmSELECT_BROWSE_ROW, 2625 XmNhighlightRowMode, False, 2626 XmNglobalPixmapWidth, 0, 2627 XmNglobalPixmapHeight, 0, 2628 NULL); 2629 XtVaSetValues(_tree, 2630 XmNcolumn, 0, 2631 XmNcolumnSizePolicy, XmVARIABLE, 2632 NULL); 2633 XtVaGetValues(_tree, 2634 XmNbackground, &bg, 2635 NULL); 2636 XtVaSetValues(_tree, 2637 XmNcellDefaults, True, 2638 XmNcellBackground, bg, 2639 XmNcellLeftBorderType, XmBORDER_LINE, 2640 XmNcellRightBorderType, XmBORDER_LINE, 2641 XmNcellTopBorderType, XmBORDER_LINE, 2642 XmNcellBottomBorderType, XmBORDER_LINE, 2643 XmNcellAlignment, XmALIGNMENT_CENTER, 2644 NULL); 2645 2646 n = 100; 2647 2648 if (num == 1) 2649 XtVaSetValues(_tree, 2650 XmNselectionPolicy, XmSELECT_MULTIPLE_ROW, 2651 XmNglobalPixmapWidth, 16, 2652 XmNglobalPixmapHeight, 16, 2653 NULL); 2654 else if (num == 2) 2655 XtVaSetValues(_tree, 2656 XmNhighlightRowMode, True, 2657 XmNheadingRows, 1, 2658 XmNcolumns, 5, 2659 XmNsimpleHeadings, "Object|Position|Size|Method|Note", 2660 XmNsimpleWidths, "1c 10c 10c 15c 15c", 2661 XmNallowColumnResize, True, 2662 NULL); 2663 2664 XtVaSetValues(_tree, 2665 XmNcellDefaults, True, 2666 XtVaTypedArg, XmNcellBackground, XmRString, "white", 6, 2667 XmNcellLeftBorderType, XmBORDER_NONE, 2668 XmNcellRightBorderType, XmBORDER_NONE, 2669 XmNcellTopBorderType, XmBORDER_NONE, 2670 XmNcellBottomBorderType, XmBORDER_NONE, 2671 XmNcellAlignment, XmALIGNMENT_RIGHT, 2672 NULL); 2673 if (num == 2) 2674 XtVaSetValues(_tree, 2675 XmNcellDefaults, True, 2676 XmNcolumnRangeStart, 3, 2677 XmNcolumnRangeEnd, 4, 2678 XmNcellAlignment, XmALIGNMENT_CENTER, 2679 NULL); 2680 2681 size = sizeof(XmLTreeRowDefinition); 2682 rows = (XmLTreeRowDefinition *)malloc(size * n); 2683 level = 0; 2684 for (i = 0; i < n; i++) 2685 { 2686 rows[i].level = defs[i % 10].level; 2687 rows[i].expands = defs[i % 10].expands; 2688 rows[i].isExpanded = True; 2689 if (num < 2) 2690 { 2691 if (i % 30 >= 10) 2692 rows[i].level += 3; 2693 if (i % 30 >= 20) 2694 rows[i].level += 3; 2695 } 2696 if (num != 1) 2697 { 2698 rows[i].pixmap = XmUNSPECIFIED_PIXMAP; 2699 rows[i].pixmask = XmUNSPECIFIED_PIXMAP; 2700 } 2701 else 2702 { 2703 if (rows[i].expands == True) 2704 { 2705 rows[i].pixmap = dotPixmap; 2706 rows[i].pixmask = dotPixmask; 2707 } 2708 else 2709 { 2710 rows[i].pixmap = winPixmap; 2711 rows[i].pixmask = winPixmask; 2712 } 2713 } 2714 if (num == 0) 2715 sprintf(buf, "Row %d Level %d\n", i, rows[i].level); 2716 else if (num == 2) 2717 { 2718 if (rows[i].expands) 2719 sprintf(buf, "Composite"); 2720 else if (i % 5) 2721 sprintf(buf, "Curve"); 2722 else 2723 sprintf(buf, "Surface"); 2724 } 2725 else 2726 { 2727 if (rows[i].expands == True) 2728 sprintf(buf, "Sector Number %d-%d%d", 2729 rows[i].level, i % 2, i + 413); 2730 else 2731 sprintf(buf, "Item Number %d%d%d", i % 12, i % 3, i % 2); 2732 } 2733 rows[i].string = XmStringCreateSimple(buf); 2734 } 2735 XmLTreeAddRows(_tree, rows, n, -1); 2736 for (i = 0; i < n; i++) 2737 { 2738 XmStringFree(rows[i].string); 2739 if (num == 2) 2740 { 2741 sprintf(buf, "%d %d|%d points|Open|In Progress", 2742 i % 20, i % 15, i % 4); 2743 XmLGridSetStringsPos(_tree, XmCONTENT, i, XmCONTENT, 1, buf); 2744 } 2745 } 2746 free((char *)rows); 2747 2748 XtVaSetValues(_tree, 2749 XmNlayoutFrozen, False, 2750 NULL); 2751 } 2752