Index: /trunk/SophyaPI/PI/Quartz/PI.xcodeproj/brunomansoux.mode1
===================================================================
--- /trunk/SophyaPI/PI/Quartz/PI.xcodeproj/brunomansoux.mode1	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/PI.xcodeproj/brunomansoux.mode1	(revision 3747)
@@ -243,5 +243,5 @@
 							<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
 							<array>
-								<real>189</real>
+								<real>255</real>
 							</array>
 							<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
@@ -255,19 +255,14 @@
 							<array>
 								<string>0867D691FE84028FC02AAC07</string>
-								<string>6D10686E067DC53B009E5976</string>
-								<string>6D7D4E4B066710DA009E5976</string>
-								<string>6D526BF9066244A2009E5976</string>
-								<string>6D078000061854AA009E5976</string>
 							</array>
 							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
 							<array>
 								<array>
-									<integer>28</integer>
-									<integer>19</integer>
+									<integer>7</integer>
 									<integer>0</integer>
 								</array>
 							</array>
 							<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
-							<string>{{0, 0}, {189, 876}}</string>
+							<string>{{0, 0}, {255, 878}}</string>
 						</dict>
 						<key>PBXTopSmartGroupGIDs</key>
@@ -281,17 +276,17 @@
 					<dict>
 						<key>Frame</key>
-						<string>{{0, 0}, {206, 894}}</string>
+						<string>{{0, 0}, {272, 896}}</string>
 						<key>GroupTreeTableConfiguration</key>
 						<array>
 							<string>MainColumn</string>
-							<real>189</real>
+							<real>255</real>
 						</array>
 						<key>RubberWindowFrame</key>
-						<string>197 67 1073 935 0 0 1280 1002 </string>
+						<string>46 65 1132 937 0 0 1280 1002 </string>
 					</dict>
 					<key>Module</key>
 					<string>PBXSmartGroupTreeModule</string>
 					<key>Proportion</key>
-					<string>206pt</string>
+					<string>272pt</string>
 				</dict>
 				<dict>
@@ -299,4 +294,6 @@
 					<array>
 						<dict>
+							<key>BecomeActive</key>
+							<true/>
 							<key>ContentConfiguration</key>
 							<dict>
@@ -304,5 +301,5 @@
 								<string>1CE0B20306471E060097A5F4</string>
 								<key>PBXProjectModuleLabel</key>
-								<string>SPIWindow.cpp</string>
+								<string>QuartzAppTest.cpp</string>
 								<key>PBXSplitModuleInNavigatorKey</key>
 								<dict>
@@ -312,79 +309,50 @@
 										<string>1CE0B20406471E060097A5F4</string>
 										<key>PBXProjectModuleLabel</key>
-										<string>SPIWindow.cpp</string>
+										<string>QuartzAppTest.cpp</string>
 										<key>_historyCapacity</key>
-										<integer>10</integer>
+										<integer>20</integer>
 										<key>bookmark</key>
-										<string>6DED35E30DAE7B2D00A2F30F</string>
+										<string>6DD3B7DA112E6EF400FF73F4</string>
 										<key>history</key>
 										<array>
-											<string>6DED34E30DAE15FE00A2F30F</string>
-											<string>6DED34E40DAE15FE00A2F30F</string>
-											<string>6DED34E60DAE15FE00A2F30F</string>
-											<string>6DED355C0DAE431E00A2F30F</string>
-											<string>6DED355E0DAE431E00A2F30F</string>
-											<string>6DED35B80DAE4D7500A2F30F</string>
-											<string>6DED35B90DAE4D7500A2F30F</string>
-											<string>6DED35BA0DAE4D7500A2F30F</string>
-											<string>6DED35BB0DAE4D7500A2F30F</string>
-											<string>6DED35C60DAE4DDE00A2F30F</string>
+											<string>6D475934103C205F009DB4E2</string>
+											<string>6D475935103C205F009DB4E2</string>
+											<string>6D475AFC103C50CE009DB4E2</string>
+											<string>6D475AFD103C50CE009DB4E2</string>
+											<string>6D475AFE103C50CE009DB4E2</string>
+											<string>6D475AFF103C50CE009DB4E2</string>
+											<string>6D475B00103C50CE009DB4E2</string>
+											<string>6D475B02103C50CE009DB4E2</string>
+											<string>6D475B04103C50CE009DB4E2</string>
+											<string>6D475B05103C50CE009DB4E2</string>
+											<string>6D475B08103C50CE009DB4E2</string>
+											<string>6D475B09103C50CE009DB4E2</string>
+											<string>6DECAF30103EDEC600699E89</string>
+											<string>6DECAF31103EDEC600699E89</string>
+											<string>6DECAF32103EDEC600699E89</string>
+											<string>6D24D0E8108F71D400C9A36C</string>
+											<string>6DE9119710D24B1B003F0B29</string>
+											<string>6DD55619112DA8D800BA57AE</string>
 										</array>
 										<key>prevStack</key>
 										<array>
-											<string>6DED741A0D8FAEE700D85368</string>
-											<string>6DEF36ED0DA1181700B5B599</string>
-											<string>6DED33320DADE76200A2F30F</string>
-											<string>6DED33330DADE76200A2F30F</string>
-											<string>6DED33340DADE76200A2F30F</string>
-											<string>6DED33350DADE76200A2F30F</string>
-											<string>6DED33360DADE76200A2F30F</string>
-											<string>6DED33390DADE76200A2F30F</string>
-											<string>6DED333A0DADE76200A2F30F</string>
-											<string>6DED333B0DADE76200A2F30F</string>
-											<string>6DED333C0DADE76200A2F30F</string>
-											<string>6DED33B10DADF2BD00A2F30F</string>
-											<string>6DED33B20DADF2BD00A2F30F</string>
-											<string>6DED33B30DADF2BD00A2F30F</string>
-											<string>6DED33B40DADF2BD00A2F30F</string>
-											<string>6DED33B50DADF2BD00A2F30F</string>
-											<string>6DED33B60DADF2BD00A2F30F</string>
-											<string>6DED33B70DADF2BD00A2F30F</string>
-											<string>6DED33B90DADF2BD00A2F30F</string>
-											<string>6DED33F80DADFEFA00A2F30F</string>
-											<string>6DED34500DAE0D2700A2F30F</string>
-											<string>6DED34510DAE0D2700A2F30F</string>
-											<string>6DED34520DAE0D2700A2F30F</string>
-											<string>6DED34530DAE0D2700A2F30F</string>
-											<string>6DED34540DAE0D2700A2F30F</string>
-											<string>6DED34550DAE0D2700A2F30F</string>
-											<string>6DED34560DAE0D2700A2F30F</string>
-											<string>6DED34E80DAE15FE00A2F30F</string>
-											<string>6DED34EA0DAE15FE00A2F30F</string>
-											<string>6DED34EB0DAE15FE00A2F30F</string>
-											<string>6DED34EC0DAE15FE00A2F30F</string>
-											<string>6DED34ED0DAE15FE00A2F30F</string>
-											<string>6DED34EE0DAE15FE00A2F30F</string>
-											<string>6DED34EF0DAE15FE00A2F30F</string>
-											<string>6DED34F00DAE15FE00A2F30F</string>
-											<string>6DED34F10DAE15FE00A2F30F</string>
-											<string>6DED34F20DAE15FE00A2F30F</string>
-											<string>6DED34F30DAE15FE00A2F30F</string>
-											<string>6DED34F40DAE15FE00A2F30F</string>
-											<string>6DED352B0DAE376A00A2F30F</string>
-											<string>6DED352C0DAE376A00A2F30F</string>
-											<string>6DED352D0DAE376A00A2F30F</string>
-											<string>6DED352E0DAE376A00A2F30F</string>
-											<string>6DED352F0DAE376A00A2F30F</string>
-											<string>6DED35600DAE431E00A2F30F</string>
-											<string>6DED35610DAE431E00A2F30F</string>
-											<string>6DED35620DAE431E00A2F30F</string>
-											<string>6DED35630DAE431E00A2F30F</string>
-											<string>6DED35640DAE431E00A2F30F</string>
-											<string>6DED35650DAE431E00A2F30F</string>
-											<string>6DED35BD0DAE4D7500A2F30F</string>
-											<string>6DED35BE0DAE4D7500A2F30F</string>
-											<string>6DED35BF0DAE4D7500A2F30F</string>
-											<string>6DED35C00DAE4D7500A2F30F</string>
-											<string>6DED35C10DAE4D7500A2F30F</string>
+											<string>6D47593A103C205F009DB4E2</string>
+											<string>6D475941103C205F009DB4E2</string>
+											<string>6D47595E103C205F009DB4E2</string>
+											<string>6D47596F103C205F009DB4E2</string>
+											<string>6D475972103C205F009DB4E2</string>
+											<string>6D475973103C205F009DB4E2</string>
+											<string>6D475974103C205F009DB4E2</string>
+											<string>6D475A1B103C320A009DB4E2</string>
+											<string>6D475A20103C320A009DB4E2</string>
+											<string>6D475A25103C320A009DB4E2</string>
+											<string>6D475B0B103C50CE009DB4E2</string>
+											<string>6D475B0D103C50CE009DB4E2</string>
+											<string>6D475B0E103C50CE009DB4E2</string>
+											<string>6D475B0F103C50CE009DB4E2</string>
+											<string>6D475B11103C50CE009DB4E2</string>
+											<string>6D475B15103C50CE009DB4E2</string>
+											<string>6D475B25103C50CE009DB4E2</string>
+											<string>6D475B2B103C50CE009DB4E2</string>
 										</array>
 									</dict>
@@ -398,16 +366,14 @@
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 0}, {862, 442}}</string>
+								<string>{{0, 0}, {855, 433}}</string>
 								<key>RubberWindowFrame</key>
-								<string>197 67 1073 935 0 0 1280 1002 </string>
+								<string>46 65 1132 937 0 0 1280 1002 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXNavigatorGroup</string>
 							<key>Proportion</key>
-							<string>442pt</string>
-						</dict>
-						<dict>
-							<key>BecomeActive</key>
-							<true/>
+							<string>433pt</string>
+						</dict>
+						<dict>
 							<key>ContentConfiguration</key>
 							<dict>
@@ -415,5 +381,5 @@
 								<string>1CE0B20306471E060097A5F4</string>
 								<key>PBXProjectModuleLabel</key>
-								<string>pistdwdgmosx.cpp</string>
+								<string>pigraphquartz.cpp</string>
 								<key>PBXSplitModuleInNavigatorKey</key>
 								<dict>
@@ -423,37 +389,50 @@
 										<string>1CE0B20406471E060097A5F4</string>
 										<key>PBXProjectModuleLabel</key>
-										<string>pistdwdgmosx.cpp</string>
+										<string>pigraphquartz.cpp</string>
 										<key>_historyCapacity</key>
-										<integer>10</integer>
+										<integer>20</integer>
 										<key>bookmark</key>
-										<string>6DED35E40DAE7B2D00A2F30F</string>
+										<string>6DD3B7DB112E6EF400FF73F4</string>
 										<key>history</key>
 										<array>
-											<string>6DED34E30DAE15FE00A2F30F</string>
-											<string>6DED34E60DAE15FE00A2F30F</string>
-											<string>6DED355C0DAE431E00A2F30F</string>
-											<string>6DED355E0DAE431E00A2F30F</string>
-											<string>6DED35B80DAE4D7500A2F30F</string>
-											<string>6DED35BA0DAE4D7500A2F30F</string>
-											<string>6DED35D20DAE4E6E00A2F30F</string>
-											<string>6DED35D30DAE4E6E00A2F30F</string>
-											<string>6DED35DC0DAE4F6100A2F30F</string>
-											<string>6DED35B90DAE4D7500A2F30F</string>
+											<string>6D475934103C205F009DB4E2</string>
+											<string>6D475935103C205F009DB4E2</string>
+											<string>6D475AFC103C50CE009DB4E2</string>
+											<string>6D475AFD103C50CE009DB4E2</string>
+											<string>6D475AFE103C50CE009DB4E2</string>
+											<string>6D475AFF103C50CE009DB4E2</string>
+											<string>6D475B00103C50CE009DB4E2</string>
+											<string>6D475B02103C50CE009DB4E2</string>
+											<string>6D475B03103C50CE009DB4E2</string>
+											<string>6D475B04103C50CE009DB4E2</string>
+											<string>6D475B05103C50CE009DB4E2</string>
+											<string>6D475B08103C50CE009DB4E2</string>
+											<string>6DECAF30103EDEC600699E89</string>
+											<string>6DECAF31103EDEC600699E89</string>
+											<string>6DECAF32103EDEC600699E89</string>
+											<string>6DE3BEB310501DB00074C72E</string>
+											<string>6D052AE0107B3725001E23C1</string>
+											<string>6DD5561A112DA8D800BA57AE</string>
 										</array>
 										<key>prevStack</key>
 										<array>
-											<string>6DED741A0D8FAEE700D85368</string>
-											<string>6DEF36ED0DA1181700B5B599</string>
-											<string>6DED33320DADE76200A2F30F</string>
-											<string>6DED33330DADE76200A2F30F</string>
-											<string>6DED34510DAE0D2700A2F30F</string>
-											<string>6DED34540DAE0D2700A2F30F</string>
-											<string>6DED34F30DAE15FE00A2F30F</string>
-											<string>6DED352C0DAE376A00A2F30F</string>
-											<string>6DED352D0DAE376A00A2F30F</string>
-											<string>6DED35BE0DAE4D7500A2F30F</string>
-											<string>6DED35D40DAE4E6E00A2F30F</string>
-											<string>6DED35D50DAE4E6E00A2F30F</string>
-											<string>6DED35DD0DAE4F6100A2F30F</string>
+											<string>6D47593A103C205F009DB4E2</string>
+											<string>6D475941103C205F009DB4E2</string>
+											<string>6D47595E103C205F009DB4E2</string>
+											<string>6D47596F103C205F009DB4E2</string>
+											<string>6D475972103C205F009DB4E2</string>
+											<string>6D475973103C205F009DB4E2</string>
+											<string>6D475974103C205F009DB4E2</string>
+											<string>6D475A1B103C320A009DB4E2</string>
+											<string>6D475A20103C320A009DB4E2</string>
+											<string>6D475A25103C320A009DB4E2</string>
+											<string>6D475B0B103C50CE009DB4E2</string>
+											<string>6D475B0D103C50CE009DB4E2</string>
+											<string>6D475B0E103C50CE009DB4E2</string>
+											<string>6D475B0F103C50CE009DB4E2</string>
+											<string>6D475B11103C50CE009DB4E2</string>
+											<string>6D475B15103C50CE009DB4E2</string>
+											<string>6D475B25103C50CE009DB4E2</string>
+											<string>6D475B2B103C50CE009DB4E2</string>
 										</array>
 									</dict>
@@ -467,12 +446,12 @@
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 447}, {862, 442}}</string>
+								<string>{{0, 438}, {855, 453}}</string>
 								<key>RubberWindowFrame</key>
-								<string>197 67 1073 935 0 0 1280 1002 </string>
+								<string>46 65 1132 937 0 0 1280 1002 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXNavigatorGroup</string>
 							<key>Proportion</key>
-							<string>442pt</string>
+							<string>453pt</string>
 						</dict>
 						<dict>
@@ -487,7 +466,7 @@
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 894}, {862, 0}}</string>
+								<string>{{0, 896}, {855, 0}}</string>
 								<key>RubberWindowFrame</key>
-								<string>197 67 1073 935 0 0 1280 1002 </string>
+								<string>46 65 1132 937 0 0 1280 1002 </string>
 							</dict>
 							<key>Module</key>
@@ -498,5 +477,5 @@
 					</array>
 					<key>Proportion</key>
-					<string>862pt</string>
+					<string>855pt</string>
 				</dict>
 			</array>
@@ -514,7 +493,7 @@
 			<key>TableOfContents</key>
 			<array>
-				<string>6DED33D20DADF2BD00A2F30F</string>
+				<string>6DD3B7DC112E6EF400FF73F4</string>
 				<string>1CE0B1FE06471DED0097A5F4</string>
-				<string>6DED33D30DADF2BD00A2F30F</string>
+				<string>6DD3B7DD112E6EF400FF73F4</string>
 				<string>1CE0B20306471E060097A5F4</string>
 				<string>1CE0B20306471E060097A5F4</string>
@@ -651,10 +630,9 @@
 	<key>WindowOrderList</key>
 	<array>
-		<string>6D51EC7C0BA8059900CD4CE8</string>
+		<string>1C0AD2B3069F1EA900FABCE6</string>
 		<string>/Users/brunomansoux/Programmes/PI4Mac/PI/Quartz/PI.xcodeproj</string>
-		<string>1C0AD2B3069F1EA900FABCE6</string>
 	</array>
 	<key>WindowString</key>
-	<string>197 67 1073 935 0 0 1280 1002 </string>
+	<string>46 65 1132 937 0 0 1280 1002 </string>
 	<key>WindowTools</key>
 	<array>
@@ -679,5 +657,5 @@
 								<string>1CD0528F0623707200166675</string>
 								<key>PBXProjectModuleLabel</key>
-								<string>SPIWindow.cpp</string>
+								<string>pistdwdgquartz.cpp</string>
 								<key>StatusBarVisibility</key>
 								<true/>
@@ -686,12 +664,12 @@
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 0}, {1103, 319}}</string>
+								<string>{{0, 0}, {1089, 392}}</string>
 								<key>RubberWindowFrame</key>
-								<string>100 130 1103 831 0 0 1280 1002 </string>
+								<string>273 96 1089 904 0 0 1280 1002 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXNavigatorGroup</string>
 							<key>Proportion</key>
-							<string>319pt</string>
+							<string>392pt</string>
 						</dict>
 						<dict>
@@ -699,5 +677,5 @@
 							<dict>
 								<key>PBXBuildLogShowsTranscriptDefaultKey</key>
-								<string>{{0, 158}, {1103, 308}}</string>
+								<string>{{0, 149}, {1089, 317}}</string>
 								<key>PBXProjectModuleGUID</key>
 								<string>XCMainBuildResultsModuleGUID</string>
@@ -712,7 +690,7 @@
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 324}, {1103, 466}}</string>
+								<string>{{0, 397}, {1089, 466}}</string>
 								<key>RubberWindowFrame</key>
-								<string>100 130 1103 831 0 0 1280 1002 </string>
+								<string>273 96 1089 904 0 0 1280 1002 </string>
 							</dict>
 							<key>Module</key>
@@ -723,5 +701,5 @@
 					</array>
 					<key>Proportion</key>
-					<string>790pt</string>
+					<string>863pt</string>
 				</dict>
 			</array>
@@ -737,5 +715,5 @@
 			<array>
 				<string>6D51EC7C0BA8059900CD4CE8</string>
-				<string>6DED33830DADF02B00A2F30F</string>
+				<string>6D475903103BF11E009DB4E2</string>
 				<string>1CD0528F0623707200166675</string>
 				<string>XCMainBuildResultsModuleGUID</string>
@@ -744,5 +722,5 @@
 			<string>xcode.toolbar.config.build</string>
 			<key>WindowString</key>
-			<string>100 130 1103 831 0 0 1280 1002 </string>
+			<string>273 96 1089 904 0 0 1280 1002 </string>
 			<key>WindowToolGUID</key>
 			<string>6D51EC7C0BA8059900CD4CE8</string>
@@ -779,6 +757,6 @@
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {324, 485}}</string>
-											<string>{{324, 0}, {630, 485}}</string>
+											<string>{{0, 0}, {267, 468}}</string>
+											<string>{{267, 0}, {687, 468}}</string>
 										</array>
 									</dict>
@@ -795,6 +773,6 @@
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {954, 485}}</string>
-											<string>{{0, 485}, {954, 382}}</string>
+											<string>{{0, 0}, {954, 468}}</string>
+											<string>{{0, 468}, {954, 399}}</string>
 										</array>
 									</dict>
@@ -820,5 +798,5 @@
 								<string>{{0, 0}, {954, 867}}</string>
 								<key>RubberWindowFrame</key>
-								<string>29 128 954 690 0 0 1280 1002 </string>
+								<string>107 159 954 690 0 0 1280 1002 </string>
 							</dict>
 							<key>Module</key>
@@ -843,17 +821,17 @@
 			<array>
 				<string>1CD10A99069EF8BA00B06720</string>
-				<string>6D4B8B390CA817620008926D</string>
+				<string>6DF0EDB10DBDC2370047313D</string>
 				<string>1C162984064C10D400B95A72</string>
-				<string>6D4B8B3A0CA817620008926D</string>
-				<string>6D4B8B3B0CA817620008926D</string>
-				<string>6D4B8B3C0CA817620008926D</string>
-				<string>6D4B8B3D0CA817620008926D</string>
-				<string>6D4B8B3E0CA817620008926D</string>
-				<string>6D4B8B3F0CA817620008926D</string>
+				<string>6DF0EDB20DBDC2370047313D</string>
+				<string>6DF0EDB30DBDC2370047313D</string>
+				<string>6DF0EDB40DBDC2370047313D</string>
+				<string>6DF0EDB50DBDC2370047313D</string>
+				<string>6DF0EDB60DBDC2370047313D</string>
+				<string>6DF0EDB70DBDC2370047313D</string>
 			</array>
 			<key>ToolbarConfiguration</key>
 			<string>xcode.toolbar.config.debug</string>
 			<key>WindowString</key>
-			<string>29 128 954 690 0 0 1280 1002 </string>
+			<string>107 159 954 690 0 0 1280 1002 </string>
 			<key>WindowToolGUID</key>
 			<string>1CD10A99069EF8BA00B06720</string>
@@ -889,5 +867,5 @@
 									<dict>
 										<key>Frame</key>
-										<string>{{0, 0}, {898, 446}}</string>
+										<string>{{0, 0}, {898, 0}}</string>
 										<key>RubberWindowFrame</key>
 										<string>307 38 898 964 0 0 1280 1002 </string>
@@ -900,5 +878,5 @@
 							</array>
 							<key>Proportion</key>
-							<string>446pt</string>
+							<string>0pt</string>
 						</dict>
 						<dict>
@@ -915,5 +893,5 @@
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 451}, {898, 472}}</string>
+								<string>{{0, 5}, {898, 918}}</string>
 								<key>RubberWindowFrame</key>
 								<string>307 38 898 964 0 0 1280 1002 </string>
@@ -922,5 +900,5 @@
 							<string>PBXProjectFindModule</string>
 							<key>Proportion</key>
-							<string>472pt</string>
+							<string>918pt</string>
 						</dict>
 					</array>
@@ -940,6 +918,6 @@
 			<array>
 				<string>1C530D57069F1CE1000CFCEE</string>
-				<string>6DF1EFF70DA4B5720081F718</string>
-				<string>6DF1EFF80DA4B5720081F718</string>
+				<string>6D475A8E103C42C6009DB4E2</string>
+				<string>6D475A8F103C42C6009DB4E2</string>
 				<string>1CDD528C0622207200134675</string>
 				<string>1CD0528E0623707200166675</string>
@@ -1004,5 +982,5 @@
 			<array>
 				<string>6DF69ABA0C7ADAAD0091767B</string>
-				<string>6DEA07810C8813E70016C028</string>
+				<string>6DF0EDB80DBDC2370047313D</string>
 				<string>1C78EAAC065D492600B07095</string>
 			</array>
@@ -1049,6 +1027,6 @@
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {493, 168}}</string>
-											<string>{{0, 173}, {493, 270}}</string>
+											<string>{{0, 0}, {491, 168}}</string>
+											<string>{{0, 173}, {491, 270}}</string>
 										</array>
 									</dict>
@@ -1076,5 +1054,5 @@
 								<string>{{0, 0}, {524, 746}}</string>
 								<key>RubberWindowFrame</key>
-								<string>18 95 524 787 0 0 1280 1002 </string>
+								<string>32 110 524 787 0 0 1280 1002 </string>
 							</dict>
 							<key>Module</key>
@@ -1099,12 +1077,12 @@
 			<array>
 				<string>1C0AD2B3069F1EA900FABCE6</string>
-				<string>6DED33840DADF02B00A2F30F</string>
+				<string>6DD3B7DE112E6EF400FF73F4</string>
 				<string>1CD0528B0623707200166675</string>
-				<string>6DED33850DADF02B00A2F30F</string>
+				<string>6DD3B7DF112E6EF400FF73F4</string>
 			</array>
 			<key>ToolbarConfiguration</key>
 			<string>xcode.toolbar.config.run</string>
 			<key>WindowString</key>
-			<string>18 95 524 787 0 0 1280 1002 </string>
+			<string>32 110 524 787 0 0 1280 1002 </string>
 			<key>WindowToolGUID</key>
 			<string>1C0AD2B3069F1EA900FABCE6</string>
Index: /trunk/SophyaPI/PI/Quartz/PI.xcodeproj/brunomansoux.pbxuser
===================================================================
--- /trunk/SophyaPI/PI/Quartz/PI.xcodeproj/brunomansoux.pbxuser	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/PI.xcodeproj/brunomansoux.pbxuser	(revision 3747)
@@ -4,8 +4,8 @@
 		activeBuildConfigurationName = Development;
 		activeBuildStyle = 4F0BB7EC011F40E904CA0E50 /* Development */;
-		activeExecutable = 6D622CD70D8ECB6300428D9A /* BaoAdc */;
-		activeTarget = 6D622CD50D8ECB6300428D9A /* BaoAdc */;
+		activeExecutable = 6D10687F067DC9AB009E5976 /* PIAQTest */;
+		activeTarget = 6D10687D067DC9AB009E5976 /* PIAQTest */;
 		addToTargets = (
-			6D622CD50D8ECB6300428D9A /* BaoAdc */,
+			0867D69CFE84028FC02AAC07 /* PI */,
 		);
 		breakpoints = (
@@ -62,5 +62,5 @@
 				PBXFileTableDataSourceColumnWidthsKey = (
 					20,
-					623,
+					616,
 					20,
 					48,
@@ -79,4 +79,20 @@
 				);
 			};
+			PBXConfiguration.PBXFileTableDataSource3.PBXSymbolsDataSource = {
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+				PBXFileTableDataSourceColumnSortingKey = PBXSymbolsDataSource_SymbolNameID;
+				PBXFileTableDataSourceColumnWidthsKey = (
+					16,
+					200,
+					50,
+					200,
+				);
+				PBXFileTableDataSourceColumnsKey = (
+					PBXSymbolsDataSource_SymbolTypeIconID,
+					PBXSymbolsDataSource_SymbolNameID,
+					PBXSymbolsDataSource_SymbolTypeID,
+					PBXSymbolsDataSource_ReferenceNameID,
+				);
+			};
 			PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
 				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
@@ -85,5 +101,5 @@
 					20,
 					200,
-					488,
+					259,
 					20,
 					48,
@@ -101,5 +117,5 @@
 				);
 			};
-			PBXPerProjectTemplateStateSaveDate = 229598697;
+			PBXPerProjectTemplateStateSaveDate = 288255717;
 			PBXWorkspaceContents = (
 				{
@@ -359,80 +375,51 @@
 				},
 			);
