- More Smalltalk/X support
authorvranyj1@bd9d3459-6c23-4dd9-91de-98eeebb81177
Wed, 14 Nov 2012 01:15:30 +0000
changeset 46 d5a192b11a1a
parent 45 dfe5c7416a4e
child 47 250e5d83e34c
- More Smalltalk/X support
mercurial/HGCommitDialog.st
mercurial/HGIconLibrary.st
mercurial/HGPackageModel.st
mercurial/HGPackageModelRegistry.st
mercurial/HGRepository.st
mercurial/HGSourceCodeManagementSettingsAppl.st
mercurial/HGSourceCodeManager.st
mercurial/HGTests.st
mercurial/HGWorkingCopy.st
mercurial/Make.proto
mercurial/Make.spec
mercurial/abbrev.stc
mercurial/bc.mak
mercurial/libInit.cc
mercurial/mercurial.rc
mercurial/stx_libscm_mercurial.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/HGCommitDialog.st	Wed Nov 14 01:15:30 2012 +0000
@@ -0,0 +1,23 @@
+"{ Package: 'stx:libscm/mercurial' }"
+
+SCMAbstractCommitDialog subclass:#HGCommitDialog
+	instanceVariableNames:'defaultLogo'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SCM-Mercurial-StX-Interface'
+!
+
+
+!HGCommitDialog class methodsFor:'image specs'!
+
+dialogIcon
+    ^ HGIconLibrary hgLogo1
+
+    "Created: / 14-11-2012 / 00:14:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGCommitDialog class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id::                                                                                                                        $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/HGIconLibrary.st	Wed Nov 14 01:15:30 2012 +0000
@@ -0,0 +1,87 @@
+"{ Package: 'stx:libscm/mercurial' }"
+
+Object subclass:#HGIconLibrary
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SCM-Mercurial-StX-Interface'
+!
+
+
+!HGIconLibrary class methodsFor:'image specs'!
+
+hgLogo1
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self hgLogo1 inspect
+     ImageEditor openOnClass:self andSelector:#hgLogo1
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'HGIconLibrary hgLogo1'
+        ifAbsentPut:[(Depth8Image new) width: 68; height: 66; photometric:(#palette); bitsPerSample:(#(8)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>>?#-7<;G0[:>0\_N8>;9?O;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>
+?/;>?//8;MS@/[2;.+*8-;^8.+*;/K7E7?O:?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/+37\J=.+Z.):BX%YFQ$YFR&I>''
+,[Z:/\/*=/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;35<B=-*.!!%X:P$IFQ$YFQ$YFQ$IBN%ZN..K7H9?#>?/;>?/;>?/;>?/;>
+?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;<8L">.J"Z$IBQ$)JR$)JR$)JR$)JR$)FQ$IJ\*++@3.;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>
+>=J>/[F\$YFQ$)JR$)JR$)JR$)JR$)JR$)JR$YFR''::=1-?<?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;N/+6+%YFQ$)JR$)JR$)JR$)JR$)JR
+$)JR$)JR$)FQ%Z^;0MK<?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>3[:=+)VQ$YJR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)FQ$*B;(K3>?/;>?/;>
+?/;>?/;>?/;>?/;>?/;>?/;>?/;>?-N>/[VU$YFR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JQ$ZB:RY3>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;-
+0K:;''IFR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$JB7J*O>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?LN=/Z.N$)JR$)JR$)JR$)JR$)JR$)JR
+$)JR$)JR$)JR$)JR$)JR$JN.H[W>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;J.;:<&)FR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR#*2MI-K>
+?/;>?/;>?/;>?/;>?/;>?/;>?/;>><B;/+ZP$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JQ$+Y"R>7>?/;>?/;>?/;>?/;>?/;>?/;>?/;R
+.+:>*YFR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JQ&[@- /3>?/;>?/;>?/;>?/;>?/;>?/;>?+N*/+:"$YJR$)JR$)JR$)JR$)JR$)JR
+$)JR$)JR$)JR$)JR$)JR$)JR$)JQ)(@+2_;>?/;>?/;>?/;>?/;>?/;>?/;>-Z6>0I>Q$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JU
+)39\=O;>?/;>?/;>?/;>?/;>?/;>?/^3-K;@(IFR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$YJ&^2J5?/;>?/;>?/;>?/;>?/;>?/;>
+<**5/+:$$YJR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JQ$Y*$L%+1?/;>?/;>?/;>?/;>?/;>?/;4*(68/*2P$)JR$)JR$)JR$)JR$)JR
+$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JQ%Z9.I,G>?/;>?/;>?/;>?/;>?/;>?/"&Q(2=.IBQ$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR
+$)FQ()< Z_O>?/;>?/;>?/;>?/;>?/;>?)I L[B='')FR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)FZ-4L55O;>?/;>?/;>?/;>?/;>
+?/;>$H0NYLB1$YFR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$YV4]AV)>?;>?/;>?/;<>?;>?/;>?/;B%S$I([: $IJR$)JR$)JR$)JR
+$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JQ$J"UC''C4?/;>?/;08M''W6^O4?/;>?/9#_@L+.+"X$IJR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR
+$)JR$)JP(*0]N]7>?/;;6\J,):R''+,''$?/;>?)RDMPET1+BU$IJR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)F\.B<S0_;>?MJ.&9VR$YJU
+(K3#?/;>>$BH@0]*2Z2U$IJR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$Y&;NPF_>?;#,IJQ$YFQ$YFR'';;^?/;>14!!*@P-+1+RY$YFR$)JR
+$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JQ%[1C@W/8>Z.X$YFR$)FP#)BU!!8G>?/;>[VP2@P]T.+.!!$YFR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)JR
+$)JR$)JR$YFU/DPAX^/F,X:R$)FQ&<#Y19JF[-S>?/;>LF$Z@PD*&;62&9JR$)FQ$YFR$)JR$)JR$)JR$)JR$)JR$)JR$)JR$)FU(ZN:O EI77V,$IJQ$JO''
+=_S31HMQ-_;>?/;:NE<^@PDAO)V1+*NX%YVR$YFQ$YJR$)JR$)JR$)JR$)JR$)JR$)JR$Y/H-;H9@SGRW:2P$)FM4_O3<?OM!!46:?/;>?/;5SUH/D <G@QYQ
+ I:!!)*R\%YJQ$YJR$)JR$)JR$)JR$)JR$)JR$)FQ(]&7*"<AIL]L.H:Q$YGY=OO49:).YM7>?/;>?/;8\5MGUE(.JA\GBR)\ :J1)9*Q$YJR$)JR$)JR$)JR
+$)JR$)JR$YF)9;"^H D 0&R)''(:P#-G6<=:;^"97?/;>?/;>?/;>-FUFPW6F\WE''O!!@CG5^P.JZU$YJR$)JR$)JR$)JR$)JR$)JQ%[7+.( V@Q*<2%[@):^Y
+*\OC.7P1RZ#>?/;>?/;>?/;>9JE-PDM''!!82Y-)UDA0-W/Z.U$YJR$)JR$)JR$)JR$)JR$)FU4>R8]@4AGK+:YGZ#U7BJ#G]JQS9,?O;>?/;>?/;>?/;>?.F9
+!!TD0T7:B&<;M]@% 0:*Q$YJR$)JR$)JR$)JR$)JR$)327+I[@PD&/O;_S3LKA0-D_F0-WOK>?/;>?/;>?/;>?/;>?/;26\Y:KC57^)?4.AJ;.:FP$)JR$)JR
+$)JR$)JR$)JR./[S)#8A@SG@?/;)\ 0GAADXEH+7?/;>?/;>?/;>?/;>?/;>?/;>?/[+.C1@^$+$OHCC+)FQ$)JR$)JR$)JR$)JR$)G_<L"NH@DEQ\[>?/;>
+:[M9_<S7?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?+L,\44"Z<V5&YFR$)JR$)JR$)JR$)JQ*?S''-''XE@Q=(4_;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>
+?/;>?/;>?/;>?/]@ZC->1K^[$YJR$)JR$)JR$)JR$YCW<=^&UPDAMX[#?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/9@!!LN>.I:P$)JR
+$)JR$)JR$)JP)?O..)T"@QL7(>;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/,=.,B7&)FR$)JR$)JR$)JR$YGY<=>_^0DAR#J+>_;>
+?/;>?/;>?/;>?/;>?/;:<.7,;/S<?/;>?/;>?/;>?/;>?/;>?*VK0;RU$YJR$)JR$)JR$)JL.OO2-ZEA@PEUW++<?/;>?/;>?/;>?/;>?/;37=OH0<GC3]_$
+>_;>?/;>?/;>?/;>?/;>;6+E+)FQ$)JR$)JR$)JR#*C#=M&Y%P\AJDRF5?;>?/;>?/;>?/;>?/;<8<*<,Z^"(JB$*;/N;_;>?/;>?/;>?/;>?/;7Z,N''$IFR
+$)JR$)JR$)BU4_O3*JYR@PE^UY;1?/;>?/;>?/;>?/;>?MSA,)>U$)FQ$YJU&;GC:_;>?/;>?/;>?/;>?/]:/Y:P$)JR$)JR$)JQ#,O0=-FU)0TAD59.-O''>
+?/;>?/;>?/;>?/;S/Z&U$YFQ$YJQ$YFQ%[G@;_;>?/;>?/;>?/;><Y>5$YFR$)JR$)JR$YB<;_S1'':%K@PEIYG__?O;>?/;>?/;>?/;>;K.+$)FQ$)JR$)JR
+$)FQ''*^*>_;>?/;>?/;>?/;T-:^P$YJR$)JQ$YFR/N;3=+6Z'' DAC7E*%_O>?/;>?/;>?/;>?/*:-)VQ$)JR$)JR$)JR$)FP-3KI?/;>?/;>?/;>?*^;%YFR
+$YJR%YVU)-K4<?SY&[H2@PEE"%;S>/;>?/;>?/;>?/;>2K6#$IJR$)JR$)JR$)JQ%YF2MFC;?/;>?/;>?/;9)+FN$)FU),/$:^/6=OO4<J*#^@DAEI%'' _C>
+?/;>?/;>?/;>?/2!!.9JQ$)JR$)JR$)JR$YB5*Z]^C>S>?/;>?/;>?,:>'')FP&\S0=/S4<?O3<?SH''J$O@PE!!,T/R>/;>?/;>?/;>?/;>6[^0#)JR$)JR$)JR
+$)JP(^CC)7@A,_;>?/;>?/;>*KZQ$Y3M<?S3<?O3<?O46ZJ*O DAIMIW!!N3>?/;>?/;>?/;>?/:3/*"P$)JR$)JR$)JR$YWE=<J([ E3?/;>?/;>?-_@()BY
+3/S3<?O3<?O3=N^**F(E@P^7''$OY?/;>?/;>?/;>?/;>?)V=)9BR$)JR$)JR$)FP+N+7/J1\@VS>?/;>?/;>.;*U%\C3=OO3<?O3<?S..*^BD DA^>P/*?''>
+?/;>?/;>?/;>?/;>_K*)$IJR$)JR$)JQ#ZO#=_J0."<J_O;>?/;>?-J=*YF&;/S3<?O3<?O3<,N"&BPA@T[4S&#0?/;>?/;>?/;>?/;>?/:$);VN$)JR$)JQ
+#YW@9?O67Z")HRKC?/;>?/;>.[6[%\;6<?O3<?O3<?OA(JH5@PD :X >4_;>?/;>?/;>?/;>?/;>?-!!//YVQ$)JR$YGC:_C3<?F:,%I GOS>?/;>?."?/YJZ
+;/O3<?O3<?S*,Y:)O DAC,;NHZ_>?/;>?/;>?/;>?/;>?/;>?#*<*YBQ$YFP4_K3<?O01*RPIFI+?/;>?/;>,+R=$*K3<?O3<?S,2)&#*3TA@P:=:"]<?/;>
+?/;>?/;>?/;>?/;>?/;>#GK@))&U$Y/$<_C.7;V^''""DK.S>?/;>?/.?.,B!!%]''1;._R.)&X*)(_@PDS-?L5[/+>?/;>?/;>?/;>?/;>?/;>?/;>NJJ=+KB''
+&*^<.:&Z''8L2^5&K?O;>?/;>7;:>/+2#&JZ!!%YJU''99Y@PDCL\/''Q6K8?/;>?/;>?/;>?/;>?/;>?/;>?/;RP8QIQ(FX&)&U#G]QPYA4X_K>?/;>?/;S-+:=
+0JZU#HZC^&H5APDAE63$3$%#<_;>?/;>?/;>?/;>?/;>?/;>?/;>?/::S4,\AQP''K#IARWN''ZVC_?/;>?/;>?-Z_.LI<IA$\EP$A@PDAI&SI<)1G\.?>?/;>
+?/;>?/;>?/;>?/;>?/;>?/;>?/;GY#8+F ,AHFFC]#968?;>?/;>?/;>=7B''2A\A@PDAAP</XI#Y?+I3TI_2?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;(
++8D5G!!,)K#^E0?K>?/;>?/;>?/;>"6ODUPDAN;2=2.S>=*I1X%''N=/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;><]_M3L''Q6_[>?/;>?/;>?/;>?/;8
+Y%B)TPD/4=N0^5U][4*$:_;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;7&BUVY5EJQT9VUDJ]:?#>?/;>?/;>
+?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;>?/;><[AYI2L)RH?[>O3>?/;>?/;>?/;>?/;>?/;>?/;>') ; colorMapFromArray:#[0 1 0 0 2 0 1 4 0 2 5 1 10 3 1 7 9 5 8 11 7 10 12 8 11 14 10 14 16 12 15 17 13 16 18 15 20 18 22 18 20 17 20 22 19 23 24 22 25 27 24 27 26 29 26 28 25 27 28 26 28 29 27 30 31 29 33 35 32 35 36 34 38 36 39 36 37 35 38 39 37 40 38 42 39 40 38 40 41 39 44 42 45 42 43 41 43 45 42 44 45 43 45 47 44 49 47 50 48 49 47 50 48 52 50 52 49 52 54 51 53 55 52 56 54 57 54 56 53 55 57 54 58 56 60 57 58 56 58 59 57 59 61 58 63 61 65 61 63 60 62 64 61 65 63 67 64 65 63 65 66 64 65 67 65 68 69 67 71 69 72 69 71 68 72 70 74 71 72 70 72 73 71 74 72 76 73 75 72 74 76 74 78 76 79 76 78 75 80 78 82 78 80 77 80 82 79 81 83 80 82 84 81 83 84 82 85 83 87 84 85 83 85 86 84 86 87 85 88 86 90 86 88 85 87 89 86 90 88 92 92 90 94 90 92 89 92 94 91 96 93 97 93 95 92 94 96 93 98 95 99 96 97 95 99 97 101 97 99 96 99 101 98 100 101 99 101 102 100 103 101 105 102 103 101 106 104 108 105 107 104 106 108 105 108 110 107 111 109 113 110 112 109 113 111 115 115 113 117 113 115 112 114 116 113 115 117 114 116 118 115 117 119 116 118 120 117 121 119 123 119 121 118 122 120 124 120 122 119 122 124 121 126 124 128 124 126 123 125 127 124 128 126 130 127 129 126 128 130 127 130 132 129 133 131 135 131 133 130 132 134 131 133 135 132 134 136 133 135 137 134 139 137 141 137 139 136 138 140 137 139 141 138 140 142 139 141 143 140 145 142 146 142 144 141 143 145 142 144 146 143 147 145 149 145 147 144 149 146 150 146 148 145 147 149 146 148 150 147 151 149 153 149 151 148 150 152 149 151 153 150 152 154 151 155 153 157 154 155 152 155 157 153 158 156 160 156 158 155 157 159 156 158 160 157 159 161 158 160 162 159 164 161 166 161 163 160 162 164 161 163 165 162 164 166 163 165 167 164 166 168 165 167 169 166 170 168 172 168 170 167 169 171 168 170 172 169 171 173 170 172 174 171 173 175 172 174 176 173 177 175 179 176 178 174 179 177 181 177 179 175 178 180 177 179 181 178 182 180 184 180 182 179 181 183 180 182 184 181 183 185 182 184 186 183 187 185 189 185 187 184 186 188 185 187 189 186 188 190 187 189 191 188 193 190 195 190 193 189 192 194 190 193 195 191 194 196 193 195 197 194 196 198 195 197 199 196 198 200 197 199 201 198 200 202 199 201 203 200 202 204 201 205 203 207 204 206 203 206 208 204 207 209 206 208 210 207 209 211 208 211 213 210 212 214 211 213 215 212 214 216 213 217 215 219 216 218 214 220 217 222 217 219 215 218 220 217 222 219 224 219 221 218 220 222 219 221 223 220 222 224 221 223 225 222 226 224 228 224 226 223 225 228 224 227 229 225 228 230 227 229 231 228 230 232 229 234 231 236 231 233 230 232 234 231 233 235 232 234 236 233 235 238 234 237 239 235 241 238 243 238 240 237 239 241 238 240 242 239 241 243 240 242 244 241 243 245 242 244 247 243 246 248 244 247 249 246 248 250 247 249 251 248 250 252 249 251 253 250 252 255 251 254 255 252]; yourself]
+! !
+
+!HGIconLibrary class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id::                                                                                                                        $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/HGPackageModel.st	Wed Nov 14 01:15:30 2012 +0000
@@ -0,0 +1,46 @@
+"{ Package: 'stx:libscm/mercurial' }"
+
+SCMAbstractPackageModel subclass:#HGPackageModel
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SCM-Mercurial-StX'
+!
+
+
+!HGPackageModel methodsFor:'accessing'!
+
+manager
+    ^ HGSourceCodeManager
+
+    "Created: / 14-11-2012 / 01:02:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGPackageModel methodsFor:'accessing-tasks'!
+
+commitTaskClass
+    ^ HGCommitTask
+
+    "Created: / 14-11-2012 / 00:36:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGPackageModel methodsFor:'utils'!
+
+ensureWorkingCopy
+    "raise an error: must be redefined in concrete subclass(es)"
+
+    ^ self halt.
+
+    "Created: / 14-11-2012 / 00:16:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGPackageModel class methodsFor:'documentation'!
+
+version_GIT
+    "Never, ever change this method. Ask JV or CG why"
+    ^thisContext method mclass theNonMetaclass instVarNamed: #revision
+!
+
+version_SVN
+    ^ '$Id::                                                                                                                        $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/HGPackageModelRegistry.st	Wed Nov 14 01:15:30 2012 +0000
@@ -0,0 +1,36 @@
+"{ Package: 'stx:libscm/mercurial' }"
+
+SCMAbstractPackageModelRegistry subclass:#HGPackageModelRegistry
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SCM-Mercurial-StX'
+!
+
+
+!HGPackageModelRegistry methodsFor:'accessing'!
+
+packageNamed:package
+    "Returns a HGPackageModel for given package."
+
+    | dir repo |
+
+    packages at: package ifPresent: [ :pkg | ^ pkg ].
+    wcs at: package ifPresent:[ :wc | ^ wc ].
+    dir := Smalltalk getPackageDirectoryForPackage: package.
+    dir := HGRepository discover: dir.
+    dir isNil ifTrue:[
+        GitError raiseErrorString: 'No repository found for package ',package.
+        ^nil.
+    ].
+    repo := repositories at: dir ifAbsentPut: [ HGRepository on: dir ].
+    ^packages at: package ifAbsentPut: [ HGPackageModel name: package repository: repo ].
+
+    "Created: / 14-11-2012 / 00:15:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGPackageModelRegistry class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id::                                                                                                                        $'
+! !
--- a/mercurial/HGRepository.st	Wed Nov 14 01:14:16 2012 +0000
+++ b/mercurial/HGRepository.st	Wed Nov 14 01:15:30 2012 +0000
@@ -15,7 +15,7 @@
 !
 
 
-!HGRepository class methodsFor:'utilities'!
+!HGRepository class methodsFor:'instance creation'!
 
 on: aStringOrFilename
     ^self new initializeOn: aStringOrFilename
@@ -23,14 +23,37 @@
     "Created: / 17-10-2012 / 13:30:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!HGRepository class methodsFor:'utilities'!
+
+discover: aStringOrFilename
+    "Find a Mercurial repository in given directory or super-directories
+     and return it (as an instance of Filename). If no repository is found, 
+     returns nil.
+
+     Currently, it searches for presence of .hg directory"
+
+    | f |
+    f := aStringOrFilename.
+    f isDirectory ifFalse:[
+        f := f directory
+    ].
+    [ ( f / '.hg' ) exists ] whileFalse:[
+        f isRootDirectory ifTrue:[ ^nil ].
+        f := f directory.
+    ].
+    ^f
+
+    "Created: / 13-11-2012 / 22:34:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-11-2012 / 00:02:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !HGRepository methodsFor:'accessing'!
 
 path
+    "Return path to the repository (directory with .hg store)"
     ^ path
-!
 
-path:something
-    path := something.
+    "Modified (comment): / 13-11-2012 / 18:18:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 workingCopy
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/HGSourceCodeManagementSettingsAppl.st	Wed Nov 14 01:15:30 2012 +0000
@@ -0,0 +1,226 @@
+"{ Package: 'stx:libscm/mercurial' }"
+
+AbstractSourceCodeManagementSettingsAppl subclass:#HGSourceCodeManagementSettingsAppl
+	instanceVariableNames:'defaultLogo'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SCM-Mercurial-StX-Interface'
+!
+
+
+!HGSourceCodeManagementSettingsAppl class methodsFor:'image specs'!
+
+defaultIcon
+    ^ self defaultIcon3
+
+    "Created: / 22-12-2011 / 13:47:11 / cg"
+!
+
+defaultIcon1
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self defaultIcon1 inspect
+     ImageEditor openOnClass:self andSelector:#defaultIcon1
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'MercurialSourceCodeManagementSettingsAppl class defaultIcon1'
+        ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PHCA@PEA D@@@@@@@@@@@@@@@@@@@@GA@ HB@ HB@$C
+B @@@@@@@@@@@@@@@@,IB@ HB@ HB@ LA@4@@@@@@@@@@@@@C LLB@ HB@ HB@ HB@<P@@@@@@@@@@@@BPPHB@ HB@ HB@ HBADR@@@@@@@@@@@@D0$HB@ H
+B@ HB@ HB@ SA@@@@@@@@@@@@APLB@ HB@ HB@ HB@ IEP@@@@@VA@LW@Q OC@ HB@ HB@ HB@ LFPD@@@DLBP\Q@@@ZF0 LB@ HB@ HB@ IF@X@@A0HA!!4^
+@@@SF!!<_@@$HB@ HB@0FH@L@@BDI@AHC@@@@HP@O@BHIB@ HB@LFH0H@@@@ABQ0@@@@@@@@!!A@@DB@ HCA0OI@8@@@@@@@@@@A\@@@@@@@XDB@ HBP8%I D@
+@@@@@@@BA@$D@P@@@@8IB@ LC P''C0@@@@@@@@DIB@ HBQ0@@@8LA@XA@Q<Y@0@@@@@@@@PLB@ DA@@@@@PCB" JC2T[@@@@@@@@@@PLB@PPBP@@@@P)JB$I
+J!!HA@@@@@@@@@B,LBQXCKB,@A XACQP-F0L@@@@@@@@@@@(RK"T,D0@@BA,/LCD@L @@@@@@@@@@@@@@@ $!!@@@@@QTTC@ 3@@@@@@@@@@@@@@@@@@@@@@@@
+@CP\L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[143 136 136 208 208 208 192 192 184 176 176 176 175 168 168 176 168 168 191 184 184 191 176 176 159 152 144 160 160 160 239 232 224 192 184 184 159 152 160 207 192 200 207 200 200 144 144 144 224 224 224 160 152 160 127 120 120 144 144 136 128 128 128 111 104 104 207 200 208 239 232 240 95 88 88 96 96 96 79 72 80 112 112 120 192 192 200 223 208 208 111 104 96 80 80 80 64 64 64 223 216 216 128 120 128 31 24 24 32 32 24 79 72 64 64 56 56 47 40 40 240 240 240 239 224 224 63 48 48 191 184 176 112 112 104 64 64 56 63 56 56 48 48 48 48 40 48 127 112 120 160 160 168 208 200 208 224 224 216]; mask:((Depth1Image new) width: 24; height: 24; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@G>@@O? @_?0@??8@??8@??<@??<O??>__?>_O?>_G?>NA?>@P_>A<_<C>_<C>_8C>_8C>?0C<? @8?@@@\@@@@@') ; yourself); yourself]
+!
+
+defaultIcon2
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self defaultIcon2 inspect
+     ImageEditor openOnClass:self andSelector:#defaultIcon2
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'MercurialSourceCodeManagementSettingsAppl class defaultIcon2'
+        ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PHCA@PEA D@@@@@@@@@@@@@@@@@@@@GA@ HB@ HB@$C
+B @@@@@@@@@@@@@@@@,IB@ HB@ HB@ LA@4@@@@@@@@@@@@@C LLB@ HB@ HB@ HB@<P@@@@@@@@@@@@BPPHB@ HB@ HB@ HBADR@@@@@@@@@@@@D0$HB@ H
+B@ HB@ HB@ SA@@@@@@@@@@@@APLB@ HB@ HB@ HB@ IEP@@@@@VA@LW@Q OC@ HB@ HB@ HB@ LFPD@@@DLBP\Q@@@ZF0 LB@ HB@ HB@ IF@X@@A0HA!!4^
+@@@SF!!<_@@$HB@ HB@0FH@L@@BDI@AH:N#\7HP@O@BHIB@ HB@LFH0H@@@@ABS\:N#(:M0@!!A@@DB@ HCA0OI@8@@@@@M#(:@A\@@C\@@@XDB@ HBP8%I D@
+@@@@M3 7A@$D@P@@@@8IB@ LC P''C0@@@C\7N#$:N0 HHA0@@@8LA@XA@Q<Y@0@@@@@7NS(7B@  HB@@@@PCB" JC2T[@@@@@@@@M34LBB@<OAP @@P)JB$I
+J!!HA@@@@@@@@@B,LHB@YHB@ A XACQP-F0L@@@@@@@@ @@(RK"T H@@@BA,/LCD@L @@@@@@@@@@HB@ HB@ MP@@@QTTC@ 3@@@@@@@@@@@@@A$ HB@5@@@@
+@CP\L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[143 136 136 208 208 208 192 192 184 176 176 176 175 168 168 176 168 168 191 184 184 191 176 176 159 152 144 160 160 160 239 232 224 192 184 184 159 152 160 207 192 200 207 200 200 144 144 144 224 224 224 160 152 160 127 120 120 144 144 136 128 128 128 111 104 104 207 200 208 239 232 240 95 88 88 96 96 96 79 72 80 112 112 120 192 192 200 223 208 208 111 104 96 80 80 80 64 64 64 223 216 216 128 120 128 31 24 24 32 32 24 79 72 64 64 56 56 47 40 40 240 240 240 239 224 224 63 48 48 191 184 176 112 112 104 64 64 56 63 56 56 48 48 48 48 40 48 127 112 120 160 160 168 208 200 208 224 224 216 0 0 0 0 64 0 32 96 32 96 192 128 32 128 64 32 160 64 32 128 32 32 32 32 32 64 32]; mask:((Depth1Image new) width: 24; height: 24; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@G>@@O? @_?0@??8@??8@??<@??<O??>__?>_O?>_??>O=?>GR_>G<_<_>_<O>_8G?_8C??0K<? G<?@C8\@@@@@') ; yourself); yourself]
+!
+
+defaultIcon3
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self defaultIcon3 inspect
+     ImageEditor openOnClass:self andSelector:#defaultIcon3
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'HGSourceCodeManagementSettingsAppl defaultIcon3'
+        ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@PHCA@PEA D@@@@@@@@@@@@@@@@@@@@GA@ HB@ HB@$C
+B @@@@@@@@@@@@@@@@,IB@ HB@ HB@ LA@4@@@@@@@@@@@@@C LLB@ HB@ HB@ HB@<N@@@@@@@@@@@@BPPHB@ HB@ HB@ HBADR@@@@@@@@@@@@D0$HB@ H
+B@ HB@ HB@ SA@@@@@@@@@@@@APLB@ HB@ HB@ HB@ IEP@@@@@VA@LW@Q OC@ HB@ HB@ HB@ LFPD@@@DLBP\Q@@@ZF0 LB@ HB@ HB@ IF@X@@A0HA!!4^
+@@@SF!!<_@@$HB@ HB@0FH@L@@BDI@AH:N#\7HP@O@BHIB@ HB@LFH0H@@@@ABS\:N#(:M0@!!A@@DB@ HCA0OI@8@@@@@M#(:@A\@@C\@@@XDB@ HBP8%I D@
+@@@@M3 7A@$D@P@@@@8IB@ LDA@''C0@@@C\7N#$:N0 HOA0@@@8LA@XADA@Y@0@@@@@7NS(7B@ <OC0@@@PCB" JDA@[@@@@@@@@M4@LBC0?O38<@@P)DA@P
+DA@PDA@@@@@@@B,LOC0=OC0<A XADA@PDA@PDA@@@@@<@@(RK"T<O@@@BA,/LCD@DA@@@@@@@@@@OC0<OC0<MP@@@QTTC@ 3DA@@@@@@@@@@@C4<OC05@@@@
+@CP\L0@@DA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[174 169 169 255 255 255 233 233 230 216 216 216 213 209 209 214 209 209 232 229 229 229 223 223 191 187 181 197 197 197 255 255 255 233 230 230 194 189 194 247 244 245 251 250 250 177 177 177 131 0 0 194 189 194 155 149 149 175 175 169 157 157 157 136 128 128 251 251 251 255 255 255 117 108 108 118 118 118 97 89 98 139 139 147 240 240 242 255 255 255 137 128 118 98 98 98 79 79 79 255 255 255 156 149 156 38 30 30 39 39 30 97 89 79 79 69 69 58 49 49 255 255 255 255 255 255 77 59 59 229 226 223 137 137 128 79 79 69 77 69 69 59 59 59 59 49 59 154 140 147 199 199 204 251 251 251 255 255 255 0 0 0 0 64 0 32 96 32 96 192 128 32 128 64 32 160 64 32 128 32 64 64 64 96 96 96 128 128 128 32 32 32 32 64 32]; mask:((Depth1Image new) width: 24; height: 24; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@G>@@O? @_?0@??8@??8@??<@??<O??>__?>_O?>_??>O=?>GR_>G<_<_>_<O>_8G?_>C??>K<?0G<?0C8\0@@@@') ; yourself); yourself]
+!
+
+defaultLogo
+    ^ HGIconLibrary hgLogo1
+
+    "Created: / 04-10-2012 / 19:01:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 14-11-2012 / 00:12:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGSourceCodeManagementSettingsAppl class methodsFor:'interface specs'!
+
+windowSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:HGSourceCodeManagementSettingsAppl andSelector:#windowSpec
+     HGSourceCodeManagementSettingsAppl new openInterface:#windowSpec
+     HGSourceCodeManagementSettingsAppl open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: windowSpec
+        window: 
+       (WindowSpec
+          label: 'SubVersion Settings'
+          name: 'SubVersion Settings'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 695 627)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: ' Mercurial Settings'
+              name: 'MercurialSettingsTitle'
+              layout: (LayoutFrame 0 0 0 0 0 1 66 0)
+              style: (FontDescription helvetica medium roman 18 #'iso10646-1')
+              backgroundColor: (Color 100.0 100.0 100.0)
+              translateLabel: true
+              adjust: left
+            )
+           (LabelSpec
+              label: 'Logo'
+              name: 'MercurialLogo'
+              layout: (LayoutFrame -100 1 0 0 0 1 66 0)
+              hasCharacterOrientedLabel: false
+              backgroundColor: (Color 100.0 100.0 100.0)
+              translateLabel: true
+              labelChannel: defaultLogo
+            )
+           (CheckBoxSpec
+              label: 'Show in Menus'
+              name: 'CheckBox1'
+              layout: (LayoutFrame 0 0 73 0 0 1 95 0)
+              activeHelpKey: shownInBrowserMenus
+              model: shownInBrowserMenusHolder
+              translateLabel: true
+            )
+           )
+         
+        )
+      )
+! !
+
+!HGSourceCodeManagementSettingsAppl class methodsFor:'queries'!
+
+managerClass
+    "backlink to my manager class (needed by the settings app)"
+
+    ^ HGSourceCodeManager
+
+    "Created: / 19-04-2011 / 12:46:52 / cg"
+    "Modified: / 13-11-2012 / 22:15:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGSourceCodeManagementSettingsAppl methodsFor:'aspects'!
+
+initialListOfModules
+    "raise an error: must be redefined in concrete subclass(es)"
+
+    ^ self shouldImplement
+! !
+
+!HGSourceCodeManagementSettingsAppl methodsFor:'protocol'!
+
+basicReadSettings
+    self shownInBrowserMenusHolder value:GitSourceCodeManager2 shownInBrowserMenus.
+
+    "Modified: / 06-10-2012 / 17:18:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+basicSaveSettings
+    GitSourceCodeManager2 shownInBrowserMenus:self shownInBrowserMenusHolder value
+
+    "Modified: / 06-10-2012 / 17:18:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+helpFilename
+    "subclasses must return the relative name of a helpFile
+     in the doc/online/<language>/help directory.
+     Or nil, if no help is available."
+
+    ^ self shouldImplement
+! !
+
+!HGSourceCodeManagementSettingsAppl methodsFor:'queries'!
+
+hasUnsavedChanges
+
+    (GitSourceCodeManager shownInBrowserMenus ~= self shownInBrowserMenusHolder value)
+        ifTrue:[^ true].
+
+    ^ false
+
+    "Modified: / 06-10-2012 / 17:17:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGSourceCodeManagementSettingsAppl class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id::                                                                                                                        $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mercurial/HGSourceCodeManager.st	Wed Nov 14 01:15:30 2012 +0000
@@ -0,0 +1,144 @@
+"{ Package: 'stx:libscm/mercurial' }"
+
+SCMAbstractSourceCodeManager subclass:#HGSourceCodeManager
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SCM-Mercurial-StX'
+!
+
+
+!HGSourceCodeManager class methodsFor:'accessing'!
+
+repositoryNameForPackage:packageId
+    "Return the repository ULR for the given package. 
+     Used for testing/debugging source code management configuration"
+
+    ^ HGRepository discover: (Smalltalk getPackageDirectoryForPackage: packageId)
+
+    "Modified: / 13-11-2012 / 22:16:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGSourceCodeManager class methodsFor:'accessing-classes'!
+
+commitDialogClass
+    "Answer a dialog class to be used for commits"
+
+    ^HGCommitDialog
+
+    "Created: / 13-11-2012 / 23:59:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+packageRegistryClass
+    "Answer the package manager class used to get
+     package models"
+    
+    ^ HGPackageModelRegistry
+
+    "Created: / 13-11-2012 / 23:59:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGSourceCodeManager class methodsFor:'queries'!
+
+isResponsibleForPackage:aStringOrSymbol
+    "Returns true if the manager can handle source code for given package.
+     
+     Answering true does not imply that receiver is configured default
+     manager for that package, it only means that it has a repository
+     configured for given package."
+
+    "No configuration yet, so let's scan the working copy"
+
+    | pkgDir |
+
+    pkgDir := Smalltalk getPackageDirectoryForPackage: aStringOrSymbol.
+    ^pkgDir notNil and:[(HGRepository discover: pkgDir) notNil]
+
+    "Modified: / 14-11-2012 / 00:24:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+managerTypeName
+    "superclass AbstractSourceCodeManager class says that I am responsible to implement this method"
+
+    ^ 'Mercurial+'
+
+    "Modified: / 13-11-2012 / 22:40:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+managerTypeNameShort
+    ^ 'HG'
+
+    "Created: / 06-10-2012 / 17:10:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 13-11-2012 / 22:40:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+nameOfVersionMethodForExtensions
+    "that is the old name; now, we use extensionsVersion_<SCM>"
+
+    ^ #'extensionsVersion_HG'
+
+    "Modified (comment): / 29-09-2011 / 13:27:04 / cg"
+    "Modified: / 13-11-2012 / 22:40:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+nameOfVersionMethodInClasses
+    "that is the old name; now, we use version_<SCM>"
+
+    ^ #'version_HG'
+
+    "Modified (comment): / 29-09-2011 / 13:27:09 / cg"
+    "Modified: / 13-11-2012 / 22:40:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+settingsApplicationClass
+    "link to my settings application (needed for the settings dialog"
+
+    ^ HGSourceCodeManagementSettingsAppl
+
+    "Modified: / 13-11-2012 / 22:40:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+versionMethodTemplateForJavaScriptFor:aSelector
+    "do not make the thing below a single string - otherwise
+     it would get expanded by the sourcecodemanager, which we do not want here"
+
+    ^
+"'function ',"aSelector,'() {
+    /* Never, ever change this method. Ask JV or CG why */
+    return thisContext.method().mclass().theNonMetaclass().instVarNamed("revision")
+}'
+
+    "Created: / 07-10-2012 / 00:23:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+versionMethodTemplateForRubyFor:aSelector
+    "do not make the thing below a single string - otherwise
+     it would get expanded by the sourcecodemanager, which we do not want here"
+
+    ^
+'def self.',aSelector,'()
+    # Never, ever change this method. Ask JV or CG why
+    return thisContext.method().mclass().theNonMetaclass().instVarNamed("revision")
+end'
+
+    "Created: / 07-10-2012 / 00:22:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+versionMethodTemplateForSmalltalkFor:aSelector
+    "do not make the thing below a single string - otherwise
+     it would get expanded by the sourcecodemanager, which we do not want here"
+
+    ^
+aSelector,'
+    "Never, ever change this method. Ask JV or CG why"
+    ^thisContext method mclass theNonMetaclass instVarNamed: #revision
+'
+
+    "Created: / 07-10-2012 / 00:21:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HGSourceCodeManager class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id::                                                                                                                        $'
+! !
--- a/mercurial/HGTests.st	Wed Nov 14 01:14:16 2012 +0000
+++ b/mercurial/HGTests.st	Wed Nov 14 01:15:30 2012 +0000
@@ -70,16 +70,16 @@
 
     "Test modification of working copy and commit back"
 
-    | repo wc f1_txt oldTip newTip |
+    | repo wc f1_txt oldcs currentcs |
 
     repo := self repositoryNamed: 'test_repo_01'.
     "
     UserPreferences fileBrowserClass openOn: repo directory.    
     "
     wc := repo workingCopy.
-    oldTip := wc tip.
+    oldcs := wc changeset.
 
-    self assert: oldTip id revno == 4.
+    self assert: oldcs id revno == 4.
 
     "Modify some file"
     f1_txt := wc / 'f1.txt'.
@@ -91,14 +91,14 @@
     self assert: f1_txt isModified.
 
     wc commit: 'test_01a commit 1'.
-    newTip := wc tip.
+    currentcs := wc changeset.
 
     self assert: f1_txt isModified not.
-    self assert: newTip id revno == 5.
-    self assert: newTip parent1 = oldTip.
+    self assert: currentcs id revno == 5.
+    self assert: currentcs parent1 = oldcs.
 
     "Created: / 19-09-2012 / 23:06:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 13-11-2012 / 18:07:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 13-11-2012 / 21:48:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !HGTests class methodsFor:'documentation'!
--- a/mercurial/HGWorkingCopy.st	Wed Nov 14 01:14:16 2012 +0000
+++ b/mercurial/HGWorkingCopy.st	Wed Nov 14 01:15:30 2012 +0000
@@ -10,20 +10,7 @@
 
 !HGWorkingCopy methodsFor:'accessing'!
 
-path
-    "Return a path to the root directory of the receiver as *Filename*. 
-     Use #root to get the root working copy file"
-
-    ^repository path
-
-    "Created: / 17-10-2012 / 13:53:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-root
-    ^ root
-!
-
-tip
+changeset
     "Return an HGChangeset representing the checked-out changeset
      (revision) of the receiver"
 
@@ -36,7 +23,20 @@
 
     ^repository changesetWithId: id.
 
-    "Created: / 13-11-2012 / 17:58:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 13-11-2012 / 21:47:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+path
+    "Return a path to the root directory of the receiver as *Filename*. 
+     Use #root to get the root working copy file"
+
+    ^repository path
+
+    "Created: / 17-10-2012 / 13:53:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+root
+    ^ root
 ! !
 
 !HGWorkingCopy methodsFor:'actions'!
--- a/mercurial/Make.proto	Wed Nov 14 01:14:16 2012 +0000
+++ b/mercurial/Make.proto	Wed Nov 14 01:15:30 2012 +0000
@@ -34,7 +34,7 @@
 # add the path(es) here:,
 # ********** OPTIONAL: MODIFY the next lines ***
 # LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libscm/git -I$(INCLUDE_TOP)/stx/libbasic
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libview -I$(INCLUDE_TOP)/stx/libview2 -I$(INCLUDE_TOP)/stx/libscm/common -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libscm/git -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic3 -I$(INCLUDE_TOP)/stx/libtool
 
 
 # if you need any additional defines for embedded C code,
@@ -124,8 +124,10 @@
 	cd ../../libhtml && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../libwidg2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../libtool && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libcompat && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../libtool2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../libsvn && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../common && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../git && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../../librun && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 
@@ -144,10 +146,16 @@
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)HGCommand.$(O) HGCommand.$(H): HGCommand.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGCommandParser.$(O) HGCommandParser.$(H): HGCommandParser.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)HGCommitDialog.$(O) HGCommitDialog.$(H): HGCommitDialog.st $(INCLUDE_TOP)/stx/libscm/common/SCMAbstractCommitDialog.$(H) $(INCLUDE_TOP)/stx/libscm/common/SCMAbstractDialog.$(H) $(INCLUDE_TOP)/stx/libview2/SimpleDialog.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGError.$(O) HGError.$(H): HGError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)HGIconLibrary.$(O) HGIconLibrary.$(H): HGIconLibrary.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGNodeId.$(O) HGNodeId.$(H): HGNodeId.st $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)HGPackageModel.$(O) HGPackageModel.$(H): HGPackageModel.st $(INCLUDE_TOP)/stx/libscm/common/SCMAbstractPackageModel.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)HGPackageModelRegistry.$(O) HGPackageModelRegistry.$(H): HGPackageModelRegistry.st $(INCLUDE_TOP)/stx/libscm/common/SCMAbstractPackageModelRegistry.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGRepositoryError.$(O) HGRepositoryError.$(H): HGRepositoryError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGRepositoryObject.$(O) HGRepositoryObject.$(H): HGRepositoryObject.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)HGSourceCodeManagementSettingsAppl.$(O) HGSourceCodeManagementSettingsAppl.$(H): HGSourceCodeManagementSettingsAppl.st $(INCLUDE_TOP)/stx/libtool/AbstractSourceCodeManagementSettingsAppl.$(H) $(INCLUDE_TOP)/stx/libtool/AbstractSettingsApplication.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)HGSourceCodeManager.$(O) HGSourceCodeManager.$(H): HGSourceCodeManager.st $(INCLUDE_TOP)/stx/libscm/common/SCMAbstractSourceCodeManager.$(H) $(INCLUDE_TOP)/stx/libbasic3/AbstractSourceCodeManager.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGStatus.$(O) HGStatus.$(H): HGStatus.st $(INCLUDE_TOP)/stx/libbasic2/Singleton.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)HGWorkingCopyFile.$(O) HGWorkingCopyFile.$(H): HGWorkingCopyFile.st $(INCLUDE_TOP)/stx/libscm/git/GitStatusCodes.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)stx_libscm_mercurial.$(O) stx_libscm_mercurial.$(H): stx_libscm_mercurial.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/mercurial/Make.spec	Wed Nov 14 01:14:16 2012 +0000
+++ b/mercurial/Make.spec	Wed Nov 14 01:15:30 2012 +0000
@@ -64,6 +64,12 @@
 	HGError \
 	HGCommandError \
 	HGChangeset \
