4Misc_Startp4Platform@·p ¬xHHLÿõÿô Xg(üHHØ(dh 8¥8qIGOR'HHÿõÿô WKK"& com.apple.print.PageFormat.FormattingPrinter com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.FormattingPrinter HPLaserJet4MP com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-04-05T21:18:44Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-04-05T21:18:44Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-04-05T21:18:44Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-04-05T21:18:44Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-04-05T21:18:44Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-04-05T21:18:44Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 768 587.52001953125 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -11.94000244140625 -12.239999771118164 780.05999755859375 599.760009765625 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMConstrainedPaper com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMConstrainedPaper com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2004-04-05T21:18:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2004-04-05T21:18:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 768 587.52001953125 com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2004-04-05T21:18:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -11.94000244140625 -12.239999771118164 780.05999755859375 599.760009765625 com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2004-04-05T21:18:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName Letter com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2004-04-05T21:18:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket com.apple.print.DocumentTicket.PMSpoolFormat com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.DocumentTicket.PMSpoolFormat application/pdf com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMColorMatchingMode com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMColorMatchingMode 0 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMColorSyncProfileID com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMColorSyncProfileID 1580 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMCopies com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMCopies 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMCopyCollate com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMCopyCollate com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMFirstPage com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMFirstPage 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMLastPage com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMLastPage 2147483647 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMPageRange com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMPageRange 1 2147483647 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PrintSettingsTicket ¬xHHLÿõÿô Xg(üHHØ(dh 8¥8qIGOR'HHÿõÿô WKK"& com.apple.print.PageFormat.FormattingPrinter com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.FormattingPrinter HPLaserJet4MP com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-04-05T21:18:44Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-04-05T21:18:44Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-04-05T21:18:44Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-04-05T21:18:44Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-04-05T21:18:44Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2004-04-05T21:18:44Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 768 587.52001953125 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -11.94000244140625 -12.239999771118164 780.05999755859375 599.760009765625 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMConstrainedPaper com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMConstrainedPaper com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2004-04-05T21:18:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName na-letter com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2004-04-05T21:18:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 768 587.52001953125 com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2004-04-05T21:18:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -11.94000244140625 -12.239999771118164 780.05999755859375 599.760009765625 com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2004-04-05T21:18:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName Letter com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2004-04-05T21:18:36Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket com.apple.print.DocumentTicket.PMSpoolFormat com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.DocumentTicket.PMSpoolFormat application/pdf com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMColorMatchingMode com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMColorMatchingMode 0 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMColorSyncProfileID com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMColorSyncProfileID 1580 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMCopies com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMCopies 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMCopyCollate com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMCopyCollate com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMFirstPage com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMFirstPage 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMLastPage com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMLastPage 2147483647 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMPageRange com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMPageRange 1 2147483647 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 0 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PrintSettingsTicket ¬xHHÚ(ÿáÿâùFg(üHHØ(dh 1&0òIGOR'HHÿáÿâùFÚ(Ú(D~ com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 730 552 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -31 -30 761 582 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMConstrainedPaper com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMConstrainedPaper com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName Letter (Small) com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 730 552 com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -31 -30 761 582 com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName LetterSmall com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket com.apple.print.PrintSettings.PMColorMode com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMColorMode 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMCopies com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMCopies 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMDestinationType com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMDestinationType 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMFirstPage com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMFirstPage 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMLastPage com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMLastPage 2147483647 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMPageRange com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMPageRange 1 2147483647 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PrintSettingsTicket ¬x HHÚ(ÿáÿâùFg(üHHØ(dh 1&0ò IGOR'HHÿáÿâùFÚ(Ú(D~ com.apple.print.PageFormat.PMHorizontalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMHorizontalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMOrientation com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMOrientation 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalRes com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalRes 72 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMVerticalScaling com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMVerticalScaling 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.subTicket.paper_info_ticket com.apple.print.PageFormat.PMAdjustedPageRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPageRect 0.0 0.0 730 552 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PageFormat.PMAdjustedPaperRect com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PageFormat.PMAdjustedPaperRect -31 -30 761 582 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PaperInfo.PMConstrainedPaper com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMConstrainedPaper com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMPaperName com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMPaperName Letter (Small) com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPageRect com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPageRect 0.0 0.0 730 552 com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.PMUnadjustedPaperRect com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.PMUnadjustedPaperRect -31 -30 761 582 com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 1 com.apple.print.PaperInfo.ppd.PMPaperName com.apple.print.ticket.creator CUPS_CPL com.apple.print.ticket.itemArray com.apple.print.PaperInfo.ppd.PMPaperName LetterSmall com.apple.print.ticket.client CUPS_CPL com.apple.print.ticket.modDate 2006-04-17T18:06:46Z com.apple.print.ticket.stateFlag 1 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PaperInfoTicket com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PageFormatTicket com.apple.print.PrintSettings.PMColorMode com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMColorMode 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMCopies com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMCopies 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMDestinationType com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMDestinationType 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMFirstPage com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMFirstPage 1 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMLastPage com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMLastPage 2147483647 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.PrintSettings.PMPageRange com.apple.print.ticket.creator com.apple.printingmanager com.apple.print.ticket.itemArray com.apple.print.PrintSettings.PMPageRange 1 2147483647 com.apple.print.ticket.client com.apple.printingmanager com.apple.print.ticket.modDate 2006-04-17T18:06:47Z com.apple.print.ticket.stateFlag 0 com.apple.print.ticket.APIVersion 00.20 com.apple.print.ticket.privateLock com.apple.print.ticket.type com.apple.print.PrintSettingsTicket ^Graph*@@?ÃŽ8ãŽ8ä?ÅUUUUUUWDashSettings#ÿú  !0ü:þ¶îNormalÿÿÿÿ@ ÿGenevaÿÿÿÿÿÿ<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿHHHH$$0ü:þ¶îNormalÿÿÿÿ@ ÿGenevaÿÿÿÿÿÿ<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿHHHH$$4444440ü ¡ŽÚîNormalÿÿÿÿ@ ÿGenevaÿÿÿÿÿÿ<ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿHHHH$$4 4 4 4 4 4 ™homee9dÿÿÿœmÔ½€•+HardDisk:Users:ag:Desktop:,HardDisk½€•+H+d­DesktopmÔ½èS” ag½€÷›½èÄd­I©HardDisk:Users:ag:DesktopDesktopHardDiskUsers/ag/Desktop/ ÿÿ±Gizmo6}AdÿÿÿœàÕ½€•+HardDisk:HD0:XOPDev:XOPs 6:Gizmo6:<HardDisk½€•+H+ ÎeGizmo6àվݷÜ&{™l XOPs 6½€÷›¾ÞL Îe ‘ú Óç!HardDisk:HD0:XOPDev:XOPs 6:Gizmo6Gizmo6HardDiskHD0/XOPDev/XOPs 6/Gizmo6/ÿÿfGizmo_Procedures2pdÿÿÿœ ‹ñ½€•+HardDisk:Programming:IgorDev:Igor Pro 5F:WaveMetrics Procedures:Gizmo Procedures:ÂHardDisk½€•+H+ ‹„Gizmo Procedures ‹ñ¹‰Programming->WaveSelectorWidgetExample.pxp // // Function Reference // // All the functions take two standard input parameters that identify the listbox control. These are: // windowname string expression giving the name of the window (graph or control panel) // containing the listbox control. // listcontrolname string expression giving the name of the listbox control. // // The Functions // // MakeListIntoWaveSelector(windowname, listcontrolname, [content, selectionMode, listoptions, matchStr, filterProcStr]) // content optional parameter to select what is displayed in the list. A set of constants // is provided for your convenience: // WMWS_Waves hierarchical display of waves in data folders // WMWS_NVars hierarchical display of numeric variables // in data folders // WMWS_Strings hierarchical display of string variables in // data folders // WMWS_DataFolders hierarchical display of just the data folders // if absent, defaults to WMWS_Waves // // selectionMode optional parameter to set the selection mode. A set of constants is provided // for your convenience: // WMWS_SelectionNonContinguous // Allows multiple, non-contiguous selections. // WMWS_SelectionContinguous // Allows multiple selections, but they must // be contiguous. // WMWS_SelectionSingle Only a single item my be selected at a time. // WMWS_SelectionNonContinguous is the default. // // listoptions optional parameter containing a string to be passed as the options parameter to the // WaveList() function. See documentation of WaveList(). The string is limited to 200 characters. // If listoptions is not set, it defaults to "". // Since it is passed to WaveList, it works only with a Wave Selector containing waves. // // matchStr optional parameter to select a subset of objects based on names and wildcards. See, for instance, // the WaveList() function for details. // // filterProcStr optional parameter to name a function to filter objects before they are put into the list. // The function itself has the following format: // // Function FilterProc(aName, contents) // String aName // object name with full data folder path // Variable contents // content code as described for the content parameter // // return 0 to reject or 1 to accept // end // // For example, to allow only objects starting with "w" (a trivial example that doesn't really // require a filter function): // // Function MyFilter(aName, contents) // String aName // Variable contents // // String leafName = ParseFilePath(0, aName, ":", 1, 0) // if (CmpStr(leafName[0], "v") == 0) // return 1 // endif // // return 0 // end // // Makes the specified listbox control into a WaveSelectorWidget. Setting content to WMWS_DataFolders // makes a listbox in which you can select data folders. Any other value of content does not include data folders // in the selection list, even though data folder rows can be selected. // // To set the value of an optional parameter, you must use the name of the parameter. For instance, to // call MakeListIntoWaveSelector() to display numeric variables, call it like this: // MakeListIntoWaveSelector("MyWindow", "MyListbox", content=WMWS_NVars) // // WS_SelectedObjectsList(windowname, listcontrolname) // // Returns a semicolon-separated list of selected items. Unless you created the widget with // content set to WMWS_DataFolders, the returned list does not include data folders. // Each list item is a complete path to the selected object. // // WS_CountSelectedObjects(windowname, listcontrolname) // // Returns a count of selected objects. Unless you created the widget with // content set to WMWS_DataFolders, the returned count does not include data folders. // May be faster than using WS_SelectedObjectsList() and then using ItemsInList() on the returned list. // If you will need the list, it is better to call WS_SelectedObjectsList() and then ItemsInList(). // // WS_SelectObjectList(windowname, listcontrolname, ObjectList) // ObjectList string containing a semicolon-separated list of object names. // // Selects the objects in the list. The object names must be full paths. Does *not* // clear any pre-existing selections, so you can build up selections by calling this function repeatedly. // // WS_SelectAnObject(windowname, listcontrolname, ObjectPath) // ObjectPath string containing the full path name of a single object to be selected. // // Adds a single object to the selections in the list. Does *not* clear any pre-existing selections, // so you can build up selections by calling this function repeatedly. If you wish to select a single // object, call WS_ClearSelection() first. // // WS_ClearSelection(windowname, listcontrolname) // // Programmatically de-selects any selected objects. // // WS_UpdateWaveSelectorWidget(windowname, listcontrolname) // // Should be rarely needed. Updates the list of objects by closing the root: folder, then opening any data // folders that were open before the root: data folder was closed. This function is used internally by // WaveSelectorWidget.ipf to update the contents whenever the window containing the list becomes the // active window, in case user actions have changed the contents. You might need this function if your // control panel makes or kills objects. // // WS_OpenAFolder(windowname, listcontrolname, FolderPathToOpen) // FolderPathToOpen String containing the full path to a data folder to be opened. // // Programmatically opens a data folder, displaying the contents of the folder. The path string may end // with a colon, but it is not required. If the folder's parent is not open, the folder will not be found // and WS_OpenAFolder will fail. // // WS_OpenAFolderFully(windowname, listcontrolname, FolderPathToOpen) // FolderPathToOpen String containing the full path to a data folder to be opened. // // Programmatically opens a data folder, displaying the contents of the folder. The path string may end // with a colon, but it is not required. WS_OpenAFolderFully travels down the folder path, making sure // all the folders in the path are open. Slower than WS_OpenAFolder, but surer. // // WS_CloseAFolder(windowname, listcontrolname, FolderPathToClose) // FolderPathToClose String containing the full path to a data folder to be closed. // // Programmatically closes a data folder, hiding the contents of the folder. The path string may end // with a colon, but it is not required. // // WS_SetNotificationProc(windowname, listcontrolname, procname [, isExtendedProc) // procname String containing the name of a funtion to be called when an item or items in // the list is selected. // isExtendedProc Optional parameter. If not present, or if zero, use this format: // // WS_NotificationProc(SelectedItem, EventCode) // String SelectedItem // string with full path to the item clicked on in the wave selector // Variable EventCode // the ListBox event code that triggered this notification // // .... function body .... // end // // if isExtendedProc is non-zero, notification proc has this format: // // WS_NotificationProc(SelectedItem, EventCode, OwningWindowName, ListboxControlName) // String SelectedItem // string with full path to the item clicked on in the wave selector // Variable EventCode // the ListBox event code that triggered this notification // String OwningWindowName // String containing the name of the window containing the listbox // String ListboxControlName // String containing the name of the listbox control // // .... function body .... // end // // Pass "" as procname to disable notification // // Since only one item is passed to the notification proc, if you need a list of selected items you will have to use // WS_SelectedObjectsList() to get the list. // // See the constants below for event codes. // // NOTE: all the events have the potential to change the list of selected objects. // // ********************************** // constants for content parameter to MakeListIntoWaveSelector() Constant WMWS_Waves = 1 Constant WMWS_NVars = 2 Constant WMWS_Strings = 3 Constant WMWS_DataFolders = 4 // constants for selectionMode parameter Constant WMWS_SelectionNonContinguous = 0 Constant WMWS_SelectionContinguous = 1 Constant WMWS_SelectionSingle = 2 // constants for notification events Constant WMWS_FolderOpened = 1 Constant WMWS_FolderClosed = 2 Constant WMWS_DoubleClick = 3 Constant WMWS_SelectionChanged = 4 Constant WMWS_SelectionChangedShift = 5 // constants for error codes from MakeListIntoWaveSelector() Constant WMWS_ErrorNoError = 0 Constant WMWS_ErrorOptionStringTooLong = 1 static Constant MAX_OBJ_NAME = 31 static Constant WaveSelectorVersion = 1 // structure used to store information about the widget as user data in the listbox control static Structure WaveSelectorListInfo int16 version int16 contents // one of WMWS_Waves, WMWS_NVars, WMWS_Strings, or WMWS_DataFolders char folderName[MAX_OBJ_NAME+1] // last element of path starting with root:Packages:WM_WaveSelectorList: char ListWaveName[MAX_OBJ_NAME+1] // resides in folder named by folderName char SelWaveName[MAX_OBJ_NAME+1] char wavelistOptions1[100] char wavelistOptions2[100] char wavelistMatchStr[MAX_OBJ_NAME+1] char nameFilterProcStr[3*MAX_OBJ_NAME+3] char NotificationProc[3*MAX_OBJ_NAME+3] int16 isExtendedProc EndStructure Function MakeListIntoWaveSelector(windowname, listcontrolname, [content, selectionMode, listoptions, matchStr, nameFilterProc]) String windowname String listcontrolname Variable content // one of WMWS_Waves, WMWS_NVars, WMWS_Strings, or WMWS_DataFolders Variable selectionMode String listoptions // a string to pass in the Options parameter of WaveList; overrides options String matchStr String nameFilterProc Variable err = WMWS_ErrorNoError if (ParamIsDefault(content)) content = WMWS_Waves endif if (ParamIsDefault(selectionMode)) selectionMode = WMWS_SelectionNonContinguous endif if (ParamIsDefault(listoptions)) listoptions = "" endif if (ParamIsDefault(matchStr)) matchStr = "*" endif if (ParamIsDefault(nameFilterProc)) nameFilterProc = "" endif if (strlen(listoptions) > 200) listoptions = "" err = WMWS_ErrorOptionStringTooLong endif Variable selectMode = 10 switch (selectionMode) case WMWS_SelectionNonContinguous: selectMode = 10 break; case WMWS_SelectionContinguous: selectMode = 7 break; case WMWS_SelectionSingle: selectMode = 6 break; endswitch STRUCT WaveSelectorListInfo ListInfo String userdata = GetUserData(windowname, listcontrolname, "WaveSelectorInfo") StructGet/S ListInfo, userdata if (ListInfo.version != 0) KillDataFolder $("root:Packages:WM_WaveSelectorList:"+ListInfo.folderName) endif ListInfo.version = WaveSelectorVersion ListInfo.contents = content ListInfo.NotificationProc = "" ListInfo.isExtendedProc = 0 Variable optionsLen = strlen(listoptions) if (optionsLen > 100) ListInfo.wavelistOptions1 = listoptions[0,99] ListInfo.wavelistOptions2 = listoptions[100,optionsLen-1] else ListInfo.wavelistOptions1 = listoptions ListInfo.wavelistOptions2 = "" endif ListInfo.wavelistMatchStr = matchStr ListInfo.nameFilterProcStr = nameFilterProc ListBox $listcontrolname, win=$windowname, proc=WaveSelectorListProc,mode=selectMode ListBox $listcontrolname, win=$windowname, widths={20,500},keySelectCol=1,editStyle=1 String SaveDF = GetDataFolder(1) SetDataFolder root: NewDataFolder/O/S Packages NewDataFolder/O/S WM_WaveSelectorList ListInfo.folderName = UniqueName("WaveSelectorInfo", 11, 0) NewDataFolder/O/S $ListInfo.folderName // one row, to be filled with the root object. Later, the root object will be opened and the opening code // will fill in the contents of the root object. Make/T/N=(1, 2, 2) ListWave // second layer holds full path info Make/N=(1, 2) SelWave ListBox $listcontrolname, win=$windowname, listWave=ListWave, selWave=SelWave ListInfo.ListWaveName = "ListWave" ListInfo.SelWaveName = "SelWave" String infoStr StructPut/S ListInfo, infoStr ListBox $listcontrolname, win=$windowname, userData(WaveSelectorInfo)=infoStr SetDataFolder SaveDF ListWave[0][1][0] = "root" ListWave[0][1][1] = "root" ListWave[0][0][1] = "root" SelWave[0][0] = 0x40 // it's a data folder, make it a disclosure control. The root folder starts out open, so it is in the open position. Variable index=0 Variable listrow = 1 String objname String indentString = " " OpenAFolder(ListInfo, 0) // open the root folder SelWave[0][0] = 0x50 // get root window name String rootwindowname = ParseFilePath(0, windowname, "#", 0, 0) String WaveWidgetList = GetUserData(windowname, "", "WaveWidgetList") SetWindow $rootwindowname, userdata(WaveWidgetList)+= "WindowName="+windowname+",ListName="+listcontrolname+";" SetWindow $rootwindowname, hook(WaveSelectorWidgetHook) = WMWS_WinHook return err end Function/S WS_SelectedObjectsList(windowname, listcontrolname) String windowname String listcontrolname STRUCT WaveSelectorListInfo ListInfo String userdata = GetUserData(windowname, listcontrolname, "WaveSelectorInfo") StructGet/S ListInfo, userdata if (ListInfo.version == 0) return "" endif Wave SelWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.SelWaveName) Wave/T ListWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.ListWaveName) Variable nrows = DimSize(ListWave, 0) Variable i String theList = "" for (i = 0; i < nrows; i += 1) if ( (ListInfo.contents != WMWS_DataFolders) && (SelWave[i][0] & 0x40) ) continue // we don't want datafolders in the list unless this is a datafolder selection list endif if (SelWave[i][1] & 9) theList += ListWave[i][1][1] + ";" endif endfor return theList end Function WS_CountSelectedObjects(windowname, listcontrolname) String windowname String listcontrolname STRUCT WaveSelectorListInfo ListInfo String userdata = GetUserData(windowname, listcontrolname, "WaveSelectorInfo") StructGet/S ListInfo, userdata if (ListInfo.version == 0) return 0 endif Wave SelWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.SelWaveName) Wave/T ListWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.ListWaveName) Variable nrows = DimSize(ListWave, 0) Variable i Variable theCount = 0 for (i = 0; i < nrows; i += 1) if ( (ListInfo.contents != WMWS_DataFolders) && (SelWave[i][0] & 0x40) ) continue // we don't want datafolders in the list unless this is a datafolder selection list endif if (SelWave[i][1] & 9) theCount += 1 endif endfor return theCount end Function WS_SelectObjectList(windowname, listcontrolname, ObjectList[, OpenFoldersAsNeeded]) String windowname String listcontrolname String ObjectList Variable OpenFoldersAsNeeded if (ParamIsDefault(OpenFoldersAsNeeded)) OpenFoldersAsNeeded = 0 endif Variable nItems = ItemsInList(ObjectList) Variable i for (i = 0; i < nItems; i += 1) WS_SelectAnObject(windowname, listcontrolname, StringFromList(i, ObjectList), OpenFoldersAsNeeded = OpenFoldersAsNeeded) endfor end Function WS_SelectAnObject(windowname, listcontrolname, ObjectPath[, OpenFoldersAsNeeded]) String windowname String listcontrolname String ObjectPath Variable OpenFoldersAsNeeded if (strlen(ObjectPath) == 0) return 0 endif if (ParamIsDefault(OpenFoldersAsNeeded)) OpenFoldersAsNeeded = 0 endif STRUCT WaveSelectorListInfo ListInfo String userdata = GetUserData(windowname, listcontrolname, "WaveSelectorInfo") StructGet/S ListInfo, userdata if (ListInfo.version == 0) return -1 endif if (OpenFoldersAsNeeded) String PathToFolder = ObjectPath PathToFolder = ParseFilePath(1, ObjectPath, ":", 1, 0) WS_OpenAFolderFully(windowname, listcontrolname, PathToFolder) endif Wave SelWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.SelWaveName) Wave/T ListWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.ListWaveName) Variable nrows = DimSize(ListWave, 0) Variable i String theList = "" for (i = 0; i < nrows; i += 1) if ( (ListInfo.contents != WMWS_DataFolders) && (SelWave[i][0] & 0x40) ) continue // we don't want datafolders in the list unless this is a datafolder selection list endif if (CmpStr(ListWave[i][1][1], ObjectPath) == 0) SelWave[i][1] = SelWave[i][1] | 1 endif endfor return 0 end Function WS_ClearSelection(windowname, listcontrolname) String windowname String listcontrolname STRUCT WaveSelectorListInfo ListInfo String userdata = GetUserData(windowname, listcontrolname, "WaveSelectorInfo") StructGet/S ListInfo, userdata if (ListInfo.version == 0) return NaN endif Wave SelWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.SelWaveName) Wave/T ListWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.ListWaveName) SelWave[][1] = 0 end Function WS_UpdateWaveSelectorWidget(windowname, listcontrolname) String windowname String listcontrolname STRUCT WaveSelectorListInfo ListInfo String userdata = GetUserData(windowname, listcontrolname, "WaveSelectorInfo") StructGet/S ListInfo, userdata if (ListInfo.version == 0) return -1 endif Wave SelWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.SelWaveName) Wave/T ListWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.ListWaveName) Variable nrows = DimSize(ListWave, 0) Variable i, j String theList = "" // first make a list of open data folders so we can open them again later for (i = 0; i < nrows; i += 1) if ((SelWave[i][0] & 0x50) == 0x50) // 0x40 means it's a checkbox row, which is a datafolder; 0x10 means it is checked, which means the data folder is open theList += ListWave[i][1][1] + ";" endif endfor String selectedWavesList = WS_SelectedObjectsList(windowname, listcontrolname) CloseAFolder(ListInfo, 0) // row zero is the root: data folder row. This will remove everything from the list Variable numFolders = ItemsInList(theList) if (numFolders > 0) for (i = 0; i < numFolders; i += 1) String folderPath = StringFromList(i, theList) Variable listrows = DimSize(ListWave, 0) for (j = 0; j < listrows; j += 1) if (CmpStr(ListWave[j][1][1], folderPath) == 0) OpenAFolder(ListInfo, j) SelWave[j][0] = 0x50 break; endif endfor endfor endif WS_SelectObjectList(windowname, listcontrolname, selectedWavesList, OpenFoldersAsNeeded = 1) end Function WS_OpenAFolder(windowname, listcontrolname, FolderPathToOpen) String windowname String listcontrolname String FolderPathToOpen if (strlen(FolderPathToOpen) == 0) return 0 endif STRUCT WaveSelectorListInfo ListInfo String userdata = GetUserData(windowname, listcontrolname, "WaveSelectorInfo") StructGet/S ListInfo, userdata if (ListInfo.version == 0) return -1 endif Wave SelWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.SelWaveName) Wave/T ListWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.ListWaveName) Variable nrows = DimSize(ListWave, 0) Variable i Variable lastcharpos = StrLen(FolderPathToOpen)-1 if (CmpStr(FolderPathToOpen[lastcharpos], ":") == 0) FolderPathToOpen = FolderPathToOpen[0, lastcharpos-1] endif for (i = 0; i < nrows; i += 1) if ((SelWave[i][0] & 0x40) == 0) // is it a disclosure triangle? continue endif if (CmpStr(ListWave[i][1][1], FolderPathToOpen) == 0) if ( (SelWave[i][0] & 0x10) == 0) OpenAFolder(ListInfo, i) SelWave[i][0] = 0x50 // check the checkbox endif break; endif endfor return 0 end Function WS_OpenAFolderFully(windowname, listcontrolname, FolderPathToOpen) String windowname String listcontrolname String FolderPathToOpen if (strlen(FolderPathToOpen) == 0) return 0 endif STRUCT WaveSelectorListInfo ListInfo String userdata = GetUserData(windowname, listcontrolname, "WaveSelectorInfo") StructGet/S ListInfo, userdata if (ListInfo.version == 0) return -1 endif String FolderPath = ParseFilePath(0, FolderPathToOpen, ":", 0, 0) if (CmpStr(FolderPath, "root") != 0) return -1 endif WS_OpenAFolder(windowname, listcontrolname, FolderPath) FolderPath += ":" Variable i = 1 do String dfStr = ParseFilePath(0, FolderPathToOpen, ":", 0, i) i += 1 if (strlen(dfStr) == 0) break; endif FolderPath += dfStr WS_OpenAFolder(windowname, listcontrolname, FolderPath) FolderPath += ":" while(1) end Function WS_CloseAFolder(windowname, listcontrolname, FolderPathToClose) String windowname String listcontrolname String FolderPathToClose if (strlen(FolderPathToClose) == 0) return 0 endif STRUCT WaveSelectorListInfo ListInfo String userdata = GetUserData(windowname, listcontrolname, "WaveSelectorInfo") StructGet/S ListInfo, userdata if (ListInfo.version == 0) return -1 endif Wave SelWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.SelWaveName) Wave/T ListWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.ListWaveName) Variable nrows = DimSize(ListWave, 0) Variable i Variable lastcharpos = StrLen(FolderPathToClose)-1 if (CmpStr(FolderPathToClose[lastcharpos], ":") == 0) FolderPathToClose = FolderPathToClose[0, lastcharpos-1] endif for (i = 0; i < nrows; i += 1) if (CmpStr(ListWave[i][1][1], FolderPathToClose) == 0) CloseAFolder(ListInfo, i) SelWave[i][0] = 0x40 // un-check the checkbox break; endif endfor return 0 end Function WS_SetNotificationProc(windowname, listcontrolname, procname [, isExtendedProc]) String windowname String listcontrolname String procname Variable isExtendedProc STRUCT WaveSelectorListInfo ListInfo String userdata = GetUserData(windowname, listcontrolname, "WaveSelectorInfo") StructGet/S ListInfo, userdata if (ListInfo.version == 0) return -1 endif ListInfo.NotificationProc = procname ListInfo.isExtendedProc = isExtendedProc StructPut/S ListInfo, userdata ListBox $listcontrolname, win=$windowname, userData(WaveSelectorInfo)=userdata end // private functions Function namefiltertemplate(theNameWithPath, ListContents) String theNameWithPath Variable ListContents // can't imagine why this would be necessary, but better to have it than to want it return 1 end static Function OpenAFolder(ListInfo, DataFolderRow) STRUCT WaveSelectorListInfo &ListInfo Variable DataFolderRow // row number in list that contains the data folder to be opened Wave SelWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.SelWaveName) Wave/T ListWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.ListWaveName) String parentDF = ListWave[DataFolderRow][1][1] String parentDFwColon = parentDF+":" String saveDF = GetDataFolder(1) String objects = "" Variable nObjects = 0 Variable i Variable nrows = 0 Variable nRowsTooMany = 0 // variable to count how many waves are rejected if (ListInfo.contents != WMWS_DataFolders) SetDataFolder $(parentDFwColon) if (ListInfo.contents == WMWS_Waves) objects = WaveList(ListInfo.wavelistMatchStr, ";", ListInfo.wavelistOptions1+ListInfo.wavelistOptions2) elseif (ListInfo.contents == WMWS_NVars) objects = VariableList(ListInfo.wavelistMatchStr, ";", 4)+VariableList(ListInfo.wavelistMatchStr, ";", 5) elseif (ListInfo.contents == WMWS_Strings) objects = StringList(ListInfo.wavelistMatchStr, ";") // else // nrows += CountObjects(parentDFwColon, ListInfo.contents) endif nObjects = ItemsInList(objects) if (strlen(ListInfo.nameFilterProcStr) > 0) FUNCREF namefiltertemplate namefilterproc = $ListInfo.nameFilterProcStr String oldList = objects objects = "" Variable oldNObjects = nObjects nObjects = 0 for (i = 0; i < oldNObjects; i += 1) String aName = StringFromList(i, oldList) if (namefilterproc(aName, ListInfo.contents)) objects += aName+";" nObjects += 1 endif endfor endif nrows += nObjects SetDatafolder saveDF endif nrows += CountObjects(parentDFwColon, 4) Variable listrow = DataFolderRow+1 InsertPoints DataFolderRow+1, nrows, SelWave, ListWave Variable index=0 String objname String indentString = " " + returnIndentString(ListWave[DataFolderRow][1][0]) SetDataFolder $(parentDFwColon) // waves if (ListInfo.contents != WMWS_DataFolders) for (i = 0; i < nObjects; i += 1) objname = StringFromList(i, objects) ListWave[listrow][0][1] = parentDF ListWave[listrow][1][1] = parentDFwColon+PossiblyQuoteName(objname) ListWave[listrow][1][0] = indentString+objname listrow += 1 endfor endif if (nRowsTooMany) DeletePoints/M=0 listrow, nRowsTooMany, ListWave, SelWave endif index = 0 // data folders do objname = GetIndexedObjName("", 4, index) if (strlen(objname) == 0) break endif ListWave[listrow][0][1] = parentDF ListWave[listrow][1][1] = parentDFwColon+PossiblyQuoteName(objname) ListWave[listrow][1][0] = indentString+objname SelWave[listrow][0] = 0x40 index += 1 listrow += 1 while(1) SelWave[DataFolderRow][0] = SelWave[DataFolderRow][0] & ~1 // de-select the row just clicked SetDatafolder saveDF end Function CloseAFolder(ListInfo, DataFolderRow) STRUCT WaveSelectorListInfo &ListInfo Variable DataFolderRow // row number in list that contains the data folder to be opened Wave SelWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.SelWaveName) Wave/T ListWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.ListWaveName) String parentDF = ListWave[DataFolderRow][1][1] Variable endrow = DimSize(ListWave, 0) Variable parentLen = StrLen(parentDF) Variable index Variable listrow = DataFolderRow+1 for (index = listrow; index < endrow; index += 1) if (CmpStr(parentDF, (ListWave[index][1][1])[0,parentLen-1]) != 0) break; endif endfor Variable npnts = index - listrow DeletePoints listrow, npnts, ListWave, SelWave SelWave[DataFolderRow][0] = SelWave[DataFolderRow][0] & ~1 // de-select the disclosure triangle cell just clicked end Function WMWS_WinHook(H_Struct) STRUCT WMWinHookStruct &H_Struct Variable statusCode = 0 STRUCT WaveSelectorListInfo ListInfo Variable i = 0 do String ctrlName = "" String ControlWindowName = "" if (GetIndexedWaveListFromUD(i, H_Struct.winName, ControlWindowName, ctrlName) < 0) break; endif String userdata = GetUserData(ControlWindowName, ctrlName, "WaveSelectorInfo") ListInfo.version = 0 StructGet/S ListInfo, userdata if (ListInfo.version == 0) continue endif switch (H_Struct.eventCode) case 0: // activate WS_UpdateWaveSelectorWidget(ControlWindowName, ctrlName) break; case 2: // Kill window KillControl/W=$ControlWindowName $ctrlName KillDataFolder $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName) break; endswitch i += 1 while (1) return statusCode // 0 if nothing done, else 1 End Function WS_ExtNotificationTemplate(SelectedItem, EventCode, WindowName, ListboxName) String SelectedItem Variable EventCode String WindowName String ListboxName end Function WS_NotificationTemplate(SelectedItem, EventCode) String SelectedItem Variable EventCode end Static Function CallNotificationProc(object, event, windowName, listName, procName, isExtended) String object Variable event String windowName, listName String procName Variable isExtended if (isExtended) FUNCREF WS_ExtNotificationTemplate notifyFunc = $(procName) notifyFunc(object, event, windowName, listName) else FUNCREF WS_NotificationTemplate extNotifyFunc = $(procName) extNotifyFunc(object, event) endif end Function WaveSelectorListProc(LB_Struct) : ListboxControl STRUCT WMListboxAction &LB_Struct STRUCT WaveSelectorListInfo ListInfo String userdata = GetUserData(LB_Struct.win, LB_Struct.ctrlName, "WaveSelectorInfo") StructGet/S ListInfo, userdata if (ListInfo.version == 0) return 0 endif Wave SelWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.SelWaveName) Wave/T ListWave = $("root:Packages:WM_WaveSelectorList:"+ListInfo.FolderName+":"+ListInfo.ListWaveName) Variable index=0 switch(LB_Struct.eventCode) case 1: // mouse down if (LB_Struct.col == 0) // if a click in the list results in breaking into the debugger, the debugger fakes a mouse-up with bogus information. // This widget doesn't put a header in the list, but if it did, we could get a mouse-down in row -1 if ( (LB_Struct.row < 0) || (LB_Struct.row >= DimSize(SelWave, 0)) ) break; // click in row beyond any data (blank space at bottom of list box) endif if (SelWave[LB_Struct.row][0] & 0x40) SelWave[LB_Struct.row][0] = SelWave[LB_Struct.row][0] & ~1 endif endif break; case 2: // mouse up if (LB_Struct.col == 0) // if a click in the list results in breaking into the debugger, the debugger fakes a mouse-up with bogus information. // That is the only way I have found to get a row of -1 here. if ( (LB_Struct.row < 0) || (LB_Struct.row >= DimSize(SelWave, 0)) ) break; // click in row beyond any data (blank space at bottom of list box) endif if (SelWave[LB_Struct.row][0] & 0x40) if (SelWave[LB_Struct.row][0] & 0x10) // if it's checked, it needs to be opened OpenAFolder(ListInfo, LB_Struct.row) if (ListInfo.NotificationProc[0] != 0) CallNotificationProc(ListWave[LB_Struct.row][1][1], WMWS_FolderOpened, LB_Struct.win, LB_Struct.ctrlName, ListInfo.NotificationProc, ListInfo.isExtendedProc) endif else CloseAFolder(ListInfo, LB_Struct.row) if (ListInfo.NotificationProc[0] != 0) CallNotificationProc(ListWave[LB_Struct.row][1][1], WMWS_FolderClosed, LB_Struct.win, LB_Struct.ctrlName, ListInfo.NotificationProc, ListInfo.isExtendedProc) endif endif DoUpdate endif endif break; case 3: // double-click // if a click in the list results in breaking into the debugger, the debugger fakes a mouse-up with bogus information. // This widget doesn't put a header in the list, but if it did, we could get a mouse-down in row -1 if (LB_Struct.col == 1) if ( (LB_Struct.row < 0) || (LB_Struct.row >= DimSize(SelWave, 0)) ) break; // double-click in row beyond any data (blank space at bottom of list box) endif if ( (SelWave[LB_Struct.row][0] & 0x50) == 0x50 ) CloseAFolder(ListInfo, LB_Struct.row) SelWave[LB_Struct.row][0] = 0x40 SelWave[LB_Struct.row][1] = 0 elseif ( (SelWave[LB_Struct.row][0] & 0x50) == 0x40 ) OpenAFolder(ListInfo, LB_Struct.row) SelWave[LB_Struct.row][0] = 0x50 SelWave[LB_Struct.row][1] = 0 else // not a container row: report a double-click if (ListInfo.NotificationProc[0] != 0) CallNotificationProc(ListWave[LB_Struct.row][1][1], LB_Struct.eventCode, LB_Struct.win, LB_Struct.ctrlName, ListInfo.NotificationProc, ListInfo.isExtendedProc) endif endif endif break; case 4: // selection changed case 5: // shift-selection if (LB_Struct.col == 1) if (ListInfo.NotificationProc[0] != 0) CallNotificationProc(ListWave[LB_Struct.row][1][1], LB_Struct.eventCode, LB_Struct.win, LB_Struct.ctrlName, ListInfo.NotificationProc, ListInfo.isExtendedProc) endif endif break; endswitch end static Function/S returnIndentString(text) String text String returnStr Variable space = char2num(" ") Variable i=0 Variable len = StrLen(text) for (i = 0; i < len; i += 1) if (char2num(text[i]) != space) break; endif endfor returnStr = PadString("", i, space) return returnStr end static Function GetIndexedWaveListFromUD(index, rootWindowName, outWindowName, outListName) Variable index String rootWindowName, &outWindowName, &outListName String thelist = GetUserData(rootWindowName, "", "WaveWidgetList") if (index >= ItemsInList(thelist)) return -1 endif outWindowName = StringByKey("WindowName", stringfromlist(index, thelist), "=", ",") outListName = StringByKey("ListName", stringfromlist(index, thelist), "=", ",") return index endRH Monaco0«âr0«ârxHHÚ(ÿáÿâùFg(üHHØ(dh FÿHHHH$$ Rw‰T×RMPSRWMT1*íÿÿœë€îÿÿLœëŒ€ÿÿȜ딻// Platform=Macintosh, IGORVersion=6.000, architecture=PowerPC Silent 101 // use | as bitwise or -- not comment. NewPath/Z Gizmo6 "::::HD0:XOPDev:XOPs 6:Gizmo6:" NewPath/Z Gizmo_Procedures "::::Programming:IgorDev:Igor Pro 5F:WaveMetrics Procedures:Gizmo Procedures:" SetDataFolder root:Packages:Gizmo3DBarChart: DefaultFont "Geneva" MoveWindow/P 3,161,730,910 OpenProc/W=(427,48,1138,994)/J=78408/V=0 "WaveSelectorWidget.ipf" Gizmo0() MoveWindow/C 6,826,1206,1022 WM3DBarChartPanel() Window WM3DBarChartPanel() : Panel PauseUpdate; Silent 1 // building window... NewPanel /W=(839,371,1143,755) as "3DBar Chart" SetDrawLayer UserBack DrawText 28,24,"Source wave (2D Matrix)" ListBox wm3dBarSourceList,pos={28,28},size={238,154},proc=WaveSelectorListProc ListBox wm3dBarSourceList,userdata(WaveSelectorInfo)= A"!!*'#=(-8`;e9cV@ruX08T&-Y0E;(Qzzz9PJQi=(-8`zzzzzz;e9cH@ // 17APR06 The following function appends a panel that lets you add and modify a 3D bar chart. // The data for the bar chart is expected to be arranged in a 2D wave where entries correspond to // the height of each bar. // The function WM_Make3DBarChartParametricWave() is used to convert a standard 2D wave into a parametric // wave for display in Gizmo. //===================================================================================== Function WM_Append3DBarChart() String oldDF=GetDataFolder(1) try SetDataFolder root: NewDataFolder/O/S Packages NewDataFolder/O/S Gizmo3DBarChart Variable/G row Variable/G col Variable/G baseLine String/G barChartObjectName String/G srcWaveName // WM_Build3DBarChartPanel() catch endtry SetDataFolder oldDF End //===================================================================================== Function WM_Build3DBarChartPanel() MakeListIntoWaveSelector("WM3DBarChartPanel", "wm3dBarSourceList", content=WMWS_Waves, listoptions="DIMS:2",selectionMode=WMWS_SelectionSingle) WS_ClearSelection("WM3DBarChartPanel", "wm3dBarSourceList") End //===================================================================================== // 09APR03 // The following function takes a 2D matrix wave corresponding the the height of bars // and creates a 3D parametric wave for Gizmo. minValue is the value at which the lower // plane is set and should have some reasonable relationship to the distribution of bar heights. Function WM_Make3DBarChartParametricWave(inWave,minValue) wave inWave Variable minValue Variable rows=DimSize(inWave,0) Variable cols=DimSize(inWave,1) Variable newRows=4*rows+2 Variable newCols=4*cols+2 Make/O/N=(newRows,newCols,3) fakeWave=minValue Variable i,j,xVal,yVal // first load the x and y planes fakeWave[][][0]=p<1 ? 0 : trunc((p-1)/2)+1 fakeWave[][][1]=q<1 ? 0 : trunc((q-1)/2)+1 fakeWave[][][0]*=DimDelta(inWave,0) fakeWave[][][1]*=DimDelta(inWave,1) fakeWave[][][0]+=DimOffset(inWave,0) fakeWave[][][1]+=DimOffset(inWave,1) xVal=0 for(i=2;i=0 && row=0 && col