-			PBXWorkspaceStateSaveDate = 229598697;
+			PBXWorkspaceStateSaveDate = 288255717;
 		};
 		perUserProjectItems = {
-			6DED33320DADE76200A2F30F = 6DED33320DADE76200A2F30F /* PBXTextBookmark */;
-			6DED33330DADE76200A2F30F = 6DED33330DADE76200A2F30F /* PBXTextBookmark */;
-			6DED33340DADE76200A2F30F = 6DED33340DADE76200A2F30F /* PBXTextBookmark */;
-			6DED33350DADE76200A2F30F = 6DED33350DADE76200A2F30F /* PBXTextBookmark */;
-			6DED33360DADE76200A2F30F = 6DED33360DADE76200A2F30F /* PBXTextBookmark */;
-			6DED33390DADE76200A2F30F = 6DED33390DADE76200A2F30F /* PBXTextBookmark */;
-			6DED333A0DADE76200A2F30F = 6DED333A0DADE76200A2F30F /* PBXTextBookmark */;
-			6DED333B0DADE76200A2F30F = 6DED333B0DADE76200A2F30F /* PBXTextBookmark */;
-			6DED333C0DADE76200A2F30F = 6DED333C0DADE76200A2F30F /* PBXTextBookmark */;
-			6DED33B10DADF2BD00A2F30F = 6DED33B10DADF2BD00A2F30F /* PBXTextBookmark */;
-			6DED33B20DADF2BD00A2F30F = 6DED33B20DADF2BD00A2F30F /* PBXTextBookmark */;
-			6DED33B30DADF2BD00A2F30F = 6DED33B30DADF2BD00A2F30F /* PBXTextBookmark */;
-			6DED33B40DADF2BD00A2F30F = 6DED33B40DADF2BD00A2F30F /* PBXTextBookmark */;
-			6DED33B50DADF2BD00A2F30F = 6DED33B50DADF2BD00A2F30F /* PBXTextBookmark */;
-			6DED33B60DADF2BD00A2F30F = 6DED33B60DADF2BD00A2F30F /* PBXTextBookmark */;
-			6DED33B70DADF2BD00A2F30F = 6DED33B70DADF2BD00A2F30F /* PBXTextBookmark */;
-			6DED33B90DADF2BD00A2F30F = 6DED33B90DADF2BD00A2F30F /* PBXTextBookmark */;
-			6DED33F80DADFEFA00A2F30F = 6DED33F80DADFEFA00A2F30F /* PBXTextBookmark */;
-			6DED34500DAE0D2700A2F30F = 6DED34500DAE0D2700A2F30F /* PBXTextBookmark */;
-			6DED34510DAE0D2700A2F30F = 6DED34510DAE0D2700A2F30F /* PBXTextBookmark */;
-			6DED34520DAE0D2700A2F30F = 6DED34520DAE0D2700A2F30F /* PBXTextBookmark */;
-			6DED34530DAE0D2700A2F30F = 6DED34530DAE0D2700A2F30F /* PBXTextBookmark */;
-			6DED34540DAE0D2700A2F30F = 6DED34540DAE0D2700A2F30F /* PBXTextBookmark */;
-			6DED34550DAE0D2700A2F30F = 6DED34550DAE0D2700A2F30F /* PBXTextBookmark */;
-			6DED34560DAE0D2700A2F30F = 6DED34560DAE0D2700A2F30F /* PBXTextBookmark */;
-			6DED34E30DAE15FE00A2F30F = 6DED34E30DAE15FE00A2F30F /* PBXTextBookmark */;
-			6DED34E40DAE15FE00A2F30F = 6DED34E40DAE15FE00A2F30F /* PBXTextBookmark */;
-			6DED34E60DAE15FE00A2F30F = 6DED34E60DAE15FE00A2F30F /* PBXTextBookmark */;
-			6DED34E80DAE15FE00A2F30F = 6DED34E80DAE15FE00A2F30F /* PBXTextBookmark */;
-			6DED34EA0DAE15FE00A2F30F = 6DED34EA0DAE15FE00A2F30F /* PBXTextBookmark */;
-			6DED34EB0DAE15FE00A2F30F = 6DED34EB0DAE15FE00A2F30F /* PBXTextBookmark */;
-			6DED34EC0DAE15FE00A2F30F = 6DED34EC0DAE15FE00A2F30F /* PBXTextBookmark */;
-			6DED34ED0DAE15FE00A2F30F = 6DED34ED0DAE15FE00A2F30F /* PBXTextBookmark */;
-			6DED34EE0DAE15FE00A2F30F = 6DED34EE0DAE15FE00A2F30F /* PBXTextBookmark */;
-			6DED34EF0DAE15FE00A2F30F = 6DED34EF0DAE15FE00A2F30F /* PBXTextBookmark */;
-			6DED34F00DAE15FE00A2F30F = 6DED34F00DAE15FE00A2F30F /* PBXTextBookmark */;
-			6DED34F10DAE15FE00A2F30F = 6DED34F10DAE15FE00A2F30F /* PBXTextBookmark */;
-			6DED34F20DAE15FE00A2F30F = 6DED34F20DAE15FE00A2F30F /* PBXTextBookmark */;
-			6DED34F30DAE15FE00A2F30F = 6DED34F30DAE15FE00A2F30F /* PBXTextBookmark */;
-			6DED34F40DAE15FE00A2F30F = 6DED34F40DAE15FE00A2F30F /* PBXTextBookmark */;
-			6DED352B0DAE376A00A2F30F = 6DED352B0DAE376A00A2F30F /* PBXTextBookmark */;
-			6DED352C0DAE376A00A2F30F = 6DED352C0DAE376A00A2F30F /* PBXTextBookmark */;
-			6DED352D0DAE376A00A2F30F = 6DED352D0DAE376A00A2F30F /* PBXTextBookmark */;
-			6DED352E0DAE376A00A2F30F = 6DED352E0DAE376A00A2F30F /* PBXTextBookmark */;
-			6DED352F0DAE376A00A2F30F = 6DED352F0DAE376A00A2F30F /* PBXTextBookmark */;
-			6DED355C0DAE431E00A2F30F = 6DED355C0DAE431E00A2F30F /* PBXTextBookmark */;
-			6DED355E0DAE431E00A2F30F = 6DED355E0DAE431E00A2F30F /* PBXTextBookmark */;
-			6DED35600DAE431E00A2F30F = 6DED35600DAE431E00A2F30F /* PBXTextBookmark */;
-			6DED35610DAE431E00A2F30F = 6DED35610DAE431E00A2F30F /* PBXTextBookmark */;
-			6DED35620DAE431E00A2F30F = 6DED35620DAE431E00A2F30F /* PBXTextBookmark */;
-			6DED35630DAE431E00A2F30F = 6DED35630DAE431E00A2F30F /* PBXTextBookmark */;
-			6DED35640DAE431E00A2F30F = 6DED35640DAE431E00A2F30F /* PBXTextBookmark */;
-			6DED35650DAE431E00A2F30F = 6DED35650DAE431E00A2F30F /* PBXTextBookmark */;
-			6DED35B80DAE4D7500A2F30F = 6DED35B80DAE4D7500A2F30F /* PBXTextBookmark */;
-			6DED35B90DAE4D7500A2F30F = 6DED35B90DAE4D7500A2F30F /* PBXTextBookmark */;
-			6DED35BA0DAE4D7500A2F30F = 6DED35BA0DAE4D7500A2F30F /* PBXTextBookmark */;
-			6DED35BB0DAE4D7500A2F30F = 6DED35BB0DAE4D7500A2F30F /* PBXTextBookmark */;
-			6DED35BD0DAE4D7500A2F30F = 6DED35BD0DAE4D7500A2F30F /* PBXTextBookmark */;
-			6DED35BE0DAE4D7500A2F30F = 6DED35BE0DAE4D7500A2F30F /* PBXTextBookmark */;
-			6DED35BF0DAE4D7500A2F30F = 6DED35BF0DAE4D7500A2F30F /* PBXTextBookmark */;
-			6DED35C00DAE4D7500A2F30F = 6DED35C00DAE4D7500A2F30F /* PBXTextBookmark */;
-			6DED35C10DAE4D7500A2F30F = 6DED35C10DAE4D7500A2F30F /* PBXTextBookmark */;
-			6DED35C60DAE4DDE00A2F30F = 6DED35C60DAE4DDE00A2F30F /* PBXTextBookmark */;
-			6DED35D20DAE4E6E00A2F30F = 6DED35D20DAE4E6E00A2F30F /* PBXTextBookmark */;
-			6DED35D30DAE4E6E00A2F30F = 6DED35D30DAE4E6E00A2F30F /* PBXTextBookmark */;
-			6DED35D40DAE4E6E00A2F30F = 6DED35D40DAE4E6E00A2F30F /* PBXTextBookmark */;
-			6DED35D50DAE4E6E00A2F30F = 6DED35D50DAE4E6E00A2F30F /* PBXTextBookmark */;
-			6DED35DC0DAE4F6100A2F30F = 6DED35DC0DAE4F6100A2F30F /* PBXTextBookmark */;
-			6DED35DD0DAE4F6100A2F30F = 6DED35DD0DAE4F6100A2F30F /* PBXTextBookmark */;
-			6DED35E30DAE7B2D00A2F30F = 6DED35E30DAE7B2D00A2F30F /* PBXTextBookmark */;
-			6DED35E40DAE7B2D00A2F30F = 6DED35E40DAE7B2D00A2F30F /* PBXTextBookmark */;
-			6DED741A0D8FAEE700D85368 = 6DED741A0D8FAEE700D85368 /* PBXTextBookmark */;
-			6DEF36ED0DA1181700B5B599 = 6DEF36ED0DA1181700B5B599 /* PBXTextBookmark */;
+			6D052AE0107B3725001E23C1 = 6D052AE0107B3725001E23C1 /* PBXTextBookmark */;
+			6D24D0E8108F71D400C9A36C = 6D24D0E8108F71D400C9A36C /* PBXTextBookmark */;
+			6D475934103C205F009DB4E2 = 6D475934103C205F009DB4E2 /* PBXTextBookmark */;
+			6D475935103C205F009DB4E2 = 6D475935103C205F009DB4E2 /* PBXTextBookmark */;
+			6D47593A103C205F009DB4E2 = 6D47593A103C205F009DB4E2 /* PBXTextBookmark */;
+			6D475941103C205F009DB4E2 = 6D475941103C205F009DB4E2 /* PBXTextBookmark */;
+			6D47595E103C205F009DB4E2 = 6D47595E103C205F009DB4E2 /* PBXTextBookmark */;
+			6D47596F103C205F009DB4E2 = 6D47596F103C205F009DB4E2 /* PBXTextBookmark */;
+			6D475972103C205F009DB4E2 = 6D475972103C205F009DB4E2 /* PBXTextBookmark */;
+			6D475973103C205F009DB4E2 = 6D475973103C205F009DB4E2 /* PBXTextBookmark */;
+			6D475974103C205F009DB4E2 = 6D475974103C205F009DB4E2 /* PBXTextBookmark */;
+			6D475A1B103C320A009DB4E2 = 6D475A1B103C320A009DB4E2 /* PBXTextBookmark */;
+			6D475A20103C320A009DB4E2 = 6D475A20103C320A009DB4E2 /* PBXTextBookmark */;
+			6D475A25103C320A009DB4E2 = 6D475A25103C320A009DB4E2 /* PBXTextBookmark */;
+			6D475AFC103C50CE009DB4E2 = 6D475AFC103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475AFD103C50CE009DB4E2 = 6D475AFD103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475AFE103C50CE009DB4E2 = 6D475AFE103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475AFF103C50CE009DB4E2 = 6D475AFF103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475B00103C50CE009DB4E2 = 6D475B00103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475B02103C50CE009DB4E2 = 6D475B02103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475B03103C50CE009DB4E2 = 6D475B03103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475B04103C50CE009DB4E2 = 6D475B04103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475B05103C50CE009DB4E2 = 6D475B05103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475B08103C50CE009DB4E2 = 6D475B08103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475B09103C50CE009DB4E2 = 6D475B09103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475B0B103C50CE009DB4E2 = 6D475B0B103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475B0D103C50CE009DB4E2 = 6D475B0D103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475B0E103C50CE009DB4E2 = 6D475B0E103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475B0F103C50CE009DB4E2 = 6D475B0F103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475B11103C50CE009DB4E2 = 6D475B11103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475B15103C50CE009DB4E2 = 6D475B15103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475B25103C50CE009DB4E2 = 6D475B25103C50CE009DB4E2 /* PBXTextBookmark */;
+			6D475B2B103C50CE009DB4E2 = 6D475B2B103C50CE009DB4E2 /* PBXTextBookmark */;
+			6DD3B7DA112E6EF400FF73F4 /* PBXTextBookmark */ = 6DD3B7DA112E6EF400FF73F4 /* PBXTextBookmark */;
+			6DD3B7DB112E6EF400FF73F4 /* PBXTextBookmark */ = 6DD3B7DB112E6EF400FF73F4 /* PBXTextBookmark */;
+			6DD55619112DA8D800BA57AE = 6DD55619112DA8D800BA57AE /* PBXTextBookmark */;
+			6DD5561A112DA8D800BA57AE = 6DD5561A112DA8D800BA57AE /* PBXTextBookmark */;
+			6DD8F35B1105B82700A5CC5B = 6DD8F35B1105B82700A5CC5B /* PBXTextBookmark */;
+			6DD8F35C1105B82700A5CC5B = 6DD8F35C1105B82700A5CC5B /* PBXTextBookmark */;
+			6DE3BEB310501DB00074C72E = 6DE3BEB310501DB00074C72E /* PBXTextBookmark */;
+			6DE9119710D24B1B003F0B29 = 6DE9119710D24B1B003F0B29 /* PBXTextBookmark */;
+			6DECAF30103EDEC600699E89 = 6DECAF30103EDEC600699E89 /* PBXTextBookmark */;
+			6DECAF31103EDEC600699E89 = 6DECAF31103EDEC600699E89 /* PBXTextBookmark */;
+			6DECAF32103EDEC600699E89 = 6DECAF32103EDEC600699E89 /* PBXTextBookmark */;
 		};
 		sourceControlManager = 6DF29DE50B71EEB300F55B65 /* Source Control */;
@@ -450,16 +437,26 @@
 		};
 	};
+	6D052AE0107B3725001E23C1 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D106876067DC8FC009E5976 /* QuartzAppTest.cpp */;
+		name = "QuartzAppTest.cpp: 42";
+		rLen = 0;
+		rLoc = 716;
+		rType = 0;
+		vrLen = 584;
+		vrLoc = 368;
+	};
 	6D0E25030665D32C009E5976 /* pimsghandler.cc */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {719, 1442}}";
-			sepNavSelRange = "{186, 22}";
-			sepNavVisRect = "{{0, 0}, {719, 583}}";
+			sepNavIntBoundsRect = "{{0, 0}, {657, 1442}}";
+			sepNavSelRange = "{3068, 0}";
+			sepNavVisRect = "{{0, 0}, {657, 854}}";
 		};
 	};
 	6D106876067DC8FC009E5976 /* QuartzAppTest.cpp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {866, 952}}";
-			sepNavSelRange = "{184, 0}";
-			sepNavVisRect = "{{0, 0}, {866, 405}}";
+			sepNavIntBoundsRect = "{{0, 0}, {814, 2520}}";
+			sepNavSelRange = "{3794, 0}";
+			sepNavVisRect = "{{0, 2104}, {814, 401}}";
 		};
 	};
@@ -497,53 +494,373 @@
 		);
 	};
-	6D189BFE0619C1F5009E5976 /* piwdgmosx.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {783, 1806}}";
-			sepNavSelRange = "{229, 0}";
-			sepNavVisRect = "{{0, 0}, {783, 410}}";
+	6D189BFE0619C1F5009E5976 /* piwdgquartz.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {727, 1848}}";
+			sepNavSelRange = "{870, 0}";
+			sepNavVisRect = "{{0, 1109}, {727, 407}}";
 			sepNavWindowFrame = "{{15, 33}, {936, 964}}";
 		};
 	};
-	6D189BFF0619C1F5009E5976 /* piwdgmosx.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {812, 3822}}";
-			sepNavSelRange = "{311, 0}";
-			sepNavVisRect = "{{0, 0}, {812, 566}}";
+	6D189BFF0619C1F5009E5976 /* piwdgquartz.cpp */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {802, 4298}}";
+			sepNavSelRange = "{502, 0}";
+			sepNavVisRect = "{{0, 78}, {802, 405}}";
 			sepNavWindowFrame = "{{15, 53}, {838, 944}}";
 		};
 	};
+	6D24D0E8108F71D400C9A36C /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D6F137F0D6458E200583608 /* pigraphquartz.cpp */;
+		name = "pigraphquartz.cpp: 140";
+		rLen = 0;
+		rLoc = 3976;
+		rType = 0;
+		vrLen = 958;
+		vrLoc = 3174;
+	};
 	6D41F30A064771A8009E5976 /* PIContainerQuartz.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {783, 462}}";
-			sepNavSelRange = "{657, 0}";
-			sepNavVisRect = "{{0, 0}, {783, 410}}";
+			sepNavIntBoundsRect = "{{0, 0}, {727, 859}}";
+			sepNavSelRange = "{634, 0}";
+			sepNavVisRect = "{{0, 0}, {727, 859}}";
 		};
 	};
 	6D41F30B064771A8009E5976 /* PIContainerQuartz.cpp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {719, 616}}";
-			sepNavSelRange = "{191, 0}";
-			sepNavVisRect = "{{0, 33}, {719, 583}}";
-		};
+			sepNavIntBoundsRect = "{{0, 0}, {727, 859}}";
+			sepNavSelRange = "{658, 23}";
+			sepNavVisRect = "{{0, 0}, {727, 859}}";
+		};
+	};
+	6D475934103C205F009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6DE18B840E837AD800414227 /* pioptmenuquartz.h */;
+		name = "pioptmenuquartz.h: mStext";
+		rLen = 0;
+		rLoc = 1033;
+		rType = 0;
+		vrLen = 1248;
+		vrLoc = 0;
+	};
+	6D475935103C205F009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6DE18C180E83E91700414227 /* pibwdgquartz.h */;
+		name = "pibwdgquartz.h: 44";
+		rLen = 0;
+		rLoc = 1197;
+		rType = 0;
+		vrLen = 1800;
+		vrLoc = 29;
+	};
+	6D47593A103C205F009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D189BFE0619C1F5009E5976 /* piwdgquartz.h */;
+		name = "piwdgquartz.h: RemoveEventHandler";
+		rLen = 0;
+		rLoc = 2932;
+		rType = 0;
+		vrLen = 1760;
+		vrLoc = 0;
+	};
+	6D475941103C205F009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D189BFF0619C1F5009E5976 /* piwdgquartz.cpp */;
+		name = "piwdgquartz.cpp: 10";
+		rLen = 0;
+		rLoc = 111;
+		rType = 0;
+		vrLen = 1249;
+		vrLoc = 0;
+	};
+	6D47595E103C205F009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D98FCF5062C1CDB009E5976 /* PIWindowQuartz.cpp */;
+		name = "PIWindowQuartz.cpp: 22";
+		rLen = 0;
+		rLoc = 498;
+		rType = 0;
+		vrLen = 1418;
+		vrLoc = 0;
+	};
+	6D47596F103C205F009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D6F137F0D6458E200583608 /* pigraphquartz.cpp */;
+		name = "pigraphquartz.cpp: 32";
+		rLen = 0;
+		rLoc = 886;
+		rType = 0;
+		vrLen = 1654;
+		vrLoc = 0;
+	};
+	6D475972103C205F009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6DE18C180E83E91700414227 /* pibwdgquartz.h */;
+		name = "pibwdgquartz.h: 44";
+		rLen = 0;
+		rLoc = 1197;
+		rType = 0;
+		vrLen = 1795;
+		vrLoc = 0;
+	};
+	6D475973103C205F009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6DE18B840E837AD800414227 /* pioptmenuquartz.h */;
+		name = "pioptmenuquartz.h: mStext";
+		rLen = 0;
+		rLoc = 1033;
+		rType = 0;
+		vrLen = 1248;
+		vrLoc = 0;
+	};
+	6D475974103C205F009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D6F12F30D644DA100583608 /* pigraphquartz.h */;
+		name = CGContextRef;
+		rLen = 12;
+		rLoc = 4548;
+		rType = 0;
+		vrLen = 2835;
+		vrLoc = 0;
+	};
+	6D475A1B103C320A009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D7D4E5506673450009E5976 /* PIMenuQuartz.h */;
+		name = "PIMenuQuartz.h: parent";
+		rLen = 0;
+		rLoc = 2013;
+		rType = 0;
+		vrLen = 595;
+		vrLoc = 1565;
+	};
+	6D475A20103C320A009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6DEA831E0C7F162300B7D5DD /* pistdwdgquartz.h */;
+		name = "pistdwdgquartz.h: 4";
+		rLen = 0;
+		rLoc = 78;
+		rType = 0;
+		vrLen = 806;
+		vrLoc = 171;
+	};
+	6D475A25103C320A009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D98FCF4062C1CDB009E5976 /* PIWindowQuartz.h */;
+		name = "PIWindowQuartz.h: wParent";
+		rLen = 0;
+		rLoc = 1619;
+		rType = 0;
+		vrLen = 930;
+		vrLoc = 736;
+	};
+	6D475AFC103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D526C000662461A009E5976 /* piwdggen.h */;
+		name = "piwdggen.h: 35";
+		rLen = 0;
+		rLoc = 709;
+		rType = 0;
+		vrLen = 1283;
+		vrLoc = 1034;
+	};
+	6D475AFD103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D189BFE0619C1F5009E5976 /* piwdgquartz.h */;
+		name = "piwdgquartz.h: 42";
+		rLen = 0;
+		rLoc = 870;
+		rType = 0;
+		vrLen = 1124;
+		vrLoc = 2402;
+	};
+	6D475AFE103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6DE18B850E837AD800414227 /* pioptmenuquartz.cpp */;
+		name = "pioptmenuquartz.cpp: 36";
+		rLen = 0;
+		rLoc = 601;
+		rType = 0;
+		vrLen = 1179;
+		vrLoc = 37;
+	};
+	6D475AFF103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D7D4E5506673450009E5976 /* PIMenuQuartz.h */;
+		name = "PIMenuQuartz.h: parent";
+		rLen = 0;
+		rLoc = 2013;
+		rType = 0;
+		vrLen = 1884;
+		vrLoc = 0;
+	};
+	6D475B00103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D7D4E5606673450009E5976 /* PIMenuQuartz.cpp */;
+		name = "PIMenuQuartz.cpp: GetNumItemMsg";
+		rLen = 0;
+		rLoc = 8237;
+		rType = 0;
+		vrLen = 1844;
+		vrLoc = 837;
+	};
+	6D475B02103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6DFD5AD406774017009E5976 /* PIApplQuartz.h */;
+		name = "PIApplQuartz.h: 27";
+		rLen = 0;
+		rLoc = 579;
+		rType = 0;
+		vrLen = 1516;
+		vrLoc = 0;
+	};
+	6D475B03103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6DFD5AD506774017009E5976 /* PIApplQuartz.cpp */;
+		name = "PIApplQuartz.cpp: 27";
+		rLen = 0;
+		rLoc = 685;
+		rType = 0;
+		vrLen = 1540;
+		vrLoc = 34;
+	};
+	6D475B04103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D41F30A064771A8009E5976 /* PIContainerQuartz.h */;
+		name = "PIContainerQuartz.h: GetWindowRef";
+		rLen = 0;
+		rLoc = 634;
+		rType = 0;
+		vrLen = 719;
+		vrLoc = 0;
+	};
+	6D475B05103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D189BFF0619C1F5009E5976 /* piwdgquartz.cpp */;
+		name = "piwdgquartz.cpp: 18";
+		rLen = 0;
+		rLoc = 452;
+		rType = 0;
+		vrLen = 1330;
+		vrLoc = 0;
+	};
+	6D475B08103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6DEA831E0C7F162300B7D5DD /* pistdwdgquartz.h */;
+		name = "pistdwdgquartz.h: 120";
+		rLen = 0;
+		rLoc = 3041;
+		rType = 0;
+		vrLen = 1569;
+		vrLoc = 1739;
+	};
+	6D475B09103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6DEA83220C7F166500B7D5DD /* pistdwdgquartz.cpp */;
+		name = "pistdwdgquartz.cpp: 286";
+		rLen = 0;
+		rLoc = 7169;
+		rType = 0;
+		vrLen = 1712;
+		vrLoc = 5655;
+	};
+	6D475B0B103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D526C000662461A009E5976 /* piwdggen.h */;
+		name = "piwdggen.h: 35";
+		rLen = 0;
+		rLoc = 709;
+		rType = 0;
+		vrLen = 1283;
+		vrLoc = 1034;
+	};
+	6D475B0D103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6DE18B850E837AD800414227 /* pioptmenuquartz.cpp */;
+		name = "pioptmenuquartz.cpp: 36";
+		rLen = 0;
+		rLoc = 601;
+		rType = 0;
+		vrLen = 1179;
+		vrLoc = 37;
+	};
+	6D475B0E103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6DEA83220C7F166500B7D5DD /* pistdwdgquartz.cpp */;
+		name = "pistdwdgquartz.cpp: 347";
+		rLen = 0;
+		rLoc = 8728;
+		rType = 0;
+		vrLen = 1510;
+		vrLoc = 7251;
+	};
+	6D475B0F103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D106876067DC8FC009E5976 /* QuartzAppTest.cpp */;
+		name = "QuartzAppTest.cpp: 75";
+		rLen = 0;
+		rLoc = 1631;
+		rType = 0;
+		vrLen = 1801;
+		vrLoc = 1067;
+	};
+	6D475B11103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D7D4E5606673450009E5976 /* PIMenuQuartz.cpp */;
+		name = "PIMenuQuartz.cpp: GetNumItemMsg";
+		rLen = 0;
+		rLoc = 8237;
+		rType = 0;
+		vrLen = 1844;
+		vrLoc = 837;
+	};
+	6D475B15103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6DFD5AD506774017009E5976 /* PIApplQuartz.cpp */;
+		name = "PIApplQuartz.cpp: 27";
+		rLen = 0;
+		rLoc = 685;
+		rType = 0;
+		vrLen = 1538;
+		vrLoc = 0;
+	};
+	6D475B25103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D41F30A064771A8009E5976 /* PIContainerQuartz.h */;
+		name = "PIContainerQuartz.h: GetWindowRef";
+		rLen = 0;
+		rLoc = 634;
+		rType = 0;
+		vrLen = 719;
+		vrLoc = 0;
+	};
+	6D475B2B103C50CE009DB4E2 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6DFD5AD406774017009E5976 /* PIApplQuartz.h */;
+		name = "PIApplQuartz.h: 27";
+		rLen = 0;
+		rLoc = 579;
+		rType = 0;
+		vrLen = 1516;
+		vrLoc = 0;
 	};
 	6D526BF706624488009E5976 /* picontainergen.cc */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {719, 4144}}";
-			sepNavSelRange = "{4729, 6}";
-			sepNavVisRect = "{{0, 1718}, {719, 583}}";
+			sepNavIntBoundsRect = "{{0, 0}, {1048, 4144}}";
+			sepNavSelRange = "{7554, 2}";
+			sepNavVisRect = "{{0, 3775}, {1048, 360}}";
 		};
 	};
 	6D526BFA06624512009E5976 /* picontainergen.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {719, 1036}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRect = "{{0, 101}, {719, 583}}";
+			sepNavIntBoundsRect = "{{0, 0}, {1048, 1036}}";
+			sepNavSelRange = "{299, 17}";
+			sepNavVisRect = "{{0, 0}, {1048, 360}}";
 		};
 	};
 	6D526C000662461A009E5976 /* piwdggen.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {817, 2198}}";
-			sepNavSelRange = "{5053, 0}";
-			sepNavVisRect = "{{0, 1438}, {817, 590}}";
+			sepNavIntBoundsRect = "{{0, 0}, {727, 2198}}";
+			sepNavSelRange = "{709, 0}";
+			sepNavVisRect = "{{0, 624}, {727, 407}}";
 			sepNavWindowFrame = "{{15, 53}, {1136, 944}}";
 		};
@@ -551,7 +868,7 @@
 	6D526C020662462C009E5976 /* pimsghandler.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {824, 938}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRect = "{{0, 0}, {824, 850}}";
+			sepNavIntBoundsRect = "{{0, 0}, {657, 952}}";
+			sepNavSelRange = "{1775, 0}";
+			sepNavVisRect = "{{0, 0}, {657, 854}}";
 			sepNavWindowFrame = "{{15, 34}, {722, 963}}";
 		};
@@ -559,7 +876,7 @@
 	6D526C040662464E009E5976 /* picolist.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {824, 850}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRect = "{{0, 0}, {824, 850}}";
+			sepNavIntBoundsRect = "{{0, 0}, {821, 412}}";
+			sepNavSelRange = "{846, 0}";
+			sepNavVisRect = "{{0, 0}, {821, 412}}";
 		};
 	};
@@ -615,68 +932,65 @@
 		libgmallocEnabled = 0;
 		name = BaoAdc;
+		savedGlobals = {
+		};
 		sourceDirectories = (
 		);
 	};
-	6D622CE80D8ED11400428D9A /* BaoAdc.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {819, 1890}}";
-			sepNavSelRange = "{462, 0}";
-			sepNavVisRect = "{{0, 165}, {819, 391}}";
-		};
-	};
-	6D622CE90D8ED11400428D9A /* BaoAdc.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {783, 1120}}";
-			sepNavSelRange = "{297, 0}";
-			sepNavVisRect = "{{0, 0}, {783, 429}}";
+	6D6F12700D6446D500583608 /* machdefs.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {931, 5628}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 0}, {931, 821}}";
+			sepNavWindowFrame = "{{15, 47}, {970, 950}}";
 		};
 	};
 	6D6F12AD0D644B2B00583608 /* pisysdep.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {659, 966}}";
-			sepNavSelRange = "{511, 0}";
-			sepNavVisRect = "{{0, 28}, {659, 405}}";
+			sepNavIntBoundsRect = "{{0, 0}, {657, 1008}}";
+			sepNavSelRange = "{108, 0}";
+			sepNavVisRect = "{{0, 0}, {657, 421}}";
 		};
 	};
 	6D6F12F30D644DA100583608 /* pigraphquartz.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {783, 1680}}";
-			sepNavSelRange = "{1928, 0}";
-			sepNavVisRect = "{{0, 10}, {783, 410}}";
+			sepNavIntBoundsRect = "{{0, 0}, {727, 1722}}";
+			sepNavSelRange = "{4635, 0}";
+			sepNavVisRect = "{{0, 849}, {727, 859}}";
+			sepNavWindowFrame = "{{15, 52}, {1242, 945}}";
 		};
 	};
 	6D6F132E0D6454DD00583608 /* pifontquartz.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {783, 700}}";
-			sepNavSelRange = "{164, 56}";
-			sepNavVisRect = "{{0, 0}, {783, 410}}";
+			sepNavIntBoundsRect = "{{0, 0}, {657, 854}}";
+			sepNavSelRange = "{220, 0}";
+			sepNavVisRect = "{{0, 0}, {657, 854}}";
 		};
 	};
 	6D6F13300D64550C00583608 /* pifontquartz.cpp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {817, 3080}}";
-			sepNavSelRange = "{94, 0}";
-			sepNavVisRect = "{{0, 0}, {817, 714}}";
+			sepNavIntBoundsRect = "{{0, 0}, {657, 3080}}";
+			sepNavSelRange = "{352, 0}";
+			sepNavVisRect = "{{0, 0}, {657, 854}}";
 		};
 	};
 	6D6F134D0D64572500583608 /* picmapquartz.cpp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {817, 2814}}";
-			sepNavSelRange = "{698, 0}";
-			sepNavVisRect = "{{0, 210}, {817, 714}}";
+			sepNavIntBoundsRect = "{{0, 0}, {680, 2814}}";
+			sepNavSelRange = "{63, 0}";
+			sepNavVisRect = "{{0, 0}, {657, 854}}";
 		};
 	};
 	6D6F134F0D64573200583608 /* picmapquartz.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {783, 532}}";
-			sepNavSelRange = "{0, 56}";
-			sepNavVisRect = "{{0, 0}, {783, 410}}";
+			sepNavIntBoundsRect = "{{0, 0}, {657, 854}}";
+			sepNavSelRange = "{200, 0}";
+			sepNavVisRect = "{{0, 0}, {657, 854}}";
 		};
 	};
 	6D6F137F0D6458E200583608 /* pigraphquartz.cpp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {719, 11172}}";
-			sepNavSelRange = "{673, 0}";
-			sepNavVisRect = "{{0, 0}, {719, 583}}";
+			sepNavIntBoundsRect = "{{0, 0}, {814, 12796}}";
+			sepNavSelRange = "{7203, 0}";
+			sepNavVisRect = "{{0, 3822}, {814, 421}}";
 		};
 	};
@@ -690,4 +1004,11 @@
 	6D6F13AF0D645C4D00583608 /* picmapgen.h */ = {
 		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {821, 672}}";
+			sepNavSelRange = "{508, 0}";
+			sepNavVisRect = "{{0, 138}, {821, 412}}";
+		};
+	};
+	6D6F13BF0D645E8B00583608 /* piconsenum.h */ = {
+		uiCtxt = {
 			sepNavIntBoundsRect = "{{0, 0}, {817, 714}}";
 			sepNavSelRange = "{0, 0}";
@@ -695,5 +1016,41 @@
 		};
 	};
-	6D6F13BF0D645E8B00583608 /* piconsenum.h */ = {
+	6D6F13F60D64604000583608 /* pigraphgen.cc */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {782, 12040}}";
+			sepNavSelRange = "{1001, 0}";
+			sepNavVisRect = "{{0, 1168}, {698, 400}}";
+		};
+	};
+	6D6F13F70D64604000583608 /* pigratt.cc */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {817, 12796}}";
+			sepNavSelRange = "{226, 23}";
+			sepNavVisRect = "{{0, 0}, {817, 714}}";
+		};
+	};
+	6D6F13FA0D64604000583608 /* pigrcoord.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {1030, 822}}";
+			sepNavSelRange = "{392, 41}";
+			sepNavVisRect = "{{0, 0}, {1030, 822}}";
+			sepNavWindowFrame = "{{74, 51}, {1069, 951}}";
+		};
+	};
+	6D6F13FD0D64604000583608 /* psfile.cc */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {881, 20244}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 7818}, {881, 855}}";
+		};
+	};
+	6D6F14100D64611D00583608 /* strutilxx.cc */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {817, 1134}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 420}, {817, 714}}";
+		};
+	};
+	6D6F14110D64611D00583608 /* strutilxx.h */ = {
 		uiCtxt = {
 			sepNavIntBoundsRect = "{{0, 0}, {817, 714}}";
@@ -702,25 +1059,4 @@
 		};
 	};
-	6D6F13F70D64604000583608 /* pigratt.cc */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {817, 12796}}";
-			sepNavSelRange = "{226, 23}";
-			sepNavVisRect = "{{0, 0}, {817, 714}}";
-		};
-	};
-	6D6F14100D64611D00583608 /* strutilxx.cc */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {817, 1134}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRect = "{{0, 420}, {817, 714}}";
-		};
-	};
-	6D6F14110D64611D00583608 /* strutilxx.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {817, 714}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRect = "{{0, 0}, {817, 714}}";
-		};
-	};
 	6D6F14740D6463FA00583608 /* xp1.cc */ = {
 		uiCtxt = {
@@ -732,14 +1068,14 @@
 	6D7D4E500667277A009E5976 /* PIMenuBarQuartz.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {783, 532}}";
-			sepNavSelRange = "{202, 0}";
-			sepNavVisRect = "{{0, 0}, {783, 410}}";
+			sepNavIntBoundsRect = "{{0, 0}, {657, 854}}";
+			sepNavSelRange = "{698, 0}";
+			sepNavVisRect = "{{0, 0}, {657, 854}}";
 		};
 	};
 	6D7D4E510667277A009E5976 /* PIMenuBarQuartz.cpp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {719, 1764}}";
-			sepNavSelRange = "{1206, 0}";
-			sepNavVisRect = "{{0, 285}, {719, 583}}";
+			sepNavIntBoundsRect = "{{0, 0}, {727, 2142}}";
+			sepNavSelRange = "{569, 0}";
+			sepNavVisRect = "{{0, 136}, {727, 415}}";
 			sepNavWindowFrame = "{{15, 53}, {1136, 944}}";
 		};
@@ -747,43 +1083,29 @@
 	6D7D4E5506673450009E5976 /* PIMenuQuartz.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {783, 1120}}";
-			sepNavSelRange = "{199, 0}";
-			sepNavVisRect = "{{0, 0}, {783, 410}}";
+			sepNavIntBoundsRect = "{{0, 0}, {727, 1148}}";
+			sepNavSelRange = "{2013, 0}";
+			sepNavVisRect = "{{0, 0}, {727, 859}}";
 		};
 	};
 	6D7D4E5606673450009E5976 /* PIMenuQuartz.cpp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {817, 4172}}";
-			sepNavSelRange = "{6361, 0}";
-			sepNavVisRect = "{{0, 3315}, {817, 857}}";
+			sepNavIntBoundsRect = "{{0, 0}, {727, 4732}}";
+			sepNavSelRange = "{8237, 0}";
+			sepNavVisRect = "{{0, 456}, {727, 859}}";
 			sepNavWindowFrame = "{{15, 53}, {1136, 944}}";
 		};
 	};
-	6D8292EC0623F784009E5976 /* PIControl.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {783, 868}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRect = "{{0, 0}, {783, 410}}";
-		};
-	};
-	6D8292ED0623F784009E5976 /* PIControl.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {817, 1904}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRect = "{{0, 0}, {817, 430}}";
-		};
-	};
 	6D98FCF4062C1CDB009E5976 /* PIWindowQuartz.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {783, 868}}";
-			sepNavSelRange = "{1114, 0}";
-			sepNavVisRect = "{{0, 0}, {783, 410}}";
+			sepNavIntBoundsRect = "{{0, 0}, {727, 896}}";
+			sepNavSelRange = "{1619, 0}";
+			sepNavVisRect = "{{0, 37}, {727, 859}}";
 		};
 	};
 	6D98FCF5062C1CDB009E5976 /* PIWindowQuartz.cpp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {812, 2030}}";
-			sepNavSelRange = "{411, 0}";
-			sepNavVisRect = "{{0, 85}, {812, 336}}";
+			sepNavIntBoundsRect = "{{0, 0}, {727, 2030}}";
+			sepNavSelRange = "{1018, 0}";
+			sepNavVisRect = "{{0, 0}, {727, 859}}";
 			sepNavWindowFrame = "{{15, 53}, {1136, 944}}";
 		};
@@ -791,9 +1113,69 @@
 	6DC3740A070405C7009E5976 /* todo.txt */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {772, 840}}";
+			sepNavIntBoundsRect = "{{0, 0}, {727, 187}}";
 			sepNavSelRange = "{260, 0}";
-			sepNavVisRect = "{{0, 0}, {772, 840}}";
+			sepNavVisRect = "{{0, 0}, {727, 187}}";
 			sepNavWindowFrame = "{{15, 33}, {811, 969}}";
 		};