+	HGPackageModel \
+	HGCommitDialog \
+	HGIconLibrary \
+	HGPackageModelRegistry \
+	HGSourceCodeManagementSettingsAppl \
+	HGSourceCodeManager \
 
 
 
@@ -83,6 +89,12 @@
     $(OUTDIR)HGError.$(O) \
     $(OUTDIR)HGCommandError.$(O) \
     $(OUTDIR)HGChangeset.$(O) \
+    $(OUTDIR)HGPackageModel.$(O) \
+    $(OUTDIR)HGCommitDialog.$(O) \
+    $(OUTDIR)HGIconLibrary.$(O) \
+    $(OUTDIR)HGPackageModelRegistry.$(O) \
+    $(OUTDIR)HGSourceCodeManagementSettingsAppl.$(O) \
+    $(OUTDIR)HGSourceCodeManager.$(O) \
 
 
 
--- a/mercurial/abbrev.stc	Wed Nov 14 01:14:16 2012 +0000
+++ b/mercurial/abbrev.stc	Wed Nov 14 01:15:30 2012 +0000
@@ -18,3 +18,9 @@
 HGCommandError HGCommandError stx:libscm/mercurial 'SCM-Mercurial-Core' 1
 HGCommandParserTests HGCommandParserTests stx:libscm/mercurial 'SCM-Mercurial-Core-Tests' 1
 HGChangeset HGChangeset stx:libscm/mercurial 'SCM-Mercurial-Core' 0
+HGPackageModel HGPackageModel stx:libscm/mercurial 'SCM-Mercurial-StX' 0
+HGCommitDialog HGCommitDialog stx:libscm/mercurial 'SCM-Mercurial-StX-Interface' 1
+HGIconLibrary HGIconLibrary stx:libscm/mercurial 'SCM-Mercurial-StX-Interface' 0
+HGPackageModelRegistry HGPackageModelRegistry stx:libscm/mercurial 'SCM-Mercurial-StX' 1
+HGSourceCodeManagementSettingsAppl HGSourceCodeManagementSettingsAppl stx:libscm/mercurial 'SCM-Mercurial-StX-Interface' 1
+HGSourceCodeManager HGSourceCodeManager stx:libscm/mercurial 'SCM-Mercurial-StX' 1
--- a/mercurial/bc.mak	Wed Nov 14 01:14:16 2012 +0000
+++ b/mercurial/bc.mak	Wed Nov 14 01:15:30 2012 +0000
@@ -34,7 +34,7 @@
 
 
 
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libscm\git -I$(INCLUDE_TOP)\stx\libbasic
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libview -I$(INCLUDE_TOP)\stx\libview2 -I$(INCLUDE_TOP)\stx\libscm\common -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libscm\git -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic3 -I$(INCLUDE_TOP)\stx\libtool
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
@@ -68,8 +68,10 @@
 	pushd ..\..\libhtml & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libwidg2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libtool & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libcompat & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libtool2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\libsvn & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\common & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\git & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\..\librun & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 