+	};
+	6DD3B7DA112E6EF400FF73F4 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D106876067DC8FC009E5976 /* QuartzAppTest.cpp */;
+		name = "QuartzAppTest.cpp: 165";
+		rLen = 0;
+		rLoc = 3794;
+		rType = 0;
+		vrLen = 693;
+		vrLoc = 3455;
+	};
+	6DD3B7DB112E6EF400FF73F4 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D6F137F0D6458E200583608 /* pigraphquartz.cpp */;
+		name = "pigraphquartz.cpp: 289";
+		rLen = 0;
+		rLoc = 7203;
+		rType = 0;
+		vrLen = 854;
+		vrLoc = 6872;
+	};
+	6DD55619112DA8D800BA57AE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D106876067DC8FC009E5976 /* QuartzAppTest.cpp */;
+		name = "QuartzAppTest.cpp: 165";
+		rLen = 0;
+		rLoc = 3794;
+		rType = 0;
+		vrLen = 693;
+		vrLoc = 3455;
+	};
+	6DD5561A112DA8D800BA57AE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D6F137F0D6458E200583608 /* pigraphquartz.cpp */;
+		name = "pigraphquartz.cpp: 289";
+		rLen = 0;
+		rLoc = 7203;
+		rType = 0;
+		vrLen = 854;
+		vrLoc = 6872;
+	};
+	6DD8F35B1105B82700A5CC5B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D106876067DC8FC009E5976 /* QuartzAppTest.cpp */;
+		name = "QuartzAppTest.cpp: 165";
+		rLen = 0;
+		rLoc = 3794;
+		rType = 0;
+		vrLen = 693;
+		vrLoc = 3455;
+	};
+	6DD8F35C1105B82700A5CC5B /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D6F137F0D6458E200583608 /* pigraphquartz.cpp */;
+		name = "pigraphquartz.cpp: 289";
+		rLen = 0;
+		rLoc = 7203;
+		rType = 0;
+		vrLen = 854;
+		vrLoc = 6872;
 	};
 	6DDB77DC0663260E009E5976 /* piapplgen.cc */ = {
@@ -813,35 +1195,35 @@
 	6DDB77DE06632635009E5976 /* pimenubargen.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {824, 850}}";
+			sepNavIntBoundsRect = "{{0, 0}, {657, 854}}";
 			sepNavSelRange = "{105, 0}";
-			sepNavVisRect = "{{0, 0}, {824, 850}}";
+			sepNavVisRect = "{{0, 0}, {657, 854}}";
 		};
 	};
 	6DDB77DF0663263C009E5976 /* pimenubargen.cc */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {824, 850}}";
+			sepNavIntBoundsRect = "{{0, 0}, {657, 854}}";
 			sepNavSelRange = "{0, 0}";
-			sepNavVisRect = "{{0, 0}, {824, 850}}";
+			sepNavVisRect = "{{0, 0}, {657, 854}}";
 		};
 	};
 	6DDB77E00663264C009E5976 /* pimenugen.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {824, 850}}";
-			sepNavSelRange = "{196, 0}";
-			sepNavVisRect = "{{0, 0}, {824, 850}}";
+			sepNavIntBoundsRect = "{{0, 0}, {737, 859}}";
+			sepNavSelRange = "{645, 0}";
+			sepNavVisRect = "{{0, 0}, {737, 859}}";
 		};
 	};
 	6DDB77E10663264C009E5976 /* pimenugen.cc */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {824, 1736}}";
+			sepNavIntBoundsRect = "{{0, 0}, {688, 1750}}";
 			sepNavSelRange = "{0, 0}";
-			sepNavVisRect = "{{0, 884}, {824, 850}}";
+			sepNavVisRect = "{{0, 1341}, {688, 409}}";
 		};
 	};
 	6DDB77E20663266A009E5976 /* pistdwdggen.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {779, 1904}}";
-			sepNavSelRange = "{1130, 0}";
-			sepNavVisRect = "{{0, 1237}, {779, 410}}";
+			sepNavIntBoundsRect = "{{0, 0}, {727, 1904}}";
+			sepNavSelRange = "{693, 0}";
+			sepNavVisRect = "{{0, 249}, {727, 410}}";
 			sepNavWindowFrame = "{{15, 53}, {1136, 944}}";
 		};
@@ -856,15 +1238,70 @@
 	6DDB77E80663268E009E5976 /* piwindowgen.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {817, 714}}";
-			sepNavSelRange = "{237, 0}";
-			sepNavVisRect = "{{0, 0}, {817, 714}}";
+			sepNavIntBoundsRect = "{{0, 0}, {931, 821}}";
+			sepNavSelRange = "{274, 0}";
+			sepNavVisRect = "{{0, 0}, {931, 821}}";
+			sepNavWindowFrame = "{{15, 47}, {970, 950}}";
 		};
 	};
 	6DDB77E90663268E009E5976 /* piwindowgen.cc */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {824, 1596}}";
+			sepNavIntBoundsRect = "{{0, 0}, {740, 1568}}";
 			sepNavSelRange = "{2800, 0}";
-			sepNavVisRect = "{{0, 0}, {824, 850}}";
-		};
+			sepNavVisRect = "{{0, 1166}, {698, 400}}";
+		};
+	};
+	6DE18B840E837AD800414227 /* pioptmenuquartz.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {674, 854}}";
+			sepNavSelRange = "{1033, 0}";
+			sepNavVisRect = "{{0, 0}, {657, 854}}";
+		};
+	};
+	6DE18B850E837AD800414227 /* pioptmenuquartz.cpp */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {1048, 1008}}";
+			sepNavSelRange = "{601, 0}";
+			sepNavVisRect = "{{0, 331}, {1048, 360}}";
+			sepNavWindowFrame = "{{199, 52}, {970, 950}}";
+		};
+	};
+	6DE18BF60E83E4FE00414227 /* pidrwtools.cc */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {1066, 21070}}";
+			sepNavSelRange = "{21704, 61}";
+			sepNavVisRect = "{{0, 9994}, {1066, 354}}";
+		};
+	};
+	6DE18BF70E83E4FE00414227 /* pidrwtools.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {736, 1442}}";
+			sepNavSelRange = "{2097, 0}";
+			sepNavVisRect = "{{0, 586}, {736, 856}}";
+		};
+	};
+	6DE18C180E83E91700414227 /* pibwdgquartz.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {657, 896}}";
+			sepNavSelRange = "{1197, 0}";
+			sepNavVisRect = "{{0, 42}, {657, 854}}";
+			sepNavWindowFrame = "{{15, 46}, {1069, 951}}";
+		};
+	};
+	6DE18C190E83E91700414227 /* pibwdgquartz.cpp */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {727, 1064}}";
+			sepNavSelRange = "{492, 0}";
+			sepNavVisRect = "{{0, 0}, {727, 859}}";
+		};
+	};
+	6DE3BEB310501DB00074C72E /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6DEA83220C7F166500B7D5DD /* pistdwdgquartz.cpp */;
+		name = "pistdwdgquartz.cpp: 286";
+		rLen = 0;
+		rLoc = 7185;
+		rType = 0;
+		vrLen = 769;
+		vrLoc = 6600;
 	};
 	6DE7443F0C7C2E390051D656 /* xp0.cc */ = {
@@ -908,4 +1345,21 @@
 		);
 	};
+	6DE8E8130E87BA6D0031A5D9 /* pigraphps.cc */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {698, 7350}}";
+			sepNavSelRange = "{486, 0}";
+			sepNavVisRect = "{{0, 296}, {657, 854}}";
+		};
+	};
+	6DE9119710D24B1B003F0B29 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6DFD5AD506774017009E5976 /* PIApplQuartz.cpp */;
+		name = "PIApplQuartz.cpp: 32";
+		rLen = 0;
+		rLoc = 757;
+		rType = 0;
+		vrLen = 788;
+		vrLoc = 632;
+	};
 	6DEA07D30C88612B0016C028 /* PIT0 */ = {
 		activeExec = 0;
@@ -941,7 +1395,7 @@
 	6DEA07E50C8861E90016C028 /* pit0.cc */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1062, 4354}}";
-			sepNavSelRange = "{4886, 91}";
-			sepNavVisRect = "{{0, 2272}, {1062, 287}}";
+			sepNavIntBoundsRect = "{{0, 0}, {860, 4354}}";
+			sepNavSelRange = "{725, 0}";
+			sepNavVisRect = "{{0, 0}, {860, 858}}";
 			sepNavWindowFrame = "{{15, 28}, {1002, 969}}";
 		};
@@ -978,16 +1432,16 @@
 		);
 	};
-	6DEA831E0C7F162300B7D5DD /* pistdwdgmosx.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {783, 1848}}";
-			sepNavSelRange = "{2480, 0}";
-			sepNavVisRect = "{{0, 0}, {783, 410}}";
-		};
-	};
-	6DEA83220C7F166500B7D5DD /* pistdwdgmosx.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {821, 4970}}";
-			sepNavSelRange = "{2253, 0}";
-			sepNavVisRect = "{{0, 994}, {821, 410}}";
+	6DEA831E0C7F162300B7D5DD /* pistdwdgquartz.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {727, 1848}}";
+			sepNavSelRange = "{3041, 0}";
+			sepNavVisRect = "{{0, 989}, {727, 859}}";
+		};
+	};
+	6DEA83220C7F166500B7D5DD /* pistdwdgquartz.cpp */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {778, 4998}}";
+			sepNavSelRange = "{7185, 0}";
+			sepNavVisRect = "{{0, 3768}, {778, 446}}";
 			sepNavWindowFrame = "{{15, 53}, {1136, 944}}";
 		};
@@ -999,815 +1453,124 @@
 		);
 	};
-	6DED33240DADE70C00A2F30F /* SPIWindow.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {821, 560}}";
-			sepNavSelRange = "{376, 0}";
-			sepNavVisRect = "{{0, 122}, {821, 410}}";
-		};
-	};
-	6DED33250DADE70C00A2F30F /* SPIWindow.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {821, 1260}}";
-			sepNavSelRange = "{937, 0}";
-			sepNavVisRect = "{{0, 850}, {821, 410}}";
-		};
-	};
-	6DED33320DADE76200A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33240DADE70C00A2F30F /* SPIWindow.h */;
-		name = "SPIWind.h: 10";
-		rLen = 0;
-		rLoc = 793;
-		rType = 0;
-		vrLen = 136;
+	6DECAF30103EDEC600699E89 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D98FCF4062C1CDB009E5976 /* PIWindowQuartz.h */;
+		name = "PIWindowQuartz.h: wParent";
+		rLen = 0;
+		rLoc = 1619;
+		rType = 0;
+		vrLen = 1642;
+		vrLoc = 24;
+	};
+	6DECAF31103EDEC600699E89 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D98FCF5062C1CDB009E5976 /* PIWindowQuartz.cpp */;
+		name = "PIWindowQuartz.cpp: 42";
+		rLen = 0;
+		rLoc = 1018;
+		rType = 0;
+		vrLen = 1318;
 		vrLoc = 0;
 	};
-	6DED33330DADE76200A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33250DADE70C00A2F30F /* SPIWindow.cpp */;
-		name = "SPIWindow.cpp: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 160;
-		vrLoc = 0;
-	};
-	6DED33340DADE76200A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33240DADE70C00A2F30F /* SPIWindow.h */;
-		name = "SPIWindow.h: 10";
-		rLen = 0;
-		rLoc = 793;
-		rType = 0;
-		vrLen = 136;
-		vrLoc = 0;
-	};
-	6DED33350DADE76200A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED738F0D8FA59000D85368 /* RegisterWindow.h */;
-		name = "RegisterWindow.h: 9";
-		rLen = 137;
-		rLoc = 206;
-		rType = 0;
-		vrLen = 1507;
-		vrLoc = 0;
-	};
-	6DED33360DADE76200A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33240DADE70C00A2F30F /* SPIWindow.h */;
-		name = "SPIWindow.h: 19";
-		rLen = 0;
-		rLoc = 792;
-		rType = 0;
-		vrLen = 275;
-		vrLoc = 0;
-	};
-	6DED33390DADE76200A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED738F0D8FA59000D85368 /* RegisterWindow.h */;
-		name = "RegisterWindow.h: 9";
-		rLen = 137;
-		rLoc = 206;
-		rType = 0;
-		vrLen = 1507;
-		vrLoc = 0;
-	};
-	6DED333A0DADE76200A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33240DADE70C00A2F30F /* SPIWindow.h */;
-		name = "SPIWindow.h: 19";
-		rLen = 0;
-		rLoc = 792;
-		rType = 0;
-		vrLen = 275;
-		vrLoc = 0;
-	};
-	6DED333B0DADE76200A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33250DADE70C00A2F30F /* SPIWindow.cpp */;
-		name = "SPIWindow.cpp: 10";
-		rLen = 0;
-		rLoc = 157;
-		rType = 0;
-		vrLen = 162;
-		vrLoc = 0;
-	};
-	6DED333C0DADE76200A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33240DADE70C00A2F30F /* SPIWindow.h */;
-		name = "SPIWindow.h: 19";
-		rLen = 0;
-		rLoc = 792;
-		rType = 0;
-		vrLen = 275;
-		vrLoc = 0;
-	};
-	6DED33B10DADF2BD00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED738F0D8FA59000D85368 /* RegisterWindow.h */;
-		name = "RegisterWindow.h: DR_SIZE";
-		rLen = 0;
-		rLoc = 426;
-		rType = 0;
-		vrLen = 806;
-		vrLoc = 434;
-	};
-	6DED33B20DADF2BD00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33240DADE70C00A2F30F /* SPIWindow.h */;
-		name = "SPIWindow.h: 26";
-		rLen = 0;
-		rLoc = 633;
-		rType = 0;
-		vrLen = 458;
-		vrLoc = 0;
-	};
-	6DED33B30DADF2BD00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33250DADE70C00A2F30F /* SPIWindow.cpp */;
-		name = "SPIWindow.cpp: 11";
-		rLen = 0;
-		rLoc = 161;
-		rType = 0;
-		vrLen = 1074;
-		vrLoc = 0;
-	};
-	6DED33B40DADF2BD00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33240DADE70C00A2F30F /* SPIWindow.h */;
-		name = "SPIWindow.h: 6";
-		rLen = 0;
-		rLoc = 127;
-		rType = 0;
-		vrLen = 593;
-		vrLoc = 0;
-	};
-	6DED33B50DADF2BD00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED73900D8FA59000D85368 /* RegisterWindow.cpp */;
-		name = "RegisterWindow.cpp: 26";
-		rLen = 0;
-		rLoc = 173;
-		rType = 0;
-		vrLen = 613;
-		vrLoc = 0;
-	};
-	6DED33B60DADF2BD00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED738F0D8FA59000D85368 /* RegisterWindow.h */;
-		name = "RegisterWindow.h: 43";
-		rLen = 0;
-		rLoc = 447;
-		rType = 0;
-		vrLen = 1022;
-		vrLoc = 397;
-	};
-	6DED33B70DADF2BD00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33250DADE70C00A2F30F /* SPIWindow.cpp */;
-		name = "SPIWindow.cpp: 36";
-		rLen = 0;
-		rLoc = 1286;
-		rType = 0;
-		vrLen = 1282;
-		vrLoc = 277;
-	};
-	6DED33B90DADF2BD00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33250DADE70C00A2F30F /* SPIWindow.cpp */;
-		name = "SPIWindow.cpp: 18";
-		rLen = 0;
-		rLoc = 420;
-		rType = 0;
-		vrLen = 1086;
-		vrLoc = 0;
-	};
-	6DED33F80DADFEFA00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33250DADE70C00A2F30F /* SPIWindow.cpp */;
-		name = "SPIWindow.cpp: 30";
-		rLen = 0;
-		rLoc = 1085;
-		rType = 0;
-		vrLen = 1086;
-		vrLoc = 0;
-	};
-	6DED34020DAE002100A2F30F /* SIPllWindow.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {783, 616}}";
-			sepNavSelRange = "{311, 0}";
-			sepNavVisRect = "{{0, 117}, {783, 429}}";
-		};
-	};
-	6DED34030DAE002100A2F30F /* SIPllWindow.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {821, 857}}";
-			sepNavSelRange = "{1723, 0}";
-			sepNavVisRect = "{{0, 0}, {821, 857}}";
-		};
-	};
-	6DED34500DAE0D2700A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED73900D8FA59000D85368 /* RegisterWindow.cpp */;
-		name = "RegisterWindow.cpp: 390";
-		rLen = 0;
-		rLoc = 13629;
-		rType = 0;
-		vrLen = 687;
-		vrLoc = 14240;
-	};
-	6DED34510DAE0D2700A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34020DAE002100A2F30F /* SIPllWindow.h */;
-		name = "SIPllWindow.h: 10";
-		rLen = 0;
-		rLoc = 694;
-		rType = 0;
-		vrLen = 140;
-		vrLoc = 0;
-	};
-	6DED34520DAE0D2700A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED738F0D8FA59000D85368 /* RegisterWindow.h */;
-		name = "RegisterWindow.h: 9";
-		rLen = 159;
-		rLoc = 206;
-		rType = 0;
-		vrLen = 418;
-		vrLoc = 0;
-	};
-	6DED34530DAE0D2700A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34020DAE002100A2F30F /* SIPllWindow.h */;
-		name = "SIPllWindow.h: 36";
-		rLen = 0;
-		rLoc = 682;
-		rType = 0;
-		vrLen = 435;
-		vrLoc = 195;
-	};
-	6DED34540DAE0D2700A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34030DAE002100A2F30F /* SIPllWindow.cpp */;
-		name = SIPll_MSG;
-		rLen = 9;
-		rLoc = 457;
-		rType = 0;
-		vrLen = 1035;
-		vrLoc = 33;
-	};
-	6DED34550DAE0D2700A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34020DAE002100A2F30F /* SIPllWindow.h */;
-		name = "SIPllWindow.h: SIPll_MSG";
-		rLen = 0;
-		rLoc = 421;
-		rType = 0;
-		vrLen = 437;
-		vrLoc = 234;
-	};
-	6DED34560DAE0D2700A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33250DADE70C00A2F30F /* SPIWindow.cpp */;
-		name = "SPIWindow.cpp: 70";
-		rLen = 0;
-		rLoc = 2315;
-		rType = 0;
-		vrLen = 540;
-		vrLoc = 1803;
-	};
-	6DED34860DAE115500A2F30F /* MixReg.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {783, 630}}";
-			sepNavSelRange = "{471, 0}";
-			sepNavVisRect = "{{0, 187}, {783, 429}}";
-		};
-	};
-	6DED34870DAE115500A2F30F /* MixReg.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {821, 882}}";
-			sepNavSelRange = "{460, 0}";
-			sepNavVisRect = "{{0, 143}, {821, 429}}";
-		};
-	};
-	6DED34D90DAE15B200A2F30F /* ADCWindow.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {821, 857}}";
-			sepNavSelRange = "{250, 0}";
-			sepNavVisRect = "{{0, 0}, {821, 857}}";
-		};
-	};
-	6DED34DA0DAE15B200A2F30F /* ADCWindow.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1062, 952}}";
-			sepNavSelRange = "{1526, 0}";
-			sepNavVisRect = "{{0, 298}, {1062, 287}}";
-		};
-	};
-	6DED34E30DAE15FE00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34020DAE002100A2F30F /* SIPllWindow.h */;
-		name = "SIPllWindow.h: 36";
-		rLen = 0;
-		rLoc = 596;
-		rType = 0;
-		vrLen = 438;
-		vrLoc = 256;
-	};
-	6DED34E40DAE15FE00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED73900D8FA59000D85368 /* RegisterWindow.cpp */;
-		name = "RegisterWindow.cpp: 352";
-		rLen = 0;
-		rLoc = 13629;
-		rType = 0;
-		vrLen = 619;
-		vrLoc = 13486;
-	};
-	6DED34E60DAE15FE00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED738F0D8FA59000D85368 /* RegisterWindow.h */;
-		name = "RegisterWindow.h: 112";
-		rLen = 0;
-		rLoc = 2617;
-		rType = 0;
-		vrLen = 560;
-		vrLoc = 2058;
-	};
-	6DED34E80DAE15FE00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34030DAE002100A2F30F /* SIPllWindow.cpp */;
-		name = "SIPllWindow.cpp: 29";
-		rLen = 0;
-		rLoc = 985;
-		rType = 0;
-		vrLen = 1066;
-		vrLoc = 403;
-	};
-	6DED34EA0DAE15FE00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED73900D8FA59000D85368 /* RegisterWindow.cpp */;
-		name = "RegisterWindow.cpp: 352";
-		rLen = 0;
-		rLoc = 13629;
-		rType = 0;
-		vrLen = 577;
-		vrLoc = 13528;
-	};
-	6DED34EB0DAE15FE00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED738F0D8FA59000D85368 /* RegisterWindow.h */;
-		name = "RegisterWindow.h: 9";
-		rLen = 0;
-		rLoc = 224;
-		rType = 0;
-		vrLen = 463;
-		vrLoc = 0;
-	};
-	6DED34EC0DAE15FE00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34020DAE002100A2F30F /* SIPllWindow.h */;
-		name = "SIPllWindow.h: SIPll_MSG";
-		rLen = 0;
-		rLoc = 421;
-		rType = 0;
-		vrLen = 525;
-		vrLoc = 194;
-	};
-	6DED34ED0DAE15FE00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33250DADE70C00A2F30F /* SPIWindow.cpp */;
-		name = "SPIWindow.cpp: 70";
-		rLen = 0;
-		rLoc = 2315;
-		rType = 0;
-		vrLen = 580;
-		vrLoc = 1763;
-	};
-	6DED34EE0DAE15FE00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33240DADE70C00A2F30F /* SPIWindow.h */;
-		name = "SPIWindow.h: 6";
-		rLen = 0;
-		rLoc = 127;
-		rType = 0;
-		vrLen = 567;
-		vrLoc = 196;
-	};
-	6DED34EF0DAE15FE00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34030DAE002100A2F30F /* SIPllWindow.cpp */;
-		name = "SIPllWindow.cpp: 42";
-		rLen = 0;
-		rLoc = 1370;
-		rType = 0;
-		vrLen = 813;
-		vrLoc = 863;
-	};
-	6DED34F00DAE15FE00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34020DAE002100A2F30F /* SIPllWindow.h */;
-		name = "SIPllWindow.h: 36";
-		rLen = 0;
-		rLoc = 596;
-		rType = 0;
-		vrLen = 438;
-		vrLoc = 256;
-	};
-	6DED34F10DAE15FE00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED73900D8FA59000D85368 /* RegisterWindow.cpp */;
-		name = "RegisterWindow.cpp: 352";
-		rLen = 0;
-		rLoc = 13629;
-		rType = 0;
-		vrLen = 619;
-		vrLoc = 13486;
-	};
-	6DED34F20DAE15FE00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34030DAE002100A2F30F /* SIPllWindow.cpp */;
-		name = "SIPllWindow.cpp: 48";
-		rLen = 0;
-		rLoc = 1556;
-		rType = 0;
-		vrLen = 1000;
-		vrLoc = 609;
-	};
-	6DED34F30DAE15FE00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34D90DAE15B200A2F30F /* ADCWindow.h */;
-		name = "ADCWindow.h: 13";
-		rLen = 0;
-		rLoc = 772;
-		rType = 0;
-		vrLen = 199;
-		vrLoc = 0;
-	};
-	6DED34F40DAE15FE00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED738F0D8FA59000D85368 /* RegisterWindow.h */;
-		name = "RegisterWindow.h: 112";
-		rLen = 0;
-		rLoc = 2617;
-		rType = 0;
-		vrLen = 560;
-		vrLoc = 2058;
-	};
-	6DED352B0DAE376A00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34D90DAE15B200A2F30F /* ADCWindow.h */;
-		name = "ADCWindow.h: 18";
-		rLen = 0;
-		rLoc = 288;
-		rType = 0;
-		vrLen = 429;
-		vrLoc = 137;
-	};
-	6DED352C0DAE376A00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34DA0DAE15B200A2F30F /* ADCWindow.cpp */;
-		name = "ADCWindow.cpp: 21";
-		rLen = 0;
-		rLoc = 1569;
-		rType = 0;
-		vrLen = 376;
-		vrLoc = 0;
-	};
-	6DED352D0DAE376A00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6D622CE80D8ED11400428D9A /* BaoAdc.cpp */;
-		name = "BaoAdc.cpp: 128";
-		rLen = 0;
-		rLoc = 3264;
-		rType = 0;
-		vrLen = 618;
-		vrLoc = 2679;
-	};
-	6DED352E0DAE376A00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34DA0DAE15B200A2F30F /* ADCWindow.cpp */;
-		name = "ADCWindow.cpp: 18";
-		rLen = 0;
-		rLoc = 438;
-		rType = 0;
-		vrLen = 708;
-		vrLoc = 3;
-	};
-	6DED352F0DAE376A00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34D90DAE15B200A2F30F /* ADCWindow.h */;
-		name = "ADCWindow.h: OFFSETY_ADC";
-		rLen = 0;
-		rLoc = 370;
-		rType = 0;
-		vrLen = 471;
-		vrLoc = 130;
-	};
-	6DED355C0DAE431E00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6D622CE80D8ED11400428D9A /* BaoAdc.cpp */;
-		name = "BaoAdc.cpp: 22";
-		rLen = 0;
-		rLoc = 462;
-		rType = 0;
-		vrLen = 764;
-		vrLoc = 171;
-	};
-	6DED355E0DAE431E00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34DA0DAE15B200A2F30F /* ADCWindow.cpp */;
-		name = "ADCWindow.cpp: 18";
-		rLen = 0;
-		rLoc = 426;
-		rType = 0;
-		vrLen = 1102;
-		vrLoc = 0;
-	};
-	6DED35600DAE431E00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34DA0DAE15B200A2F30F /* ADCWindow.cpp */;
-		name = "ADCWindow.cpp: 32";
-		rLen = 0;
-		rLoc = 1415;
-		rType = 0;
-		vrLen = 1315;
-		vrLoc = 164;
-	};
-	6DED35610DAE431E00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6D622CE80D8ED11400428D9A /* BaoAdc.cpp */;
-		name = "BaoAdc.cpp: 22";
-		rLen = 0;
-		rLoc = 462;
-		rType = 0;
-		vrLen = 764;
-		vrLoc = 171;
-	};
-	6DED35620DAE431E00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34D90DAE15B200A2F30F /* ADCWindow.h */;
-		name = "ADCWindow.h: OFFSETY_ADC";
-		rLen = 0;
-		rLoc = 370;
-		rType = 0;
-		vrLen = 504;
-		vrLoc = 133;
-	};
-	6DED35630DAE431E00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34DA0DAE15B200A2F30F /* ADCWindow.cpp */;
-		name = "ADCWindow.cpp: 50";
-		rLen = 0;
-		rLoc = 2137;
-		rType = 0;
-		vrLen = 881;
-		vrLoc = 729;
-	};
-	6DED35640DAE431E00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34030DAE002100A2F30F /* SIPllWindow.cpp */;
-		name = "SIPllWindow.cpp: 44";
-		rLen = 391;
-		rLoc = 1370;
-		rType = 0;
-		vrLen = 562;
-		vrLoc = 1199;
-	};
-	6DED35650DAE431E00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34DA0DAE15B200A2F30F /* ADCWindow.cpp */;
-		name = "ADCWindow.cpp: 18";
-		rLen = 0;
-		rLoc = 426;
-		rType = 0;
-		vrLen = 1102;
-		vrLoc = 0;
-	};
-	6DED35B80DAE4D7500A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34D90DAE15B200A2F30F /* ADCWindow.h */;
-		name = "ADCWindow.h: 16";
-		rLen = 0;
-		rLoc = 250;
-		rType = 0;
-		vrLen = 782;
-		vrLoc = 0;
-	};
-	6DED35B90DAE4D7500A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DEA83220C7F166500B7D5DD /* pistdwdgmosx.cpp */;
-		name = "pistdwdgmosx.cpp: 90";
-		rLen = 0;
-		rLoc = 2210;
-		rType = 0;
-		vrLen = 1092;
-		vrLoc = 1393;
-	};
-	6DED35BA0DAE4D7500A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34030DAE002100A2F30F /* SIPllWindow.cpp */;
-		name = "SIPllWindow.cpp: 54";
-		rLen = 0;
-		rLoc = 1723;
-		rType = 0;
-		vrLen = 1761;
-		vrLoc = 0;
-	};
-	6DED35BB0DAE4D7500A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33240DADE70C00A2F30F /* SPIWindow.h */;
-		name = "SPIWindow.h: action";
-		rLen = 0;
-		rLoc = 788;
-		rType = 0;
-		vrLen = 783;
-		vrLoc = 0;
-	};
-	6DED35BD0DAE4D7500A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34D90DAE15B200A2F30F /* ADCWindow.h */;
-		name = "ADCWindow.h: 16";
-		rLen = 0;
-		rLoc = 250;
-		rType = 0;
-		vrLen = 782;
-		vrLoc = 0;
-	};
-	6DED35BE0DAE4D7500A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DEA83220C7F166500B7D5DD /* pistdwdgmosx.cpp */;
-		name = "pistdwdgmosx.cpp: 90";
-		rLen = 0;
-		rLoc = 2210;
-		rType = 0;
-		vrLen = 1092;
-		vrLoc = 1393;
-	};
-	6DED35BF0DAE4D7500A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED34030DAE002100A2F30F /* SIPllWindow.cpp */;
-		name = "SIPllWindow.cpp: 54";
-		rLen = 0;
-		rLoc = 1723;
-		rType = 0;
-		vrLen = 1761;
-		vrLoc = 0;
-	};
-	6DED35C00DAE4D7500A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33250DADE70C00A2F30F /* SPIWindow.cpp */;
-		name = "SPIWindow.cpp: 28";
-		rLen = 0;
-		rLoc = 966;
-		rType = 0;
-		vrLen = 1973;
-		vrLoc = 0;
-	};
-	6DED35C10DAE4D7500A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33240DADE70C00A2F30F /* SPIWindow.h */;
-		name = "SPIWindow.h: action";
-		rLen = 0;
-		rLoc = 788;
-		rType = 0;
-		vrLen = 783;
-		vrLoc = 0;
-	};
-	6DED35C60DAE4DDE00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		comments = "error: expected `;' before 'piButton'";
-		fRef = 6DED33250DADE70C00A2F30F /* SPIWindow.cpp */;
-		rLen = 1;
-		rLoc = 44;
-		rType = 1;
-	};
-	6DED35D20DAE4E6E00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33250DADE70C00A2F30F /* SPIWindow.cpp */;
-		name = "SPIWindow.cpp: 45";
-		rLen = 0;
-		rLoc = 1696;
-		rType = 0;
-		vrLen = 931;
-		vrLoc = 1085;
-	};
-	6DED35D30DAE4E6E00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED73900D8FA59000D85368 /* RegisterWindow.cpp */;
-		name = "RegisterWindow.cpp: 127";
-		rLen = 0;
-		rLoc = 4713;
-		rType = 0;
-		vrLen = 1086;
-		vrLoc = 4128;
-	};
-	6DED35D40DAE4E6E00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33250DADE70C00A2F30F /* SPIWindow.cpp */;
-		name = "SPIWindow.cpp: 45";
-		rLen = 0;
-		rLoc = 1696;
-		rType = 0;
-		vrLen = 931;
-		vrLoc = 1085;
-	};
-	6DED35D50DAE4E6E00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED73900D8FA59000D85368 /* RegisterWindow.cpp */;
-		name = "RegisterWindow.cpp: 127";
-		rLen = 0;
-		rLoc = 4713;
-		rType = 0;
-		vrLen = 1086;
-		vrLoc = 4128;
-	};
-	6DED35DC0DAE4F6100A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33240DADE70C00A2F30F /* SPIWindow.h */;
-		name = "SPIWindow.h: 23";
-		rLen = 0;
-		rLoc = 376;
-		rType = 0;
-		vrLen = 657;
-		vrLoc = 135;
-	};
-	6DED35DD0DAE4F6100A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33240DADE70C00A2F30F /* SPIWindow.h */;
-		name = "SPIWindow.h: 23";
-		rLen = 0;
-		rLoc = 376;
-		rType = 0;
-		vrLen = 657;
-		vrLoc = 135;
-	};
-	6DED35E30DAE7B2D00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED33250DADE70C00A2F30F /* SPIWindow.cpp */;
-		name = "SPIWindow.cpp: 27";
-		rLen = 0;
-		rLoc = 937;
-		rType = 0;
-		vrLen = 881;
-		vrLoc = 2067;
-	};
-	6DED35E40DAE7B2D00A2F30F /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DEA83220C7F166500B7D5DD /* pistdwdgmosx.cpp */;
-		name = "pistdwdgmosx.cpp: 94";
-		rLen = 0;
-		rLoc = 2253;
-		rType = 0;
-		vrLen = 648;
-		vrLoc = 1742;
-	};
-	6DED738F0D8FA59000D85368 /* RegisterWindow.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {783, 1582}}";
-			sepNavSelRange = "{2617, 0}";
-			sepNavVisRect = "{{0, 1191}, {783, 391}}";
-		};
-	};
-	6DED73900D8FA59000D85368 /* RegisterWindow.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {821, 5264}}";
-			sepNavSelRange = "{4713, 0}";
-			sepNavVisRect = "{{0, 1519}, {821, 410}}";
-		};
-	};
-	6DED741A0D8FAEE700D85368 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED738F0D8FA59000D85368 /* RegisterWindow.h */;
-		name = "RegisterWindow.h: 16";
-		rLen = 0;
-		rLoc = 1363;
-		rType = 0;
-		vrLen = 512;
-		vrLoc = 0;
-	};
-	6DEF36ED0DA1181700B5B599 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 6DED73900D8FA59000D85368 /* RegisterWindow.cpp */;
-		name = "RegisterWindow.cpp: 260";
-		rLen = 0;
-		rLoc = 14091;
-		rType = 0;
-		vrLen = 2194;
-		vrLoc = 5395;
+	6DECAF32103EDEC600699E89 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 6D6F12F30D644DA100583608 /* pigraphquartz.h */;
+		name = "pigraphquartz.h: PIGraphicWin";
+		rLen = 0;
+		rLoc = 4635;
+		rType = 0;
+		vrLen = 1879;
+		vrLoc = 2765;
 	};
 	6DF012F40CBF6A510026E580 /* PIPeriodQuartz.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {783, 868}}";
+			sepNavIntBoundsRect = "{{0, 0}, {657, 868}}";
 			sepNavSelRange = "{676, 0}";
-			sepNavVisRect = "{{0, 210}, {783, 410}}";
+			sepNavVisRect = "{{0, 0}, {657, 854}}";
 		};
 	};
 	6DF012F50CBF6A510026E580 /* PIPeriodQuartz.cpp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {817, 857}}";
+			sepNavIntBoundsRect = "{{0, 0}, {657, 854}}";
 			sepNavSelRange = "{572, 0}";
-			sepNavVisRect = "{{0, 0}, {817, 857}}";
+			sepNavVisRect = "{{0, 0}, {657, 854}}";
 			sepNavWindowFrame = "{{15, 28}, {1002, 969}}";
+		};
+	};
+	6DF26D160E7FB7EC001AE7EF /* pibwdggen.cc */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {750, 11228}}";
+			sepNavSelRange = "{15441, 53}";
+			sepNavVisRect = "{{0, 6041}, {750, 858}}";
+		};
+	};
+	6DF26D170E7FB7EC001AE7EF /* pibwdggen.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {881, 2254}}";
+			sepNavSelRange = "{2265, 0}";
+			sepNavVisRect = "{{0, 1190}, {881, 854}}";
+		};
+	};
+	6DF26D180E7FB7EC001AE7EF /* pidrawer.cc */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {821, 7826}}";
+			sepNavSelRange = "{19690, 0}";
+			sepNavVisRect = "{{0, 7414}, {821, 412}}";
+		};
+	};
+	6DF26D190E7FB7EC001AE7EF /* pidrawer.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {857, 2086}}";
+			sepNavSelRange = "{1601, 65}";
+			sepNavVisRect = "{{0, 0}, {0, 0}}";
+		};
+	};
+	6DF26D1E0E7FB84E001AE7EF /* piaxes.cc */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {1062, 12376}}";
+			sepNavSelRange = "{3436, 56}";
+			sepNavVisRect = "{{0, 1600}, {1062, 287}}";
+		};
+	};
+	6DF26D1F0E7FB84E001AE7EF /* piaxes.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {750, 1526}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 0}, {750, 858}}";
+		};
+	};
+	6DF26D200E7FB84E001AE7EF /* pigraphgen.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {1048, 2786}}";
+			sepNavSelRange = "{2768, 101}";
+			sepNavVisRect = "{{0, 933}, {1048, 360}}";
+		};
+	};
+	6DF26D220E7FB84E001AE7EF /* pigraphuc.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {881, 2268}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 1413}, {881, 855}}";
+		};
+	};
+	6DF26D230E7FB84E001AE7EF /* psfile.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {778, 3262}}";
+			sepNavSelRange = "{2443, 0}";
+			sepNavVisRect = "{{0, 880}, {778, 858}}";
+		};
+	};
+	6DF26D2A0E7FDF45001AE7EF /* ucckprot.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {750, 952}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRect = "{{0, 0}, {750, 858}}";
+		};
+	};
+	6DF26D4F0E7FED78001AE7EF /* pioptmenugen.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {695, 462}}";
+			sepNavSelRange = "{826, 0}";
+			sepNavVisRect = "{{0, 0}, {695, 411}}";
 		};
 	};
@@ -1828,14 +1591,14 @@
 	6DFD5AD406774017009E5976 /* PIApplQuartz.h */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1062, 728}}";