@@ -80,10 +82,16 @@
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)HGCommand.$(O) HGCommand.$(H): HGCommand.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGCommandParser.$(O) HGCommandParser.$(H): HGCommandParser.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)HGCommitDialog.$(O) HGCommitDialog.$(H): HGCommitDialog.st $(INCLUDE_TOP)\stx\libscm\common\SCMAbstractCommitDialog.$(H) $(INCLUDE_TOP)\stx\libscm\common\SCMAbstractDialog.$(H) $(INCLUDE_TOP)\stx\libview2\SimpleDialog.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGError.$(O) HGError.$(H): HGError.st $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)HGIconLibrary.$(O) HGIconLibrary.$(H): HGIconLibrary.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGNodeId.$(O) HGNodeId.$(H): HGNodeId.st $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)HGPackageModel.$(O) HGPackageModel.$(H): HGPackageModel.st $(INCLUDE_TOP)\stx\libscm\common\SCMAbstractPackageModel.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)HGPackageModelRegistry.$(O) HGPackageModelRegistry.$(H): HGPackageModelRegistry.st $(INCLUDE_TOP)\stx\libscm\common\SCMAbstractPackageModelRegistry.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGRepositoryError.$(O) HGRepositoryError.$(H): HGRepositoryError.st $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGRepositoryObject.$(O) HGRepositoryObject.$(H): HGRepositoryObject.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)HGSourceCodeManagementSettingsAppl.$(O) HGSourceCodeManagementSettingsAppl.$(H): HGSourceCodeManagementSettingsAppl.st $(INCLUDE_TOP)\stx\libtool\AbstractSourceCodeManagementSettingsAppl.$(H) $(INCLUDE_TOP)\stx\libtool\AbstractSettingsApplication.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)HGSourceCodeManager.$(O) HGSourceCodeManager.$(H): HGSourceCodeManager.st $(INCLUDE_TOP)\stx\libscm\common\SCMAbstractSourceCodeManager.$(H) $(INCLUDE_TOP)\stx\libbasic3\AbstractSourceCodeManager.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGStatus.$(O) HGStatus.$(H): HGStatus.st $(INCLUDE_TOP)\stx\libbasic2\Singleton.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)HGWorkingCopyFile.$(O) HGWorkingCopyFile.$(H): HGWorkingCopyFile.st $(INCLUDE_TOP)\stx\libscm\git\GitStatusCodes.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)stx_libscm_mercurial.$(O) stx_libscm_mercurial.$(H): stx_libscm_mercurial.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/mercurial/libInit.cc	Wed Nov 14 01:14:16 2012 +0000
+++ b/mercurial/libInit.cc	Wed Nov 14 01:15:30 2012 +0000
@@ -29,10 +29,16 @@
 __BEGIN_PACKAGE2__("libstx_libscm_mercurial", _libstx_libscm_mercurial_Init, "stx:libscm/mercurial");
 _HGCommand_Init(pass,__pRT__,snd);
 _HGCommandParser_Init(pass,__pRT__,snd);
+_HGCommitDialog_Init(pass,__pRT__,snd);
 _HGError_Init(pass,__pRT__,snd);
+_HGIconLibrary_Init(pass,__pRT__,snd);
 _HGNodeId_Init(pass,__pRT__,snd);
+_HGPackageModel_Init(pass,__pRT__,snd);
+_HGPackageModelRegistry_Init(pass,__pRT__,snd);
 _HGRepositoryError_Init(pass,__pRT__,snd);
 _HGRepositoryObject_Init(pass,__pRT__,snd);
+_HGSourceCodeManagementSettingsAppl_Init(pass,__pRT__,snd);
+_HGSourceCodeManager_Init(pass,__pRT__,snd);
 _HGStatus_Init(pass,__pRT__,snd);
 _HGWorkingCopyFile_Init(pass,__pRT__,snd);
 _stx_137libscm_137mercurial_Init(pass,__pRT__,snd);
--- a/mercurial/mercurial.rc	Wed Nov 14 01:14:16 2012 +0000
+++ b/mercurial/mercurial.rc	Wed Nov 14 01:15:30 2012 +0000
@@ -25,7 +25,7 @@
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2012\nCopyright eXept Software AG 1998-2012\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.3.1\0"
-      VALUE "ProductDate", "Tue, 13 Nov 2012 18:11:09 GMT\0"
+      VALUE "ProductDate", "Wed, 14 Nov 2012 01:17:47 GMT\0"
     END
 
   END