-			sepNavSelRange = "{318, 54}";
-			sepNavVisRect = "{{0, 0}, {1062, 287}}";
+			sepNavIntBoundsRect = "{{0, 0}, {727, 859}}";
+			sepNavSelRange = "{579, 0}";
+			sepNavVisRect = "{{0, 0}, {727, 859}}";
 		};
 	};
 	6DFD5AD506774017009E5976 /* PIApplQuartz.cpp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {783, 1358}}";
-			sepNavSelRange = "{153, 0}";
-			sepNavVisRect = "{{0, 0}, {783, 410}}";
+			sepNavIntBoundsRect = "{{0, 0}, {813, 1414}}";
+			sepNavSelRange = "{757, 0}";
+			sepNavVisRect = "{{0, 336}, {813, 385}}";
 		};
 	};
Index: /trunk/SophyaPI/PI/Quartz/PI.xcodeproj/project.pbxproj
===================================================================
--- /trunk/SophyaPI/PI/Quartz/PI.xcodeproj/project.pbxproj	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/PI.xcodeproj/project.pbxproj	(revision 3747)
@@ -271,21 +271,18 @@
 		6D0E25210665E286009E5976 /* picontainergen.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D526BFA06624512009E5976 /* picontainergen.h */; };
 		6D0E25220665E287009E5976 /* picontainergen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6D526BF706624488009E5976 /* picontainergen.cc */; };
-		6D0E25240665E29E009E5976 /* piwdgmosx.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D189BFE0619C1F5009E5976 /* piwdgmosx.h */; };
+		6D0E25240665E29E009E5976 /* piwdgquartz.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D189BFE0619C1F5009E5976 /* piwdgquartz.h */; };
 		6D0E25250665E29F009E5976 /* piwdggen.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D526C000662461A009E5976 /* piwdggen.h */; };
-		6D0E25260665E2A9009E5976 /* piwdgmosx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D189BFF0619C1F5009E5976 /* piwdgmosx.cpp */; };
+		6D0E25260665E2A9009E5976 /* piwdgquartz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D189BFF0619C1F5009E5976 /* piwdgquartz.cpp */; };
 		6D0E25270665E2A9009E5976 /* piwdggen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6D526C0606624678009E5976 /* piwdggen.cc */; };
 		6D0E25280665E337009E5976 /* pievthandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D526C0A066246A9009E5976 /* pievthandler.h */; };
 		6D0E25290665E337009E5976 /* PIWindowQuartz.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D98FCF4062C1CDB009E5976 /* PIWindowQuartz.h */; };
-		6D0E252A0665E338009E5976 /* PIControl.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D8292EC0623F784009E5976 /* PIControl.h */; };
 		6D0E252B0665E338009E5976 /* PIContainerQuartz.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D41F30A064771A8009E5976 /* PIContainerQuartz.h */; };
 		6D0E252C0665E33A009E5976 /* PIContainerQuartz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D41F30B064771A8009E5976 /* PIContainerQuartz.cpp */; };
 		6D0E252D0665E33A009E5976 /* pievthandler.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6D526C0806624689009E5976 /* pievthandler.cc */; };
 		6D0E252E0665E33B009E5976 /* PIWindowQuartz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D98FCF5062C1CDB009E5976 /* PIWindowQuartz.cpp */; };
-		6D0E252F0665E33B009E5976 /* PIControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D8292ED0623F784009E5976 /* PIControl.cpp */; };
 		6D0E253006661DC2009E5976 /* piwindowgen.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DDB77E80663268E009E5976 /* piwindowgen.h */; };
 		6D0E253106661DC4009E5976 /* piwindowgen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6DDB77E90663268E009E5976 /* piwindowgen.cc */; };
 		6D106880067DC9B3009E5976 /* QuartzAppTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D106876067DC8FC009E5976 /* QuartzAppTest.cpp */; };
 		6D106881067DC9B6009E5976 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB77AAFE841565C02AAC07 /* Carbon.framework */; };
-		6D622CEA0D8ED11400428D9A /* BaoAdc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D622CE80D8ED11400428D9A /* BaoAdc.cpp */; };
 		6D622CF60D8ED19100428D9A /* PI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 034768DEFF38A45A11DB9C8B /* PI.framework */; };
 		6D6F12710D6446D500583608 /* machdefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D6F12700D6446D500583608 /* machdefs.h */; };
@@ -325,7 +322,15 @@
 		6D7D4E5806673450009E5976 /* PIMenuQuartz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D7D4E5606673450009E5976 /* PIMenuQuartz.cpp */; };
 		6DBF802306D0A01F009E5976 /* PI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 034768DEFF38A45A11DB9C8B /* PI.framework */; };
+		6DE18B860E837AD800414227 /* pioptmenuquartz.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DE18B840E837AD800414227 /* pioptmenuquartz.h */; };
+		6DE18B870E837AD800414227 /* pioptmenuquartz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DE18B850E837AD800414227 /* pioptmenuquartz.cpp */; };
+		6DE18BF80E83E4FE00414227 /* pidrwtools.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6DE18BF60E83E4FE00414227 /* pidrwtools.cc */; };
+		6DE18BF90E83E4FE00414227 /* pidrwtools.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DE18BF70E83E4FE00414227 /* pidrwtools.h */; };
+		6DE18C1A0E83E91700414227 /* pibwdgquartz.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DE18C180E83E91700414227 /* pibwdgquartz.h */; };
+		6DE18C1B0E83E91700414227 /* pibwdgquartz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DE18C190E83E91700414227 /* pibwdgquartz.cpp */; };
 		6DE745E60C7C4F530051D656 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB77AAFE841565C02AAC07 /* Carbon.framework */; };
 		6DE745E70C7C4F530051D656 /* PI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 034768DEFF38A45A11DB9C8B /* PI.framework */; };
 		6DE745F00C7C4F720051D656 /* xp0.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6DE7443F0C7C2E390051D656 /* xp0.cc */; };
+		6DE8E8160E87BA6D0031A5D9 /* pigraphps.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6DE8E8130E87BA6D0031A5D9 /* pigraphps.cc */; };
+		6DE8E8170E87BA6D0031A5D9 /* pigraphps.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DE8E8140E87BA6D0031A5D9 /* pigraphps.h */; };
 		6DEA07D90C88612B0016C028 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 08FB77AAFE841565C02AAC07 /* Carbon.framework */; };
 		6DEA07DA0C88612B0016C028 /* PI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 034768DEFF38A45A11DB9C8B /* PI.framework */; };
@@ -335,13 +340,21 @@
 		6DEA82D00C7EDF5700B7D5DD /* pistdwdggen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6DDB77E30663266A009E5976 /* pistdwdggen.cc */; };
 		6DEA82D10C7EDF5B00B7D5DD /* pistdwdggen.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DDB77E20663266A009E5976 /* pistdwdggen.h */; };
-		6DEA831F0C7F162300B7D5DD /* pistdwdgmosx.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DEA831E0C7F162300B7D5DD /* pistdwdgmosx.h */; };
-		6DEA83230C7F166500B7D5DD /* pistdwdgmosx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DEA83220C7F166500B7D5DD /* pistdwdgmosx.cpp */; };
-		6DED33260DADE70C00A2F30F /* SPIWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DED33250DADE70C00A2F30F /* SPIWindow.cpp */; };
-		6DED34040DAE002100A2F30F /* SIPllWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DED34030DAE002100A2F30F /* SIPllWindow.cpp */; };
-		6DED34880DAE115500A2F30F /* MixReg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DED34870DAE115500A2F30F /* MixReg.cpp */; };
-		6DED34DB0DAE15B200A2F30F /* ADCWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DED34DA0DAE15B200A2F30F /* ADCWindow.cpp */; };
-		6DED73910D8FA59000D85368 /* RegisterWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DED73900D8FA59000D85368 /* RegisterWindow.cpp */; };
+		6DEA831F0C7F162300B7D5DD /* pistdwdgquartz.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DEA831E0C7F162300B7D5DD /* pistdwdgquartz.h */; };
+		6DEA83230C7F166500B7D5DD /* pistdwdgquartz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DEA83220C7F166500B7D5DD /* pistdwdgquartz.cpp */; };
 		6DF012F60CBF6A510026E580 /* PIPeriodQuartz.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DF012F40CBF6A510026E580 /* PIPeriodQuartz.h */; };
 		6DF012F70CBF6A510026E580 /* PIPeriodQuartz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6DF012F50CBF6A510026E580 /* PIPeriodQuartz.cpp */; };
+		6DF26D1A0E7FB7EC001AE7EF /* pibwdggen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6DF26D160E7FB7EC001AE7EF /* pibwdggen.cc */; };
+		6DF26D1B0E7FB7EC001AE7EF /* pibwdggen.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DF26D170E7FB7EC001AE7EF /* pibwdggen.h */; };
+		6DF26D1C0E7FB7EC001AE7EF /* pidrawer.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6DF26D180E7FB7EC001AE7EF /* pidrawer.cc */; };
+		6DF26D1D0E7FB7EC001AE7EF /* pidrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DF26D190E7FB7EC001AE7EF /* pidrawer.h */; };
+		6DF26D240E7FB84E001AE7EF /* piaxes.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6DF26D1E0E7FB84E001AE7EF /* piaxes.cc */; };
+		6DF26D250E7FB84E001AE7EF /* piaxes.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DF26D1F0E7FB84E001AE7EF /* piaxes.h */; };
+		6DF26D260E7FB84E001AE7EF /* pigraphgen.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DF26D200E7FB84E001AE7EF /* pigraphgen.h */; };
+		6DF26D270E7FB84E001AE7EF /* pigraphuc.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6DF26D210E7FB84E001AE7EF /* pigraphuc.cc */; };
+		6DF26D280E7FB84E001AE7EF /* pigraphuc.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DF26D220E7FB84E001AE7EF /* pigraphuc.h */; };
+		6DF26D290E7FB84E001AE7EF /* psfile.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DF26D230E7FB84E001AE7EF /* psfile.h */; };
+		6DF26D2B0E7FDF45001AE7EF /* ucckprot.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DF26D2A0E7FDF45001AE7EF /* ucckprot.h */; };
+		6DF26D500E7FED78001AE7EF /* pioptmenugen.cc in Sources */ = {isa = PBXBuildFile; fileRef = 6DF26D4E0E7FED78001AE7EF /* pioptmenugen.cc */; };
+		6DF26D510E7FED78001AE7EF /* pioptmenugen.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DF26D4F0E7FED78001AE7EF /* pioptmenugen.h */; };
 		6DF7756D0CC3A8DA00D784C9 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6DF7756C0CC3A8DA00D784C9 /* CoreFoundation.framework */; };
 		6DFD5AD206773E42009E5976 /* piapplgen.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DDB77DD06632616009E5976 /* piapplgen.h */; };
@@ -384,6 +397,6 @@
 		6D106876067DC8FC009E5976 /* QuartzAppTest.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; path = QuartzAppTest.cpp; sourceTree = SOURCE_ROOT; };
 		6D10687E067DC9AB009E5976 /* PIAQTest.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; path = PIAQTest.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		6D189BFE0619C1F5009E5976 /* piwdgmosx.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = piwdgmosx.h; sourceTree = SOURCE_ROOT; };
-		6D189BFF0619C1F5009E5976 /* piwdgmosx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = piwdgmosx.cpp; sourceTree = SOURCE_ROOT; };
+		6D189BFE0619C1F5009E5976 /* piwdgquartz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = piwdgquartz.h; sourceTree = "<group>"; };
+		6D189BFF0619C1F5009E5976 /* piwdgquartz.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = piwdgquartz.cpp; sourceTree = "<group>"; };
 		6D41F30A064771A8009E5976 /* PIContainerQuartz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PIContainerQuartz.h; sourceTree = SOURCE_ROOT; };
 		6D41F30B064771A8009E5976 /* PIContainerQuartz.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PIContainerQuartz.cpp; sourceTree = SOURCE_ROOT; };
@@ -398,6 +411,4 @@
 		6D622CD60D8ECB6300428D9A /* BaoAdc.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BaoAdc.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		6D622CD80D8ECB6300428D9A /* BaoAdc-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "BaoAdc-Info.plist"; sourceTree = "<group>"; };
-		6D622CE80D8ED11400428D9A /* BaoAdc.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = BaoAdc.cpp; path = ../../../BAO/BaoAdc.cpp; sourceTree = SOURCE_ROOT; };
-		6D622CE90D8ED11400428D9A /* BaoAdc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = BaoAdc.h; path = ../../../BAO/BaoAdc.h; sourceTree = SOURCE_ROOT; };
 		6D6F12700D6446D500583608 /* machdefs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = machdefs.h; sourceTree = "<group>"; };
 		6D6F12990D6448E500583608 /* sopnamsp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = sopnamsp.h; sourceTree = "<group>"; };
@@ -431,6 +442,4 @@
 		6D7D4E5506673450009E5976 /* PIMenuQuartz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PIMenuQuartz.h; sourceTree = SOURCE_ROOT; };
 		6D7D4E5606673450009E5976 /* PIMenuQuartz.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PIMenuQuartz.cpp; sourceTree = SOURCE_ROOT; };
-		6D8292EC0623F784009E5976 /* PIControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PIControl.h; sourceTree = SOURCE_ROOT; };
-		6D8292ED0623F784009E5976 /* PIControl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PIControl.cpp; sourceTree = SOURCE_ROOT; };
 		6D98FCF4062C1CDB009E5976 /* PIWindowQuartz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PIWindowQuartz.h; sourceTree = SOURCE_ROOT; };
 		6D98FCF5062C1CDB009E5976 /* PIWindowQuartz.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PIWindowQuartz.cpp; sourceTree = SOURCE_ROOT; };
@@ -446,24 +455,35 @@
 		6DDB77E80663268E009E5976 /* piwindowgen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = piwindowgen.h; path = ../piwindowgen.h; sourceTree = SOURCE_ROOT; };
 		6DDB77E90663268E009E5976 /* piwindowgen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = piwindowgen.cc; path = ../piwindowgen.cc; sourceTree = SOURCE_ROOT; };
+		6DE18B840E837AD800414227 /* pioptmenuquartz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pioptmenuquartz.h; sourceTree = "<group>"; };
+		6DE18B850E837AD800414227 /* pioptmenuquartz.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pioptmenuquartz.cpp; sourceTree = "<group>"; };
+		6DE18BF60E83E4FE00414227 /* pidrwtools.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pidrwtools.cc; path = ../pidrwtools.cc; sourceTree = SOURCE_ROOT; };
+		6DE18BF70E83E4FE00414227 /* pidrwtools.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pidrwtools.h; path = ../pidrwtools.h; sourceTree = SOURCE_ROOT; };
+		6DE18C180E83E91700414227 /* pibwdgquartz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pibwdgquartz.h; sourceTree = "<group>"; };
+		6DE18C190E83E91700414227 /* pibwdgquartz.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pibwdgquartz.cpp; sourceTree = "<group>"; };
 		6DE744360C7C2DF40051D656 /* XP0-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = "XP0-Info.plist"; sourceTree = "<group>"; };
 		6DE7443F0C7C2E390051D656 /* xp0.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = xp0.cc; path = ../Tests/xp0.cc; sourceTree = SOURCE_ROOT; };
 		6DE745ED0C7C4F530051D656 /* XP0.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = XP0.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		6DE8E8130E87BA6D0031A5D9 /* pigraphps.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pigraphps.cc; path = ../pigraphps.cc; sourceTree = SOURCE_ROOT; };
+		6DE8E8140E87BA6D0031A5D9 /* pigraphps.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pigraphps.h; path = ../pigraphps.h; sourceTree = SOURCE_ROOT; };
 		6DEA07E00C88612B0016C028 /* PIT0.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PIT0.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		6DEA07E50C8861E90016C028 /* pit0.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pit0.cc; path = ../Tests/pit0.cc; sourceTree = SOURCE_ROOT; };
 		6DEA82730C7ED3A500B7D5DD /* XP1.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = XP1.app; sourceTree = BUILT_PRODUCTS_DIR; };
-		6DEA831E0C7F162300B7D5DD /* pistdwdgmosx.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = pistdwdgmosx.h; sourceTree = SOURCE_ROOT; };
-		6DEA83220C7F166500B7D5DD /* pistdwdgmosx.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pistdwdgmosx.cpp; sourceTree = SOURCE_ROOT; };
-		6DED33240DADE70C00A2F30F /* SPIWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SPIWindow.h; path = ../../../BAO/SPIWindow.h; sourceTree = SOURCE_ROOT; };
-		6DED33250DADE70C00A2F30F /* SPIWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SPIWindow.cpp; path = ../../../BAO/SPIWindow.cpp; sourceTree = SOURCE_ROOT; };
-		6DED34020DAE002100A2F30F /* SIPllWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SIPllWindow.h; path = ../../../BAO/SIPllWindow.h; sourceTree = SOURCE_ROOT; };
-		6DED34030DAE002100A2F30F /* SIPllWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SIPllWindow.cpp; path = ../../../BAO/SIPllWindow.cpp; sourceTree = SOURCE_ROOT; };
-		6DED34860DAE115500A2F30F /* MixReg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MixReg.h; path = ../../../BAO/MixReg.h; sourceTree = SOURCE_ROOT; };
-		6DED34870DAE115500A2F30F /* MixReg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MixReg.cpp; path = ../../../BAO/MixReg.cpp; sourceTree = SOURCE_ROOT; };
-		6DED34D90DAE15B200A2F30F /* ADCWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ADCWindow.h; path = ../../../BAO/ADCWindow.h; sourceTree = SOURCE_ROOT; };
-		6DED34DA0DAE15B200A2F30F /* ADCWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ADCWindow.cpp; path = ../../../BAO/ADCWindow.cpp; sourceTree = SOURCE_ROOT; };
-		6DED738F0D8FA59000D85368 /* RegisterWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RegisterWindow.h; path = ../../../BAO/RegisterWindow.h; sourceTree = SOURCE_ROOT; };
-		6DED73900D8FA59000D85368 /* RegisterWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RegisterWindow.cpp; path = ../../../BAO/RegisterWindow.cpp; sourceTree = SOURCE_ROOT; };
+		6DEA831E0C7F162300B7D5DD /* pistdwdgquartz.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = pistdwdgquartz.h; sourceTree = "<group>"; };
+		6DEA83220C7F166500B7D5DD /* pistdwdgquartz.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pistdwdgquartz.cpp; sourceTree = "<group>"; };
 		6DF012F40CBF6A510026E580 /* PIPeriodQuartz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PIPeriodQuartz.h; sourceTree = "<group>"; };
 		6DF012F50CBF6A510026E580 /* PIPeriodQuartz.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PIPeriodQuartz.cpp; sourceTree = "<group>"; };
+		6DF26D160E7FB7EC001AE7EF /* pibwdggen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pibwdggen.cc; path = ../pibwdggen.cc; sourceTree = SOURCE_ROOT; };
+		6DF26D170E7FB7EC001AE7EF /* pibwdggen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pibwdggen.h; path = ../pibwdggen.h; sourceTree = SOURCE_ROOT; };
+		6DF26D180E7FB7EC001AE7EF /* pidrawer.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pidrawer.cc; path = ../pidrawer.cc; sourceTree = SOURCE_ROOT; };
+		6DF26D190E7FB7EC001AE7EF /* pidrawer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pidrawer.h; path = ../pidrawer.h; sourceTree = SOURCE_ROOT; };
+		6DF26D1E0E7FB84E001AE7EF /* piaxes.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = piaxes.cc; path = ../piaxes.cc; sourceTree = SOURCE_ROOT; };
+		6DF26D1F0E7FB84E001AE7EF /* piaxes.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = piaxes.h; path = ../piaxes.h; sourceTree = SOURCE_ROOT; };
+		6DF26D200E7FB84E001AE7EF /* pigraphgen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pigraphgen.h; path = ../pigraphgen.h; sourceTree = SOURCE_ROOT; };
+		6DF26D210E7FB84E001AE7EF /* pigraphuc.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pigraphuc.cc; path = ../pigraphuc.cc; sourceTree = SOURCE_ROOT; };
+		6DF26D220E7FB84E001AE7EF /* pigraphuc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pigraphuc.h; path = ../pigraphuc.h; sourceTree = SOURCE_ROOT; };
+		6DF26D230E7FB84E001AE7EF /* psfile.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = psfile.h; path = ../psfile.h; sourceTree = SOURCE_ROOT; };
+		6DF26D2A0E7FDF45001AE7EF /* ucckprot.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ucckprot.h; path = ../ucckprot.h; sourceTree = SOURCE_ROOT; };
+		6DF26D4E0E7FED78001AE7EF /* pioptmenugen.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pioptmenugen.cc; path = ../pioptmenugen.cc; sourceTree = SOURCE_ROOT; };
+		6DF26D4F0E7FED78001AE7EF /* pioptmenugen.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pioptmenugen.h; path = ../pioptmenugen.h; sourceTree = SOURCE_ROOT; };
 		6DF7756C0CC3A8DA00D784C9 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
 		6DFD5AD406774017009E5976 /* PIApplQuartz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PIApplQuartz.h; sourceTree = SOURCE_ROOT; };
@@ -644,4 +664,21 @@
 			isa = PBXGroup;
 			children = (
+				6DE8E8130E87BA6D0031A5D9 /* pigraphps.cc */,
+				6DE8E8140E87BA6D0031A5D9 /* pigraphps.h */,
+				6DE18BF60E83E4FE00414227 /* pidrwtools.cc */,
+				6DE18BF70E83E4FE00414227 /* pidrwtools.h */,
+				6DF26D4E0E7FED78001AE7EF /* pioptmenugen.cc */,
+				6DF26D4F0E7FED78001AE7EF /* pioptmenugen.h */,
+				6DF26D2A0E7FDF45001AE7EF /* ucckprot.h */,
+				6DF26D1E0E7FB84E001AE7EF /* piaxes.cc */,
+				6DF26D1F0E7FB84E001AE7EF /* piaxes.h */,
+				6DF26D200E7FB84E001AE7EF /* pigraphgen.h */,
+				6DF26D210E7FB84E001AE7EF /* pigraphuc.cc */,
+				6DF26D220E7FB84E001AE7EF /* pigraphuc.h */,
+				6DF26D230E7FB84E001AE7EF /* psfile.h */,
+				6DF26D160E7FB7EC001AE7EF /* pibwdggen.cc */,
+				6DF26D170E7FB7EC001AE7EF /* pibwdggen.h */,
+				6DF26D180E7FB7EC001AE7EF /* pidrawer.cc */,
+				6DF26D190E7FB7EC001AE7EF /* pidrawer.h */,
 				6D6F14100D64611D00583608 /* strutilxx.cc */,
 				6D6F14110D64611D00583608 /* strutilxx.h */,
@@ -691,20 +728,8 @@
 			isa = PBXGroup;
 			children = (
-				6DED34D90DAE15B200A2F30F /* ADCWindow.h */,
-				6DED34DA0DAE15B200A2F30F /* ADCWindow.cpp */,
-				6DED34860DAE115500A2F30F /* MixReg.h */,
-				6DED34870DAE115500A2F30F /* MixReg.cpp */,
-				6DED34020DAE002100A2F30F /* SIPllWindow.h */,
-				6DED34030DAE002100A2F30F /* SIPllWindow.cpp */,
-				6DED738F0D8FA59000D85368 /* RegisterWindow.h */,
-				6DED73900D8FA59000D85368 /* RegisterWindow.cpp */,
-				6D622CE80D8ED11400428D9A /* BaoAdc.cpp */,
-				6D622CE90D8ED11400428D9A /* BaoAdc.h */,
 				6D6F14740D6463FA00583608 /* xp1.cc */,
 				6DEA07E50C8861E90016C028 /* pit0.cc */,
 				6DE7443F0C7C2E390051D656 /* xp0.cc */,
 				6D106876067DC8FC009E5976 /* QuartzAppTest.cpp */,
-				6DED33240DADE70C00A2F30F /* SPIWindow.h */,
-				6DED33250DADE70C00A2F30F /* SPIWindow.cpp */,
 			);
 			name = Main;