--- a/mercurial/stx_libscm_mercurial.st	Wed Nov 14 01:14:16 2012 +0000
+++ b/mercurial/stx_libscm_mercurial.st	Wed Nov 14 01:15:30 2012 +0000
@@ -30,7 +30,12 @@
         #'stx:goodies/sunit'    "TestCase - superclass of HGCommandParserTests "
         #'stx:libbasic'    "LibraryDefinition - superclass of stx_libscm_mercurial "
         #'stx:libbasic2'    "Singleton - superclass of HGStatus::Missing "
+        #'stx:libbasic3'    "AbstractSourceCodeManager - superclass of HGSourceCodeManager "
+        #'stx:libscm/common'    "SCMAbstractPackageModel - superclass of HGPackageModel "
         #'stx:libscm/git'    "GitCommitterQuery - referenced by HGTests>>performTest "
+        #'stx:libtool'    "AbstractSettingsApplication - superclass of HGSourceCodeManagementSettingsAppl "
+        #'stx:libview'    "Depth8Image - referenced by HGSourceCodeManagementSettingsAppl class>>defaultIcon2 "
+        #'stx:libview2'    "Model - superclass of HGCommitDialog "
     )
 ! !
 
@@ -61,6 +66,12 @@
         HGCommandError
         (HGCommandParserTests autoload)
         HGChangeset
+        HGPackageModel
+        HGCommitDialog
+        HGIconLibrary
+        HGPackageModelRegistry
+        HGSourceCodeManagementSettingsAppl
+        HGSourceCodeManager
     )
 !