@@ -714,4 +739,6 @@
 			isa = PBXGroup;
 			children = (
+				6DE18C180E83E91700414227 /* pibwdgquartz.h */,
+				6DE18B840E837AD800414227 /* pioptmenuquartz.h */,
 				6D6F12F30D644DA100583608 /* pigraphquartz.h */,
 				6D6F134F0D64573200583608 /* picmapquartz.h */,
@@ -721,9 +748,8 @@
 				6D7D4E500667277A009E5976 /* PIMenuBarQuartz.h */,
 				6D41F30A064771A8009E5976 /* PIContainerQuartz.h */,
-				6D8292EC0623F784009E5976 /* PIControl.h */,
 				6DF012F40CBF6A510026E580 /* PIPeriodQuartz.h */,
 				6D98FCF4062C1CDB009E5976 /* PIWindowQuartz.h */,
-				6DEA831E0C7F162300B7D5DD /* pistdwdgmosx.h */,
-				6D189BFE0619C1F5009E5976 /* piwdgmosx.h */,
+				6DEA831E0C7F162300B7D5DD /* pistdwdgquartz.h */,
+				6D189BFE0619C1F5009E5976 /* piwdgquartz.h */,
 			);
 			name = Headers;
@@ -740,9 +766,10 @@
 				6D7D4E5606673450009E5976 /* PIMenuQuartz.cpp */,
 				6D41F30B064771A8009E5976 /* PIContainerQuartz.cpp */,
-				6D189BFF0619C1F5009E5976 /* piwdgmosx.cpp */,
-				6DEA83220C7F166500B7D5DD /* pistdwdgmosx.cpp */,
+				6D189BFF0619C1F5009E5976 /* piwdgquartz.cpp */,
+				6DEA83220C7F166500B7D5DD /* pistdwdgquartz.cpp */,
 				6D98FCF5062C1CDB009E5976 /* PIWindowQuartz.cpp */,
-				6D8292ED0623F784009E5976 /* PIControl.cpp */,
 				6DFD5AD506774017009E5976 /* PIApplQuartz.cpp */,
+				6DE18B850E837AD800414227 /* pioptmenuquartz.cpp */,
+				6DE18C190E83E91700414227 /* pibwdgquartz.cpp */,
 			);
 			name = Specific;
@@ -760,9 +787,8 @@
 				6D0E25200665D8A2009E5976 /* picolist.h in Headers */,
 				6D0E25210665E286009E5976 /* picontainergen.h in Headers */,
-				6D0E25240665E29E009E5976 /* piwdgmosx.h in Headers */,
+				6D0E25240665E29E009E5976 /* piwdgquartz.h in Headers */,
 				6D0E25250665E29F009E5976 /* piwdggen.h in Headers */,
 				6D0E25280665E337009E5976 /* pievthandler.h in Headers */,
 				6D0E25290665E337009E5976 /* PIWindowQuartz.h in Headers */,
-				6D0E252A0665E338009E5976 /* PIControl.h in Headers */,
 				6D0E252B0665E338009E5976 /* PIContainerQuartz.h in Headers */,
 				6D0E253006661DC2009E5976 /* piwindowgen.h in Headers */,
@@ -774,5 +800,5 @@
 				6DFD5AD606774018009E5976 /* PIApplQuartz.h in Headers */,
 				6DEA82D10C7EDF5B00B7D5DD /* pistdwdggen.h in Headers */,
-				6DEA831F0C7F162300B7D5DD /* pistdwdgmosx.h in Headers */,
+				6DEA831F0C7F162300B7D5DD /* pistdwdgquartz.h in Headers */,
 				6DF012F60CBF6A510026E580 /* PIPeriodQuartz.h in Headers */,
 				6D6F12710D6446D500583608 /* machdefs.h in Headers */,
@@ -790,4 +816,16 @@
 				6D6F140A0D64605E00583608 /* pifontgen.h in Headers */,
 				6D6F14130D64611D00583608 /* strutilxx.h in Headers */,
+				6DF26D1B0E7FB7EC001AE7EF /* pibwdggen.h in Headers */,
+				6DF26D1D0E7FB7EC001AE7EF /* pidrawer.h in Headers */,
+				6DF26D250E7FB84E001AE7EF /* piaxes.h in Headers */,
+				6DF26D260E7FB84E001AE7EF /* pigraphgen.h in Headers */,
+				6DF26D280E7FB84E001AE7EF /* pigraphuc.h in Headers */,
+				6DF26D290E7FB84E001AE7EF /* psfile.h in Headers */,
+				6DF26D2B0E7FDF45001AE7EF /* ucckprot.h in Headers */,
+				6DF26D510E7FED78001AE7EF /* pioptmenugen.h in Headers */,
+				6DE18B860E837AD800414227 /* pioptmenuquartz.h in Headers */,
+				6DE18BF90E83E4FE00414227 /* pidrwtools.h in Headers */,
+				6DE18C1A0E83E91700414227 /* pibwdgquartz.h in Headers */,
+				6DE8E8170E87BA6D0031A5D9 /* pigraphps.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -1003,10 +1041,9 @@
 				6D0E25040665D32C009E5976 /* pimsghandler.cc in Sources */,
 				6D0E25220665E287009E5976 /* picontainergen.cc in Sources */,
-				6D0E25260665E2A9009E5976 /* piwdgmosx.cpp in Sources */,
+				6D0E25260665E2A9009E5976 /* piwdgquartz.cpp in Sources */,
 				6D0E25270665E2A9009E5976 /* piwdggen.cc in Sources */,
 				6D0E252C0665E33A009E5976 /* PIContainerQuartz.cpp in Sources */,
 				6D0E252D0665E33A009E5976 /* pievthandler.cc in Sources */,
 				6D0E252E0665E33B009E5976 /* PIWindowQuartz.cpp in Sources */,
-				6D0E252F0665E33B009E5976 /* PIControl.cpp in Sources */,
 				6D0E253106661DC4009E5976 /* piwindowgen.cc in Sources */,
 				6D7D4E4D066710EB009E5976 /* pimenubargen.cc in Sources */,
@@ -1017,5 +1054,5 @@
 				6DFD5AD706774018009E5976 /* PIApplQuartz.cpp in Sources */,
 				6DEA82D00C7EDF5700B7D5DD /* pistdwdggen.cc in Sources */,
-				6DEA83230C7F166500B7D5DD /* pistdwdgmosx.cpp in Sources */,
+				6DEA83230C7F166500B7D5DD /* pistdwdgquartz.cpp in Sources */,
 				6DF012F70CBF6A510026E580 /* PIPeriodQuartz.cpp in Sources */,
 				6D6F13310D64550C00583608 /* pifontquartz.cpp in Sources */,
@@ -1031,4 +1068,13 @@
 				6D6F14090D64605E00583608 /* pifontgen.cc in Sources */,
 				6D6F14120D64611D00583608 /* strutilxx.cc in Sources */,
+				6DF26D1A0E7FB7EC001AE7EF /* pibwdggen.cc in Sources */,
+				6DF26D1C0E7FB7EC001AE7EF /* pidrawer.cc in Sources */,
+				6DF26D240E7FB84E001AE7EF /* piaxes.cc in Sources */,
+				6DF26D270E7FB84E001AE7EF /* pigraphuc.cc in Sources */,
+				6DF26D500E7FED78001AE7EF /* pioptmenugen.cc in Sources */,
+				6DE18B870E837AD800414227 /* pioptmenuquartz.cpp in Sources */,
+				6DE18BF80E83E4FE00414227 /* pidrwtools.cc in Sources */,
+				6DE18C1B0E83E91700414227 /* pibwdgquartz.cpp in Sources */,
+				6DE8E8160E87BA6D0031A5D9 /* pigraphps.cc in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -1046,10 +1092,4 @@
 			buildActionMask = 2147483647;
 			files = (
-				6D622CEA0D8ED11400428D9A /* BaoAdc.cpp in Sources */,
-				6DED73910D8FA59000D85368 /* RegisterWindow.cpp in Sources */,
-				6DED33260DADE70C00A2F30F /* SPIWindow.cpp in Sources */,
-				6DED34040DAE002100A2F30F /* SIPllWindow.cpp in Sources */,
-				6DED34880DAE115500A2F30F /* MixReg.cpp in Sources */,
-				6DED34DB0DAE15B200A2F30F /* ADCWindow.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
@@ -1103,9 +1143,13 @@
 				INFOPLIST_FILE = "BaoAdc-Info.plist";
 				INSTALL_PATH = "$(USER_APPS_DIR)";
-				OPTIMIZATION_CFLAGS = "-O0";
-				OTHER_CFLAGS = "-D__PIWQUARTZ__";
+				LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../../USB/LALUsb/build/Debug\"";
+				OPTIMIZATION_CFLAGS = "-O0";
+				OTHER_CFLAGS = (
+					"-D__PIWQUARTZ__",
+					"-D_TEST245_CONSOLE_",
+				);
 				OTHER_CPLUSPLUSFLAGS = (
-					"$(OTHER_CFLAGS)",
 					"-D__PIWQUARTZ__",
+					"-D_TEST245_CONSOLE_",
 				);
 				OTHER_LDFLAGS = (
@@ -1135,6 +1179,14 @@
 				INFOPLIST_FILE = "BaoAdc-Info.plist";
 				INSTALL_PATH = "$(USER_APPS_DIR)";
-				OPTIMIZATION_CFLAGS = "-O0";
-				OTHER_CFLAGS = "";
+				LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../../USB/LALUsb/build/Debug\"";
+				OPTIMIZATION_CFLAGS = "-O0";
+				OTHER_CFLAGS = (
+					"-D__PIWQUARTZ__",
+					"-D_TEST245_CONSOLE_",
+				);
+				OTHER_CPLUSPLUSFLAGS = (
+					"-D__PIWQUARTZ__",
+					"-D_TEST245_CONSOLE_",
+				);
 				OTHER_LDFLAGS = (
 					"-framework",
@@ -1162,6 +1214,14 @@
 				INFOPLIST_FILE = "BaoAdc-Info.plist";
 				INSTALL_PATH = "$(USER_APPS_DIR)";
-				OPTIMIZATION_CFLAGS = "-O0";
-				OTHER_CFLAGS = "";
+				LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../../../USB/LALUsb/build/Debug\"";
+				OPTIMIZATION_CFLAGS = "-O0";
+				OTHER_CFLAGS = (
+					"-D__PIWQUARTZ__",
+					"-D_TEST245_CONSOLE_",
+				);
+				OTHER_CPLUSPLUSFLAGS = (
+					"-D__PIWQUARTZ__",
+					"-D_TEST245_CONSOLE_",
+				);
 				OTHER_LDFLAGS = (
 					"-framework",
@@ -1562,4 +1622,5 @@
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				HEADER_SEARCH_PATHS = Quartz;
 			};
 			name = Development;
Index: /trunk/SophyaPI/PI/Quartz/PIApplQuartz.cpp
===================================================================
--- /trunk/SophyaPI/PI/Quartz/PIApplQuartz.cpp	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/PIApplQuartz.cpp	(revision 3747)
@@ -12,4 +12,6 @@
 static OSErr QuitAppleEventHandler(const AppleEvent *appleEvt, AppleEvent* reply, UInt32 refcon);
 
+static PIApplication* cur_piapp = NULL;
+PIApplication* PIApplicationGetApp() { return cur_piapp; }
 
 PIApplicationQuartz::PIApplicationQuartz()
@@ -25,4 +27,5 @@
         
     menubar = new PIMenubar(this, "DefMenubar");
+	cur_piapp = this;
 }
 
@@ -43,4 +46,5 @@
   mainWindow = new PIWindow(this,(const char*)"Main Window",PIWK_normal,width,height,50,50);
   mainWindow->Refresh();
+  cur_piapp = this;
 }
 
Index: /trunk/SophyaPI/PI/Quartz/PIApplQuartz.h
===================================================================
--- /trunk/SophyaPI/PI/Quartz/PIApplQuartz.h	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/PIApplQuartz.h	(revision 3747)
@@ -35,10 +35,10 @@
     virtual void	ScreenResolution(int& resolx, int& resoly);
 	
-	virtual void              RedirectOutStream(PIConsole* cons, unsigned char va= PIVA_Def)  {};
-	virtual void              RedirectErrStream(PIConsole* cons, unsigned char va= PIVA_Red) {};
+	virtual void	RedirectOutStream(PIConsole* cons, unsigned char va= PIVA_Def)  {};
+	virtual void    RedirectErrStream(PIConsole* cons, unsigned char va= PIVA_Red) {};
 
-	virtual void              RedirectOutStream(PIConsole* cons, string const & flnm, bool fgcpos=false, 
+	virtual void    RedirectOutStream(PIConsole* cons, string const & flnm, bool fgcpos=false, 
 						    unsigned char va= PIVA_Def)  {};
-	virtual void              RedirectErrStream(PIConsole* cons, string const & flnm, bool fgcpos=false, 
+	virtual void    RedirectErrStream(PIConsole* cons, string const & flnm, bool fgcpos=false, 
 						    unsigned char va= PIVA_Def)  {};
 
@@ -49,3 +49,6 @@
 typedef PIApplicationQuartz PIApplication;
 
+//  Pour recuperer un objet PIApplication 
+PIApplication* PIApplicationGetApp();
+
 #endif
Index: /trunk/SophyaPI/PI/Quartz/PIContainerQuartz.cpp
===================================================================
--- /trunk/SophyaPI/PI/Quartz/PIContainerQuartz.cpp	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/PIContainerQuartz.cpp	(revision 3747)
@@ -4,5 +4,4 @@
  *
  *  Created by Bruno MANSOUX on Tue May 04 2004.
- *  Copyright (c) 2004 __MyCompanyName__. All rights reserved.
  *
  */
@@ -31,13 +30,12 @@
 
 /* --Methode-- */
-ControlHandle PIContainerQuartz::GetControlHandle()
+HIViewRef PIContainerQuartz::GetHIViewRef()
 {
-    return contH;
+    return viewH;
 }
 
 /* --Methode-- */
-WindowPtr PIContainerQuartz::GetWindowPtr()
+WindowRef PIContainerQuartz::GetWindowRef()
 {
-    return wPtr;
+    return HIViewGetWindow(viewH);
 }
-
Index: /trunk/SophyaPI/PI/Quartz/PIContainerQuartz.h
===================================================================
--- /trunk/SophyaPI/PI/Quartz/PIContainerQuartz.h	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/PIContainerQuartz.h	(revision 3747)
@@ -22,8 +22,8 @@
     virtual	~PIContainerQuartz();
 
-    virtual void        Process(PIMessage msg, PIMsgHandler* sender, void* data=NULL);
-
-    virtual ControlHandle GetControlHandle();
-    virtual WindowPtr GetWindowPtr();
+    virtual void Process(PIMessage msg, PIMsgHandler* sender, void* data=NULL);
+	
+    virtual HIViewRef GetHIViewRef();
+	virtual WindowRef GetWindowRef();
 };
 
Index: unk/SophyaPI/PI/Quartz/PIControl.cpp
===================================================================
--- /trunk/SophyaPI/PI/Quartz/PIControl.cpp	(revision 3746)
+++ 	(revision )
@@ -1,135 +1,0 @@
-/*
- *  PIControl.cpp
- *  PI
- *
- *  Created by Bruno MANSOUX on Wed Apr 07 2004.
- *  Copyright (c) 2004 __MyCompanyName__. All rights reserved.
- *
- */
-
-#include "PIControl.h"
-#include "pistdwdggen.h"
-#include "PIContainerQuartz.h"
-
-PIControl::PIControl(PIContainerGen *par, const char *nom,int sx, int sy, int px, int py)
-:PIWdgQuartz(par, nom, sx, sy, px, py) 
-{
-	wParent = ((PIContainer *)par)->GetWindowPtr();
-	SetPortWindowPort(wParent);
-    SetRect(&wdgRect,px,py,px+sx,py+sy);
-    contH = NULL;
-}
-
-PIControl::~PIControl()
-{
-
-}
-
-void PIControl::SetSize(int sx, int sy)
-{
-    SizeControl (contH, sx, sy);
-    return;
-}
-
-void PIControl::SetPos(int px, int py)
-{
-    MoveControl (contH, px, py);
-    return;
-}
-
-void PIControl::Manage()
-{
-    return;	
-}
-
-void PIControl::UnManage()
-{
-    return;
-}
-
-bool PIControl::IfManaged()
-{
-    return true;
-}
- 
-bool PIControl::IsVisible()
-{
-    return (IsControlVisible(contH));
-}
-
-//  Fonction qui doit etre appelee pour rafraichir la fenetre 
-void PIControl::Refresh()
-{
-    return (Draw1Control(contH));
-}
-
-//  Pour rendre un composant graphique (PIWdg) sensible/insensible 
-void PIControl::SetSensitive()
-{
-    EnableControl (contH);
-    return;
-}
-
-void PIControl::SetUnSensitive()
-{
-    DisableControl (contH);
-    return;
-}
-
-bool PIControl::IfSensitive()
-{
-    return (IsControlActive(contH));
-}
-
-//  Gestion des EventHandler
-void PIControl::AddDrawHandler(PIEventHandler* drwh, bool ad)
-{
-/*
-    InstallControlEventHandler (contH, 
-                                NewEventHandlerUPP (drwh),
-                                GetEventTypeCount(drawEvents),
-                                drawEvents,
-                                contH,
-                                NULL);
-*/
-    return;
-}
-
-void PIControl::RemoveDrawHandler(PIEventHandler* drwh)
-{
-    RemoveEventHandler(drwh);
-    return;
-}
-
-void PIControl::AddEventHandler(PIEventHandler* evh, unsigned long evtmask, bool ad)
-{
-/*
-    InstallControlEventHandler (contH, 
-                                NewEventHandlerUPP (evh),
-                                GetEventTypeCount(evtmask),
-                                evtmask,
-                                contH,
-                                NULL);
-*/
-    return;
-}
-
-void PIControl::RemoveEventHandler(PIEventHandler* evh)
-{
-    RemoveEventHandler(evh);
-    return;
-}
-
-
-// En public, pour permettre l'acces depuis call-back Xt
-void PIControl::CallDrawHandlers(int x0, int y0, int dx, int dy)
-{
-    return;
-}
-
-void PIControl::CallEventHandlers(unsigned long evt, int px, int py,
-                                    int k, int km, unsigned long tm)
-{
-    return;
-}
-
Index: unk/SophyaPI/PI/Quartz/PIControl.h
===================================================================
--- /trunk/SophyaPI/PI/Quartz/PIControl.h	(revision 3746)
+++ 	(revision )
@@ -1,61 +1,0 @@
-/*
- *  PIControl.h
- *  PI
- *
- *  Created by Bruno MANSOUX on Wed Apr 07 2004.
- *  Copyright (c) 2004 __MyCompanyName__. All rights reserved.
- *
- */
-
-#include <Carbon/Carbon.h>
-
-#ifndef PICONTROL_SEEN
-#define PICONTROL_SEEN
-
-#include "piwdgmosx.h"
-
-/*
-EventTypeSpec controlEvents[] = {{kEventClassControl, kEventControlHit}};
-*/
-
-class PIControl : public PIWdgQuartz
-{
-public:
-// Les methodes ...
-    PIControl(PIContainerGen *par, const char *nom, 
-                int sx=10, int sy=10, int px=0, int py=0);
-
-  virtual 	 ~PIControl();
-
-  virtual void   SetSize(int sx, int sy);
-  virtual void   SetPos(int px, int py);
-
-  virtual void   Manage();
-  virtual void   UnManage();
-  virtual bool   IfManaged();
-  virtual bool   IsVisible();
-
-//  Fonction qui doit etre appelee pour rafraichir la fenetre 
-  virtual void       	 Refresh();
-
-//  Pour rendre un composant graphique (PIControl) sensible/insensible 
-  virtual void           SetSensitive();
-  virtual void           SetUnSensitive();
-  virtual bool           IfSensitive();
-
-//  Gestion des EventHandler
-  virtual void		 AddEventHandler(PIEventHandler* evh, unsigned long evtmask, bool ad=false);
-  virtual void		 RemoveEventHandler(PIEventHandler* evh);
-  virtual void		 AddDrawHandler(PIEventHandler* drwh, bool ad=false);
-  virtual void		 RemoveDrawHandler(PIEventHandler* drwh);
-
-
-// En public, pour permettre l'acces depuis call-back Xt
-  virtual void		 CallDrawHandlers(int x0, int y0, int dx, int dy); 
-  virtual void		 CallEventHandlers(unsigned long evt, int px, int py,
-                                           int k, int km, unsigned long tm);
-
-};
-
-#endif
-
Index: /trunk/SophyaPI/PI/Quartz/PIMenuBarQuartz.cpp
===================================================================
--- /trunk/SophyaPI/PI/Quartz/PIMenuBarQuartz.cpp	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/PIMenuBarQuartz.cpp	(revision 3747)
@@ -28,4 +28,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuBarQuartz::AppendMenu(PIMenu *pdm)
 {
@@ -35,4 +36,13 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
+void PIMenuBarQuartz::AppendPopupMenu(PIMenu *pdm)
+{
+	InsertMenu (pdm->GetMenuRef(),kInsertHierarchicalMenu);
+	vPIMenu.push_back(pdm);
+	return;
+}
+
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuBarQuartz::RemoveMenu(PIMenu *pdm)
 {
@@ -47,8 +57,10 @@
             }
         }
+		
     DeleteMenu (pdm->GetMenuID());
     return;
 }
 
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuBarQuartz::SetSensitivity(PIMenu *pdm, bool sens)
 {
@@ -57,4 +69,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 bool PIMenuBarQuartz::IsSensitive(PIMenu *pdm)
 {
@@ -63,22 +76,37 @@
 }
 
-PIMessage PIMenuBarQuartz::GetMsg(MenuRef menuRef, int commandID)
+/* ----------------------------- Methode ------------------------------- */
+PIMessage PIMenuBarQuartz::GetMsg(HICommand commandStruct)
 {
+	MenuRef menuRef = commandStruct.menu.menuRef;
+	UInt32 commandID = commandStruct.commandID;
+	UInt16 itemIndex = commandStruct.menu.menuItemIndex;
+	
     vector<PIMenu*>::iterator it;
     for(it = vPIMenu.begin(); it != vPIMenu.end(); it++)
         {
-            if ((*it)->GetMenuRef() == menuRef)
+           if ((*it)->GetMenuRef() == menuRef)
             {
+				if ((*it)->MType() == k_PopupMenu)
+				{
+					PIWdg* piWdg;
+					ControlRef contH;
+					piWdg = (*it)->GetParent();
+					contH = piWdg->GetHIViewRef();
+//					printf("PopValue : %d \n", GetControl32BitValue(contH));
+					SetControl32BitValue(contH, itemIndex);
+				}
                 return (*it)->GetMsgItem(commandID);
             }
         }
 	return 0;
-} 
+}
 
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuBarQuartz::Dispatch(HICommand commandStruct, void* userData)
 {
 	PIMessage msg;
 	
-	msg = GetMsg(commandStruct.menu.menuRef,commandStruct.commandID);
+	msg = GetMsg(commandStruct);
 	Process(BuildMsg(msg,PIMsg_Click), piApp, userData);
 		
@@ -120,5 +148,4 @@
 		result = noErr;
     }
-
     return (result);
 }
Index: /trunk/SophyaPI/PI/Quartz/PIMenuBarQuartz.h
===================================================================
--- /trunk/SophyaPI/PI/Quartz/PIMenuBarQuartz.h	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/PIMenuBarQuartz.h	(revision 3747)
@@ -20,8 +20,9 @@
     ~PIMenuBarQuartz();
     virtual void AppendMenu(PIMenu *pdm);
+	virtual void AppendPopupMenu(PIMenu *pdm);
     virtual void RemoveMenu(PIMenu *pdm);
     virtual void SetSensitivity(PIMenu *pdm, bool sens=true);
     virtual bool IsSensitive(PIMenu *pdm);
-	PIMessage GetMsg(MenuRef menuRef, int commandID);
+	PIMessage GetMsg(HICommand commandStruct);
 	void Dispatch(HICommand commandStruct, void* userData);
 
Index: /trunk/SophyaPI/PI/Quartz/PIMenuQuartz.cpp
===================================================================
--- /trunk/SophyaPI/PI/Quartz/PIMenuQuartz.cpp	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/PIMenuQuartz.cpp	(revision 3747)
@@ -10,5 +10,5 @@
 #include "PIMenuQuartz.h"
 
-
+/* ----------------------------- Methode ------------------------------- */
 PIMenuQuartz::PIMenuQuartz(PIWdg* par, const char* nom, PIMenuType pdpu)
 :PIMenuGen(par, nom, pdpu)
@@ -17,17 +17,21 @@
     Str255 menuTitle;
 
+    mNItem = 0;  mNItemMax = 0;     
+    mMenuID = mMenuIdentificateur++;
+
+//    Beware with using this attribute, no place for check mark!
+//    CreateNewMenu (mMenuID, kMenuAttrExcludesMarkColumn, &mMenu);
+
 //  Popupmenu are associated with ButtonControl
     if (pdpu == k_PopupMenu)
-        {        
-        }
-    
-    mNItem = 0;  mNItemMax = 0;     
-    mMenuID = mMenuIdentificateur++;
-
-//    Beware with using this attribute, no place for check mark!
-//    CreateNewMenu (mMenuID, kMenuAttrExcludesMarkColumn, &mMenu);
-
-    CreateNewMenu (mMenuID,kMenuAttrAutoDisable, &mMenu);
-    
+	{
+		CreateNewMenu (mMenuID, kMenuAttrHidden, &mMenu);
+	}
+    else
+	{
+		CreateNewMenu (mMenuID, kMenuAttrAutoDisable, &mMenu);
+    }
+	
+	parent = par;
     CopyCStringToPascal (nom, menuTitle);
     SetMenuTitle (mMenu, menuTitle);
@@ -35,4 +39,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 PIMenuQuartz::~PIMenuQuartz()
 {
@@ -40,4 +45,5 @@
 }
 				   
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuQuartz::AppendItem(const char* nom, PIMessage msg, char* sc)
 {
@@ -76,4 +82,5 @@
 }
 				   
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuQuartz::AppendCheckItem(const char* nom, PIMessage msg, char* sc)
 {
@@ -85,4 +92,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuQuartz::AppendPDMenu(PIMenuGen *pdm, char* sc)
 {
@@ -91,5 +99,5 @@
 }
 
-
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuQuartz::AppendCascadeMenu(PIMenuQuartz* cascadeMenu, PIMessage msg)
 {
@@ -103,4 +111,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuQuartz::AppendSeparator()
 {
@@ -112,4 +121,5 @@
 
 
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuQuartz::DeleteItem(const char *nom)
 {
@@ -123,4 +133,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuQuartz::DeleteItemMsg(PIMessage msg)
 {
@@ -128,4 +139,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuQuartz::DeleteItemNum(int n)
 {
@@ -135,4 +147,5 @@
 
 
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuQuartz::SetSensitivity(const char *nom, bool sens)
 {
@@ -143,4 +156,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuQuartz::SetSensitivityMsg(PIMessage msg, bool sens) 
 {
@@ -151,4 +165,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuQuartz::SetSensitivityNum(int n, bool sens)
 {
@@ -160,4 +175,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 bool PIMenuQuartz::IsSensitive(const char *nom)
 {
@@ -167,4 +183,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 bool PIMenuQuartz::IsSensitiveMsg(PIMessage msg)
 {
@@ -174,4 +191,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 bool PIMenuQuartz::IsSensitiveNum(int n)
 {
@@ -179,4 +197,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuQuartz::SetState(const char *nom, bool st)
 {
@@ -187,4 +206,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuQuartz::SetStateMsg(PIMessage msg, bool st)
 {
@@ -195,4 +215,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuQuartz::SetStateNum(int n, bool st)
 {
@@ -200,4 +221,5 @@
 }
  
+/* ----------------------------- Methode ------------------------------- */
 bool PIMenuQuartz::GetState(const char *nom)
 {
@@ -208,4 +230,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 bool PIMenuQuartz::GetStateMsg(PIMessage msg)
 {
@@ -216,4 +239,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 bool PIMenuQuartz::GetStateNum(int n)
 {
@@ -221,4 +245,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuQuartz::Show()
 {
@@ -227,4 +252,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 void PIMenuQuartz::Show(PIWdg *w, int px, int py)
 {
@@ -233,4 +259,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 PIMessage PIMenuQuartz::GetMsgItem(int itemID)
 {
@@ -246,4 +273,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 int PIMenuQuartz::GetNumItem(const char* nom)
 {
@@ -269,4 +297,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 int PIMenuQuartz::GetNumItemMsg(PIMessage msg)
 {
@@ -280,4 +309,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 char*  PIMenuQuartz::ItemName(int n)
 {
@@ -287,4 +317,5 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 MenuRef PIMenuQuartz::GetMenuRef()
 {
@@ -292,6 +323,15 @@
 }
 
+/* ----------------------------- Methode ------------------------------- */
 MenuID PIMenuQuartz::GetMenuID()
 {
     return (mMenuID);
 }
+
+/* ----------------------------- Methode ------------------------------- */
+PIWdg* PIMenuQuartz::GetParent()
+{
+    return (parent);
+}
+
+
Index: /trunk/SophyaPI/PI/Quartz/PIMenuQuartz.h
===================================================================
--- /trunk/SophyaPI/PI/Quartz/PIMenuQuartz.h	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/PIMenuQuartz.h	(revision 3747)
@@ -65,6 +65,8 @@
   MenuRef	GetMenuRef ();
   MenuID	GetMenuID ();
+  PIWdg*	GetParent ();
     
   protected:
+	PIWdg* parent;
     MenuRef mMenu;
     int     mMenuID;
Index: /trunk/SophyaPI/PI/Quartz/PIWindowQuartz.cpp
===================================================================
--- /trunk/SophyaPI/PI/Quartz/PIWindowQuartz.cpp	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/PIWindowQuartz.cpp	(revision 3747)
@@ -16,21 +16,22 @@
     WindowAttributes windowAttributes;
     
-/*
-	wParent = ((PIContainer *)par)->GetWindowPtr();
+	/*
+	wParent = ((PIContainer *)par)->GetWindowRef();
 	SetPortWindowPort(wParent);
 	*/
 	
     SetRect(&wdgRect,px,py,px+sx,py+sy);
-    // windowAttributes = kWindowStandardDocumentAttributes | kWindowCompositingAttribute ;
-	windowAttributes = kWindowStandardDocumentAttributes;
+	windowAttributes = kWindowStandardDocumentAttributes | kWindowCompositingAttribute ;
 	
-    err = CreateNewWindow (kDocumentWindowClass,windowAttributes,&wdgRect,&wPtr);
+	err = CreateNewWindow (kDocumentWindowClass,windowAttributes,&wdgRect,&wRef);
+
     if (err)
         printf ("PIWindowQuartz Create Err = %d \n",err);
     fflush (stdout);
     
-    err = SetWindowTitleWithCFString (wPtr,title);
-    
-    InstallStandardEventHandler(GetWindowEventTarget(wPtr)); /* installs the default */    
+    err = SetWindowTitleWithCFString (wRef, title);
+
+	viewH = HIViewGetRoot(wRef);
+    InstallStandardEventHandler(GetWindowEventTarget(wRef)); /* installs the default */
 }
 
@@ -42,5 +43,5 @@
 void PIWindowQuartz::SetSize(int sx, int sy)
 {
-    SizeWindow (wPtr, sx, sy, true);
+    SizeWindow (wRef, sx, sy, true);
     return;
 }
@@ -48,5 +49,5 @@
 void PIWindowQuartz::SetPos(int px, int py)
 {
-    MoveWindow (wPtr, px, py, false);
+    MoveWindow (wRef, px, py, false);
     return;
 }
@@ -59,5 +60,5 @@
 void PIWindowQuartz::UnManage()
 {
-	HideWindow(wPtr);
+	HideWindow(wRef);
     return;
 }
@@ -70,5 +71,5 @@
 bool PIWindowQuartz::IsVisible()
 {
-    return (IsWindowVisible(wPtr));
+    return (IsWindowVisible(wRef));
 }
 
@@ -76,11 +77,11 @@
 void PIWindowQuartz::Refresh()
 {
-    SetPortWindowPort(wPtr);
-    BeginUpdate(wPtr);
-	EraseRect(GetWindowPortBounds(wPtr, &wdgRect));
-    DrawControls(wPtr);
-    DrawGrowIcon(wPtr);
-    EndUpdate(wPtr);
-    ShowWindow (wPtr);
+    SetPortWindowPort(wRef);
+    BeginUpdate(wRef);
+	EraseRect(GetWindowPortBounds(wRef, &wdgRect));
+    DrawControls(wRef);
+    DrawGrowIcon(wRef);
+    EndUpdate(wRef);
+    ShowWindow (wRef);
     return ;
 }
@@ -94,5 +95,5 @@
 void PIWindowQuartz::SetSensitive()
 {
-    ActivateWindow (wPtr, true);
+    ActivateWindow (wRef, true);
     return;
 }
@@ -100,5 +101,5 @@
 void PIWindowQuartz::SetUnSensitive()
 {
-    ActivateWindow (wPtr, false);
+    ActivateWindow (wRef, false);
     return;
 }
@@ -106,5 +107,5 @@
 bool PIWindowQuartz::IfSensitive()
 {
-    return (IsWindowActive(wPtr));
+    return (IsWindowActive(wRef));
 }
 
@@ -130,5 +131,4 @@
 }
 
-
 // En public, pour permettre l'acces depuis call-back Xt
 void PIWindowQuartz::CallDrawHandlers(int x0, int y0, int dx, int dy)
Index: /trunk/SophyaPI/PI/Quartz/PIWindowQuartz.h
===================================================================
--- /trunk/SophyaPI/PI/Quartz/PIWindowQuartz.h	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/PIWindowQuartz.h	(revision 3747)
@@ -53,5 +53,7 @@
   virtual void		 CallEventHandlers(unsigned long evt, int px, int py,
                                            int k, int km, unsigned long tm);
-
+protected:
+    WindowRef	wRef;
+	WindowRef	wParent;
 };
 
Index: /trunk/SophyaPI/PI/Quartz/QuartzAppTest.cpp
===================================================================
--- /trunk/SophyaPI/PI/Quartz/QuartzAppTest.cpp	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/QuartzAppTest.cpp	(revision 3747)
@@ -1,9 +1,6 @@
 /*
     QuartzAppTest.cpp
-    
-    BMX 14/06/04 
-    
-    Test Program for PI4Mac validation
-    
+    BMX 14/06/06
+    Test Program for PI4Mac validation    
 */
 
@@ -11,57 +8,172 @@
 #include <PIMenuBarQuartz.h>
 #include <PIWindowQuartz.h>
-#include <pistdwdgmosx.h>
+#include <pioptmenuquartz.h>
+#include <pistdwdgquartz.h>
+#include <pigraphquartz.h>
+#include <iostream>
+
+#define NBCOTE 7
+
+void FillDatas();
+
+PIGraphicWin* pig;
+PIGrCoord* tabx;
+PIGrCoord* taby;
+
+/* ============================== */
+class QuartzApp : public PIApplication
+{
+public:
+	QuartzApp();
+	~QuartzApp();
+	virtual void Process (PIMessage msg, PIMsgHandler* sender, void * data = NULL);
+};
+
+/* ============================== */
+QuartzApp::QuartzApp()
+: PIApplication()
+{
+}
+
+/* ============================== */
+QuartzApp::~QuartzApp()
+{
+}
+
+/* ============================== */
+
+void QuartzApp::Process (PIMessage msg, PIMsgHandler* sender, void * data)
+{
+  switch(UserMsg(msg))    
+	{	
+		case 777:
+		std::cout << " Erase " << std::endl;
+		pig->Erase(280,60,100,50);
+		break;
+
+		case 2001:
+		std::cout << " Circle " << std::endl;
+		pig->DrawCircle(360,100,30);
+		break;
+		
+		case 2002:
+		std::cout << " Polygone " << std::endl;
+		pig->DrawPolygon(tabx, taby, NBCOTE, 0);
+		break;
+		
+		case 3001:
+		std::cout << " Pop 1 " << std::endl;
+		break;
+	
+		case 3002:
+		std::cout << " Pop 2 " << std::endl;
+		break;
+		
+		default:
+		std::cout << " msg : "<< UserMsg(msg) << std::endl;
+		break;
+	}
+
+	return;
+}
 
 
+/* ============================== */
 int main(int argc, char *argv[])
 {
-    PIApplication* mainApp;
+    QuartzApp* mainApp;
     PIMenu* firstMenu;
-    PIMenu* underMenu;    
+    PIMenu* underMenu;
+	PIMenu* popMenu;
+	PIMenu* figuresMenu;
+	PIOptMenu* optMenu;  
     PIMenubar* mBar;
-    PIWindow* windowFirst;				
-    PIContainer* piCont;
-    PIWindowGen* wGen;
-    PIContainer* piContQ; 
-    PIWdg* piWdg;
+    PIWindow* windowFirst;	
 	PILabel *piLabel;
     PIButton* piButton;
     vector<int> points;
 
-    /* Creation of general objects */
+    /* Creation of general graphical objects */
 
-    mainApp = new PIApplication();
-    piCont = mainApp->MainWin();
+    mainApp = new QuartzApp();
 
-    firstMenu = new PIMenu((PIWdg *)mainApp, (const char *)"First Menu");
-    firstMenu->AppendItem("One from first", 1000);
+    firstMenu = new PIMenu((PIWdg *)mainApp, (const char *)"File Menu");
+    firstMenu->AppendItem("One from file", 1000);
     firstMenu->AppendSeparator();
-    firstMenu->AppendItem("Two from first", 1001);
-    firstMenu->AppendCheckItem("Three from first", 1002);
+    firstMenu->AppendItem("Two from file", 1001);
+    firstMenu->AppendCheckItem("Check from file", 1002);
+    firstMenu->AppendItem("Quitter ", 1003);
 	
 	underMenu = new PIMenu((PIWdg *)firstMenu,(const char *)"submenu");
     firstMenu->AppendCascadeMenu(underMenu,1001);
-    printf ("Menus created \n");
+	underMenu->AppendItem("Sub 1 from 2",1010);
+	underMenu->AppendItem("Sub 2 from 2",1011);
+
+	figuresMenu = new PIMenu((PIWdg *)mainApp, (const char *)"Figures");
+	figuresMenu->AppendItem("Circle",2001);
+	figuresMenu->AppendItem("Polygone",2002);
+
+	printf ("Menus created \n");
     fflush (stdout);
-	underMenu->AppendItem("Sub from 2",2001);
-	printf ("SubMenus created \n");
-    fflush (stdout);
-
+	
     mBar = mainApp->Menubar();
     mBar->AppendMenu(firstMenu);
-    
-    windowFirst = new PIWindow((PIMsgHandler *)piCont, (const char *)"Window First",PIWK_normal,600,200,50,50);
-    wGen = new PIWindowGen((PIMsgHandler *)piCont,(const char *)"Window Gen",PIWK_normal,600,200,50,50);
-    piContQ = new PIContainer (piCont,(const char *)"Container First",600,200,50,50);
-    piWdg = new PIWdg (piCont,(const char *)"Wdg First",50,50,100,100);
+    mBar->AppendMenu(figuresMenu);
+	
+    windowFirst = new PIWindow((PIMsgHandler *)mainApp, (const char *)"Window First",PIWK_normal,600,200,50,50);
+	
 	piLabel = new PILabel(windowFirst,(const char *)"Label",80,40,150,50);
 
 	piButton = new PIButton(windowFirst, "Hello",777,60,20,80,80);
+	
+	optMenu = new PIOptMenu(windowFirst, "Opt Menu", 100,25,150,80);
+	popMenu = new PIMenu((PIWdg *)optMenu, (const char *)"Pop Menu",k_PopupMenu);
+	popMenu->AppendItem("pop 1",3001);
+	popMenu->AppendItem("pop 2",3002);
+	mBar->AppendPopupMenu(popMenu);
 
-    windowFirst->Refresh();
+	optMenu->AppendPDMenu(popMenu);
+	
 	piLabel->SetLabel("Etiquette");
 
+	windowFirst->Refresh();
+	fflush (stdout);
+	
+	pig = new PIGraphicWin (windowFirst);
+	// pig->SetClipRectangle(280,60,100,50);
+
+	PIGrCoord px(300);
+	PIGrCoord py(80);
+	PIGrCoord len(150);
+	PIGrCoord hei(50);
+	pig->SelForeground(PI_Blue);
+	pig->DrawFBox(px, py, len, hei);
+	pig->DrawString (px, py, "Graphic Text", 1);
+
+	PIGrCoord pxfin(450);
+	PIGrCoord pyfin(130);
+	pig->SelForeground(PI_Green);	
+	pig->DrawLine (px, py, pxfin, pyfin);
+
+	PIGrCoord deltax(60);
+	PIGrCoord deltay(30);
+	pig->SelForeground(PI_Red);	
+	pig->DrawArc (px, py, deltax, deltay, 0., 90.);
+
+	FillDatas();
+	
     mainApp->Run(); // Main loop
 
     return 0;
 }
+
+/* ============================== */
+void FillDatas()
+{
+	tabx = new PIGrCoord[NBCOTE];
+	taby = new PIGrCoord[NBCOTE];
+	
+	tabx[0] = 80 ;	tabx[1] = 100; tabx[2] = 120;	tabx[3] = 140;	tabx[4] = 130;	tabx[5] = 110; tabx[6] = 90;
+	taby[0] = 50;	taby[1] = 60; taby[2] = 70;	taby[3] = 80;	taby[4] = 60;	taby[5] = 40; taby[6] = 20;
+	return;
+}
Index: /trunk/SophyaPI/PI/Quartz/pibwdgquartz.cpp
===================================================================
--- /trunk/SophyaPI/PI/Quartz/pibwdgquartz.cpp	(revision 3747)
+++ /trunk/SophyaPI/PI/Quartz/pibwdgquartz.cpp	(revision 3747)
@@ -0,0 +1,75 @@
+/*
+ *  pibwdgquartz.cpp
+ *  PI
+ *
+ *  Created by Bruno MANSOUX on 19/09/08.
+ *  Copyright 2008 __MyCompanyName__. All rights reserved.
+ *
+ */
+
+#include "pibwdgquartz.h"
+
+PIBaseWdgQuartz::PIBaseWdgQuartz(PIContainerGen *par, const char *nom,int sx, int sy, int px, int py)
+: PIBaseWdgGen(par,nom,sx,sy,px,py)
+{
+}
+
+PIBaseWdgQuartz::~PIBaseWdgQuartz()
+{
+}
+
+void PIBaseWdgQuartz::FinishCreate()
+{
+}
+
+void PIBaseWdgQuartz::ActivatePtrCross()
+{
+}
+ 
+void PIBaseWdgQuartz::ActivateButton(int bid)
+{
+}
+ 
+void PIBaseWdgQuartz::ActivateMove(int bid)
+{
+}
+ 
+void PIBaseWdgQuartz::ActivateKeyboard()
+{
+}
+ 
+void PIBaseWdgQuartz::SelPointerShape(PIPointer ptr)
+{
+}
+ 
+PIPointer PIBaseWdgQuartz::GetPointerShape()
+{
+}
+ 
+void PIBaseWdgQuartz::AssignKeyboard()
+{
+}
+
+// Acces aux caracteristiques du dernier evenement 
+void PIBaseWdgQuartz::GetLastEventInfo(PIKeyModifier& kmod, unsigned long& tm)
+{
+}
+
+// On redefinit IsVisible() pour tenir compte de l appel a FinsihCreate  
+bool PIBaseWdgQuartz::IsVisible()
+{
+	return true;
+}
+
+//  Fonction qui doit etre appelee pour rafraichir la fenetre 
+void PIBaseWdgQuartz::Refresh()
+{
+	return;
+}
+
+//  Appel depuis le PIXtBaseWidget uniquement (ExposeEvt de Xt )
+void PIBaseWdgQuartz::eXposeProcess(int x0, int y0, int dx, int dy)
+{
+	return;
+}
+ 
Index: /trunk/SophyaPI/PI/Quartz/pibwdgquartz.h
===================================================================
--- /trunk/SophyaPI/PI/Quartz/pibwdgquartz.h	(revision 3747)
+++ /trunk/SophyaPI/PI/Quartz/pibwdgquartz.h	(revision 3747)
@@ -0,0 +1,63 @@
+/*
+ *  pibwdgquartz.h
+ *  PI
+ *
+ *  Created by Bruno MANSOUX on 19/09/08.
+ *
+ */
+
+#ifndef PIBWDGQUARTZ_H_SEEN
+#define PIBWDGQUARTZ_H_SEEN
+
+#include "pisysdep.h"
+#include "pibwdggen.h"
+
+#include "pigraphquartz.h"
+#include "pigraphps.h"
+
+class PIBaseWdgQuartz : public PIBaseWdgGen
+{
+
+public:
+// Les methodes ...
+
+                     PIBaseWdgQuartz(PIContainerGen *par, const char *nom,
+                                int sx=10, int sy=10, int px=0, int py=0);
+  virtual            ~PIBaseWdgQuartz();
+
+  virtual void       FinishCreate();   // appele par la fenetre mere, apres XtRealize()
+
+//  Activation des evenements   
+  virtual void       ActivatePtrCross();
+  virtual void       ActivateButton(int bid);
+  virtual void       ActivateMove(int bid);
+  virtual void       ActivateKeyboard();
+
+//  Divers : couleur de fond, Effacement fenetre,  forme de la souris
+  virtual void       SelPointerShape(PIPointer ptr=PI_ArrowPointer);
+  virtual PIPointer  GetPointerShape();
+  virtual void       AssignKeyboard();
+
+// Acces aux caracteristiques du dernier evenement 
+  virtual void       GetLastEventInfo(PIKeyModifier& kmod, unsigned long& tm);
+
+// On redefinit IsVisible() pour tenir compte de l appel a FinsihCreate  
+  virtual bool       IsVisible();
+
+//  Fonction qui doit etre appelee pour rafraichir la fenetre 
+  virtual void       Refresh();
+
+//  Appel depuis le PIXtBaseWidget uniquement (ExposeEvt de Xt )
+  virtual void       eXposeProcess(int x0, int y0, int dx, int dy);
+ 
+protected:
+  void               Init();
+  PIPointer mPtrS;
+// pour s'assurer que le bon FinishCreate() est appele - pb lie aux tables de fonctions
+// virtuelles des classes qui sont remplies au fur et a mesure des constructeurs
+  bool               bwx_finishDone; 
+};
+
+typedef PIBaseWdgQuartz PIBaseWdg;
+
+#endif /* PIBWDGQUARTZ_H_SEEN */
Index: /trunk/SophyaPI/PI/Quartz/picmapquartz.cpp
===================================================================
--- /trunk/SophyaPI/PI/Quartz/picmapquartz.cpp	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/picmapquartz.cpp	(revision 3747)
@@ -2,5 +2,5 @@
 
 #include "sopnamsp.h"
-#include "piwdgmosx.h"
+#include "piwdgquartz.h"
 #include "picmapquartz.h"
 
Index: /trunk/SophyaPI/PI/Quartz/pigraphquartz.cpp
===================================================================
--- /trunk/SophyaPI/PI/Quartz/pigraphquartz.cpp	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/pigraphquartz.cpp	(revision 3747)
@@ -1,5 +1,4 @@
 // Module PI : Peida Interactive     PIGraphicQuartz
-// Trace graphiques- Implementation X11  R. Ansari  97
-// LAL (Orsay) / IN2P3-CNRS  DAPNIA/SPP (Saclay) / CEA
+// LAL (Orsay) / IN2P3-CNRS  DAPNIA/IRFU (Saclay) / CEA
 
 #include <stdio.h>
@@ -8,14 +7,11 @@
 #include "sopnamsp.h"
 #include "pigraphquartz.h"
-
 
 /*  Variables globales pour modifier les GC  */
 #define NMAXCOL  32
 static  PIQuartzColor colpix[NMAXCOL];
-
-/*  GC pour DrawPixmap   
-    static GC dpxgc;   Pas utile ?? - Reza 02/05/2002 */
-
-// #define DEBUG_PIBWDGX     Flag pour impression de debug etc ...
+static const EventTypeSpec  gqHIViewSpec[] = {kEventClassControl,kEventControlDraw };
+
+OSStatus MyDrawEventHandler (EventHandlerCallRef myHandler,EventRef event, void *userData);
 
 /* --Methode-- */
@@ -23,5 +19,26 @@
 : PIGraphicGen(wdg)
 {
-
+	OSStatus err;
+	HIViewRef rootView;
+    HIRect      bounds;
+		
+	rootView = wdg->GetHIViewRef();
+	err = HIViewFindByID(rootView, kHIViewWindowContentID,&hiViewRef);
+	HIViewGetBounds (rootView, &bounds);
+	
+	printf("View Bounds (%g %g) [%g %g] \n",bounds.origin.x,bounds.origin.y,
+											bounds.size.width,bounds.size.height);
+
+	err = InstallEventHandler (GetControlEventTarget (hiViewRef),
+                            NewEventHandlerUPP (MyDrawEventHandler),
+                            GetEventTypeCount (gqHIViewSpec),
+                            (const EventTypeSpec*)&gqHIViewSpec,
+                            (void *) cgContext,
+                            NULL);
+	cgWindow =  HIViewGetWindow(rootView);
+	ShowWindow(cgWindow);
+	SetPortWindowPort(cgWindow);
+	QDBeginCGContext (GetWindowPort (cgWindow), &cgContext);
+	CGContextFlush(cgContext);
 }
 
@@ -37,4 +54,5 @@
 PIGraphicQuartz::~PIGraphicQuartz()
 {
+	QDEndCGContext (GetWindowPort(cgWindow), &cgContext);
 }
 
@@ -56,5 +74,14 @@
 void PIGraphicQuartz::Erase(PIGrCoord x0, PIGrCoord y0, PIGrCoord dx, PIGrCoord dy)
 {
-return;
+	CGPoint pt;
+	CGSize sz;
+	CGRect cgRect;
+	pt.x = x0; 	pt.y = y0;
+	sz.width = (int)dx ; sz.height = (int)dy ;
+	cgRect.origin = pt;
+	cgRect.size = sz;
+	CGContextClearRect(cgContext, cgRect);
+	CGContextFlush(cgContext);
+	return;
 }
 
@@ -62,18 +89,40 @@
 void PIGraphicQuartz::DrawString(PIGrCoord x, PIGrCoord y, const char* s, unsigned long pos)
 {
-int dx, dy, xi, yi;
-xi = x;  yi = y;
-bool fgcsps = CalcStringPositionShift(s, pos, dx, dy);
-unsigned long txtdir = pos&PI_TextDirection;
-if (txtdir == PI_TextDirectionHorizontal) {
-  if (fgcsps) { xi -= dx;  yi -= dy; }
+	CGPoint cgPt;
+	int dx, dy, xi, yi;
+	float xpos, ypos;
+	xi = x;  yi = y;
+	xpos = x; ypos = y;
+	bool fgcsps = CalcStringPositionShift(s, pos, dx, dy);
+	unsigned long txtdir = pos&PI_TextDirection;
+	if (txtdir == PI_TextDirectionHorizontal) 
+	{
+	if (fgcsps) { xi -= dx;  yi -= dy; }
 //  XDrawString (mDisp, mWId, DefGC(), xi, yi, s, strlen(s));
-}
-else { 
-  if (txtdir == PI_TextDirectionVerticalDown) { xi += dy; yi -= dx; }
-  else {   xi -= dy; yi += dx; }
+	}
+	else 
+	{ 
+		if (txtdir == PI_TextDirectionVerticalDown) 
+		{ xi += dy; yi -= dx; }
+		else 
+		{ xi -= dy; yi += dx; }
   //DrawVerticalString(xi, yi, s, txtdir, false);
-}
-return;
+	}
+
+    CGAffineTransform myTextTransform;
+	CGContextSelectFont(cgContext, "Times-Bold", 10.0, kCGEncodingMacRoman);
+	CGContextSetCharacterSpacing (cgContext, 2);
+	CGContextSetTextDrawingMode (cgContext, kCGTextFill);
+
+    CGContextSetRGBFillColor (cgContext, 0, 1, 0, .5);// 6
+    CGContextSetRGBStrokeColor (cgContext, 0, 0, 1, 1);//
+	myTextTransform =  CGAffineTransformMakeRotation  (0.);// 8
+    CGContextSetTextMatrix (cgContext, myTextTransform);
+
+	CGContextShowTextAtPoint (cgContext, xpos, ypos, s, strlen(s));
+	cgPt = CGContextGetTextPosition (cgContext);
+	CGContextFlush(cgContext);
+
+	return;
 }
 
@@ -101,6 +150,17 @@
 void PIGraphicQuartz::DrawLine(PIGrCoord x1, PIGrCoord y1, PIGrCoord x2, PIGrCoord y2)
 {
-// XDrawLine(mDisp, mWId, DefGC(), (int)x1, (int)y1, (int)x2, (int)y2);
-return;
+	float xf, yf;
+
+	CGContextBeginPath(cgContext);
+	xf = x1; yf = y1;
+	CGContextMoveToPoint (cgContext, xf, yf);
+	xf = x2; yf = y2;	
+	CGContextAddLineToPoint (cgContext, xf, yf);
+	CGContextSetLineWidth (cgContext, 2);
+	CGContextStrokePath (cgContext);
+	CGContextClosePath (cgContext);
+	CGContextFlush(cgContext);
+
+	return;
 }
 
@@ -109,15 +169,14 @@
 void PIGraphicQuartz::DrawBox(PIGrCoord x0, PIGrCoord y0, PIGrCoord dx, PIGrCoord dy)
 {
-int ix0 = x0;
-int iy0 = y0;
-int idx = dx;
-int idy = dy;
-if (idx < 0)  { ix0 += idx;  idx = -idx; }
-if (idy < 0)  { iy0 += idy;  idy = -idy; }
-/*
-XDrawRectangle(mDisp, mWId, 
-               DefGC(), ix0, iy0, idx, idy);
-			   */
-return;
+	int ix0 = x0;
+	int iy0 = y0;
+	int idx = dx;
+	int idy = dy;
+	if (idx < 0)  { ix0 += idx;  idx = -idx; }
+	if (idy < 0)  { iy0 += idy;  idy = -idy; }
+	CGContextAddRect (cgContext, CGRectMake (ix0, iy0, idx, idy));
+	CGContextFlush(cgContext);
+
+	return;
 }
 
@@ -125,15 +184,14 @@
 void PIGraphicQuartz::DrawFBox(PIGrCoord x0, PIGrCoord y0, PIGrCoord dx, PIGrCoord dy)
 {
-int ix0 = x0;
-int iy0 = y0;
-int idx = dx;
-int idy = dy;
-if (idx < 0)  { ix0 += idx;  idx = -idx; }
-if (idy < 0)  { iy0 += idy;  idy = -idy; }
-/*
-XFillRectangle(mDisp, mWId, 
-               DefGC(), ix0, iy0, idx, idy);
-			   */
-return;
+	int ix0 = x0;
+	int iy0 = y0;
+	int idx = dx;
+	int idy = dy;
+	if (idx < 0)  { ix0 += idx;  idx = -idx; }
+	if (idy < 0)  { iy0 += idy;  idy = -idy; }
+	CGContextFillRect (cgContext, CGRectMake (ix0, iy0, idx, idy));
+	CGContextFlush(cgContext);
+
+	return;
 }
 
@@ -141,9 +199,6 @@
 void PIGraphicQuartz::DrawCircle(PIGrCoord x0, PIGrCoord y0, PIGrCoord r)
 {
-/*
-XDrawArc(mDisp, mWId, DefGC(),
-         (int)x0-(int)r, (int)y0-(int)r, 2*(int)r, 2*(int)r, 0, 360*64);
-		 */
-return;
+	DrawArc(x0, y0, r, r, 0, 360);
+	return;
 }
 
@@ -151,9 +206,6 @@
 void PIGraphicQuartz::DrawFCircle(PIGrCoord x0, PIGrCoord y0, PIGrCoord r)
 {
-/*
-XFillArc(mDisp, mWId, DefGC(),
-         (int)x0-(int)r, (int)y0-(int)r, 2*(int)r, 2*(int)r, 0, 360*64);
-		 */
-return;
+	DrawFArc(x0, y0, r, r, 0, 360);
+	return;
 }
 
@@ -184,19 +236,23 @@
 void PIGraphicQuartz::DrawPolygon(PIGrCoord *x, PIGrCoord *y, int n, bool cinc)
 {
-/*
-XPoint multipoint[NMXXPOINTS];
-XPoint *pxp;
-int i;
-
-if (n <= 0)  return;
-if (n > NMXXPOINTS)  pxp = new XPoint[n];
-else pxp = multipoint;
-for(i=0; i<n; i++)  { pxp[i].x = x[i];  pxp[i].y = y[i]; } 
-int mode = CoordModeOrigin;
-if (cinc) mode =  CoordModePrevious;
-XDrawLines(mDisp, mWId, DefGC(), pxp, n, mode);
-if (n > NMXXPOINTS)  delete[] pxp;
-*/
-return;
+	int i;
+	CGPoint* points;
+
+	if (n <= 0)  return;
+	points = new CGPoint[n];
+	for (i = 0; i < n ; i++)
+	{
+		points[i].x = x[i];
+		points[i].y = y[i];
+	}
+	CGContextBeginPath (cgContext);
+	CGContextAddLines(cgContext, points, n);
+	
+	CGContextClosePath(cgContext);
+	CGContextStrokePath(cgContext);
+	CGContextFlush(cgContext);
+
+	delete[] points;
+	return;
 }
 
@@ -205,20 +261,23 @@
 void PIGraphicQuartz::DrawFPolygon(PIGrCoord *x, PIGrCoord *y, int n, bool cinc)
 {
-/*
-XPoint multipoint[NMXXPOINTS];
-XPoint *pxp;
-int i;
-
-if (n <= 0)  return;
-if (n > NMXXPOINTS)  pxp = new XPoint[n];
-else pxp = multipoint;
-for(i=0; i<n; i++)  { pxp[i].x = x[i];  pxp[i].y = y[i]; } 
-int mode = CoordModeOrigin;
-if (cinc) mode =  CoordModePrevious;
-XFillPolygon(mDisp, mWId, DefGC(), pxp, n, 
-                        Complex, mode);
-if (n > NMXXPOINTS)  delete[] pxp;
-*/
-return;
+	int i;
+	CGPoint* points;
+
+	if (n <= 0)  return;
+	points = new CGPoint[n];
+	for (i = 0; i < n ; i++)
+	{
+		points[i].x = x[i];
+		points[i].y = y[i];
+	}
+	CGContextBeginPath (cgContext);
+	CGContextAddLines(cgContext, points, n);
+	
+	CGContextClosePath(cgContext);
+	CGContextFillPath(cgContext);
+	CGContextFlush(cgContext);
+
+	delete[] points;
+	return;
 }
 
@@ -228,11 +287,21 @@
                          double degdeb, double deltadeg)
 {
-// Convention X est ds le sens trigo inverse
-degdeb = 360. - (degdeb+deltadeg);
-/*
-XDrawArc(mDisp, mWId, DefGC(),
-         (int)x0-(int)dx, (int)y0-(int)dy, (int)dx*2, (int)dy*2, (int)(degdeb*64.), (int)(deltadeg*64.));
-		 */
-return;
+	float xd, yd, xf, yf, radius, startAngle, endAngle;
+	xd = (int)x0;
+	yd = (int)y0;
+	xf = (int)x0 + (int)dx;
+	yf = (int)y0 + (int)dy;
+	radius = sqrtf((int)dx*(int)dx + (int)dy*(int)dy);
+	startAngle = 2 * 3.14 * degdeb / (360.);
+	endAngle = startAngle + 2 * 3.14 * deltadeg / (360.);
+
+	CGContextMoveToPoint (cgContext, xd, yd);
+	CGContextBeginPath(cgContext);
+	CGContextAddArc (cgContext, xf, yf, radius, startAngle, endAngle, 0);
+	CGContextStrokePath(cgContext);
+	CGContextClosePath(cgContext);
+	CGContextFlush(cgContext);
+
+	return;
 }
 
@@ -241,14 +310,24 @@
                          double degdeb, double deltadeg)
 {
-degdeb = 360. - (degdeb+deltadeg);
-/*
-XFillArc(mDisp, mWId, DefGC(),
-         (int)x0-(int)dx, (int)y0-(int)dy, (int)dx*2, (int)dy*2, (int)(degdeb*64.), (int)(deltadeg*64.));
-		 */
-return;
+	float xd, yd, xf, yf, radius, startAngle, endAngle;
+	xd = (int)x0;
+	yd = (int)y0;
+	xf = (int)x0 + (int)dx;
+	yf = (int)y0 + (int)dy;
+	radius = sqrtf((int)dx*(int)dx + (int)dy*(int)dy);
+	startAngle = 2 * 3.14 * degdeb / (360.);
+	endAngle = startAngle + 2 * 3.14 * deltadeg / (360.);
+
+	CGContextBeginPath(cgContext);
+	CGContextMoveToPoint (cgContext, xd, yd);
+	CGContextAddArc (cgContext, xf, yf, radius, startAngle, endAngle, 0);
+	CGContextClosePath(cgContext);
+	CGContextFillPath(cgContext);
+	CGContextFlush(cgContext);
+	return;
 }
 
 // Coordonnees pour tracer une etoile a 5 branches 
-static float starcoordx[10], starcoordy[10];
+// static float starcoordx[10], starcoordy[10];
 
 /* --Methode-- */
@@ -331,7 +410,8 @@
 void PIGraphicQuartz::DrawMarkers(PIGrCoord *x, PIGrCoord *y, int n)
 {
+/*
 int i;
 if (n <= 0)  return;
-/*
+
 if (mMrk == PI_DotMarker)
   {
@@ -512,10 +592,31 @@
 void PIGraphicQuartz::SelForeground(PIColors col)
 {
-if (myLockFCol)  return;
-if (col == mFCol)  return;
-if ( (col < 0) || (col >= NMAXCOL))  return;
-// XSetForeground(mDisp, DefGC(), colpix[col]); 
-mFCol = col;  
-return;
+	if (myLockFCol)  return;
+	if (col == mFCol)  return;
+	if ( (col < 0) || (col >= NMAXCOL))  return;
+	// XSetForeground(mDisp, DefGC(), colpix[col]);
+	if (col == PI_Green)
+	{
+		CGContextSetRGBFillColor (cgContext, 0, 1, 0, 1);
+		CGContextSetRGBStrokeColor (cgContext, 0, 1, 0, 1);
+	}
+	else if (col == PI_Blue)
+	{
+		CGContextSetRGBFillColor (cgContext, 0, 0, 1, 1);	
+		CGContextSetRGBStrokeColor (cgContext, 0, 0, 1, 1);
+	}
+	else if (col == PI_Red)
+	{
+		CGContextSetRGBFillColor (cgContext, 1, 0, 0, 1);	
+		CGContextSetRGBStrokeColor (cgContext, 1, 0, 0, 1);
+	}
+	else
+	{
+		CGContextSetRGBFillColor (cgContext, 0, 0, 0, 1);	
+		CGContextSetRGBStrokeColor (cgContext, 0, 0, 0, 1);
+	}
+
+	mFCol = col;  
+	return;
 }
 
@@ -683,12 +784,18 @@
 void PIGraphicQuartz::SetClipRectangle(PIGrCoord x0, PIGrCoord y0, PIGrCoord dx, PIGrCoord dy)
 {
-/*
-XRectangle xr;
-xr.x = x0;  xr.y = y0;
-xr.width = dx;  xr.height = dy;
-XSetClipRectangles(mDisp, DefGC(), 0, 0, &xr, 1, Unsorted);
-XSetClipRectangles(mDisp, mMrkGC, 0, 0, &xr, 1, Unsorted);
-*/
-return;
+	CGPoint pt;
+	CGSize sz;
+	CGRect cgRect;
+	pt.x = x0; 	pt.y = y0;
+	sz.width = (int)dx ; sz.height = (int)dy ;
+	cgRect.origin = pt;
+	cgRect.size = sz;
+	CGContextBeginPath(cgContext);
+	CGContextAddRect(cgContext, cgRect);
+
+	CGContextClosePath (cgContext);
+	CGContextClip(cgContext);
+	CGContextFlush(cgContext);	
+	return;
 }
 
@@ -791,7 +898,16 @@
 
 
-static bool fggrcx = false ;  // Flag init done
-
-
-
-
+/* Methode Generale */
+OSStatus MyDrawEventHandler (EventHandlerCallRef myHandler, EventRef event, void *userData)
+{
+	OSStatus status = noErr;
+ 
+    status = GetEventParameter (event, // 1
+                            kEventParamCGContextRef,
+                            typeCGContextRef,
+                            NULL,
+                            sizeof (CGContextRef),
+                            NULL,
+                            &userData);
+    return status;
+}
Index: /trunk/SophyaPI/PI/Quartz/pigraphquartz.h
===================================================================
--- /trunk/SophyaPI/PI/Quartz/pigraphquartz.h	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/pigraphquartz.h	(revision 3747)
@@ -113,4 +113,7 @@
   PIQuartzColor mFCfMap, mBCfMap;
   PIQuartzColor sFCfMap, sBCfMap;
+  HIViewRef hiViewRef;
+  CGContextRef cgContext;
+  WindowRef cgWindow;
 };
 
Index: /trunk/SophyaPI/PI/Quartz/pioptmenuquartz.cpp
===================================================================
--- /trunk/SophyaPI/PI/Quartz/pioptmenuquartz.cpp	(revision 3747)
+++ /trunk/SophyaPI/PI/Quartz/pioptmenuquartz.cpp	(revision 3747)
@@ -0,0 +1,71 @@
+/*
+ *  pioptmenuquartz.cpp
+ *  PI
+ *
+ *  Created by Bruno MANSOUX on 19/09/08.
+ *  Copyright 2008 __MyCompanyName__. All rights reserved.
+ *
+ */
+
+#include "pioptmenuquartz.h"
+
+
+PIOptMenuQuartz::PIOptMenuQuartz(PIContainer* par, const char* nom, int sx, int sy, int px, int py)
+: PIOptMenuGen(par, nom, sx, sy, px, py)
+{
+	SetRect(&wdgRect,px,py,px+sx,py+sy);
+	wPtr = par->GetWindowRef();
+}
+
+PIOptMenuQuartz::~PIOptMenuQuartz()
+{
+}
+
+
+/* --Methode-- */
+void PIOptMenuQuartz::FinishCreate()
+{
+	return;
+}
+
+
+/* --Methode-- */
+void PIOptMenuQuartz::AppendPDMenu(PIMenu* pdm)
+{
+	OSStatus status ;
+	ControlRef contH = GetHIViewRef();
+	status = CreatePopupButtonControl (wPtr,&wdgRect,title,pdm->GetMenuID(),true,0,teFlushDefault,normal,&contH);
+	SetControlTitleWithCFString (contH, title);
+	return;
+}
+
+/* --Methode-- */
+void PIOptMenuQuartz::Process(PIMessage msg, PIMsgHandler* sender, void* data)
+{
+	printf("Process Pop : %d \n",msg);
+	SetValue(UserMsg(msg));
+	ReSend(msg, this, NULL);
+	return;
+}
+
+/* --Methode-- */
+void PIOptMenuQuartz::SetLabel(const string & s)
+{
+	return;
+}
+
+
+/* --Methode-- */
+void PIOptMenuQuartz::SetValueStr(string & s)
+{
+	return;
+}
+
+
+/* --Methode-- */
+void PIOptMenuQuartz::SetValue(PIMessage msg)
+{
+	return;
+}
+
+
Index: /trunk/SophyaPI/PI/Quartz/pioptmenuquartz.h
===================================================================
--- /trunk/SophyaPI/PI/Quartz/pioptmenuquartz.h	(revision 3747)
+++ /trunk/SophyaPI/PI/Quartz/pioptmenuquartz.h	(revision 3747)
@@ -0,0 +1,55 @@
+/*
+ *  pioptmenuquartz.h
+ *  PI
+ *
+ *  Created by Bruno MANSOUX on 19/09/08.
+ *
+ */
+#ifndef PIOPTMENUQUARTZ_H_SEEN
+#define PIOPTMENUQUARTZ_H_SEEN
+
+
+#include <Carbon/Carbon.h>
+#include "pisysdep.h"
+#include PIMENU_H
+#include PICONT_H
+#include <pioptmenugen.h>
+
+class PIOptMenuQuartz : public PIOptMenuGen {
+public:
+	            PIOptMenuQuartz(PIContainer* par, const char* nom, int sx=50, int sy=15, int px=0, int py=0);
+	            ~PIOptMenuQuartz();
+
+  virtual void	    FinishCreate(); 
+
+  virtual void      AppendPDMenu(PIMenu* pdm);
+
+  virtual void      Process(PIMessage msg, PIMsgHandler* sender, void* data=NULL);
+				   
+  virtual string    GetValueStr() { return(mStext); }
+  virtual PIMessage GetValue()    { return(mSmsg); } 
+  virtual void      SetValueStr(string & s);
+  virtual void      SetValue(PIMessage msg);
+
+
+//  Pour utilisation privee dans call-back, .... 
+  virtual void       SetLabel(string const&);
+//  inline  GC        myGC() {if (mgc == 0) createmygc();  return(mgc); }  
+
+protected:
+  string   mStext;
+  PIMessage mSmsg;
+  list<PIMenu*> mPDMList;
+  WindowPtr wPtr;
+  ControlActionUPP _actionProc;
+
+//  SysDWdg mLabel;
+//  GC mgc;
+//  void              createmygc();
+};
+
+
+typedef PIOptMenuQuartz  PIOptMenu ;
+
+
+#endif
Index: unk/SophyaPI/PI/Quartz/pistdwdgmosx.cpp
===================================================================
--- /trunk/SophyaPI/PI/Quartz/pistdwdgmosx.cpp	(revision 3746)
+++ 	(revision )
@@ -1,354 +1,0 @@
-/*
- *  pistdwdgmosx.cpp
- *  PI
- *
- *  Created by Bruno MANSOUX on 24/08/07.
- *  Copyright 2007 __MyCompanyName__. All rights reserved.
- *
- */
-
-#include "pistdwdgmosx.h"
-
-vector<PIWdg*> vpiwdg;
-
-static void CommonControlActionCallback (ControlRef theControl, ControlPartCode partCode);
-
-
-/* ========== PILabelQuartz ========== */
-
-/* --Methode-- */
-PILabelQuartz::PILabelQuartz(PIContainerGen *par, const char *nom, int sx, int sy, int px, int py)
-: PILabelGen(par, nom, sx, sy, px, py)
-{
-	OSStatus err;
-	
-	string sNom(nom);
-	wParent = ((PIContainer *)par)->GetWindowPtr();
-	SetPortWindowPort(wParent);
-    SetRect(&wdgRect,px,py,px+sx,py+sy);
-	cfsrLabel = CFStringCreateWithCString(kCFAllocatorDefault,nom,kCFStringEncodingMacRoman);
-	err = CreateStaticTextControl (wParent, &wdgRect, cfsrLabel, NULL, &contH);
-}
-
-/* --Methode-- */
-PILabelQuartz::~PILabelQuartz()
-{
-}
-
-/* --Methode-- */
-void PILabelQuartz::SetLabel(string const& sLabel)
-{
-	OSStatus err;
-	
-	cfsrLabel = CFStringCreateWithCString(kCFAllocatorDefault,sLabel.c_str(),kCFStringEncodingMacRoman);
-	SetPortWindowPort(wParent);
-
-	err = SetControlData (contH,0,kControlEditTextCFStringTag,sizeof(cfsrLabel),(Ptr)&cfsrLabel);
-
-	return;
-}
-
-
-/* ========== PITextQuartz ========== */
-
-/* --Methode-- */
-PITextQuartz::PITextQuartz(PIContainerGen *par, const char *nom, int sx, int sy, int px, int py)
-: PITextGen(par, nom, sx, sy, px, py)
-{
-	wParent = ((PIContainer *)par)->GetWindowPtr();
-    SetRect(&wdgRect,px,py,px+sx,py+sy);
-}
-
-/* --Methode-- */
-PITextQuartz::PITextQuartz(PIContainerGen* par, const char* nom, bool vsb, bool hsb,
-         		     int sx, int sy, int px, int py)
-: PITextGen(par, nom, vsb, hsb, sx, sy, px, py)
-{
-}
-
-/* --Methode-- */
-PITextQuartz::~PITextQuartz()
-{
-}
-
-
-/* --Methode-- */
-void PITextQuartz::SetText(string const& s)
-{	
-	OSStatus err;
-	
-	unicodeText = CFStringCreateWithCString (NULL,(char *)s.c_str(), kCFStringEncodingMacRoman);
-	err = CreateEditUnicodeTextControl (wParent,&wdgRect,unicodeText,false,NULL,&contH);
-
-	return;
-}
-
-/* --Methode-- */
-string PITextQuartz::GetText() const
-{
-	CFStringRef str;
-	char* cText;
-
-	GetControlData(contH, kControlEditTextPart, kControlEditTextCFStringTag, sizeof(str),&str,NULL);
-	
-	cText = (char *)CFStringGetCStringPtr(str,kCFStringEncodingMacRoman);	
-	string sText(cText);	
-	return (sText);
-}
-
-
-/* --Methode-- */
-void PITextQuartz::SetMutiLineMode(bool mlm)
-{
-	return;
-}
-
-
-/* --Methode-- */
-void PITextQuartz::SetTextEditable(bool te)
-{
-	if (te == false)
-		DeactivateControl (contH);
-
-	return;
-}
-
-
-/* --Methode-- */
-void PITextQuartz::SetMsg(PIMessage msg)
-{
-
-}
-
-
-/* ========== PIHITextViewQuartz ========== */
-
-/* --Methode-- */
-PIHITextViewQuartz::PIHITextViewQuartz(PIContainerGen *par, const char *nom, int sx, int sy, int px, int py)
-: PITextGen(par, nom, sx, sy, px, py)
-{
-	OSStatus err;
-	HIRect	hiRect; // = { { 0, 0 }, { 100, 100 } };
-	int ox,oy,fx,fy;
-	int mx,my;
-	wParent = ((PIContainer *)par)->GetWindowPtr();
-	mx = sx/50;
-	my = sy/50; 
-	ox = px+mx;
-	oy = py+my;
-	fx = px+sx-mx;
-	fy = py+sy-my;
-    SetRect(&wdgRect,px,py,px+sx,py+sy);
-
-	SetRect(&userPaneRect,ox,oy,fx,fy);
-	hiRect.origin.x = ox;
-	hiRect.origin.y = oy;
-	hiRect.size.width = fx-ox;
-	hiRect.size.height = fy-oy;
-	err = HITextViewCreate (&hiRect,0,0,&outTextView);
-	err = CreateUserPaneControl (wParent, &userPaneRect,kControlSupportsEmbedding,&fUserPane);
-	err = SetControlVisibility(fUserPane, true, true );
-}
-
-/* --Methode-- */
-PIHITextViewQuartz::PIHITextViewQuartz(PIContainerGen* par, const char* nom, bool vsb, bool hsb,
-         		     int sx, int sy, int px, int py)
-: PITextGen(par, nom, vsb, hsb, sx, sy, px, py)
-{
-}
-
-/* --Methode-- */
-PIHITextViewQuartz::~PIHITextViewQuartz()
-{
-}
-
-
-/* --Methode-- */
-void PIHITextViewQuartz::SetText(string const& s)
-{	
-	OSStatus err;
-	CFStringRef cfsrText;
-	
-	cfsrText = CFStringCreateWithCString (NULL,(char *)s.c_str(), kCFStringEncodingMacRoman);
-
-	TXNObject txn = HITextViewGetTXNObject(outTextView);
-	textLength = CFStringGetLength(cfsrText);
-	uniChars = (UniChar*) malloc( sizeof( UniChar ) * textLength );
-	CFStringGetCharacters(cfsrText, CFRangeMake( 0, textLength ), uniChars );
-	err = TXNSetData(txn,kTXNUnicodeTextData, uniChars, textLength * sizeof( UniChar ), 0, 0 );
-	err = HIViewAddSubview (fUserPane, outTextView);
-	HIViewPlaceInSuperviewAt (outTextView,10,10);
-	ShowControl (fUserPane);
-	err = HIViewSetVisible (outTextView, true);
-
-	return;
-}
-
-/* --Methode-- */
-string PIHITextViewQuartz::GetText() const
-{
-	CFStringRef str;
-	char* cText;
-
-	GetControlData(outTextView, kControlEditTextPart, kControlEditTextCFStringTag, sizeof(str),&str,NULL);
-	cText = (char *)CFStringGetCStringPtr(str,kCFStringEncodingMacRoman);
-	/*
-	textLength = CFStringGetLength(str);
-	uniChars = (UniChar*) realloc( sizeof( UniChar ) * textLength );
-	CFStringGetCharacters(str, CFRangeMake( 0, textLength ), uniChars );
-	*/
-	
-	string sText(cText);	
-	return (sText);
-}
-
-
-/* --Methode-- */
-void PIHITextViewQuartz::SetMutiLineMode(bool mlm)
-{
-	return;
-}
-
-
-/* --Methode-- */
-void PIHITextViewQuartz::SetTextEditable(bool te)
-{
-	return;
-}
-
-
-/* --Methode-- */
-void PIHITextViewQuartz::SetMsg(PIMessage msg)
-{
-
-}
-
-/* ========== PIButtonQuartz ========== */
-
-EventTypeSpec controlEvents[] = {{kEventClassControl, kEventControlHit}};
-
-PIButtonQuartz::PIButtonQuartz(PIContainerQuartz *par,const char *nom, PIMessage msg,int sx, int sy, int px, int py)
-:PIButtonGen(par,nom,msg,sx,sy,px,py)
-{
-	wParent = ((PIContainer *)par)->GetWindowPtr();
-	SetPortWindowPort(wParent);
-    SetRect(&wdgRect,px,py,px+sx,py+sy);
-
-    CreatePushButtonControl (par->GetWindowPtr(),&wdgRect,title,&contH);
-    SetControlTitleWithCFString (contH, title);
-	_actionProc = NewControlActionUPP (CommonControlActionCallback);
-	SetControlAction (contH, _actionProc);
-	vpiwdg.push_back(this);
-}
-
-
-PIButtonQuartz::~PIButtonQuartz()
-{
-}
-
-void PIButtonQuartz::ActivatePress(bool acp)
-{
-	return;
-}	
-
-void PIButtonQuartz::SetLabel(string const& sText)
-{
-    title = CFStringCreateWithCString (NULL, sText.c_str(), kCFStringEncodingMacRoman);
-	SetControlTitleWithCFString(contH,title);
-	return;
-}
-
-static void CommonControlActionCallback (ControlRef theControl, ControlPartCode partCode)
-{
-	vector<PIWdg*>::iterator it;
-	for(it = vpiwdg.begin(); it != vpiwdg.end(); it++)
-        {
-            if (((*it)->GetControlRef())==theControl)
-            {
-                (*it)->Send((*it)->Msg(),PIMsg_Click,NULL);
-				printf ("click : %d \n",(int)(*it)->Msg());
-                break;
-            }
-        }
-}
-
-
-/* ========== PICheckBoxQuartz ========== */
-
-PICheckBoxQuartz::PICheckBoxQuartz(PIContainerQuartz *par,const char *nom, PIMessage msg,int sx, int sy, int px, int py)
-:PICheckBoxGen(par,nom,msg,sx,sy,px,py)
-{
-	wParent = ((PIContainer *)par)->GetWindowPtr();
-	SetPortWindowPort(wParent);
-    SetRect(&wdgRect,px,py,px+sx,py+sy);
-	_state = 1;
-    CreateCheckBoxControl (par->GetWindowPtr(),&wdgRect,title,_state,TRUE,&contH);
-    SetControlTitleWithCFString (contH, title);
-	_actionProc = NewControlActionUPP (CommonControlActionCallback);
-	SetControlAction (contH, _actionProc);
-	vpiwdg.push_back(this);
-}
-
-
-PICheckBoxQuartz::~PICheckBoxQuartz()
-{
-}
-
-void PICheckBoxQuartz::SetState(bool acp)
-{
-	_state = acp;
-	return;
-}
-
-bool PICheckBoxQuartz::GetState()
-{
-	return _state;
-}
-
-/* ========== PIRadioQuartz ========== */
-
-PIRadioQuartz::PIRadioQuartz(PIContainerQuartz *par,const char *nom, PIMessage msg,int sx, int sy, int px, int py,
-							int initialValue)
-:PIWdg(par,nom,sx,sy,px,py)
-{
-	SetMsg(msg);
-	wParent = ((PIContainer *)par)->GetWindowPtr();
-	SetPortWindowPort(wParent);
-    SetRect(&wdgRect,px,py,px+sx,py+sy);
-    CreateRadioButtonControl (par->GetWindowPtr(),&wdgRect,title,initialValue,FALSE,&contH);
-    SetControlTitleWithCFString (contH, title);
-	_actionProc = NewControlActionUPP (CommonControlActionCallback);
-	SetControlAction (contH, _actionProc);
-	vpiwdg.push_back(this);
-}
-
-PIRadioQuartz::~PIRadioQuartz()
-{
-}
-
-/* ========== PIRadioGroupQuartz ========== */
-
-PIRadioGroupQuartz::PIRadioGroupQuartz(PIContainerQuartz *par,const char *nom, PIMessage msg,int sx, int sy, int px, int py)
-:PIWdg(par,nom,sx,sy,px,py)
-{
-	SetMsg(msg);
-	wParent = ((PIContainer *)par)->GetWindowPtr();
-	SetPortWindowPort(wParent);
-    SetRect(&wdgRect,px,py,px+sx,py+sy);
-    OSErr error;
-	error = CreateRadioGroupControl (par->GetWindowPtr(),&wdgRect,&contH);
-	_state = 0;
-}
-
-void PIRadioGroupQuartz::AddRadioButton(PIRadio* piRadio)
-{
-	OSErr error;
-	error = EmbedControl(piRadio->GetControlRef(),contH);
-		
-	return;
-}
-
-PIRadioGroupQuartz::~PIRadioGroupQuartz()
-{
-}
-
Index: unk/SophyaPI/PI/Quartz/pistdwdgmosx.h
===================================================================
--- /trunk/SophyaPI/PI/Quartz/pistdwdgmosx.h	(revision 3746)
+++ 	(revision )
@@ -1,132 +1,0 @@
-#ifndef PISTDWDGMOSX_H_SEEN
-#define PISTDWDGMOSX_H_SEEN
-
-#include "piwdgmosx.h"
-#include "pistdwdggen.h"
-#include "PIContainerQuartz.h"
-
-// #include <PIButtonQuartz.h>
-
-class PILabelQuartz : public PILabelGen
-{
-public:
-	PILabelQuartz(PIContainerGen* par, const char* nom,int sx=10, int sy=10, int px=0, int py=0);
-	
-	~PILabelQuartz();
-	
-	virtual void SetLabel(string const& sLabel);
-	
-protected:
-	CFStringRef cfsrLabel;
-};
-
-class PITextQuartz : public PITextGen
-{
-public:
-	PITextQuartz(PIContainerGen *par, const char *nom, 
-				int sx=10, int sy=10, int px=0, int py=0);
-
-	PITextQuartz(PIContainerGen* par, const char* nom, bool vsb, bool hsb,
-         		     int sx=100, int sy=100, int px=0, int py=0);
-  virtual           ~PITextQuartz();
-  virtual void      SetText(string const&);
-  virtual string    GetText() const;
-
-  virtual void      SetMutiLineMode(bool mlm=false);
-  virtual void      SetTextEditable(bool te=true);
-
-  virtual void		SetMsg(PIMessage msg=0);
-  	
-protected:
-	CFStringRef unicodeText;
-};
-
-
-class PIHITextViewQuartz : public PITextGen
-{
-public:
-	PIHITextViewQuartz(PIContainerGen *par, const char *nom, 
-				int sx=10, int sy=10, int px=0, int py=0);
-
-	PIHITextViewQuartz(PIContainerGen* par, const char* nom, bool vsb, bool hsb,
-         		     int sx=100, int sy=100, int px=0, int py=0);
-  virtual           ~PIHITextViewQuartz();
-  virtual void      SetText(string const&);
-  virtual string    GetText() const;
-
-  virtual void      SetMutiLineMode(bool mlm=false);
-  virtual void      SetTextEditable(bool te=true);
-
-  virtual void		SetMsg(PIMessage msg=0);
-  	
-protected:
-	UniChar* uniChars;
-	CFIndex textLength;
-	HIViewRef outTextView;
-	HIRect hiRect;
-	ControlRef fUserPane;
-	Rect userPaneRect;
-};
-
-class PIButtonQuartz : public PIButtonGen
-{
-public:
-    PIButtonQuartz(PIContainerQuartz *par, const char *nom, PIMessage msg = PIMsg_Click, 
-					int sx=10, int sy=10, int px=0, int py=0);
-    virtual	~PIButtonQuartz();
-	virtual void       ActivatePress(bool acp=false);
-	virtual void       SetLabel(string const&);
-
-private:
-	ControlActionUPP _actionProc;
-};
-
-class PICheckBoxQuartz : public PICheckBoxGen
-{
-public:
-    PICheckBoxQuartz(PIContainerQuartz *par, const char *nom, PIMessage msg = PIMsg_Click, 
-					int sx=10, int sy=10, int px=0, int py=0);
-    virtual	~PICheckBoxQuartz();
-	virtual void	SetState(bool acp=false);
-	virtual bool	GetState();
-
-private:
-	ControlActionUPP _actionProc;
-	int _state;
-};
-
-class PIRadioQuartz : public PIWdg
-{
-public:
-    PIRadioQuartz(PIContainerQuartz *par, const char *nom, PIMessage msg = PIMsg_Click, 
-					int sx=10, int sy=10, int px=0, int py=0, int initialValue =0);
-    virtual	~PIRadioQuartz();
-
-private:
-	ControlActionUPP _actionProc;
-	int _state;
-};
-
-class PIRadioGroupQuartz : public PIWdg
-{
-public:
-    PIRadioGroupQuartz(PIContainerQuartz *par, const char *nom, PIMessage msg = PIMsg_Click, 
-					int sx=10, int sy=10, int px=0, int py=0);
-    virtual	~PIRadioGroupQuartz();
-	void AddRadioButton(PIRadioQuartz* piRadio);
-
-private:
-	int _state;
-};
-
-// INTERFACES
-
-typedef PIRadioGroupQuartz PIRadioGroup;
-typedef PIRadioQuartz PIRadio;
-typedef PICheckBoxQuartz PICheckBox;
-typedef PIButtonQuartz PIButton;
-typedef PILabelQuartz PILabel;
-typedef PITextQuartz PIText;
-typedef PIHITextViewQuartz PITextView;
-
-#endif
Index: /trunk/SophyaPI/PI/Quartz/pistdwdgquartz.cpp
===================================================================
--- /trunk/SophyaPI/PI/Quartz/pistdwdgquartz.cpp	(revision 3747)
+++ /trunk/SophyaPI/PI/Quartz/pistdwdgquartz.cpp	(revision 3747)
@@ -0,0 +1,356 @@
+/*
+ *  pistdwdgmosx.cpp
+ *  PI
+ *
+ *  Created by Bruno MANSOUX on 24/08/07.
+ *  Copyright 2007 __MyCompanyName__. All rights reserved.
+ *
+ */
+
+#include "pistdwdgquartz.h"
+
+vector<PIWdg*> vpiwdg;
+
+static void CommonControlActionCallback (ControlRef theControl, ControlPartCode partCode);
+
+static void CommonControlActionCallback (ControlRef theControl, ControlPartCode partCode)
+{
+	vector<PIWdg*>::iterator it;
+	for(it = vpiwdg.begin(); it != vpiwdg.end(); it++)
+        {
+			printf ("click : %d \n",(int)(*it)->Msg());
+            if (((*it)->GetHIViewRef()) == theControl)
+            {
+				printf ("Valid : %d \n",(int)(*it)->Msg());
+				(*it)->Send((*it)->Msg(), PIMsg_Click, NULL);
+                break;
+            }
+        }
+	return;
+}
+
+/* ========== PILabelQuartz ========== */
+
+/* --Methode-- */
+PILabelQuartz::PILabelQuartz(PIContainerGen *par, const char *nom, int sx, int sy, int px, int py)
+: PILabelGen(par, nom, sx, sy, px, py)
+{
+	OSStatus err;
+	WindowRef wParent;
+	
+	string sNom(nom);
+	wParent = ((PIContainer *)par)->GetWindowRef();
+	SetPortWindowPort(wParent);
+    SetRect(&wdgRect,px,py,px+sx,py+sy);
+	cfsrLabel = CFStringCreateWithCString(kCFAllocatorDefault,nom,kCFStringEncodingMacRoman);
+	err = CreateStaticTextControl (wParent, &wdgRect, cfsrLabel, NULL, &viewH);
+}
+
+/* --Methode-- */
+PILabelQuartz::~PILabelQuartz()
+{
+}
+
+/* --Methode-- */
+void PILabelQuartz::SetLabel(string const& sLabel)
+{
+	OSStatus err;
+	
+	cfsrLabel = CFStringCreateWithCString(kCFAllocatorDefault,sLabel.c_str(),kCFStringEncodingMacRoman);
+	// SetPortWindowPort(wParent);
+
+	err = SetControlData (viewH,0,kControlEditTextCFStringTag,sizeof(cfsrLabel),(Ptr)&cfsrLabel);
+
+	return;
+}
+
+
+/* ========== PITextQuartz ========== */
+
+/* --Methode-- */
+PITextQuartz::PITextQuartz(PIContainerGen *par, const char *nom, int sx, int sy, int px, int py)
+: PITextGen(par, nom, sx, sy, px, py)
+{
+    SetRect(&wdgRect,px,py,px+sx,py+sy);
+}
+
+/* --Methode-- */
+PITextQuartz::PITextQuartz(PIContainerGen* par, const char* nom, bool vsb, bool hsb,
+         		     int sx, int sy, int px, int py)
+: PITextGen(par, nom, vsb, hsb, sx, sy, px, py)
+{
+}
+
+/* --Methode-- */
+PITextQuartz::~PITextQuartz()
+{
+}
+
+/* --Methode-- */
+void PITextQuartz::SetText(string const& s)
+{	
+	OSStatus err;
+	WindowRef wParent = ((PIContainer *)Parent())->GetWindowRef();
+
+	unicodeText = CFStringCreateWithCString (NULL,(char *)s.c_str(), kCFStringEncodingMacRoman);
+	err = CreateEditUnicodeTextControl (wParent,&wdgRect,unicodeText,false,NULL,&viewH);
+
+	return;
+}
+
+/* --Methode-- */
+string PITextQuartz::GetText() const
+{
+	CFStringRef str;
+	char* cText;
+
+	GetControlData(viewH, kControlEditTextPart, kControlEditTextCFStringTag, sizeof(str),&str,NULL);
+	
+	cText = (char *)CFStringGetCStringPtr(str,kCFStringEncodingMacRoman);	
+	string sText(cText);	
+	return (sText);
+}
+
+/* --Methode-- */
+void PITextQuartz::SetMutiLineMode(bool mlm)
+{
+	return;
+}
+
+
+/* --Methode-- */
+void PITextQuartz::SetTextEditable(bool te)
+{
+	if (te == false)
+		DeactivateControl (viewH);
+
+	return;
+}
+
+/* --Methode-- */
+void PITextQuartz::SetMsg(PIMessage msg)
+{
+}
+
+
+/* ========== PIHITextViewQuartz ========== */
+
+/* --Methode-- */
+PIHITextViewQuartz::PIHITextViewQuartz(PIContainerGen *par, const char *nom, int sx, int sy, int px, int py)
+: PITextGen(par, nom, sx, sy, px, py)
+{
+	OSStatus err;
+	HIRect	hiRect; // = { { 0, 0 }, { 100, 100 } };
+	int ox,oy,fx,fy;
+	int mx,my;
+	WindowRef wParent = ((PIContainer *)par)->GetWindowRef();
+	mx = sx/50;
+	my = sy/50; 
+	ox = px+mx;
+	oy = py+my;
+	fx = px+sx-mx;
+	fy = py+sy-my;
+    SetRect(&wdgRect,px,py,px+sx,py+sy);
+
+	SetRect(&userPaneRect,ox,oy,fx,fy);
+	hiRect.origin.x = ox;
+	hiRect.origin.y = oy;
+	hiRect.size.width = fx-ox;
+	hiRect.size.height = fy-oy;
+	err = HITextViewCreate (&hiRect,0,0,&outTextView);
+	err = CreateUserPaneControl (wParent, &userPaneRect,kControlSupportsEmbedding,&fUserPane);
+	err = SetControlVisibility(fUserPane, true, true );
+}
+
+/* --Methode-- */
+PIHITextViewQuartz::PIHITextViewQuartz(PIContainerGen* par, const char* nom, bool vsb, bool hsb,
+         		     int sx, int sy, int px, int py)
+: PITextGen(par, nom, vsb, hsb, sx, sy, px, py)
+{
+}
+
+/* --Methode-- */
+PIHITextViewQuartz::~PIHITextViewQuartz()
+{
+}
+
+
+/* --Methode-- */
+void PIHITextViewQuartz::SetText(string const& s)
+{	
+	OSStatus err;
+	CFStringRef cfsrText;
+	
+	cfsrText = CFStringCreateWithCString (NULL,(char *)s.c_str(), kCFStringEncodingMacRoman);
+
+	TXNObject txn = HITextViewGetTXNObject(outTextView);
+	textLength = CFStringGetLength(cfsrText);
+	uniChars = (UniChar*) malloc( sizeof( UniChar ) * textLength );
+	CFStringGetCharacters(cfsrText, CFRangeMake( 0, textLength ), uniChars );
+	err = TXNSetData(txn,kTXNUnicodeTextData, uniChars, textLength * sizeof( UniChar ), 0, 0 );
+	err = HIViewAddSubview (fUserPane, outTextView);
+	HIViewPlaceInSuperviewAt (outTextView,10,10);
+	ShowControl (fUserPane);
+	err = HIViewSetVisible (outTextView, true);
+
+	return;
+}
+
+/* --Methode-- */
+string PIHITextViewQuartz::GetText() const
+{
+	CFStringRef str;
+	char* cText;
+
+	GetControlData(outTextView, kControlEditTextPart, kControlEditTextCFStringTag, sizeof(str),&str,NULL);
+	cText = (char *)CFStringGetCStringPtr(str,kCFStringEncodingMacRoman);
+	/*
+	textLength = CFStringGetLength(str);
+	uniChars = (UniChar*) realloc( sizeof( UniChar ) * textLength );
+	CFStringGetCharacters(str, CFRangeMake( 0, textLength ), uniChars );
+	*/
+	
+	string sText(cText);	
+	return (sText);
+}
+
+
+/* --Methode-- */
+void PIHITextViewQuartz::SetMutiLineMode(bool mlm)
+{
+	return;
+}
+
+
+/* --Methode-- */
+void PIHITextViewQuartz::SetTextEditable(bool te)
+{
+	return;
+}
+
+
+/* --Methode-- */
+void PIHITextViewQuartz::SetMsg(PIMessage msg)
+{
+
+}
+
+/* ========== PIButtonQuartz ========== */
+
+EventTypeSpec controlEvents[] = {{kEventClassControl, kEventControlHit}};
+
+PIButtonQuartz::PIButtonQuartz(PIContainerQuartz *par,const char *nom, PIMessage msg,int sx, int sy, int px, int py)
+:PIButtonGen(par,nom,msg,sx,sy,px,py)
+{
+	WindowRef wParent = ((PIContainer *)par)->GetWindowRef();
+	SetPortWindowPort(wParent);
+    SetRect(&wdgRect,px,py,px+sx,py+sy);
+
+    CreatePushButtonControl (par->GetWindowRef(),&wdgRect,title,&viewH);
+    SetControlTitleWithCFString (viewH, title);
+	_actionProc = NewControlActionUPP (CommonControlActionCallback);
+	SetControlAction (viewH, _actionProc);
+	vpiwdg.push_back(this);
+}
+
+
+PIButtonQuartz::~PIButtonQuartz()
+{
+}
+
+void PIButtonQuartz::ActivatePress(bool acp)
+{
+	return;
+}	
+
+void PIButtonQuartz::SetLabel(string const& sText)
+{
+    title = CFStringCreateWithCString (NULL, sText.c_str(), kCFStringEncodingMacRoman);
+	SetControlTitleWithCFString(viewH,title);
+	return;
+}
+
+
+
+/* ========== PICheckBoxQuartz ========== */
+
+PICheckBoxQuartz::PICheckBoxQuartz(PIContainerQuartz *par, const char *nom, PIMessage msg, int sx, int sy, int px, int py)
+:PICheckBoxGen(par,nom,msg,sx,sy,px,py)
+{
+	WindowRef wParent = ((PIContainer *)par)->GetWindowRef();
+	SetPortWindowPort(wParent);
+    SetRect(&wdgRect,px,py,px+sx,py+sy);
+    CreateCheckBoxControl (par->GetWindowRef(),&wdgRect,title,0,TRUE,&viewH);
+    SetControlTitleWithCFString (viewH, title);
+	_actionProc = NewControlActionUPP (CommonControlActionCallback);
+	SetControlAction (viewH, _actionProc);
+	_state = GetControl32BitValue (viewH);
+
+	vpiwdg.push_back(this);
+}
+
+
+PICheckBoxQuartz::~PICheckBoxQuartz()
+{
+}
+
+void PICheckBoxQuartz::SetState(bool acp)
+{
+	_state = acp;
+	return;
+}
+
+bool PICheckBoxQuartz::GetState()
+{
+	_state = GetControl32BitValue (viewH);
+	printf("GetState : %d ",_state);
+	return _state;
+}
+
+/* ========== PIRadioQuartz ========== */
+
+PIRadioQuartz::PIRadioQuartz(PIContainerQuartz *par,const char *nom, PIMessage msg,int sx, int sy, int px, int py,
+							int initialValue)
+:PIWdg(par,nom,sx,sy,px,py)
+{
+	SetMsg(msg);
+	WindowRef wParent = ((PIContainer *)par)->GetWindowRef();
+	SetPortWindowPort(wParent);
+    SetRect(&wdgRect,px,py,px+sx,py+sy);
+    CreateRadioButtonControl (par->GetWindowRef(),&wdgRect,title,initialValue,FALSE,&viewH);
+    SetControlTitleWithCFString (viewH, title);
+	_actionProc = NewControlActionUPP (CommonControlActionCallback);
+	SetControlAction (viewH, _actionProc);
+	vpiwdg.push_back(this);
+}
+
+PIRadioQuartz::~PIRadioQuartz()
+{
+}
+
+/* ========== PIRadioGroupQuartz ========== */
+
+PIRadioGroupQuartz::PIRadioGroupQuartz(PIContainerQuartz *par,const char *nom, PIMessage msg,int sx, int sy, int px, int py)
+:PIWdg(par,nom,sx,sy,px,py)
+{
+	SetMsg(msg);
+	WindowRef wParent = ((PIContainer *)par)->GetWindowRef();
+	SetPortWindowPort(wParent);
+    SetRect(&wdgRect,px,py,px+sx,py+sy);
+    OSErr error;
+	error = CreateRadioGroupControl (par->GetWindowRef(),&wdgRect,&viewH);
+	_state = 0;
+}
+
+void PIRadioGroupQuartz::AddRadioButton(PIRadio* piRadio)
+{
+	OSErr error;
+	error = EmbedControl(piRadio->GetHIViewRef(),viewH);
+		
+	return;
+}
+
+PIRadioGroupQuartz::~PIRadioGroupQuartz()
+{
+}
+
Index: /trunk/SophyaPI/PI/Quartz/pistdwdgquartz.h
===================================================================
--- /trunk/SophyaPI/PI/Quartz/pistdwdgquartz.h	(revision 3747)
+++ /trunk/SophyaPI/PI/Quartz/pistdwdgquartz.h	(revision 3747)
@@ -0,0 +1,132 @@
+#ifndef PISTDWDGMOSX_H_SEEN
+#define PISTDWDGMOSX_H_SEEN
+
+#include "piwdgquartz.h"
+#include "pistdwdggen.h"
+#include "PIContainerQuartz.h"
+
+class PILabelQuartz : public PILabelGen
+{
+public:
+	PILabelQuartz(PIContainerGen* par, const char* nom,int sx=10, int sy=10, int px=0, int py=0);
+	
+	~PILabelQuartz();
+	
+	virtual void SetLabel(string const& sLabel);
+	
+protected:
+	CFStringRef cfsrLabel;
+	ControlRef contH;
+};
+
+class PITextQuartz : public PITextGen
+{
+public:
+	PITextQuartz(PIContainerGen *par, const char *nom, 
+				int sx=10, int sy=10, int px=0, int py=0);
+
+	PITextQuartz(PIContainerGen* par, const char* nom, bool vsb, bool hsb,
+         		     int sx=100, int sy=100, int px=0, int py=0);
+  virtual           ~PITextQuartz();
+  virtual void      SetText(string const&);
+  virtual string    GetText() const;
+
+  virtual void      SetMutiLineMode(bool mlm=false);
+  virtual void      SetTextEditable(bool te=true);
+
+  virtual void		SetMsg(PIMessage msg=0);
+  	
+protected:
+	CFStringRef unicodeText;
+	ControlRef contH;
+};
+
+
+class PIHITextViewQuartz : public PITextGen
+{
+public:
+	PIHITextViewQuartz(PIContainerGen *par, const char *nom, 
+				int sx=10, int sy=10, int px=0, int py=0);
+
+	PIHITextViewQuartz(PIContainerGen* par, const char* nom, bool vsb, bool hsb,
+         		     int sx=100, int sy=100, int px=0, int py=0);
+  virtual           ~PIHITextViewQuartz();
+  virtual void      SetText(string const&);
+  virtual string    GetText() const;
+
+  virtual void      SetMutiLineMode(bool mlm=false);
+  virtual void      SetTextEditable(bool te=true);
+
+  virtual void		SetMsg(PIMessage msg=0);
+  	
+protected:
+	UniChar* uniChars;
+	CFIndex textLength;
+	HIViewRef outTextView;
+	HIRect hiRect;
+	ControlRef fUserPane;
+	Rect userPaneRect;
+};
+
+class PIButtonQuartz : public PIButtonGen
+{
+public:
+    PIButtonQuartz(PIContainerQuartz *par, const char *nom, PIMessage msg = PIMsg_Click, 
+					int sx=10, int sy=10, int px=0, int py=0);
+    virtual	~PIButtonQuartz();
+	virtual void       ActivatePress(bool acp=false);
+	virtual void       SetLabel(string const&);
+
+private:
+	ControlActionUPP _actionProc;
+};
+
+class PICheckBoxQuartz : public PICheckBoxGen
+{
+public:
+    PICheckBoxQuartz(PIContainerQuartz *par, const char *nom, PIMessage msg = PIMsg_Click, 
+					int sx=10, int sy=10, int px=0, int py=0);
+    virtual	~PICheckBoxQuartz();
+	virtual void	SetState(bool acp=false);
+	virtual bool	GetState();
+
+private:
+	ControlActionUPP _actionProc;
+	int _state;
+};
+
+class PIRadioQuartz : public PIWdg
+{
+public:
+    PIRadioQuartz(PIContainerQuartz *par, const char *nom, PIMessage msg = PIMsg_Click, 
+					int sx=10, int sy=10, int px=0, int py=0, int initialValue =0);
+    virtual	~PIRadioQuartz();
+
+private:
+	ControlActionUPP _actionProc;
+	int _state;
+};
+
+class PIRadioGroupQuartz : public PIWdg
+{
+public:
+    PIRadioGroupQuartz(PIContainerQuartz *par, const char *nom, PIMessage msg = PIMsg_Click, 
+					int sx=10, int sy=10, int px=0, int py=0);
+    virtual	~PIRadioGroupQuartz();
+	void AddRadioButton(PIRadioQuartz* piRadio);
+
+private:
+	int _state;
+};
+
+// INTERFACES
+
+typedef PIRadioGroupQuartz PIRadioGroup;
+typedef PIRadioQuartz PIRadio;
+typedef PICheckBoxQuartz PICheckBox;
+typedef PIButtonQuartz PIButton;
+typedef PILabelQuartz PILabel;
+typedef PITextQuartz PIText;
+typedef PIHITextViewQuartz PITextView;
+
+#endif
Index: unk/SophyaPI/PI/Quartz/piwdgmosx.cpp
===================================================================
--- /trunk/SophyaPI/PI/Quartz/piwdgmosx.cpp	(revision 3746)
+++ 	(revision )
@@ -1,272 +1,0 @@
-/*
- *  piwdgmosx.cpp
- *  PI
- *
- *  Created by Bruno MANSOUX on Tue Mar 30 2004.
- *  Copyright (c) 2004 __MyCompanyName__. All rights reserved.
- *
- */
-
-#include "piwdgmosx.h"
-
-PIWdgQuartz::PIWdgQuartz(PIContainerGen *par, const char *nom,int sx, int sy, int px, int py)
-:PIWdgGen(par, nom, sx, sy, px, py) 
-{
- //   printf ("Create WdgQuartz %s \n",nom);
-    fflush (stdout);
-    title = CFStringCreateWithCString (NULL, nom, kCFStringEncodingMacRoman);
-    contH = NULL;
-    wPtr = NULL;
-	wParent = NULL;
-    mFCol = mBCol = PI_NotDefColor;
-}
-
-
-PIWdgQuartz::~PIWdgQuartz()
-{
-
-}
-
-void PIWdgQuartz::FinishCreate()
-{
-  finishDone = true;
-  return;
-}
-
-void PIWdgQuartz::SetSize(int sx, int sy)
-{
-    /* Not Yet Implemented */
-    return;
-}
-
-void PIWdgQuartz::SetPos(int px, int py)
-{
-    /* Not Yet Implemented */
-    return;
-}
-
-
-void PIWdgQuartz::SetBorderWidth(int bw)
-{
-    return;
-}
-
-void PIWdgQuartz::SetBackgroundColor(PIColors col)
-{    
-    return;
-}
-
-void PIWdgQuartz::SetForegroundColor(PIColors col)
-{
-    return;
-}
-
-void PIWdgQuartz::EraseWindow(int x0, int y0, int dx, int dy)
-{
-    return;
-}
-
-PIColors PIWdgQuartz::GetBackgroundColor()
-{
-    return (mBCol);
-}
- 
-PIColors PIWdgQuartz::GetForegroundColor()
-{
-    return (mFCol);
-}
-
-void PIWdgQuartz::SetBinding(PIBindingKind left, PIBindingKind top, 
-                    PIBindingKind right, PIBindingKind bottom)
-{
-    return;
-}
-
-bool PIWdgQuartz::GetBinding(PIBindingKind& left, PIBindingKind& top, 
-                    PIBindingKind& right, PIBindingKind& bottom)
-{
-    return false;
-}
-
-int PIWdgQuartz::XSize()
-{
-    return(wdgRect.bottom-wdgRect.top);
-}
-
-int PIWdgQuartz::YSize()
-{
-    return(wdgRect.right-wdgRect.left);
-}
-
-int PIWdgQuartz::XPos()
-{
-    return((wdgRect.bottom+wdgRect.top)/2);
-}
-
-int PIWdgQuartz::YPos()
-{
-    return((wdgRect.right+wdgRect.left)/2);
-}
-
-
-string PIWdgQuartz::Nom()
-{
-    char* cTitle;
-    string cppTitle;
-
-    cTitle = (char *)CFStringGetCStringPtr(title, kCFStringEncodingMacRoman);
-    
-    cppTitle = cTitle;
-    return (cppTitle);
-}
-
-void PIWdgQuartz::GetScreenPos(int & spx, int & spy)
-{
-    spx = 0; spy = 0;
-    return ;
-}
-
-void PIWdgQuartz::Manage()
-{
-    return;
-}
-
-void PIWdgQuartz::UnManage()
-{
-    return;
-}
-
-bool PIWdgQuartz::IfManaged()
-{
-    return true;
-}
-
-bool PIWdgQuartz::IsVisible()
-{
-    return true;
-}
-
-
-void PIWdgQuartz::Refresh()
-{
-    return;
-}
-
-void PIWdgQuartz::SetSensitive()
-{
-    return;
-}
-
-void PIWdgQuartz::SetUnSensitive()
-{
-    return;
-}
-
-bool PIWdgQuartz::IfSensitive()
-{
-    return true;
-}
-
-
-//  Gestion de copier-coller
-bool PIWdgQuartz::ClaimSelection(unsigned int typ)
-{
-    return true;
-}
-
-void PIWdgQuartz::SelectionLost()
-{
-    return;
-}
-
-unsigned int   PIWdgQuartz::RequestSelection(unsigned int typ)
-{
-    return (typ);
-}
-
-void* PIWdgQuartz::ProvideSelection(unsigned int& typ, unsigned int& len)
-{
-    return NULL;
-}
-
-void PIWdgQuartz::SelectionTransferEnd()
-{
-    return;
-}
-
-void PIWdgQuartz::PasteSelection(unsigned int typ, void *, unsigned int l)
-{
-    return;
-}
-
-//  Copie depuis un PIWdgGen
-void PIWdgQuartz::CopyFrom(PIWdgGen* wdg, int ox, int oy, int dx, int dy, int x, int y)
-{
-    return;
-}
-
-//  Gestion des EventHandler
-void PIWdgQuartz::AddDrawHandler(PIEventHandler* drwh, bool ad)
-{
-/*
-    if (contH)
-    {
-        InstallControlEventHandler (contH, 
-                                    NewEventHandlerUPP (drwh),
-                                    GetEventTypeCount(drawEvents),
-                                    drawEvents,
-                                    contH,
-                                    NULL);
-    }
-    if(wPtr)
-    {
-        InstallWindowEventHandler (wPtr, 
-                                    NewEventHandlerUPP (drwh),
-                                    GetEventTypeCount(drawEvents),
-                                    drawEvents,
-                                    wPtr,
-                                    NULL);
-        
-    }
-*/
-    return;
-}
-
-void PIWdgQuartz::RemoveDrawHandler(PIEventHandler* drwh)
-{
-    RemoveEventHandler(drwh);
-    return;
-}
-
-void PIWdgQuartz::AddEventHandler(PIEventHandler* evh, unsigned long evtmask, bool ad)
-{
-/*
-    InstallControlEventHandler (contH, 
-                                NewEventHandlerUPP (evh),
-                                GetEventTypeCount(evtmask),
-                                evtmask,
-                                contH,
-                                NULL);
-*/
-    return;
-}
-
-void PIWdgQuartz::RemoveEventHandler(PIEventHandler* evh)
-{
-    RemoveEventHandler(evh);
-    return;
-}
-
-
-// En public, pour permettre l'acces depuis call-back Xt
-void PIWdgQuartz::CallDrawHandlers(int x0, int y0, int dx, int dy)
-{
-    return;
-}
-
-void PIWdgQuartz::CallEventHandlers(unsigned long evt, int px, int py,
-                                    int k, int km, unsigned long tm)
-{
-    return;
-}
-
Index: unk/SophyaPI/PI/Quartz/piwdgmosx.h
===================================================================
--- /trunk/SophyaPI/PI/Quartz/piwdgmosx.h	(revision 3746)
+++ 	(revision )
@@ -1,128 +1,0 @@
-/*
- *  piwdgmosx.h
- *  PI
- *
- *  Created by Bruno MANSOUX on Tue Mar 30 2004.
- *  Copyright (c) 2004 __MyCompanyName__. All rights reserved.
- *
- */
-
-#include <Carbon/Carbon.h>
-
-#ifndef PIWDG_QUARTZ_SEEN
-#define PIWDG_QUARTZ_SEEN
-
-#include "piwdggen.h"
-
-
-/*
-EventTypeSpec drawEvents[] = {{kEventClassControl, kEventControlDraw},
-                            {kEventClassWindow,kEventWindowDrawFrame},
-                            {kEventClassWindow,kEventWindowDrawPart},
-                            };
-
-*/
-
-
-class PIWdgQuartz : public PIWdgGen 
-{
-public:
-// Les methodes ...
-        PIWdgQuartz(PIContainerGen *par, const char *nom, 
-                int sx=10, int sy=10, int px=0, int py=0);
-
-  virtual 	 ~PIWdgQuartz();
-
-  virtual void	 FinishCreate(); // apres avoir installe les sous-vues
-
-  virtual void   SetSize(int sx, int sy);
-  virtual void   SetPos(int px, int py);
-  virtual void   SetBorderWidth(int bw);
-
-
-//  Divers : couleur de fond, et d'avant plan Effacement fenetre,
-  virtual void           SetBackgroundColor(PIColors col=PI_White);
-  virtual void           SetForegroundColor(PIColors col=PI_Black);
-  virtual void           EraseWindow(int x0=0, int y0=0, int dx=0, int dy=0);
-  virtual PIColors       GetBackgroundColor();
-  virtual PIColors       GetForegroundColor();
-
-  virtual void   SetBinding(PIBindingKind left, PIBindingKind top, 
-                            PIBindingKind right, PIBindingKind bottom);
-  virtual bool   GetBinding(PIBindingKind& left, PIBindingKind& top, 
-                            PIBindingKind& right, PIBindingKind& bottom);
-
-  virtual int    XSize();
-  virtual int    YSize();
-  virtual int    XPos();
-  virtual int    YPos();
-
-  virtual string Nom();  
-  virtual void   GetScreenPos(int & spx, int & spy);
-
-  virtual void   Manage();
-  virtual void   UnManage();
-  virtual bool   IfManaged();
-  virtual bool   IsVisible();
-
-//  Fonction qui doit etre appelee pour rafraichir la fenetre 
-  virtual void       	 Refresh();
-
-//  Pour rendre un composant graphique (PIWdg) sensible/insensible 
-  virtual void           SetSensitive();
-  virtual void           SetUnSensitive();
-  virtual bool           IfSensitive();
-
-//  Gestion de copier-coller
-  virtual bool           ClaimSelection(unsigned int typ=PICP_string);
-  virtual void           SelectionLost();
-  virtual unsigned int   RequestSelection(unsigned int typ=PICP_string);
-  virtual void*          ProvideSelection(unsigned int& typ, unsigned int& len);
-  virtual void           SelectionTransferEnd();
-  virtual void           PasteSelection(unsigned int typ, void *, unsigned int l);
-
-//  Copie depuis un PIWdgGen
-  virtual void		 CopyFrom(PIWdgGen* wdg, int ox, int oy, int dx, int dy, int x, int y);
-
-//  Gestion des EventHandler
-  virtual void		 AddDrawHandler(PIEventHandler* drwh, bool ad=false);
-  virtual void		 RemoveDrawHandler(PIEventHandler* drwh);
-  virtual void		 AddEventHandler(PIEventHandler* evh, unsigned long evtmask, bool ad=false);
-  virtual void		 RemoveEventHandler(PIEventHandler* evh);
-
-// En public, pour permettre l'acces depuis call-back Xt
-  virtual void		 CallDrawHandlers(int x0, int y0, int dx, int dy); 
-  virtual void		 CallEventHandlers(unsigned long evt, int px, int py,
-                                           int k, int km, unsigned long tm);
-
-	ControlRef GetControlRef() {return contH;}
-
-protected:
-    Rect	wdgRect;
-    CFStringRef	title;
-    ControlRef	contH;
-    WindowPtr	wPtr;
-	WindowRef	wParent;
-//  pas utilisable dans MOSX/Carbon
-    PIColors mFCol, mBCol;
-};
-
-typedef PIWdgQuartz PIWdg;
-
-
-// -------- La classe PIScreenBuffer ----------
-class PIScreenBuffer {
-public :
-  			PIScreenBuffer(int sx, int sy) {};
-  virtual		~PIScreenBuffer() {};
-
-  virtual int         	XSize()	 {return 0;};
-  virtual int         	YSize()  {return 0;};
-  virtual  void 	CopyFromWdg(PIWdg* wdg, int ox, int oy, int dx, int dy, int x, int y) {};
-  virtual  void 	CopyToWdg(PIWdg* wdg, int ox, int oy, int dx, int dy, int x, int y) {};
-  virtual  void 	CopyFrom(PIScreenBuffer* grb, int ox, int oy, int dx, int dy, int x, int y) {};
-
-};
-
-#endif/* PIWDG_QUARTZ_SEEN */
-
Index: /trunk/SophyaPI/PI/Quartz/piwdgquartz.cpp
===================================================================
--- /trunk/SophyaPI/PI/Quartz/piwdgquartz.cpp	(revision 3747)
+++ /trunk/SophyaPI/PI/Quartz/piwdgquartz.cpp	(revision 3747)
@@ -0,0 +1,306 @@
+/*
+ *  piwdgquartz.cpp
+ *  PI
+ *
+ *  Created by Bruno MANSOUX on Tue Mar 30 2004.
+ *
+ */
+
+#include "piwdgquartz.h"
+
+/* --------------------- Methode ---------------------- */
+PIWdgQuartz::PIWdgQuartz(PIContainerGen *par, const char *nom,int sx, int sy, int px, int py)
+:PIWdgGen(par, nom, sx, sy, px, py) 
+{
+ //   printf ("Create WdgQuartz %s \n",nom);
+    fflush (stdout);
+    title = CFStringCreateWithCString (NULL, nom, kCFStringEncodingMacRoman);
+	viewH = NULL;
+    mFCol = mBCol = PI_NotDefColor;
+}
+
+/* --------------------- Methode ---------------------- */
+PIWdgQuartz::~PIWdgQuartz()
+{
+
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::FinishCreate()
+{
+  finishDone = true;
+  return;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::SetSize(int sx, int sy)
+{
+    /* Not Yet Implemented */
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::SetPos(int px, int py)
+{
+    /* Not Yet Implemented */
+    return;
+}
+
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::SetBorderWidth(int bw)
+{
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::SetBackgroundColor(PIColors col)
+{    
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::SetForegroundColor(PIColors col)
+{
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::EraseWindow(int x0, int y0, int dx, int dy)
+{
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+PIColors PIWdgQuartz::GetBackgroundColor()
+{
+    return (mBCol);
+}
+ 
+/* --------------------- Methode ---------------------- */
+PIColors PIWdgQuartz::GetForegroundColor()
+{
+    return (mFCol);
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::SetBinding(PIBindingKind left, PIBindingKind top, 
+                    PIBindingKind right, PIBindingKind bottom)
+{
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+bool PIWdgQuartz::GetBinding(PIBindingKind& left, PIBindingKind& top, 
+                    PIBindingKind& right, PIBindingKind& bottom)
+{
+    return false;
+}
+
+/* --------------------- Methode ---------------------- */
+int PIWdgQuartz::XSize()
+{
+    return(wdgRect.bottom-wdgRect.top);
+}
+
+/* --------------------- Methode ---------------------- */
+int PIWdgQuartz::YSize()
+{
+    return(wdgRect.right-wdgRect.left);
+}
+
+/* --------------------- Methode ---------------------- */
+int PIWdgQuartz::XPos()
+{
+    return((wdgRect.bottom+wdgRect.top)/2);
+}
+
+/* --------------------- Methode ---------------------- */
+int PIWdgQuartz::YPos()
+{
+    return((wdgRect.right+wdgRect.left)/2);
+}
+
+
+/* --------------------- Methode ---------------------- */
+string PIWdgQuartz::Nom()
+{
+    char* cTitle;
+    string cppTitle;
+
+    cTitle = (char *)CFStringGetCStringPtr(title, kCFStringEncodingMacRoman);
+    
+    cppTitle = cTitle;
+    return (cppTitle);
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::GetScreenPos(int & spx, int & spy)
+{
+    spx = 0; spy = 0;
+    return ;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::Manage()
+{
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::UnManage()
+{
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+bool PIWdgQuartz::IfManaged()
+{
+    return true;
+}
+
+/* --------------------- Methode ---------------------- */
+bool PIWdgQuartz::IsVisible()
+{
+    return true;
+}
+
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::Refresh()
+{
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::SetSensitive()
+{
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::SetUnSensitive()
+{
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+bool PIWdgQuartz::IfSensitive()
+{
+    return true;
+}
+
+
+//  Gestion de copier-coller
+/* --------------------- Methode ---------------------- */
+bool PIWdgQuartz::ClaimSelection(unsigned int typ)
+{
+    return true;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::SelectionLost()
+{
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+unsigned int   PIWdgQuartz::RequestSelection(unsigned int typ)
+{
+    return (typ);
+}
+
+/* --------------------- Methode ---------------------- */
+void* PIWdgQuartz::ProvideSelection(unsigned int& typ, unsigned int& len)
+{
+    return NULL;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::SelectionTransferEnd()
+{
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::PasteSelection(unsigned int typ, void *, unsigned int l)
+{
+    return;
+}
+
+//  Copie depuis un PIWdgGen
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::CopyFrom(PIWdgGen* wdg, int ox, int oy, int dx, int dy, int x, int y)
+{
+    return;
+}
+
+//  Gestion des EventHandler
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::AddDrawHandler(PIEventHandler* drwh, bool ad)
+{
+/*
+    if (contH)
+    {
+        InstallControlEventHandler (contH, 
+                                    NewEventHandlerUPP (drwh),
+                                    GetEventTypeCount(drawEvents),
+                                    drawEvents,
+                                    contH,
+                                    NULL);
+    }
+    if(wPtr)
+    {
+        InstallWindowEventHandler (wPtr, 
+                                    NewEventHandlerUPP (drwh),
+                                    GetEventTypeCount(drawEvents),
+                                    drawEvents,
+                                    wPtr,
+                                    NULL);
+        
+    }
+*/
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::RemoveDrawHandler(PIEventHandler* drwh)
+{
+    RemoveEventHandler(drwh);
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::AddEventHandler(PIEventHandler* evh, unsigned long evtmask, bool ad)
+{
+/*
+    InstallControlEventHandler (contH, 
+                                NewEventHandlerUPP (evh),
+                                GetEventTypeCount(evtmask),
+                                evtmask,
+                                contH,
+                                NULL);
+*/
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::RemoveEventHandler(PIEventHandler* evh)
+{
+    RemoveEventHandler(evh);
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::CallDrawHandlers(int x0, int y0, int dx, int dy)
+{
+    return;
+}
+
+/* --------------------- Methode ---------------------- */
+void PIWdgQuartz::CallEventHandlers(unsigned long evt, int px, int py,
+                                    int k, int km, unsigned long tm)
+{
+    return;
+}
+
Index: /trunk/SophyaPI/PI/Quartz/piwdgquartz.h
===================================================================
--- /trunk/SophyaPI/PI/Quartz/piwdgquartz.h	(revision 3747)
+++ /trunk/SophyaPI/PI/Quartz/piwdgquartz.h	(revision 3747)
@@ -0,0 +1,131 @@
+/*
+ *  piwdgmosx.h
+ *  PI
+ *
+ *  Created by Bruno MANSOUX on Tue Mar 30 2004.
+ *
+ */
+
+#include <Carbon/Carbon.h>
+
+#ifndef PIWDG_QUARTZ_SEEN
+#define PIWDG_QUARTZ_SEEN
+
+#include "piwdggen.h"
+
+
+/*
+EventTypeSpec drawEvents[] = {{kEventClassControl, kEventControlDraw},
+                            {kEventClassWindow,kEventWindowDrawFrame},
+                            {kEventClassWindow,kEventWindowDrawPart},
+                            };
+
+*/
+
+
+class PIWdgQuartz : public PIWdgGen 
+{
+public:
+// Les methodes ...
+        PIWdgQuartz(PIContainerGen *par, const char *nom, 
+                int sx=10, int sy=10, int px=0, int py=0);
+
+  virtual 	 ~PIWdgQuartz();
+
+  virtual void	 FinishCreate(); // apres avoir installe les sous-vues
+
+  virtual void   SetSize(int sx, int sy);
+  virtual void   SetPos(int px, int py);
+  virtual void   SetBorderWidth(int bw);
+
+
+//  Divers : couleur de fond, et d'avant plan Effacement fenetre,
+  virtual void           SetBackgroundColor(PIColors col=PI_White);
+  virtual void           SetForegroundColor(PIColors col=PI_Black);
+  virtual void           EraseWindow(int x0=0, int y0=0, int dx=0, int dy=0);
+  virtual PIColors       GetBackgroundColor();
+  virtual PIColors       GetForegroundColor();
+
+  virtual void   SetBinding(PIBindingKind left, PIBindingKind top, 
+                            PIBindingKind right, PIBindingKind bottom);
+  virtual bool   GetBinding(PIBindingKind& left, PIBindingKind& top, 
+                            PIBindingKind& right, PIBindingKind& bottom);
+
+  virtual int    XSize();
+  virtual int    YSize();
+  virtual int    XPos();
+  virtual int    YPos();
+
+  virtual string Nom();  
+  virtual void   GetScreenPos(int & spx, int & spy);
+
+  virtual void   Manage();
+  virtual void   UnManage();
+  virtual bool   IfManaged();
+  virtual bool   IsVisible();
+
+//  Fonction qui doit etre appelee pour rafraichir la fenetre 
+  virtual void       	 Refresh();
+
+//  Pour rendre un composant graphique (PIWdg) sensible/insensible 
+  virtual void           SetSensitive();
+  virtual void           SetUnSensitive();
+  virtual bool           IfSensitive();
+
+//  Gestion de copier-coller
+  virtual bool           ClaimSelection(unsigned int typ=PICP_string);
+  virtual void           SelectionLost();
+  virtual unsigned int   RequestSelection(unsigned int typ=PICP_string);
+  virtual void*          ProvideSelection(unsigned int& typ, unsigned int& len);
+  virtual void           SelectionTransferEnd();
+  virtual void           PasteSelection(unsigned int typ, void *, unsigned int l);
+
+//  Copie depuis un PIWdgGen
+  virtual void		 CopyFrom(PIWdgGen* wdg, int ox, int oy, int dx, int dy, int x, int y);
+
+//  Gestion des EventHandler
+  virtual void		 AddDrawHandler(PIEventHandler* drwh, bool ad=false);
+  virtual void		 RemoveDrawHandler(PIEventHandler* drwh);
+  virtual void		 AddEventHandler(PIEventHandler* evh, unsigned long evtmask, bool ad=false);
+  virtual void		 RemoveEventHandler(PIEventHandler* evh);
+
+// En public, pour permettre l'acces depuis call-back Xt
+  virtual void		 CallDrawHandlers(int x0, int y0, int dx, int dy); 
+  virtual void		 CallEventHandlers(unsigned long evt, int px, int py,
+                                           int k, int km, unsigned long tm);
+
+	/*
+	ControlRef GetControlRef() {return contH;}
+	WindowPtr GetWindowPtr() {return wPtr;}
+	WindowPtr GetWindowParent() {return wParent;}
+	*/
+	
+	HIViewRef GetHIViewRef() {return viewH;}
+
+protected:
+    Rect	wdgRect;
+    CFStringRef	title;
+	HIViewRef	viewH;
+//  pas utilisable dans MOSX/Carbon
+    PIColors mFCol, mBCol;
+};
+
+typedef PIWdgQuartz PIWdg;
+
+
+// -------- La classe PIScreenBuffer ----------
+class PIScreenBuffer {
+public :
+  			PIScreenBuffer(int sx, int sy) {};
+  virtual	~PIScreenBuffer() {};
+
+  virtual int       XSize()	 {return 0;};
+  virtual int       YSize()  {return 0;};
+  virtual  void 	CopyFromWdg(PIWdg* wdg, int ox, int oy, int dx, int dy, int x, int y) {};
+  virtual  void 	CopyToWdg(PIWdg* wdg, int ox, int oy, int dx, int dy, int x, int y) {};
+  virtual  void 	CopyFrom(PIScreenBuffer* grb, int ox, int oy, int dx, int dy, int x, int y) {};
+
+};
+
+#endif/* PIWDG_QUARTZ_SEEN */
+
Index: /trunk/SophyaPI/PI/Quartz/todo.txt
===================================================================
--- /trunk/SophyaPI/PI/Quartz/todo.txt	(revision 3746)
+++ /trunk/SophyaPI/PI/Quartz/todo.txt	(revision 3747)
@@ -5,6 +5,2 @@
 
 Voir les refresh des containers dans PIWindow
-
-Rajouter le WindowEventHandler 						
-
-Rajouter les popupMenus							
