changeset 2434 | 6ad1f853d2e9 |
parent 2433 | 88fbe1703c31 |
child 2570 | 4e663bc64364 |
2433:88fbe1703c31 | 2434:6ad1f853d2e9 |
---|---|
61 documentation |
61 documentation |
62 " |
62 " |
63 documentation to be added. |
63 documentation to be added. |
64 |
64 |
65 [author:] |
65 [author:] |
66 cg (cg@FUSI) |
66 cg (cg@FUSI) |
67 |
67 |
68 [instance variables:] |
68 [instance variables:] |
69 |
69 |
70 [class variables:] |
70 [class variables:] |
71 |
71 |
75 ! |
75 ! |
76 |
76 |
77 examples |
77 examples |
78 " |
78 " |
79 Starting the application: |
79 Starting the application: |
80 [exBegin] |
80 [exBegin] |
81 InternationalLanguageTranslationEditor open |
81 InternationalLanguageTranslationEditor open |
82 |
82 |
83 [exEnd] |
83 [exEnd] |
84 |
84 |
85 more examples to be added: |
85 more examples to be added: |
86 [exBegin] |
86 [exBegin] |
87 ... add code fragment for |
87 ... add code fragment for |
88 ... executable example here ... |
88 ... executable example here ... |
89 [exEnd] |
89 [exEnd] |
90 " |
90 " |
91 ! |
91 ! |
92 |
92 |
93 history |
93 history |
94 "Created: / 04-03-2006 / 09:07:19 / cg" |
94 "Created: / 04-03-2006 / 09:07:19 / cg" |
110 " |
110 " |
111 |
111 |
112 <resource: #image> |
112 <resource: #image> |
113 |
113 |
114 ^Icon |
114 ^Icon |
115 constantNamed:#'Psiware::SystemManagement class closeSearchBar' |
115 constantNamed:#'Psiware::SystemManagement class closeSearchBar' |
116 ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:' |
116 ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:' |
117 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GQ\SD1LSD1LSD1LSD1LWGP@@@@@@ |
117 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@GQ\SD1LSD1LSD1LSD1LWGP@@@@@@ |
118 @ATGA@HA@PDA@PDA@PHDA1T@@@@@@@@TAENG!!(VB XA?_''57QPPT@@@@@@@@E NJ^V)&X%)UTT5IV7 KE @@@@@@@A A"7Q,#&9VS%^MQ$E<DQ @@@@@@@@Z |
118 @ATGA@HA@PDA@PDA@PHDA1T@@@@@@@@TAENG!!(VB XA?_''57QPPT@@@@@@@@E NJ^V)&X%)UTT5IV7 KE @@@@@@@A A"7Q,#&9VS%^MQ$E<DQ @@@@@@@@Z |
119 @X%-#9NRX52R$80:^1@Z@@@@@@@@F0FHY6>R$9JR$9ION''(PF0@@@@@@@A<A 5ABT)FS$9D=KR13C1<@@@@@@@@)@WUCND*Q$9NQM"T!!XP8)@@@@@@@@K E2 |
119 @X%-#9NRX52R$80:^1@Z@@@@@@@@F0FHY6>R$9JR$9ION''(PF0@@@@@@@A<A 5ABT)FS$9D=KR13C1<@@@@@@@@)@WUCND*Q$9NQM"T!!XP8)@@@@@@@@K E2 |
120 O4RQ$9FQ$9@2G%8JK @@@@@@@CLA\S2D$9D9M)BS]!!1]BSL@@@@@@@@7@W@5LXP6J2\2]"P"VP 7@@@@@@@@O U+R3@*I2T#HA0&N5 RO @@@@@@@D LPF%( |
120 O4RQ$9FQ$9@2G%8JK @@@@@@@CLA\S2D$9D9M)BS]!!1]BSL@@@@@@@@7@W@5LXP6J2\2]"P"VP 7@@@@@@@@O U+R3@*I2T#HA0&N5 RO @@@@@@@D LPF%( |
121 YVQ W59]VU 4CD @@@@@@@AGFP4F@PDA@PDA@PDFCQ%G@@@@@@@@K41TUEQTUEQTUEQTUEQLK0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
121 YVQ W59]VU 4CD @@@@@@@AGFP4F@PDA@PDA@PDFCQ%G@@@@@@@@K41TUEQTUEQTUEQTUEQLK0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
138 " |
138 " |
139 |
139 |
140 <resource: #image> |
140 <resource: #image> |
141 |
141 |
142 ^Icon |
142 ^Icon |
143 constantNamed:#'Psiware::SystemManagement class restartSearchBarIcon' |
143 constantNamed:#'Psiware::SystemManagement class restartSearchBarIcon' |
144 ifAbsentPut:[(Depth24Image new) width: 20; height: 20; photometric:(#rgb); bitsPerSample:(#[8 8 8]); samplesPerPixel:(3); bits:(ByteArray fromPackedString:' |
144 ifAbsentPut:[(Depth24Image new) width: 20; height: 20; photometric:(#rgb); bitsPerSample:(#[8 8 8]); samplesPerPixel:(3); bits:(ByteArray fromPackedString:' |
145 @@@@@@@@@@@@@@@@@@@@@@@@?>SX?>''V?>;)?>O!!?>G]?>WY@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@?=3\:[>''5;JF/Y-.+XY),(U. |
145 @@@@@@@@@@@@@@@@@@@@@@@@?>SX?>''V?>;)?>O!!?>G]?>WY@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@?=3\:[>''5;JF/Y-.+XY),(U. |
146 6JZK?=J1?>V<>.+I@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@?>?'':+:!!19]U6*-Q?]Y/?>RC?>*!!?>F_>+=939UL2Y!!L>MJT??W[@@@@@@@@@@@@@@@@@@@@ |
146 6JZK?=J1?>V<>.+I@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@?>?'':+:!!19]U6*-Q?]Y/?>RC?>*!!?>F_>+=939UL2Y!!L>MJT??W[@@@@@@@@@@@@@@@@@@@@ |
147 @@@@??[-=\^&1IEP=<Q[?>1/?=5$?=52?>NT?=^Q?>BP?>FG>;1]6JEO8;^H?]3I@@@@@@@@@@@@@@@@@@@@?\*95Y-)<+!!$??.F?>)17+-U8,E40Y-.09I) |
147 @@@@??[-=\^&1IEP=<Q[?>1/?=5$?=52?>NT?=^Q?>BP?>FG>;1]6JEO8;^H?]3I@@@@@@@@@@@@@@@@@@@@?\*95Y-)<+!!$??.F?>)17+-U8,E40Y-.09I) |
148 :Z1-?=I??=)8?<1.>K597;NL??K,@@@@@@@@@@@@?=#M6I>B>+:@?>2U=,]]5[IN7,^C5LB[<MWL?]#O=,BZ7)=\>;Y[??FP?=>O1YEW8<B$;=WH@@@@@@@@ |
148 :Z1-?=I??=)8?<1.>K597;NL??K,@@@@@@@@@@@@?=#M6I>B>+:@?>2U=,]]5[IN7,^C5LB[<MWL?]#O=,BZ7)=\>;Y[??FP?=>O1YEW8<B$;=WH@@@@@@@@ |
149 >,"%8Z:A?>N#?>._5KA$9-JW7=+FX6M+V%U3"''*T0Y>V4ZA7595T=;1"?=&D?=&L,W(93IU\:KE9=LBG9[Q9;K1<?=^R:K591*-6??''[@@@@RE%37>7?=?/? |
149 >,"%8Z:A?>N#?>._5KA$9-JW7=+FX6M+V%U3"''*T0Y>V4ZA7595T=;1"?=&D?=&L,W(93IU\:KE9=LBG9[Q9;K1<?=^R:K591*-6??''[@@@@RE%37>7?=?/? |
172 " |
172 " |
173 |
173 |
174 <resource: #image> |
174 <resource: #image> |
175 |
175 |
176 ^Icon |
176 ^Icon |
177 constantNamed:#'Psiware::SystemManagement class searchNextIcon' |
177 constantNamed:#'Psiware::SystemManagement class searchNextIcon' |
178 ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:' |
178 ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:' |
179 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZE)ZZ@@@@@@@@@@@@@@@ |
179 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ZE)ZZ@@@@@@@@@@@@@@@ |
180 @@@@@@AFF XA@PXUQ @@@@@@@@@@@@@@@@@*@Q5G^WX6E0D*@@@@@@@@@@@@@@@,AVQ?\&1#W&X8@20@@@@@@@@@@@A[@U==\F-"VUQOUSLAV0@@@@@@@@@@ |
180 @@@@@@AFF XA@PXUQ @@@@@@@@@@@@@@@@@*@Q5G^WX6E0D*@@@@@@@@@@@@@@@,AVQ?\&1#W&X8@20@@@@@@@@@@@A[@U==\F-"VUQOUSLAV0@@@@@@@@@@ |
181 G19-D <NCP0KB!!@7D1<@@@@@@@@@ ]MT5JY&Y&Y&Y%RLR4G @@@@@@@H\A WL $)&Y&Y&RF35B@X\@@@@@@@BK@XA1WA"X&Y&XE#T:P@FK@@@@@@@@# !!H |
181 G19-D <NCP0KB!!@7D1<@@@@@@@@@ ]MT5JY&Y&Y&Y%RLR4G @@@@@@@H\A WL $)&Y&Y&RF35B@X\@@@@@@@BK@XA1WA"X&Y&XE#T:P@FK@@@@@@@@# !!H |
182 ]F$<II&YH3H>N2 H# @@@@@@@@@''GG)*Y2$9NRIDO4DQHP@@@@@@@@@@!!@EP[6U]I"UIQTL.@XP@@@@@@@@@@@ALAD-.XE]VS$(/@$0@@@@@@@@@@@@@@EDA |
182 ]F$<II&YH3H>N2 H# @@@@@@@@@''GG)*Y2$9NRIDO4DQHP@@@@@@@@@@!!@EP[6U]I"UIQTL.@XP@@@@@@@@@@@ALAD-.XE]VS$(/@$0@@@@@@@@@@@@@@EDA |
183 FSQ!!VC@T@UD@@@@@@@@@@@@@@@@@#R,I@PDIJ84@@@@@@@@@@@@@@@@@@@@@%)^W% @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
183 FSQ!!VC@T@UD@@@@@@@@@@@@@@@@@#R,I@PDIJ84@@@@@@@@@@@@@@@@@@@@@%)^W% @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
198 " |
198 " |
199 |
199 |
200 <resource: #image> |
200 <resource: #image> |
201 |
201 |
202 ^Icon |
202 ^Icon |
203 constantNamed:#'Psiware::SystemManagement class searchPreviousIcon' |
203 constantNamed:#'Psiware::SystemManagement class searchPreviousIcon' |
204 ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:' |
204 ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:' |
205 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%)^W% @@@@@@@@@@@@@@ |
205 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%)^W% @@@@@@@@@@@@@@ |
206 @@@@@@BMJ0$A@P$+#P@@@@@@@@@@@@@@@@AQ@Q$4XU 0E@EQ@@@@@@@@@@@@@@ALAD-.XE]VS$(/@$0@@@@@@@@@@@BD@UA/YU4&IT%EP28A!!@@@@@@@@@@@ |
206 @@@@@@BMJ0$A@P$+#P@@@@@@@@@@@@@@@@AQ@Q$4XU 0E@EQ@@@@@@@@@@@@@@ALAD-.XE]VS$(/@$0@@@@@@@@@@@BD@UA/YU4&IT%EP28A!!@@@@@@@@@@@ |
207 I11:Z&\)NS$"QC=ADRD@@@@@@@@@# !!H]F$<II&YH3H>N2 H# @@@@@@@H,A GE\FI"Y&Y VMS)@@X,@@@@@@@BG@XE3HIJY&Y&Y$!!,=P FG@@@@@@@@ ]M |
207 I11:Z&\)NS$"QC=ADRD@@@@@@@@@# !!H]F$<II&YH3H>N2 H# @@@@@@@H,A GE\FI"Y&Y VMS)@@X,@@@@@@@BG@XE3HIJY&Y&Y$!!,=P FG@@@@@@@@ ]M |
208 T5JY&Y&Y&Y%RLR4G @@@@@@@@@_G&4RC08MC@,JDC\SG0@@@@@@@@@@V0E__WA+X%%TS5T3@U,@@@@@@@@@@@@,AVQ?\&1#W&X8@20@@@@@@@@@@@@@@B(A |
208 T5JY&Y&Y&Y%RLR4G @@@@@@@@@_G&4RC08MC@,JDC\SG0@@@@@@@@@@V0E__WA+X%%TS5T3@U,@@@@@@@@@@@@,AVQ?\&1#W&X8@20@@@@@@@@@@@@@@B(A |
209 GT]9]#XW@R(@@@@@@@@@@@@@@@@@Q!!(F@PDFETX@@@@@@@@@@@@@@@@@@@@@ZE)ZZ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
209 GT]9]#XW@R(@@@@@@@@@@@@@@@@@Q!!(F@PDFETX@@@@@@@@@@@@@@@@@@@@@ZE)ZZ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
224 " |
224 " |
225 |
225 |
226 <resource: #image> |
226 <resource: #image> |
227 |
227 |
228 ^Icon |
228 ^Icon |
229 constantNamed:#'Psiware::SystemManagement class searchToolBarIcon' |
229 constantNamed:#'Psiware::SystemManagement class searchToolBarIcon' |
230 ifAbsentPut:[(Depth24Image new) width: 22; height: 22; photometric:(#rgb); bitsPerSample:(#[8 8 8]); samplesPerPixel:(3); bits:(ByteArray fromPackedString:' |
230 ifAbsentPut:[(Depth24Image new) width: 22; height: 22; photometric:(#rgb); bitsPerSample:(#[8 8 8]); samplesPerPixel:(3); bits:(ByteArray fromPackedString:' |
231 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
231 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
232 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
232 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
233 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@4][>4][>@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
233 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@4][>4][>@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
234 @@@@@@@@@@@@@@@@@@@@@@@@@@@@;>#8/L#+!!:KS!!:KS/,'',;>''9@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2];>^)WH |
234 @@@@@@@@@@@@@@@@@@@@@@@@@@@@;>#8/L#+!!:KS!!:KS/,'',;>''9@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2];>^)WH |
235 NE:+KU*:J5&9NE6*_I#K4^S>@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@4][>RV3DLER"SWR6$K#0#;[.SGJ4L5"''UG_N4][>@@@@ |
235 NE:+KU*:J5&9NE6*_I#K4^S>@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@4][>RV3DLER"SWR6$K#0#;[.SGJ4L5"''UG_N4][>@@@@ |
261 " |
261 " |
262 |
262 |
263 <resource: #image> |
263 <resource: #image> |
264 |
264 |
265 ^Icon |
265 ^Icon |
266 constantNamed:#'Psiware::SystemManagement class warningSearchBarIcon' |
266 constantNamed:#'Psiware::SystemManagement class warningSearchBarIcon' |
267 ifAbsentPut:[(Depth24Image new) width: 22; height: 19; photometric:(#rgb); bitsPerSample:(#[8 8 8]); samplesPerPixel:(3); bits:(ByteArray fromPackedString:' |
267 ifAbsentPut:[(Depth24Image new) width: 22; height: 19; photometric:(#rgb); bitsPerSample:(#[8 8 8]); samplesPerPixel:(3); bits:(ByteArray fromPackedString:' |
268 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@?:.+<Y"P??C\@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>_;?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
268 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@?:.+<Y"P??C\@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>_;?@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
269 @@@@?]SZ)5]X.6!! -HM2??''*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@?>39-7*B4H&G>[N+%%MJ>\#A@@@@@@@@ |
269 @@@@?]SZ)5]X.6!! -HM2??''*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@?>39-7*B4H&G>[N+%%MJ>\#A@@@@@@@@ |
270 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<+R?*U1&?=CN?>W^4HJ@+FY$?>+"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
270 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@<+R?*U1&?=CN?>W^4HJ@+FY$?>+"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ |
271 @@@@@@@@@@@@@@@@@@@@?>G_)U!!^>Z^->,B><+"4?*^-%C8?;;Z+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@??#1-(E;.65+?<#H |
271 @@@@@@@@@@@@@@@@@@@@?>G_)U!!^>Z^->,B><+"4?*^-%C8?;;Z+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@??#1-(E;.65+?<#H |
272 ?=_T?=GP?::65W-=(EQF?>WQ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@?\#D*VAY?;61<;"0;,C@6J^+;*"0>ZN$&CX)6(-:@@@@@@@@ |
272 ?=_T?=GP?::65W-=(EQF?>WQ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@?\#D*VAY?;61<;"0;,C@6J^+;*"0>ZN$&CX)6(-:@@@@@@@@ |
296 Tools::InternationalLanguageTranslationEditor open |
296 Tools::InternationalLanguageTranslationEditor open |
297 " |
297 " |
298 |
298 |
299 <resource: #canvas> |
299 <resource: #canvas> |
300 |
300 |
301 ^ |
301 ^ |
302 #(FullSpec |
302 #(FullSpec |
303 name: windowSpec |
303 name: windowSpec |
304 window: |
304 window: |
305 (WindowSpec |
305 (WindowSpec |
306 label: 'InternationalLanguageTranslationEditor' |
306 label: 'InternationalLanguageTranslationEditor' |
307 name: 'InternationalLanguageTranslationEditor' |
307 name: 'InternationalLanguageTranslationEditor' |
308 min: (Point 10 10) |
308 min: (Point 10 10) |
309 bounds: (Rectangle 0 0 774 610) |
309 bounds: (Rectangle 0 0 774 610) |
310 menu: mainMenu |
310 menu: mainMenu |
311 ) |
311 ) |
312 component: |
312 component: |
313 (SpecCollection |
313 (SpecCollection |
314 collection: ( |
314 collection: ( |
315 (MenuPanelSpec |
315 (MenuPanelSpec |
316 name: 'ToolBar' |
316 name: 'ToolBar' |
317 layout: (LayoutFrame 0 0 0 0 0 1 30 0) |
317 layout: (LayoutFrame 0 0 0 0 0 1 30 0) |
318 menu: menuToolBar |
318 menu: menuToolBar |
319 textDefault: true |
319 textDefault: true |
320 ) |
320 ) |
321 (VariableVerticalPanelSpec |
321 (VariableVerticalPanelSpec |
322 name: 'TranslationsVariableVerticalPanel' |
322 name: 'TranslationsVariableVerticalPanel' |
323 layout: (LayoutFrame 0 0 30 0 0 1 -32 1) |
323 layout: (LayoutFrame 0 0 30 0 0 1 -32 1) |
324 component: |
324 component: |
325 (SpecCollection |
325 (SpecCollection |
326 collection: ( |
326 collection: ( |
327 (DataSetSpec |
327 (DataSetSpec |
328 name: 'KeyStringAndLanguageSelectionTable' |
328 name: 'KeyStringAndLanguageSelectionTable' |
329 model: selectedKeyRow |
329 model: selectedKeyRow |
330 menu: keyStringAndLanguageSelectionTableMenu |
330 menu: keyStringAndLanguageSelectionTableMenu |
331 hasHorizontalScrollBar: true |
331 hasHorizontalScrollBar: true |
332 hasVerticalScrollBar: true |
332 hasVerticalScrollBar: true |
333 dataList: keyStringAndLanguageSelectionTable |
333 dataList: keyStringAndLanguageSelectionTable |
334 columnHolder: keyStringAndLanguageSelectionTableColumnDescriptionHolder |
334 columnHolder: keyStringAndLanguageSelectionTableColumnDescriptionHolder |
335 beDependentOfRows: true |
335 beDependentOfRows: true |
336 columnAdaptor: yourself |
336 columnAdaptor: yourself |
337 postBuildCallback: postBuildDataSet: |
337 postBuildCallback: postBuildDataSet: |
338 ) |
338 ) |
339 (VariableVerticalPanelSpec |
339 (VariableVerticalPanelSpec |
340 name: 'VariableVerticalPanel1' |
340 name: 'VariableVerticalPanel1' |
341 component: |
341 component: |
342 (SpecCollection |
342 (SpecCollection |
343 collection: ( |
343 collection: ( |
344 (ViewSpec |
344 (ViewSpec |
345 name: 'Box1' |
345 name: 'Box1' |
346 component: |
346 component: |
347 (SpecCollection |
347 (SpecCollection |
348 collection: ( |
348 collection: ( |
349 (LabelSpec |
349 (LabelSpec |
350 label: 'Original String (Key):' |
350 label: 'Original String (Key):' |
351 name: 'Label2' |
351 name: 'Label2' |
352 layout: (LayoutFrame 0 0 -2 0 0 1 28 0) |
352 layout: (LayoutFrame 0 0 -2 0 0 1 28 0) |
353 translateLabel: true |
353 translateLabel: true |
354 adjust: left |
354 adjust: left |
355 ) |
355 ) |
356 (TextEditorSpec |
356 (TextEditorSpec |
357 name: 'OriginalText' |
357 name: 'OriginalText' |
358 layout: (LayoutFrame 0 0 27 0 0 1 -2 1) |
358 layout: (LayoutFrame 0 0 27 0 0 1 -2 1) |
359 model: originalTextHolder |
359 model: originalTextHolder |
360 hasHorizontalScrollBar: true |
360 hasHorizontalScrollBar: true |
361 hasVerticalScrollBar: true |
361 hasVerticalScrollBar: true |
362 modifiedChannel: originalTextModifiedHolder |
362 modifiedChannel: originalTextModifiedHolder |
363 acceptCallBack: languageTextAccepted |
363 acceptCallBack: languageTextAccepted |
364 ) |
364 ) |
365 ) |
365 ) |
366 |
366 |
367 ) |
367 ) |
368 ) |
368 ) |
369 (ViewSpec |
369 (ViewSpec |
370 name: 'Box3' |
370 name: 'Box3' |
371 component: |
371 component: |
372 (SpecCollection |
372 (SpecCollection |
373 collection: ( |
373 collection: ( |
374 (LabelSpec |
374 (LabelSpec |
375 label: 'Select Another Language as example:' |
375 label: 'Select Another Language as example:' |
376 name: 'Label3' |
376 name: 'Label3' |
377 layout: (LayoutFrame 0 0 -6 0 0 1 24 0) |
377 layout: (LayoutFrame 0 0 -6 0 0 1 24 0) |
378 translateLabel: true |
378 translateLabel: true |
379 adjust: left |
379 adjust: left |
380 ) |
380 ) |
381 (ComboBoxSpec |
381 (ComboBoxSpec |
382 name: 'ComboBox1' |
382 name: 'ComboBox1' |
383 layout: (LayoutFrame 197 0 -2 0 322 0 18 0) |
383 layout: (LayoutFrame 197 0 -2 0 322 0 18 0) |
384 model: exampleLanguageSelectionHolder |
384 model: exampleLanguageSelectionHolder |
385 immediateAccept: false |
385 immediateAccept: false |
386 acceptOnLeave: true |
386 acceptOnLeave: true |
387 acceptOnLostFocus: true |
387 acceptOnLostFocus: true |
388 acceptOnPointerLeave: false |
388 acceptOnPointerLeave: false |
389 comboList: shownLanguages |
389 comboList: shownLanguages |
390 useIndex: false |
390 useIndex: false |
391 ) |
391 ) |
392 (TextEditorSpec |
392 (TextEditorSpec |
393 name: 'ExampleLanguageText' |
393 name: 'ExampleLanguageText' |
394 layout: (LayoutFrame 0 0 30 0 0 1 0 1) |
394 layout: (LayoutFrame 0 0 30 0 0 1 0 1) |
395 model: exampleLanguageTextHolder |
395 model: exampleLanguageTextHolder |
396 hasHorizontalScrollBar: true |
396 hasHorizontalScrollBar: true |
397 hasVerticalScrollBar: true |
397 hasVerticalScrollBar: true |
398 isReadOnly: true |
398 isReadOnly: true |
399 ) |
399 ) |
400 ) |
400 ) |
401 |
401 |
402 ) |
402 ) |
403 ) |
403 ) |
404 (ViewSpec |
404 (ViewSpec |
405 name: 'Box2' |
405 name: 'Box2' |
406 component: |
406 component: |
407 (SpecCollection |
407 (SpecCollection |
408 collection: ( |
408 collection: ( |
409 (LabelSpec |
409 (LabelSpec |
410 label: 'Translated String:' |
410 label: 'Translated String:' |
411 name: 'Label1' |
411 name: 'Label1' |
412 layout: (LayoutFrame 0 0 0 0 0 1 30 0) |
412 layout: (LayoutFrame 0 0 0 0 0 1 30 0) |
413 translateLabel: true |
413 translateLabel: true |
414 adjust: left |
414 adjust: left |
415 ) |
415 ) |
416 (TextEditorSpec |
416 (TextEditorSpec |
417 name: 'LanguageText' |
417 name: 'LanguageText' |
418 layout: (LayoutFrame 0 0 30 0 0 1 0 1) |
418 layout: (LayoutFrame 0 0 30 0 0 1 0 1) |
419 model: languageTextHolder |
419 model: languageTextHolder |
420 hasHorizontalScrollBar: true |
420 hasHorizontalScrollBar: true |
421 hasVerticalScrollBar: true |
421 hasVerticalScrollBar: true |
422 acceptChannel: languageTextAcceptHolder |
422 acceptChannel: languageTextAcceptHolder |
423 modifiedChannel: languageTextModifiedHolder |
423 modifiedChannel: languageTextModifiedHolder |
424 acceptCallBack: languageTextAccepted |
424 acceptCallBack: languageTextAccepted |
425 postBuildCallback: languageEditorBuilt: |
425 postBuildCallback: languageEditorBuilt: |
426 ) |
426 ) |
427 (ActionButtonSpec |
427 (ActionButtonSpec |
428 label: 'Paste Previous' |
428 label: 'Paste Previous' |
429 name: 'pastePreviousTranslation' |
429 name: 'pastePreviousTranslation' |
430 layout: (LayoutOrigin 0 0.83085250338295 0 0.03448275862069) |
430 layout: (LayoutOrigin 0 0.83085250338295 0 0.03448275862069) |
431 translateLabel: true |
431 translateLabel: true |
432 model: pastePreviousTranslationInLanguageText |
432 model: pastePreviousTranslationInLanguageText |
433 enableChannel: pastePreviousTranslationEnableHolder |
433 enableChannel: pastePreviousTranslationEnableHolder |
434 disabledLogo: 'Paste Previous' |
434 disabledLogo: 'Paste Previous' |
435 ) |
435 ) |
436 (ActionButtonSpec |
436 (ActionButtonSpec |
437 label: 'Paste Original' |
437 label: 'Paste Original' |
438 name: 'Button1' |
438 name: 'Button1' |
439 layout: (LayoutOrigin -95 0.83085250338295 0 0.03448275862069) |
439 layout: (LayoutOrigin -95 0.83085250338295 0 0.03448275862069) |
440 translateLabel: true |
440 translateLabel: true |
441 model: pasteOriginalInLanguageText |
441 model: pasteOriginalInLanguageText |
442 enableChannel: pasteOriginalEnableHolder |
442 enableChannel: pasteOriginalEnableHolder |
443 disabledLogo: 'Paste Original' |
443 disabledLogo: 'Paste Original' |
444 ) |
444 ) |
445 ) |
445 ) |
446 |
446 |
447 ) |
447 ) |
448 ) |
448 ) |
449 ) |
449 ) |
450 |
450 |
451 ) |
451 ) |
452 handles: (Any 0.33333333333333 0.66666666666667 1.0) |
452 handles: (Any 0.33333333333333 0.66666666666667 1.0) |
453 ) |
453 ) |
454 ) |
454 ) |
455 |
455 |
456 ) |
456 ) |
457 handles: (Any 0.5 1.0) |
457 handles: (Any 0.5 1.0) |
458 postBuildCallback: postBuildTranslationsPanel: |
458 postBuildCallback: postBuildTranslationsPanel: |
459 ) |
459 ) |
460 (ViewSpec |
460 (ViewSpec |
461 name: 'SearchBox' |
461 name: 'SearchBox' |
462 layout: (LayoutFrame 0 0 -32 1 0 1 0 1) |
462 layout: (LayoutFrame 0 0 -32 1 0 1 0 1) |
463 level: -1 |
463 level: -1 |
464 visibilityChannel: searchBoxVisible |
464 visibilityChannel: searchBoxVisible |
465 component: |
465 component: |
466 (SpecCollection |
466 (SpecCollection |
467 collection: ( |
467 collection: ( |
468 (ActionButtonSpec |
468 (ActionButtonSpec |
469 label: 'closeSearchBarIcon' |
469 label: 'closeSearchBarIcon' |
470 name: 'closeSearchBarButton' |
470 name: 'closeSearchBarButton' |
471 layout: (LayoutFrame 4 0 5 0 25 0 26 0) |
471 layout: (LayoutFrame 4 0 5 0 25 0 26 0) |
472 hasCharacterOrientedLabel: false |
472 hasCharacterOrientedLabel: false |
473 translateLabel: true |
473 translateLabel: true |
474 model: closeSearchBar |
474 model: closeSearchBar |
475 ) |
475 ) |
476 (LabelSpec |
476 (LabelSpec |
477 label: 'Search:' |
477 label: 'Search:' |
478 name: 'SearchLabel' |
478 name: 'SearchLabel' |
479 layout: (LayoutFrame 30 0 5 0 81 0 27 0) |
479 layout: (LayoutFrame 30 0 5 0 81 0 27 0) |
480 translateLabel: true |
480 translateLabel: true |
481 adjust: right |
481 adjust: right |
482 ) |
482 ) |
483 (InputFieldSpec |
483 (InputFieldSpec |
484 name: 'SearchEntryField' |
484 name: 'SearchEntryField' |
485 layout: (LayoutFrame 87 0 5 0 244 0 27 0) |
485 layout: (LayoutFrame 87 0 5 0 244 0 27 0) |
486 model: searchTextHolder |
486 model: searchTextHolder |
487 immediateAccept: true |
487 immediateAccept: true |
488 acceptOnReturn: true |
488 acceptOnReturn: true |
489 acceptOnTab: true |
489 acceptOnTab: true |
490 acceptOnLostFocus: true |
490 acceptOnLostFocus: true |
491 modifiedChannel: searchTextModifiedHolder |
491 modifiedChannel: searchTextModifiedHolder |
492 acceptOnPointerLeave: false |
492 acceptOnPointerLeave: false |
493 postBuildCallback: postBuildSearchTextView: |
493 postBuildCallback: postBuildSearchTextView: |
494 ) |
494 ) |
495 (ActionButtonSpec |
495 (ActionButtonSpec |
496 label: 'searchNextIcon' |
496 label: 'searchNextIcon' |
497 name: 'SearchNextButton' |
497 name: 'SearchNextButton' |
498 layout: (LayoutFrame 251 0 5 0 272 0 26 0) |
498 layout: (LayoutFrame 251 0 5 0 272 0 26 0) |
499 hasCharacterOrientedLabel: false |
499 hasCharacterOrientedLabel: false |
500 translateLabel: true |
500 translateLabel: true |
501 model: searchNextText |
501 model: searchNextText |
502 ) |
502 ) |
503 (ActionButtonSpec |
503 (ActionButtonSpec |
504 label: 'searchPreviousIcon' |
504 label: 'searchPreviousIcon' |
505 name: 'searchPreviousButton' |
505 name: 'searchPreviousButton' |
506 layout: (LayoutFrame 279 0 5 0 300 0 26 0) |
506 layout: (LayoutFrame 279 0 5 0 300 0 26 0) |
507 hasCharacterOrientedLabel: false |
507 hasCharacterOrientedLabel: false |
508 translateLabel: true |
508 translateLabel: true |
509 model: searchPreviousText |
509 model: searchPreviousText |
510 ) |
510 ) |
511 (CheckBoxSpec |
511 (CheckBoxSpec |
512 label: 'Ignore case' |
512 label: 'Ignore case' |
513 name: 'IgnoreCaseCheckBox' |
513 name: 'IgnoreCaseCheckBox' |
514 layout: (LayoutFrame 309 0 5 0 505 0 27 0) |
514 layout: (LayoutFrame 309 0 5 0 505 0 27 0) |
515 model: ignoreCaseHolder |
515 model: ignoreCaseHolder |
516 translateLabel: true |
516 translateLabel: true |
517 ) |
517 ) |
518 (LabelSpec |
518 (LabelSpec |
519 label: 'SearchBarImageInfoLabel' |
519 label: 'SearchBarImageInfoLabel' |
520 name: 'SearchBarImageInfoLabel' |
520 name: 'SearchBarImageInfoLabel' |
521 layout: (LayoutFrame 511 0 5 0 535 0 27 0) |
521 layout: (LayoutFrame 511 0 5 0 535 0 27 0) |
522 hasCharacterOrientedLabel: false |
522 hasCharacterOrientedLabel: false |
523 translateLabel: true |
523 translateLabel: true |
524 labelChannel: searchBarImageInfoLabelHolder |
524 labelChannel: searchBarImageInfoLabelHolder |
525 ) |
525 ) |
526 (LabelSpec |
526 (LabelSpec |
527 label: 'SearchBarInfoLabel' |
527 label: 'SearchBarInfoLabel' |
528 name: 'SearchBarInfoLabel' |
528 name: 'SearchBarInfoLabel' |
529 layout: (LayoutFrame 538 0 5 0 816 0 27 0) |
529 layout: (LayoutFrame 538 0 5 0 816 0 27 0) |
530 translateLabel: true |
530 translateLabel: true |
531 labelChannel: searchBarInfoLabelHolder |
531 labelChannel: searchBarInfoLabelHolder |
532 adjust: left |
532 adjust: left |
533 ) |
533 ) |
534 ) |
534 ) |
535 |
535 |
536 ) |
536 ) |
537 postBuildCallback: postBuildSearchBoxView: |
537 postBuildCallback: postBuildSearchBoxView: |
538 ) |
538 ) |
539 ) |
539 ) |
540 |
540 |
541 ) |
541 ) |
542 ) |
542 ) |
543 ! ! |
543 ! ! |
544 |
544 |
545 !InternationalLanguageTranslationEditor class methodsFor:'menu specs'! |
545 !InternationalLanguageTranslationEditor class methodsFor:'menu specs'! |
546 |
546 |
556 (Menu new fromLiteralArrayEncoding:(Tools::InternationalLanguageTranslationEditor keyStringAndLanguageSelectionTableMenu)) startUp |
556 (Menu new fromLiteralArrayEncoding:(Tools::InternationalLanguageTranslationEditor keyStringAndLanguageSelectionTableMenu)) startUp |
557 " |
557 " |
558 |
558 |
559 <resource: #menu> |
559 <resource: #menu> |
560 |
560 |
561 ^ |
561 ^ |
562 #(Menu |
562 #(Menu |
563 ( |
563 ( |
564 (MenuItem |
564 (MenuItem |
565 label: 'Set Current NameSpace' |
565 label: 'Set Current NameSpace' |
566 itemValue: changeLastNameSpace |
566 itemValue: changeLastNameSpace |
567 translateLabel: true |
567 translateLabel: true |
568 ) |
568 ) |
569 (MenuItem |
569 (MenuItem |
570 label: 'Search String in Current NameSpace' |
570 label: 'Search String in Current NameSpace' |
571 itemValue: searchStringInLastNameSpace |
571 itemValue: searchStringInLastNameSpace |
572 translateLabel: true |
572 translateLabel: true |
573 ) |
573 ) |
574 (MenuItem |
574 (MenuItem |
575 label: '-' |
575 label: '-' |
576 isVisible: #false |
576 isVisible: #false |
577 ) |
577 ) |
578 (MenuItem |
578 (MenuItem |
579 label: 'Set Current Package' |
579 label: 'Set Current Package' |
580 itemValue: changeLastPackage |
580 itemValue: changeLastPackage |
581 translateLabel: true |
581 translateLabel: true |
582 isVisible: #false |
582 isVisible: #false |
583 ) |
583 ) |
584 (MenuItem |
584 (MenuItem |
585 label: 'Search String in Current Package' |
585 label: 'Search String in Current Package' |
586 itemValue: searchStringInLastPackage |
586 itemValue: searchStringInLastPackage |
587 translateLabel: true |
587 translateLabel: true |
588 isVisible: #false |
588 isVisible: #false |
589 ) |
589 ) |
590 ) |
590 ) |
591 nil |
591 nil |
592 nil |
592 nil |
593 ) |
593 ) |
594 ! |
594 ! |
595 |
595 |
596 mainMenu |
596 mainMenu |
597 "This resource specification was automatically generated |
597 "This resource specification was automatically generated |
605 (Menu new fromLiteralArrayEncoding:(Tools::InternationalLanguageTranslationEditor mainMenu)) startUp |
605 (Menu new fromLiteralArrayEncoding:(Tools::InternationalLanguageTranslationEditor mainMenu)) startUp |
606 " |
606 " |
607 |
607 |
608 <resource: #menu> |
608 <resource: #menu> |
609 |
609 |
610 ^ |
610 ^ |
611 #(Menu |
611 #(Menu |
612 ( |
612 ( |
613 (MenuItem |
613 (MenuItem |
614 label: 'File' |
614 label: 'File' |
615 translateLabel: true |
615 translateLabel: true |
616 submenu: |
616 submenu: |
617 (Menu |
617 (Menu |
618 ( |
618 ( |
619 (MenuItem |
619 (MenuItem |
620 label: 'New' |
620 label: 'New' |
621 itemValue: menuNew |
621 itemValue: menuNew |
622 translateLabel: true |
622 translateLabel: true |
623 ) |
623 ) |
624 (MenuItem |
624 (MenuItem |
625 label: '-' |
625 label: '-' |
626 ) |
626 ) |
627 (MenuItem |
627 (MenuItem |
628 label: 'Open Resources for Package or Project...' |
628 label: 'Open Resources for Package or Project...' |
629 itemValue: menuOpenByPackage |
629 itemValue: menuOpenByPackage |
630 translateLabel: true |
630 translateLabel: true |
631 ) |
631 ) |
632 (MenuItem |
632 (MenuItem |
633 label: 'Open Resource File...' |
633 label: 'Open Resource File...' |
634 itemValue: menuOpen |
634 itemValue: menuOpen |
635 translateLabel: true |
635 translateLabel: true |
636 ) |
636 ) |
637 (MenuItem |
637 (MenuItem |
638 label: '-' |
638 label: '-' |
639 ) |
639 ) |
640 (MenuItem |
640 (MenuItem |
641 label: 'Save All Resource Files' |
641 label: 'Save All Resource Files' |
642 itemValue: menuSaveAll |
642 itemValue: menuSaveAll |
643 translateLabel: true |
643 translateLabel: true |
644 ) |
644 ) |
645 (MenuItem |
645 (MenuItem |
646 label: 'Save Resource File' |
646 label: 'Save Resource File' |
647 itemValue: menuSave |
647 itemValue: menuSave |
648 translateLabel: true |
648 translateLabel: true |
649 ) |
649 ) |
650 (MenuItem |
650 (MenuItem |
651 label: 'Save Resource File As...' |
651 label: 'Save Resource File As...' |
652 itemValue: menuSaveAs |
652 itemValue: menuSaveAs |
653 translateLabel: true |
653 translateLabel: true |
654 ) |
654 ) |
655 (MenuItem |
655 (MenuItem |
656 label: '-' |
656 label: '-' |
657 ) |
657 ) |
658 (MenuItem |
658 (MenuItem |
659 label: 'Import existing translations from file...' |
659 label: 'Import existing translations from file...' |
660 itemValue: importExistingTranslationsFromFile |
660 itemValue: importExistingTranslationsFromFile |
661 translateLabel: true |
661 translateLabel: true |
662 ) |
662 ) |
663 (MenuItem |
663 (MenuItem |
664 label: '-' |
664 label: '-' |
665 ) |
665 ) |
666 (MenuItem |
666 (MenuItem |
667 label: 'Set Current NameSpace' |
667 label: 'Set Current NameSpace' |
668 itemValue: changeLastNameSpace |
668 itemValue: changeLastNameSpace |
669 translateLabel: true |
669 translateLabel: true |
670 ) |
670 ) |
671 (MenuItem |
671 (MenuItem |
672 label: 'Set Current Package' |
672 label: 'Set Current Package' |
673 itemValue: changeLastPackage |
673 itemValue: changeLastPackage |
674 translateLabel: true |
674 translateLabel: true |
675 isVisible: #false |
675 isVisible: #false |
676 ) |
676 ) |
677 (MenuItem |
677 (MenuItem |
678 label: '-' |
678 label: '-' |
679 ) |
679 ) |
680 (MenuItem |
680 (MenuItem |
681 label: 'Exit' |
681 label: 'Exit' |
682 itemValue: closeRequest |
682 itemValue: closeRequest |
683 translateLabel: true |
683 translateLabel: true |
684 ) |
684 ) |
685 ) |
685 ) |
686 nil |
686 nil |
687 nil |
687 nil |
688 ) |
688 ) |
689 ) |
689 ) |
690 (MenuItem |
690 (MenuItem |
691 label: 'View' |
691 label: 'View' |
692 translateLabel: true |
692 translateLabel: true |
693 submenu: |
693 submenu: |
694 (Menu |
694 (Menu |
695 ( |
695 ( |
696 (MenuItem |
696 (MenuItem |
697 label: 'Show Missing Translations Only' |
697 label: 'Show Missing Translations Only' |
698 translateLabel: true |
698 translateLabel: true |
699 indication: showMissingTranslationsOnly |
699 indication: showMissingTranslationsOnly |
700 ) |
700 ) |
701 (MenuItem |
701 (MenuItem |
702 label: '-' |
702 label: '-' |
703 ) |
703 ) |
704 (MenuItem |
704 (MenuItem |
705 label: 'Shown Languages' |
705 label: 'Shown Languages' |
706 translateLabel: true |
706 translateLabel: true |
707 submenuChannel: shownLanguagesMenu |
707 submenuChannel: shownLanguagesMenu |
708 ) |
708 ) |
709 ) |
709 ) |
710 nil |
710 nil |
711 nil |
711 nil |
712 ) |
712 ) |
713 ) |
713 ) |
714 (MenuItem |
714 (MenuItem |
715 label: 'Languages' |
715 label: 'Languages' |
716 translateLabel: true |
716 translateLabel: true |
717 submenu: |
717 submenu: |
718 (Menu |
718 (Menu |
719 ( |
719 ( |
720 (MenuItem |
720 (MenuItem |
721 label: 'Add Language...' |
721 label: 'Add Language...' |
722 itemValue: addLanguage |
722 itemValue: addLanguage |
723 translateLabel: true |
723 translateLabel: true |
724 ) |
724 ) |
725 (MenuItem |
725 (MenuItem |
726 label: 'Remove Language...' |
726 label: 'Remove Language...' |
727 itemValue: removeLanguage |
727 itemValue: removeLanguage |
728 translateLabel: true |
728 translateLabel: true |
729 ) |
729 ) |
730 ) |
730 ) |
731 nil |
731 nil |
732 nil |
732 nil |
733 ) |
733 ) |
734 ) |
734 ) |
735 (MenuItem |
735 (MenuItem |
736 label: 'Translations' |
736 label: 'Translations' |
737 translateLabel: true |
737 translateLabel: true |
738 submenu: |
738 submenu: |
739 (Menu |
739 (Menu |
740 ( |
740 ( |
741 (MenuItem |
741 (MenuItem |
742 label: 'Add Translation...' |
742 label: 'Add Translation...' |
743 itemValue: addTranslation |
743 itemValue: addTranslation |
744 translateLabel: true |
744 translateLabel: true |
745 ) |
745 ) |
746 (MenuItem |
746 (MenuItem |
747 label: 'Remove Translation...' |
747 label: 'Remove Translation...' |
748 itemValue: removeTranslation |
748 itemValue: removeTranslation |
749 translateLabel: true |
749 translateLabel: true |
750 ) |
750 ) |
751 (MenuItem |
751 (MenuItem |
752 label: '-' |
752 label: '-' |
753 ) |
753 ) |
754 (MenuItem |
754 (MenuItem |
755 label: 'Extract from Class...' |
755 label: 'Extract from Class...' |
756 itemValue: extractTranslationsFromClass |
756 itemValue: extractTranslationsFromClass |
757 translateLabel: true |
757 translateLabel: true |
758 ) |
758 ) |
759 (MenuItem |
759 (MenuItem |
760 label: 'Extract from Project...' |
760 label: 'Extract from Project...' |
761 itemValue: extractTranslationsFromProject |
761 itemValue: extractTranslationsFromProject |
762 translateLabel: true |
762 translateLabel: true |
763 ) |
763 ) |
764 (MenuItem |
764 (MenuItem |
765 label: 'Extract from NameSpace...' |
765 label: 'Extract from NameSpace...' |
766 itemValue: extractTranslationsFromNameSpace |
766 itemValue: extractTranslationsFromNameSpace |
767 translateLabel: true |
767 translateLabel: true |
768 ) |
768 ) |
769 (MenuItem |
769 (MenuItem |
770 label: '-' |
770 label: '-' |
771 ) |
771 ) |
772 (MenuItem |
772 (MenuItem |
773 label: 'Run Application and Collect Translations...' |
773 label: 'Run Application and Collect Translations...' |
774 itemValue: runApplicationAndCollectTranslations |
774 itemValue: runApplicationAndCollectTranslations |
775 translateLabel: true |
775 translateLabel: true |
776 ) |
776 ) |
777 ) |
777 ) |
778 nil |
778 nil |
779 nil |
779 nil |
780 ) |
780 ) |
781 ) |
781 ) |
782 (MenuItem |
782 (MenuItem |
783 label: 'Preferences' |
783 label: 'Preferences' |
784 translateLabel: true |
784 translateLabel: true |
785 submenu: |
785 submenu: |
786 (Menu |
786 (Menu |
787 ( |
787 ( |
788 (MenuItem |
788 (MenuItem |
789 label: 'Auto Accept Changes' |
789 label: 'Auto Accept Changes' |
790 translateLabel: true |
790 translateLabel: true |
791 indication: autoAcceptHolder |
791 indication: autoAcceptHolder |
792 ) |
792 ) |
793 (MenuItem |
793 (MenuItem |
794 label: 'Search For Similar Translations' |
794 label: 'Search For Similar Translations' |
795 translateLabel: true |
795 translateLabel: true |
796 indication: searchForSimilarTranslationEnableHolder |
796 indication: searchForSimilarTranslationEnableHolder |
797 ) |
797 ) |
798 (MenuItem |
798 (MenuItem |
799 label: 'Always Write UTF8' |
799 label: 'Always Write UTF8' |
800 translateLabel: true |
800 translateLabel: true |
801 indication: alwaysWriteUTF8Holder |
801 indication: alwaysWriteUTF8Holder |
802 ) |
802 ) |
803 ) |
803 ) |
804 nil |
804 nil |
805 nil |
805 nil |
806 ) |
806 ) |
807 ) |
807 ) |
808 (MenuItem |
808 (MenuItem |
809 label: 'Help' |
809 label: 'Help' |
810 translateLabel: true |
810 translateLabel: true |
811 startGroup: right |
811 startGroup: right |
812 submenu: |
812 submenu: |
813 (Menu |
813 (Menu |
814 ( |
814 ( |
815 (MenuItem |
815 (MenuItem |
816 label: 'Documentation' |
816 label: 'Documentation' |
817 itemValue: openDocumentation |
817 itemValue: openDocumentation |
818 translateLabel: true |
818 translateLabel: true |
819 ) |
819 ) |
820 (MenuItem |
820 (MenuItem |
821 label: '-' |
821 label: '-' |
822 ) |
822 ) |
823 (MenuItem |
823 (MenuItem |
824 label: 'About this Application...' |
824 label: 'About this Application...' |
825 itemValue: openAboutThisApplication |
825 itemValue: openAboutThisApplication |
826 translateLabel: true |
826 translateLabel: true |
827 ) |
827 ) |
828 ) |
828 ) |
829 nil |
829 nil |
830 nil |
830 nil |
831 ) |
831 ) |
832 ) |
832 ) |
833 ) |
833 ) |
834 nil |
834 nil |
835 nil |
835 nil |
836 ) |
836 ) |
837 ! |
837 ! |
838 |
838 |
839 menuItemsEditLanguage |
839 menuItemsEditLanguage |
840 "This resource specification was automatically generated |
840 "This resource specification was automatically generated |
848 (Menu new fromLiteralArrayEncoding:(Tools::InternationalLanguageTranslationEditor menu)) startUp |
848 (Menu new fromLiteralArrayEncoding:(Tools::InternationalLanguageTranslationEditor menu)) startUp |
849 " |
849 " |
850 |
850 |
851 <resource: #menu> |
851 <resource: #menu> |
852 |
852 |
853 ^ |
853 ^ |
854 #(Menu |
854 #(Menu |
855 ( |
855 ( |
856 (MenuItem |
856 (MenuItem |
857 enabled: pastePreviousTranslationEnableHolder |
857 enabled: pastePreviousTranslationEnableHolder |
858 label: 'Paste Previous Translation' |
858 label: 'Paste Previous Translation' |
859 itemValue: pastePreviousTranslationInLanguageText |
859 itemValue: pastePreviousTranslationInLanguageText |
860 nameKey: pastePreviousTranslationInLanguageText |
860 nameKey: pastePreviousTranslationInLanguageText |
861 translateLabel: true |
861 translateLabel: true |
862 ) |
862 ) |
863 ) |
863 ) |
864 nil |
864 nil |
865 nil |
865 nil |
866 ) |
866 ) |
867 ! |
867 ! |
868 |
868 |
869 menuToolBar |
869 menuToolBar |
870 "This resource specification was automatically generated |
870 "This resource specification was automatically generated |
878 (Menu new fromLiteralArrayEncoding:(Tools::InternationalLanguageTranslationEditor menuToolBar)) startUp |
878 (Menu new fromLiteralArrayEncoding:(Tools::InternationalLanguageTranslationEditor menuToolBar)) startUp |
879 " |
879 " |
880 |
880 |
881 <resource: #menu> |
881 <resource: #menu> |
882 |
882 |
883 ^ |
883 ^ |
884 #(Menu |
884 #(Menu |
885 ( |
885 ( |
886 (MenuItem |
886 (MenuItem |
887 label: 'Save' |
887 label: 'Save' |
888 itemValue: menuSave |
888 itemValue: menuSave |
889 translateLabel: true |
889 translateLabel: true |
890 labelImage: (ResourceRetriever XPToolbarIconLibrary saveImageIcon) |
890 labelImage: (ResourceRetriever XPToolbarIconLibrary saveImageIcon) |
891 ) |
891 ) |
892 (MenuItem |
892 (MenuItem |
893 label: '-' |
893 label: '-' |
894 ) |
894 ) |
895 (MenuItem |
895 (MenuItem |
896 label: 'Add Translation' |
896 label: 'Add Translation' |
897 itemValue: addTranslation |
897 itemValue: addTranslation |
898 translateLabel: true |
898 translateLabel: true |
899 labelImage: (ResourceRetriever XPToolbarIconLibrary newRowIcon) |
899 labelImage: (ResourceRetriever XPToolbarIconLibrary newRowIcon) |
900 ) |
900 ) |
901 (MenuItem |
901 (MenuItem |
902 label: 'Remove Translation' |
902 label: 'Remove Translation' |
903 itemValue: removeTranslation |
903 itemValue: removeTranslation |
904 translateLabel: true |
904 translateLabel: true |
905 labelImage: (ResourceRetriever XPToolbarIconLibrary removeRowIcon) |
905 labelImage: (ResourceRetriever XPToolbarIconLibrary removeRowIcon) |
906 ) |
906 ) |
907 (MenuItem |
907 (MenuItem |
908 label: '-' |
908 label: '-' |
909 ) |
909 ) |
910 (MenuItem |
910 (MenuItem |
911 label: 'Search' |
911 label: 'Search' |
912 itemValue: search |
912 itemValue: search |
913 translateLabel: true |
913 translateLabel: true |
914 shortcutKey: Ctrlf |
914 shortcutKey: Ctrlf |
915 labelImage: (ResourceRetriever #'Tools::InternationalLanguageTranslationEditor' searchToolBarIcon) |
915 labelImage: (ResourceRetriever #'Tools::InternationalLanguageTranslationEditor' searchToolBarIcon) |
916 ) |
916 ) |
917 (MenuItem |
917 (MenuItem |
918 label: '' |
918 label: '' |
919 ) |
919 ) |
920 (MenuItem |
920 (MenuItem |
921 label: 'Stop Application' |
921 label: 'Stop Application' |
922 itemValue: stopApplication |
922 itemValue: stopApplication |
923 translateLabel: true |
923 translateLabel: true |
924 isVisible: stopApplicationIconVisibleHolder |
924 isVisible: stopApplicationIconVisibleHolder |
925 labelImage: (ResourceRetriever XPToolbarIconLibrary stop16x16Icon) |
925 labelImage: (ResourceRetriever XPToolbarIconLibrary stop16x16Icon) |
926 ) |
926 ) |
927 ) |
927 ) |
928 nil |
928 nil |
929 nil |
929 nil |
930 ) |
930 ) |
931 ! ! |
931 ! ! |
932 |
932 |
933 !InternationalLanguageTranslationEditor class methodsFor:'startup'! |
933 !InternationalLanguageTranslationEditor class methodsFor:'startup'! |
934 |
934 |
936 |fn| |
936 |fn| |
937 |
937 |
938 fn := aFilename asFilename. |
938 fn := aFilename asFilename. |
939 |
939 |
940 self new |
940 self new |
941 allButOpen; |
941 allButOpen; |
942 readResourceFile:fn asLanguage:fn withoutSuffix baseName; |
942 readResourceFile:fn asLanguage:fn withoutSuffix baseName; |
943 openWindow. |
943 openWindow. |
944 ! ! |
944 ! ! |
945 |
945 |
946 !InternationalLanguageTranslationEditor class methodsFor:'tableColumns specs'! |
946 !InternationalLanguageTranslationEditor class methodsFor:'tableColumns specs'! |
947 |
947 |
948 keyTableColumn |
948 keyTableColumn |
958 |
958 |
959 <resource: #tableColumns> |
959 <resource: #tableColumns> |
960 |
960 |
961 ^#( |
961 ^#( |
962 (DataSetColumnSpec |
962 (DataSetColumnSpec |
963 label: 'Key' |
963 label: 'Key' |
964 labelButtonType: Button |
964 labelButtonType: Button |
965 minWidth: 50 |
965 minWidth: 50 |
966 model: keyStringInRow: |
966 model: keyStringInRow: |
967 ) |
967 ) |
968 ) |
968 ) |
969 ! |
969 ! |
970 |
970 |
971 languageTableColumn |
971 languageTableColumn |
981 |
981 |
982 <resource: #tableColumns> |
982 <resource: #tableColumns> |
983 |
983 |
984 ^#( |
984 ^#( |
985 (DataSetColumnSpec |
985 (DataSetColumnSpec |
986 label: lang |
986 label: lang |
987 labelButtonType: Button |
987 labelButtonType: Button |
988 minWidth: 50 |
988 minWidth: 50 |
989 editorType: None |
989 editorType: None |
990 model: columnInRow:at: |
990 model: columnInRow:at: |
991 backgroundSelector: getBackgroundForRow:rowNr:col: |
991 backgroundSelector: getBackgroundForRow:rowNr:col: |
992 ) |
992 ) |
993 ) |
993 ) |
994 ! ! |
994 ! ! |
995 |
995 |
996 !InternationalLanguageTranslationEditor methodsFor:'accessing'! |
996 !InternationalLanguageTranslationEditor methodsFor:'accessing'! |
997 |
997 |
998 currentSelectionIndex |
998 currentSelectionIndex |
999 |
999 |
1000 ^ self selectedKeyRow value |
1000 ^ self selectedKeyRow value |
1001 |
1001 |
1002 "Created: / 16-06-2007 / 09:04:11 / Administrador" |
1002 "Created: / 16-06-2007 / 09:04:11 / Administrador" |
1003 "Modified: / 19-06-2007 / 17:28:38 / Administrador" |
1003 "Modified: / 19-06-2007 / 17:28:38 / Administrador" |
1017 "Created: / 19-06-2007 / 16:39:44 / Administrador" |
1017 "Created: / 19-06-2007 / 16:39:44 / Administrador" |
1018 ! |
1018 ! |
1019 |
1019 |
1020 newLanguageText |
1020 newLanguageText |
1021 "/ languageEditor accept |
1021 "/ languageEditor accept |
1022 ^self languageTextHolder value isNil |
1022 ^self languageTextHolder value isNil |
1023 ifTrue:[''] |
1023 ifTrue:[''] |
1024 ifFalse:[self languageTextHolder value asCollectionOfLines first.] |
1024 ifFalse:[self languageTextHolder value asCollectionOfLines first.] |
1025 ! |
1025 ! |
1026 |
1026 |
1027 objectsList |
1027 objectsList |
1028 |
1028 |
1029 ^ keyStringsToLanguageMappings |
1029 ^ keyStringsToLanguageMappings |
1030 ! |
1030 ! |
1031 |
1031 |
1032 selectListIndex: rowIndex |
1032 selectListIndex: rowIndex |
1033 "/ |selection list| |
1033 "/ |selection list| |
1034 "/ list := self objectsList. |
1034 "/ list := self objectsList. |
1038 |
1038 |
1039 "Created: / 16-06-2007 / 09:06:46 / Administrador" |
1039 "Created: / 16-06-2007 / 09:06:46 / Administrador" |
1040 "Modified: / 22-06-2007 / 13:45:54 / Administrador" |
1040 "Modified: / 22-06-2007 / 13:45:54 / Administrador" |
1041 ! |
1041 ! |
1042 |
1042 |
1043 selectedKey |
1043 selectedKey |
1044 "Returns the current selected key if there is one row seleted. Otherwise, returns nil" |
1044 "Returns the current selected key if there is one row seleted. Otherwise, returns nil" |
1045 |rowSelectionIndex | |
1045 |rowSelectionIndex | |
1046 |
1046 |
1047 keyStringsToLanguageMappings isNil ifTrue:[^nil]. |
1047 keyStringsToLanguageMappings isNil ifTrue:[^nil]. |
1048 self selectedKeyRow value isNil ifTrue:[^nil]. |
1048 self selectedKeyRow value isNil ifTrue:[^nil]. |
1062 |
1062 |
1063 searchForSimilarTranslation |
1063 searchForSimilarTranslation |
1064 "Looks for a quite similar translation for the key and display a dialog with available options" |
1064 "Looks for a quite similar translation for the key and display a dialog with available options" |
1065 |similarTranslationsAssociations selectedTranslation key| |
1065 |similarTranslationsAssociations selectedTranslation key| |
1066 |
1066 |
1067 self shouldSearchForSimilarTranslation ifFalse:[^self]. |
1067 self shouldSearchForSimilarTranslation ifFalse:[^self]. |
1068 |
1068 |
1069 key := self selectedKey. |
1069 key := self selectedKey. |
1070 key isNil ifTrue:[^ self.]. |
1070 key isNil ifTrue:[^ self.]. |
1071 similarTranslationsAssociations := keyStringsToLanguageMappings searchForSimilarTranslation: key in: self currentLanguage. |
1071 similarTranslationsAssociations := keyStringsToLanguageMappings searchForSimilarTranslation: key in: self currentLanguage. |
1072 similarTranslationsAssociations isEmpty ifTrue:[^self]. |
1072 similarTranslationsAssociations isEmpty ifTrue:[^self]. |
1073 |
1073 |
1074 similarTranslationsAssociations := similarTranslationsAssociations associations inject: OrderedCollection new into:[:collection :association | |
1074 similarTranslationsAssociations := similarTranslationsAssociations associations inject: OrderedCollection new into:[:collection :association | |
1075 collection detect:[:selectedAssociation | |
1075 collection detect:[:selectedAssociation | |
1076 selectedAssociation value sameAs: association value] ifNone:[collection add: association]. |
1076 selectedAssociation value sameAs: association value] ifNone:[collection add: association]. |
1077 collection]. |
1077 collection]. |
1078 selectedTranslation := Dialog |
1078 selectedTranslation := Dialog |
1079 choose:'Choose one if you consider it´s usefull to translate: |
1079 choose:'Choose one if you consider it´s usefull to translate: |
1080 ', |
1080 ', |
1081 '<', key, '> ', (self currentExampleLanguageText ifNil:['']) |
1081 '<', key, '> ', (self currentExampleLanguageText ifNil:['']) |
1082 fromList: (similarTranslationsAssociations collect:[:each | '<', each key, '> ', each value]) |
1082 fromList: (similarTranslationsAssociations collect:[:each | '<', each key, '> ', each value]) |
1083 values: (similarTranslationsAssociations collect:[:each | each value]) |
1083 values: (similarTranslationsAssociations collect:[:each | each value]) |
1084 lines:10 |
1084 lines:10 |
1085 cancel: nil. |
1085 cancel: nil. |
1086 |
1086 |
1087 selectedTranslation notNil ifTrue:[self languageTextHolderValue: selectedTranslation]. |
1087 selectedTranslation notNil ifTrue:[self languageTextHolderValue: selectedTranslation]. |
1088 ! ! |
1088 ! ! |
1089 |
1089 |
1090 !InternationalLanguageTranslationEditor methodsFor:'aspects'! |
1090 !InternationalLanguageTranslationEditor methodsFor:'aspects'! |
1091 |
1091 |
1092 alwaysWriteUTF8Holder |
1092 alwaysWriteUTF8Holder |
1093 alwaysWriteUTF8Holder isNil ifTrue:[alwaysWriteUTF8Holder := true asValue]. |
1093 alwaysWriteUTF8Holder isNil ifTrue:[alwaysWriteUTF8Holder := true asValue]. |
1094 ^ alwaysWriteUTF8Holder |
1094 ^ alwaysWriteUTF8Holder |
1095 ! |
1095 ! |
1096 |
1096 |
1097 autoAcceptHolder |
1097 autoAcceptHolder |
1098 autoAcceptHolder isNil ifTrue:[autoAcceptHolder := true asValue]. |
1098 autoAcceptHolder isNil ifTrue:[autoAcceptHolder := true asValue]. |
1099 ^ autoAcceptHolder |
1099 ^ autoAcceptHolder |
1100 ! |
1100 ! |
1101 |
1101 |
1102 exampleLanguageSelectionHolder |
1102 exampleLanguageSelectionHolder |
1103 exampleLanguageSelectionHolder isNil ifTrue:[ |
1103 exampleLanguageSelectionHolder isNil ifTrue:[ |
1104 exampleLanguageSelectionHolder := self exampleLanguageByDefault asValue. |
1104 exampleLanguageSelectionHolder := self exampleLanguageByDefault asValue. |
1105 exampleLanguageSelectionHolder addDependent:self. |
1105 exampleLanguageSelectionHolder addDependent:self. |
1106 ]. |
1106 ]. |
1107 ^ exampleLanguageSelectionHolder |
1107 ^ exampleLanguageSelectionHolder |
1108 ! |
1108 ! |
1109 |
1109 |
1110 exampleLanguageTextHolder |
1110 exampleLanguageTextHolder |
1111 exampleLanguageTextHolder isNil ifTrue:[ |
1111 exampleLanguageTextHolder isNil ifTrue:[ |
1112 exampleLanguageTextHolder := '' asValue. |
1112 exampleLanguageTextHolder := '' asValue. |
1113 ]. |
1113 ]. |
1114 ^ exampleLanguageTextHolder. |
1114 ^ exampleLanguageTextHolder. |
1115 ! |
1115 ! |
1116 |
1116 |
1117 ignoreCaseHolder |
1117 ignoreCaseHolder |
1118 |
1118 |
1119 ignoreCaseHolder isNil ifTrue:[ |
1119 ignoreCaseHolder isNil ifTrue:[ |
1120 ignoreCaseHolder := false asValue. |
1120 ignoreCaseHolder := false asValue. |
1121 "/ if your app needs to be notified of changes, uncomment one of the lines below: |
1121 "/ if your app needs to be notified of changes, uncomment one of the lines below: |
1122 "/ ignoreCaseHolder addDependent:self. |
1122 "/ ignoreCaseHolder addDependent:self. |
1123 ignoreCaseHolder onChangeSend:#ignoreCaseHolderChanged to:self. |
1123 ignoreCaseHolder onChangeSend:#ignoreCaseHolderChanged to:self. |
1124 |
1124 |
1125 ]. |
1125 ]. |
1126 ^ ignoreCaseHolder. |
1126 ^ ignoreCaseHolder. |
1127 |
1127 |
1128 "Created: / 16-06-2007 / 06:45:04 / Administrador" |
1128 "Created: / 16-06-2007 / 06:45:04 / Administrador" |
1129 "Modified: / 16-06-2007 / 19:32:15 / Administrador" |
1129 "Modified: / 16-06-2007 / 19:32:15 / Administrador" |
1130 ! |
1130 ! |
1131 |
1131 |
1132 keyStringAndLanguageSelectionTable |
1132 keyStringAndLanguageSelectionTable |
1133 keyStringsToLanguageMappings isNil ifTrue:[ |
1133 keyStringsToLanguageMappings isNil ifTrue:[ |
1134 keyStringsToLanguageMappings := KeyStringsToLanguageMappings new. |
1134 keyStringsToLanguageMappings := KeyStringsToLanguageMappings new. |
1135 ]. |
1135 ]. |
1136 ^ keyStringsToLanguageMappings. |
1136 ^ keyStringsToLanguageMappings. |
1137 ! |
1137 ! |
1138 |
1138 |
1139 keyStringAndLanguageSelectionTableColumnDescriptionHolder |
1139 keyStringAndLanguageSelectionTableColumnDescriptionHolder |
1140 keyStringAndLanguageSelectionTableColumnDescriptionHolder isNil ifTrue:[ |
1140 keyStringAndLanguageSelectionTableColumnDescriptionHolder isNil ifTrue:[ |
1141 keyStringAndLanguageSelectionTableColumnDescriptionHolder := ValueHolder new. |
1141 keyStringAndLanguageSelectionTableColumnDescriptionHolder := ValueHolder new. |
1142 keyStringAndLanguageSelectionTableColumnDescriptionHolder value:(self keyStringAndLanguageSelectionTableColumnDescription). |
1142 keyStringAndLanguageSelectionTableColumnDescriptionHolder value:(self keyStringAndLanguageSelectionTableColumnDescription). |
1143 ]. |
1143 ]. |
1144 ^ keyStringAndLanguageSelectionTableColumnDescriptionHolder. |
1144 ^ keyStringAndLanguageSelectionTableColumnDescriptionHolder. |
1145 ! |
1145 ! |
1146 |
1146 |
1147 languageAtCol:colNr |
1147 languageAtCol:colNr |
1150 |
1150 |
1151 languageShownHolderFor:lang |
1151 languageShownHolderFor:lang |
1152 |holder| |
1152 |holder| |
1153 |
1153 |
1154 languageShownHolders isNil ifTrue:[ |
1154 languageShownHolders isNil ifTrue:[ |
1155 languageShownHolders := Dictionary new |
1155 languageShownHolders := Dictionary new |
1156 ]. |
1156 ]. |
1157 holder := languageShownHolders |
1157 holder := languageShownHolders |
1158 at:lang |
1158 at:lang |
1159 ifAbsentPut:[ |
1159 ifAbsentPut:[ |
1160 |h| |
1160 |h| |
1161 |
1161 |
1162 h := true asValue. |
1162 h := true asValue. |
1163 h onChangeEvaluate:[ |
1163 h onChangeEvaluate:[ |
1164 h value ifTrue:[ |
1164 h value ifTrue:[ |
1165 self enableLanguageDisplayFor:lang |
1165 self enableLanguageDisplayFor:lang |
1166 ] ifFalse:[ |
1166 ] ifFalse:[ |
1167 self disableLanguageDisplayFor:lang |
1167 self disableLanguageDisplayFor:lang |
1168 ]. |
1168 ]. |
1169 ]. |
1169 ]. |
1170 h |
1170 h |
1171 ]. |
1171 ]. |
1172 ^ holder. |
1172 ^ holder. |
1173 ! |
1173 ! |
1174 |
1174 |
1175 languageTextAcceptHolder |
1175 languageTextAcceptHolder |
1176 languageTextAcceptHolder isNil ifTrue:[ |
1176 languageTextAcceptHolder isNil ifTrue:[ |
1177 languageTextAcceptHolder := false asValue. |
1177 languageTextAcceptHolder := false asValue. |
1178 ]. |
1178 ]. |
1179 ^ languageTextAcceptHolder. |
1179 ^ languageTextAcceptHolder. |
1180 ! |
1180 ! |
1181 |
1181 |
1182 languageTextHolder |
1182 languageTextHolder |
1183 languageTextHolder isNil ifTrue:[ |
1183 languageTextHolder isNil ifTrue:[ |
1184 languageTextHolder := '' asValue. |
1184 languageTextHolder := '' asValue. |
1185 ]. |
1185 ]. |
1186 ^ languageTextHolder. |
1186 ^ languageTextHolder. |
1187 ! |
1187 ! |
1188 |
1188 |
1189 languageTextModifiedHolder |
1189 languageTextModifiedHolder |
1190 languageTextModifiedHolder isNil ifTrue:[ |
1190 languageTextModifiedHolder isNil ifTrue:[ |
1191 languageTextModifiedHolder := false asValue. |
1191 languageTextModifiedHolder := false asValue. |
1192 ]. |
1192 ]. |
1193 ^ languageTextModifiedHolder. |
1193 ^ languageTextModifiedHolder. |
1194 ! |
1194 ! |
1195 |
1195 |
1196 languagesList |
1196 languagesList |
1197 languagesList isNil ifTrue:[ |
1197 languagesList isNil ifTrue:[ |
1198 languagesList := List withAll:(self keyStringAndLanguageSelectionTable languages). |
1198 languagesList := List withAll:(self keyStringAndLanguageSelectionTable languages). |
1199 ]. |
1199 ]. |
1200 ^ languagesList. |
1200 ^ languagesList. |
1201 ! |
1201 ! |
1202 |
1202 |
1203 originalTextHolder |
1203 originalTextHolder |
1204 originalTextHolder isNil ifTrue:[ |
1204 originalTextHolder isNil ifTrue:[ |
1205 originalTextHolder := '' asValue. |
1205 originalTextHolder := '' asValue. |
1206 ]. |
1206 ]. |
1207 ^ originalTextHolder. |
1207 ^ originalTextHolder. |
1208 ! |
1208 ! |
1209 |
1209 |
1210 originalTextModifiedHolder |
1210 originalTextModifiedHolder |
1211 originalTextModifiedHolder isNil ifTrue:[ |
1211 originalTextModifiedHolder isNil ifTrue:[ |
1212 originalTextModifiedHolder := false asValue. |
1212 originalTextModifiedHolder := false asValue. |
1213 ]. |
1213 ]. |
1214 ^ originalTextModifiedHolder. |
1214 ^ originalTextModifiedHolder. |
1215 ! |
1215 ! |
1216 |
1216 |
1217 pasteOriginalEnableHolder |
1217 pasteOriginalEnableHolder |
1218 pasteOriginalEnableHolder isNil ifTrue:[pasteOriginalEnableHolder := false asValue]. |
1218 pasteOriginalEnableHolder isNil ifTrue:[pasteOriginalEnableHolder := false asValue]. |
1219 ^ pasteOriginalEnableHolder |
1219 ^ pasteOriginalEnableHolder |
1220 ! |
1220 ! |
1221 |
1221 |
1222 pastePreviousTranslationEnableHolder |
1222 pastePreviousTranslationEnableHolder |
1223 pastePreviousTranslationEnableHolder isNil ifTrue:[pastePreviousTranslationEnableHolder := false asValue]. |
1223 pastePreviousTranslationEnableHolder isNil ifTrue:[pastePreviousTranslationEnableHolder := false asValue]. |
1224 ^ pastePreviousTranslationEnableHolder |
1224 ^ pastePreviousTranslationEnableHolder |
1225 ! |
1225 ! |
1226 |
1226 |
1227 searchBarImageInfoLabelHolder |
1227 searchBarImageInfoLabelHolder |
1228 |
1228 |
1229 searchBarImageInfoLabelHolder isNil ifTrue:[ |
1229 searchBarImageInfoLabelHolder isNil ifTrue:[ |
1230 searchBarImageInfoLabelHolder := nil asValue . |
1230 searchBarImageInfoLabelHolder := nil asValue . |
1231 ]. |
1231 ]. |
1232 ^ searchBarImageInfoLabelHolder. |
1232 ^ searchBarImageInfoLabelHolder. |
1233 |
1233 |
1234 "Created: / 16-06-2007 / 10:06:28 / Administrador" |
1234 "Created: / 16-06-2007 / 10:06:28 / Administrador" |
1235 ! |
1235 ! |
1236 |
1236 |
1237 searchBarInfoLabelHolder |
1237 searchBarInfoLabelHolder |
1238 |
1238 |
1239 searchBarInfoLabelHolder isNil ifTrue:[ |
1239 searchBarInfoLabelHolder isNil ifTrue:[ |
1240 searchBarInfoLabelHolder := '' asValue . |
1240 searchBarInfoLabelHolder := '' asValue . |
1241 ]. |
1241 ]. |
1242 ^ searchBarInfoLabelHolder. |
1242 ^ searchBarInfoLabelHolder. |
1243 |
1243 |
1244 "Created: / 16-06-2007 / 06:20:49 / Administrador" |
1244 "Created: / 16-06-2007 / 06:20:49 / Administrador" |
1245 ! |
1245 ! |
1246 |
1246 |
1247 searchBoxVisible |
1247 searchBoxVisible |
1248 |
1248 |
1249 searchBoxVisible isNil ifTrue:[ |
1249 searchBoxVisible isNil ifTrue:[ |
1250 searchBoxVisible := false asValue. |
1250 searchBoxVisible := false asValue. |
1251 ]. |
1251 ]. |
1252 ^ searchBoxVisible. |
1252 ^ searchBoxVisible. |
1253 |
1253 |
1254 "Created: / 15-06-2007 / 18:15:52 / Administrador" |
1254 "Created: / 15-06-2007 / 18:15:52 / Administrador" |
1255 ! |
1255 ! |
1256 |
1256 |
1257 searchForSimilarTranslationEnableHolder |
1257 searchForSimilarTranslationEnableHolder |
1258 searchForSimilarTranslationEnableHolder isNil |
1258 searchForSimilarTranslationEnableHolder isNil |
1259 ifTrue:[searchForSimilarTranslationEnableHolder := true asValue]. |
1259 ifTrue:[searchForSimilarTranslationEnableHolder := true asValue]. |
1260 ^ searchForSimilarTranslationEnableHolder |
1260 ^ searchForSimilarTranslationEnableHolder |
1261 ! |
1261 ! |
1262 |
1262 |
1263 searchTextHolder |
1263 searchTextHolder |
1264 |
1264 |
1265 searchTextHolder isNil ifTrue:[ |
1265 searchTextHolder isNil ifTrue:[ |
1266 searchTextHolder := ValueHolder new. |
1266 searchTextHolder := ValueHolder new. |
1267 "/ if your app needs to be notified of changes, uncomment one of the lines below: |
1267 "/ if your app needs to be notified of changes, uncomment one of the lines below: |
1268 "/ userSelectedHolder addDependent:self. |
1268 "/ userSelectedHolder addDependent:self. |
1269 "/ userSelectedHolder onChangeSend:#searchTextHolderChanged to:self. |
1269 "/ userSelectedHolder onChangeSend:#searchTextHolderChanged to:self. |
1270 ]. |
1270 ]. |
1271 ^ searchTextHolder. |
1271 ^ searchTextHolder. |
1274 ! |
1274 ! |
1275 |
1275 |
1276 searchTextModifiedHolder |
1276 searchTextModifiedHolder |
1277 |
1277 |
1278 searchTextModifiedHolder isNil ifTrue:[ |
1278 searchTextModifiedHolder isNil ifTrue:[ |
1279 searchTextModifiedHolder := false asValue . |
1279 searchTextModifiedHolder := false asValue . |
1280 "/ if your app needs to be notified of changes, uncomment one of the lines below: |
1280 "/ if your app needs to be notified of changes, uncomment one of the lines below: |
1281 "/ searchTextModifiedHolder addDependent:self. |
1281 "/ searchTextModifiedHolder addDependent:self. |
1282 searchTextModifiedHolder onChangeSend:#searchTextModifiedHolderChanged to:self. |
1282 searchTextModifiedHolder onChangeSend:#searchTextModifiedHolderChanged to:self. |
1283 ]. |
1283 ]. |
1284 ^ searchTextModifiedHolder. |
1284 ^ searchTextModifiedHolder. |
1286 "Created: / 15-06-2007 / 18:07:19 / Administrador" |
1286 "Created: / 15-06-2007 / 18:07:19 / Administrador" |
1287 ! |
1287 ! |
1288 |
1288 |
1289 selectedKeyRow |
1289 selectedKeyRow |
1290 selectedKeyRow isNil ifTrue:[ |
1290 selectedKeyRow isNil ifTrue:[ |
1291 selectedKeyRow := ValueHolder new. |
1291 selectedKeyRow := ValueHolder new. |
1292 selectedKeyRow onChangeSend:#selectionChanged to:self. |
1292 selectedKeyRow onChangeSend:#selectionChanged to:self. |
1293 ]. |
1293 ]. |
1294 ^ selectedKeyRow. |
1294 ^ selectedKeyRow. |
1295 ! |
1295 ! |
1296 |
1296 |
1297 showMissingTranslationsOnly |
1297 showMissingTranslationsOnly |
1298 showMissingTranslationsOnly isNil ifTrue:[ |
1298 showMissingTranslationsOnly isNil ifTrue:[ |
1299 showMissingTranslationsOnly := false asValue. |
1299 showMissingTranslationsOnly := false asValue. |
1300 showMissingTranslationsOnly onChangeSend:#showMissingTranslationsOnlyChanged to:self. |
1300 showMissingTranslationsOnly onChangeSend:#showMissingTranslationsOnlyChanged to:self. |
1301 ]. |
1301 ]. |
1302 ^ showMissingTranslationsOnly. |
1302 ^ showMissingTranslationsOnly. |
1303 ! |
1303 ! |
1304 |
1304 |
1305 shownLanguages |
1305 shownLanguages |
1306 shownLanguages isNil ifTrue:[ |
1306 shownLanguages isNil ifTrue:[ |
1307 shownLanguages := List new. |
1307 shownLanguages := List new. |
1308 shownLanguages addAll:(self languagesList). |
1308 shownLanguages addAll:(self languagesList). |
1309 shownLanguages onChangeSend:#shownLanguagesChanged to:self. |
1309 shownLanguages onChangeSend:#shownLanguagesChanged to:self. |
1310 ]. |
1310 ]. |
1311 ^ shownLanguages. |
1311 ^ shownLanguages. |
1312 ! |
1312 ! |
1313 |
1313 |
1314 stopApplicationIconVisibleHolder |
1314 stopApplicationIconVisibleHolder |
1315 stopApplicationIconVisibleHolder isNil ifTrue:[ |
1315 stopApplicationIconVisibleHolder isNil ifTrue:[ |
1316 stopApplicationIconVisibleHolder := false asValue. |
1316 stopApplicationIconVisibleHolder := false asValue. |
1317 ]. |
1317 ]. |
1318 ^ stopApplicationIconVisibleHolder. |
1318 ^ stopApplicationIconVisibleHolder. |
1319 ! ! |
1319 ! ! |
1320 |
1320 |
1321 !InternationalLanguageTranslationEditor methodsFor:'change & update'! |
1321 !InternationalLanguageTranslationEditor methodsFor:'change & update'! |
1326 self languageTextModifiedHolder value:true. |
1326 self languageTextModifiedHolder value:true. |
1327 ! |
1327 ! |
1328 |
1328 |
1329 update:something with:aParameter from:changedObject |
1329 update:something with:aParameter from:changedObject |
1330 changedObject == shownLanguages ifTrue:[ |
1330 changedObject == shownLanguages ifTrue:[ |
1331 self shownLanguagesChanged. |
1331 self shownLanguagesChanged. |
1332 ^ self. |
1332 ^ self. |
1333 ]. |
1333 ]. |
1334 changedObject == languageTextAcceptHolder ifTrue:[ |
1334 changedObject == languageTextAcceptHolder ifTrue:[ |
1335 self updateLanguageTextModification. |
1335 self updateLanguageTextModification. |
1336 ^ self. |
1336 ^ self. |
1337 ]. |
1337 ]. |
1338 changedObject == exampleLanguageSelectionHolder ifTrue:[ |
1338 changedObject == exampleLanguageSelectionHolder ifTrue:[ |
1339 self updateExampleLanguageText. |
1339 self updateExampleLanguageText. |
1340 ^ self. |
1340 ^ self. |
1341 ]. |
1341 ]. |
1342 changedObject == showMissingTranslationsOnly ifTrue:[ |
1342 changedObject == showMissingTranslationsOnly ifTrue:[ |
1343 self showMissingTranslationsOnlyChanged. |
1343 self showMissingTranslationsOnlyChanged. |
1344 ^ self. |
1344 ^ self. |
1345 ]. |
1345 ]. |
1346 ! |
1346 ! |
1347 |
1347 |
1348 updateCopyPreviousTranslationButtonEnabled |
1348 updateCopyPreviousTranslationButtonEnabled |
1349 |
1349 |
1350 self pastePreviousTranslationEnableHolder value: self shouldCopyPreviousTranslationButtonBeEnabled |
1350 self pastePreviousTranslationEnableHolder value: self shouldCopyPreviousTranslationButtonBeEnabled |
1354 |
1354 |
1355 self selectedKeyRow value isNil ifTrue:[^ self]. |
1355 self selectedKeyRow value isNil ifTrue:[^ self]. |
1356 self exampleLanguageTextHolder value:self currentExampleLanguageText |
1356 self exampleLanguageTextHolder value:self currentExampleLanguageText |
1357 ! |
1357 ! |
1358 |
1358 |
1359 updateKeyStringsToLanguageMappings |
1359 updateKeyStringsToLanguageMappings |
1360 |
1360 |
1361 keyStringsToLanguageMappings |
1361 keyStringsToLanguageMappings |
1362 at:lastSelectedKey |
1362 at:lastSelectedKey |
1363 language:lastLanguage |
1363 language:lastLanguage |
1364 put: self newLanguageText. |
1364 put: self newLanguageText. |
1365 ! |
1365 ! |
1366 |
1366 |
1367 updateLanguageAndKeySelection |
1367 updateLanguageAndKeySelection |
1368 |
1368 |
1369 self originalTextHolder value: self selectedKey. |
1369 self originalTextHolder value: self selectedKey. |
1370 self languageTextHolder value: (self languageTextFromSelectedKeyFor: self currentLanguage). |
1370 self languageTextHolder value: (self languageTextFromSelectedKeyFor: self currentLanguage). |
1371 lastLanguage := self currentLanguage. |
1371 lastLanguage := self currentLanguage. |
1372 lastSelectedKey := self selectedKey. |
1372 lastSelectedKey := self selectedKey. |
1373 ! |
1373 ! |
1374 |
1374 |
1375 updateLanguageTextModification |
1375 updateLanguageTextModification |
1376 self languageTextModifiedHolder value ifTrue:[ |
1376 self languageTextModifiedHolder value ifTrue:[ |
1377 (self autoAccept or:[Dialog confirm:'Accept changed translation ?']) ifTrue:[ |
1377 (self autoAccept or:[Dialog confirm:'Accept changed translation ?']) ifTrue:[ |
1378 self languageTextModifiedHolder value:false. |
1378 self languageTextModifiedHolder value:false. |
1379 self languageTextHolder value:languageEditor contents. |
1379 self languageTextHolder value:languageEditor contents. |
1380 lastLanguage notNil ifTrue:[self updateKeyStringsToLanguageMappings.] |
1380 lastLanguage notNil ifTrue:[self updateKeyStringsToLanguageMappings.] |
1381 ] |
1381 ] |
1382 ]. |
1382 ]. |
1383 ! |
1383 ! |
1384 |
1384 |
1385 updateOriginalTextModification |
1385 updateOriginalTextModification |
1386 |
1386 |
1387 |answer| |
1387 |answer| |
1388 |
1388 |
1389 self originalTextModifiedHolder value ifTrue:[ |
1389 self originalTextModifiedHolder value ifTrue:[ |
1390 answer := OptionBox |
1390 answer := OptionBox |
1391 request:'Accept changed original text (key) ?' |
1391 request:'Accept changed original text (key) ?' |
1392 label:'Original text (key) changed' |
1392 label:'Original text (key) changed' |
1393 image:(WarningBox iconBitmap) |
1393 image:(WarningBox iconBitmap) |
1394 buttonLabels:#('Cancel' 'Accept' 'Accept As New') |
1394 buttonLabels:#('Cancel' 'Accept' 'Accept As New') |
1395 values:#(nil #accept #acceptAsNew) |
1395 values:#(nil #accept #acceptAsNew) |
1396 default:#acceptAsNew. |
1396 default:#acceptAsNew. |
1397 |
1397 |
1398 answer isNil ifTrue:[^ self originalTextModifiedHolder value:false. ]. |
1398 answer isNil ifTrue:[^ self originalTextModifiedHolder value:false. ]. |
1399 answer == #accept ifTrue:[ |
1399 answer == #accept ifTrue:[ |
1400 self halt. ]. |
1400 self halt. ]. |
1401 answer == #acceptAsNew ifTrue:[ |
1401 answer == #acceptAsNew ifTrue:[ |
1402 self halt. ]. |
1402 self halt. ]. |
1403 ]. |
1403 ]. |
1404 ! |
1404 ! |
1405 |
1405 |
1406 updatePasteOriginalButtonEnabled |
1406 updatePasteOriginalButtonEnabled |
1407 |
1407 |
1408 self pasteOriginalEnableHolder value: self shouldPasteOriginalButtonBeEnabled |
1408 self pasteOriginalEnableHolder value: self shouldPasteOriginalButtonBeEnabled |
1416 |
1416 |
1417 val := '' asValue. |
1417 val := '' asValue. |
1418 box := Dialog new. |
1418 box := Dialog new. |
1419 (box addTextLabel:'Select or write the encoder') adjust:#left. |
1419 (box addTextLabel:'Select or write the encoder') adjust:#left. |
1420 box addVerticalSpace. |
1420 box addVerticalSpace. |
1421 characterCollection := CharacterEncoder supportedExternalEncodings |
1421 characterCollection := CharacterEncoder supportedExternalEncodings |
1422 inject: OrderedCollection new |
1422 inject: OrderedCollection new |
1423 into:[:collection :each | |
1423 into:[:collection :each | |
1424 collection add: each first; |
1424 collection add: each first; |
1425 yourself]. |
1425 yourself]. |
1426 (box addComboBoxOn:val) list: characterCollection. |
1426 (box addComboBoxOn:val) list: characterCollection. |
1427 box addOkButton. |
1427 box addOkButton. |
1428 box open. |
1428 box open. |
1429 ^val value |
1429 ^val value |
1430 ! |
1430 ! |
1432 requestEncoderStringFor: lang |
1432 requestEncoderStringFor: lang |
1433 "Returns an encoder string and updates the language's info" |
1433 "Returns an encoder string and updates the language's info" |
1434 |encoderString encoder| |
1434 |encoderString encoder| |
1435 encoderString := self requestEncoderDialog. |
1435 encoderString := self requestEncoderDialog. |
1436 encoderString notEmpty ifTrue:[ |
1436 encoderString notEmpty ifTrue:[ |
1437 encoder := CharacterEncoder encoderFor: encoderString ifAbsent:nil. |
1437 encoder := CharacterEncoder encoderFor: encoderString ifAbsent:nil. |
1438 encoder notNil ifTrue:[keyStringsToLanguageMappings atLanguage: lang putEncoder: encoder.]. |
1438 encoder notNil ifTrue:[keyStringsToLanguageMappings atLanguage: lang putEncoder: encoder.]. |
1439 ]. |
1439 ]. |
1440 ^encoderString |
1440 ^encoderString |
1441 ! |
1441 ! |
1442 |
1442 |
1443 requestFilename |
1443 requestFilename |
1444 |
1444 |
1445 |aFilename| |
1445 |aFilename| |
1446 |
1446 |
1447 aFilename := Dialog |
1447 aFilename := Dialog |
1448 requestFileName:(resources string:'Name of resource file:') |
1448 requestFileName:(resources string:'Name of resource file:') |
1449 default:nil |
1449 default:nil |
1450 pattern:'*.rs'. |
1450 pattern:'*.rs'. |
1451 |
1451 |
1452 aFilename isEmptyOrNil ifTrue:[^ nil ]. |
1452 aFilename isEmptyOrNil ifTrue:[^ nil ]. |
1453 ^aFilename asFilename |
1453 ^aFilename asFilename |
1454 ! |
1454 ! |
1455 |
1455 |
1456 requestFilenameFor: lang |
1456 requestFilenameFor: lang |
1457 "Returns a filename to save the language resource and updates the language's info" |
1457 "Returns a filename to save the language resource and updates the language's info" |
1458 |aFilename| |
1458 |aFilename| |
1459 |
1459 |
1460 aFilename := Dialog |
1460 aFilename := Dialog |
1461 requestFileName:(resources string:'Name of resource file to save %1:' with:lang asString) |
1461 requestFileName:(resources string:'Name of resource file to save %1:' with:lang asString) |
1462 default:nil |
1462 default:nil |
1463 pattern:'*.rs'. |
1463 pattern:'*.rs'. |
1464 |
1464 |
1465 aFilename isEmptyOrNil ifTrue:[^ nil ]. |
1465 aFilename isEmptyOrNil ifTrue:[^ nil ]. |
1466 keyStringsToLanguageMappings atLanguage: lang putFilename: aFilename. |
1466 keyStringsToLanguageMappings atLanguage: lang putFilename: aFilename. |
1467 ^aFilename asFilename |
1467 ^aFilename asFilename |
1468 ! |
1468 ! |
1469 |
1469 |
1470 requestLanguage |
1470 requestLanguage |
1471 ^ Dialog |
1471 ^ Dialog |
1472 choose:(resources string:'For which language ?') |
1472 choose:(resources string:'For which language ?') |
1473 fromList:languagesList |
1473 fromList:languagesList |
1474 lines:10. |
1474 lines:10. |
1475 ! |
1475 ! |
1476 |
1476 |
1477 requestLanguageToSave |
1477 requestLanguageToSave |
1478 ^ Dialog |
1478 ^ Dialog |
1479 choose:'Which language do you want to save?' |
1479 choose:'Which language do you want to save?' |
1480 fromList:languagesList |
1480 fromList:languagesList |
1481 lines:10 |
1481 lines:10 |
1482 ! |
1482 ! |
1483 |
1483 |
1484 requestPackage |
1484 requestPackage |
1485 |package allProjects projectsWithResources| |
1485 |package allProjects projectsWithResources| |
1486 |
1486 |
1487 allProjects := Smalltalk allProjectIDs. |
1487 allProjects := Smalltalk allProjectIDs. |
1488 projectsWithResources := allProjects |
1488 projectsWithResources := allProjects |
1489 select:[:pID | |
1489 select:[:pID | |
1490 |dir| |
1490 |dir| |
1491 dir := Smalltalk projectDirectoryForPackage:pID. |
1491 dir := Smalltalk projectDirectoryForPackage:pID. |
1492 (dir asFilename construct:'resources') exists |
1492 (dir asFilename construct:'resources') exists |
1493 ]. |
1493 ]. |
1494 |
1494 |
1495 package := Dialog |
1495 package := Dialog |
1496 requestProject:(resources string:'Name of Package:') |
1496 requestProject:(resources string:'Name of Package:') |
1497 from:projectsWithResources |
1497 from:projectsWithResources |
1498 initialAnswer:LastProject |
1498 initialAnswer:LastProject |
1499 suggestions:nil. |
1499 suggestions:nil. |
1500 |
1500 |
1501 package isEmptyOrNil ifTrue:[^ nil ]. |
1501 package isEmptyOrNil ifTrue:[^ nil ]. |
1502 LastProject := package. |
1502 LastProject := package. |
1503 ^ package |
1503 ^ package |
1504 ! ! |
1504 ! ! |
1519 |
1519 |
1520 closeRequest |
1520 closeRequest |
1521 "asks for permission before closing" |
1521 "asks for permission before closing" |
1522 |
1522 |
1523 self hasUnsavedChanges ifTrue:[ |
1523 self hasUnsavedChanges ifTrue:[ |
1524 (Dialog |
1524 (Dialog |
1525 confirm:(resources string:'Close without saving ?') |
1525 confirm:(resources string:'Close without saving ?') |
1526 default:false) ifFalse:[ |
1526 default:false) ifFalse:[ |
1527 ^ self |
1527 ^ self |
1528 ] |
1528 ] |
1529 ]. |
1529 ]. |
1530 |
1530 |
1531 super closeRequest |
1531 super closeRequest |
1532 ! |
1532 ! |
1533 |
1533 |
1599 |key index| |
1599 |key index| |
1600 |
1600 |
1601 key := Dialog request:'New Key:'. |
1601 key := Dialog request:'New Key:'. |
1602 key isEmpty ifTrue:[^self]. |
1602 key isEmpty ifTrue:[^self]. |
1603 (self includesKey:key) ifFalse:[ |
1603 (self includesKey:key) ifFalse:[ |
1604 keyStringsToLanguageMappings addKey:key. |
1604 keyStringsToLanguageMappings addKey:key. |
1605 modified := true. |
1605 modified := true. |
1606 ]. |
1606 ]. |
1607 index := keyStringsToLanguageMappings indexOfKey:key. |
1607 index := keyStringsToLanguageMappings indexOfKey:key. |
1608 self selectedKeyRow value:index |
1608 self selectedKeyRow value:index |
1609 ! |
1609 ! |
1610 |
1610 |
1615 lastNameSpace notNil ifTrue:[defaultNameSpace := lastNameSpace name]. |
1615 lastNameSpace notNil ifTrue:[defaultNameSpace := lastNameSpace name]. |
1616 nameSpace := Dialog requestNameSpace:'NameSpace:' title:'Search String in Name Space:' initialAnswer:defaultNameSpace. |
1616 nameSpace := Dialog requestNameSpace:'NameSpace:' title:'Search String in Name Space:' initialAnswer:defaultNameSpace. |
1617 nameSpace isNil ifTrue:[^self]. |
1617 nameSpace isNil ifTrue:[^self]. |
1618 nameSpace := Smalltalk at:nameSpace asSymbol. |
1618 nameSpace := Smalltalk at:nameSpace asSymbol. |
1619 nameSpace isNil ifTrue:[ |
1619 nameSpace isNil ifTrue:[ |
1620 ^Dialog information:(resources string:'No such nameSpace exists.') |
1620 ^Dialog information:(resources string:'No such nameSpace exists.') |
1621 ]. |
1621 ]. |
1622 lastNameSpace := nameSpace. |
1622 lastNameSpace := nameSpace. |
1623 ! |
1623 ! |
1624 |
1624 |
1625 changeLastPackage |
1625 changeLastPackage |
1626 |
1626 |
1627 |package defaultPackage| |
1627 |package defaultPackage| |
1628 |
1628 |
1629 lastPackage notNil ifTrue:[defaultPackage := lastPackage]. |
1629 lastPackage notNil ifTrue:[defaultPackage := lastPackage]. |
1630 package := Dialog |
1630 package := Dialog |
1631 requestProject:'Package:' |
1631 requestProject:'Package:' |
1632 initialAnswer:defaultPackage |
1632 initialAnswer:defaultPackage |
1633 suggestions:#('foo' 'bar' 'baz'). |
1633 suggestions:#('foo' 'bar' 'baz'). |
1634 package isNil ifTrue:[ |
1634 package isNil ifTrue:[ |
1635 ^ self "/ Dialog information:(resources string:'No such package exists.') |
1635 ^ self "/ Dialog information:(resources string:'No such package exists.') |
1636 ]. |
1636 ]. |
1637 lastPackage := package. |
1637 lastPackage := package. |
1638 ! |
1638 ! |
1639 |
1639 |
1640 extractTranslationsFromClass |
1640 extractTranslationsFromClass |
1641 |aClass newTranslations| |
1641 |aClass newTranslations| |
1642 |
1642 |
1643 aClass := Dialog |
1643 aClass := Dialog |
1644 requestClass:'Class to extract translations from:' |
1644 requestClass:'Class to extract translations from:' |
1645 okLabel:'OK' |
1645 okLabel:'OK' |
1646 initialAnswer:(lastExtractedClass ? LastExtractedClass). |
1646 initialAnswer:(lastExtractedClass ? LastExtractedClass). |
1647 aClass isNil ifTrue:[^ self ]. |
1647 aClass isNil ifTrue:[^ self ]. |
1648 |
1648 |
1649 lastExtractedClass := LastExtractedClass := aClass. |
1649 lastExtractedClass := LastExtractedClass := aClass. |
1650 |
1650 |
1651 newTranslations := self extractTranslationsFromClass:aClass. |
1651 newTranslations := self extractTranslationsFromClass:aClass. |
1658 |
1658 |
1659 self changeLastNameSpace. |
1659 self changeLastNameSpace. |
1660 lastNameSpace isNil ifTrue:[^self.]. |
1660 lastNameSpace isNil ifTrue:[^self.]. |
1661 newTranslations := OrderedCollection new. |
1661 newTranslations := OrderedCollection new. |
1662 lastNameSpace allClassesDo:[:eachClass | |
1662 lastNameSpace allClassesDo:[:eachClass | |
1663 newTranslations addAll:( self extractTranslationsFromClass:eachClass theNonMetaclass). |
1663 newTranslations addAll:( self extractTranslationsFromClass:eachClass theNonMetaclass). |
1664 ]. |
1664 ]. |
1665 self addAllTranslations:newTranslations. |
1665 self addAllTranslations:newTranslations. |
1666 ! |
1666 ! |
1667 |
1667 |
1668 extractTranslationsFromProject |
1668 extractTranslationsFromProject |
1677 box label:'Find Translations in Project'. |
1677 box label:'Find Translations in Project'. |
1678 |
1678 |
1679 box showAtPointer. |
1679 box showAtPointer. |
1680 |
1680 |
1681 projectID notNil ifTrue:[ |
1681 projectID notNil ifTrue:[ |
1682 projectID := projectID withoutSeparators asSymbol. |
1682 projectID := projectID withoutSeparators asSymbol. |
1683 ]. |
1683 ]. |
1684 projectID isEmptyOrNil ifTrue:[^ self ]. |
1684 projectID isEmptyOrNil ifTrue:[^ self ]. |
1685 |
1685 |
1686 lastExtractedProject := LastExtractedProject := projectID. |
1686 lastExtractedProject := LastExtractedProject := projectID. |
1687 |
1687 |
1688 newTranslations := Set new. |
1688 newTranslations := Set new. |
1689 |
1689 |
1690 Smalltalk allClassesDo:[:eachClass | |
1690 Smalltalk allClassesDo:[:eachClass | |
1691 eachClass theNonMetaclass package == projectID ifTrue:[ |
1691 eachClass theNonMetaclass package == projectID ifTrue:[ |
1692 "/ eachClass isLoaded ifTrue:[ self halt. ]. |
1692 "/ eachClass isLoaded ifTrue:[ self halt. ]. |
1693 newTranslations addAll:( self extractTranslationsFromClass:eachClass theNonMetaclass). |
1693 newTranslations addAll:( self extractTranslationsFromClass:eachClass theNonMetaclass). |
1694 ] |
1694 ] |
1695 ]. |
1695 ]. |
1696 |
1696 |
1697 self addAllTranslations:newTranslations. |
1697 self addAllTranslations:newTranslations. |
1698 ! |
1698 ! |
1699 |
1699 |
1707 |
1707 |
1708 missingStrings := OrderedCollection new. |
1708 missingStrings := OrderedCollection new. |
1709 nameSpace := Dialog requestNameSpace:'NameSpace:' title:'Specify NameSpace to look for missing strings' initialAnswer:nil. |
1709 nameSpace := Dialog requestNameSpace:'NameSpace:' title:'Specify NameSpace to look for missing strings' initialAnswer:nil. |
1710 nameSpace := Smalltalk at:nameSpace asSymbol. |
1710 nameSpace := Smalltalk at:nameSpace asSymbol. |
1711 nameSpace isNil ifTrue:[ |
1711 nameSpace isNil ifTrue:[ |
1712 ^Dialog information:(resources string:'No such nameSpace exists.?') |
1712 ^Dialog information:(resources string:'No such nameSpace exists.?') |
1713 ]. |
1713 ]. |
1714 |
1714 |
1715 nameSpace allClassesDo:[:cls | |
1715 nameSpace allClassesDo:[:cls | |
1716 cls theMetaclass methodsDo:[:m | |
1716 cls theMetaclass methodsDo:[:m | |
1717 m hasResource ifTrue:[ |
1717 m hasResource ifTrue:[ |
1718 (m resources includesKey:#canvas) ifTrue:[ |
1718 (m resources includesKey:#canvas) ifTrue:[ |
1719 spec := (cls perform:m selector) decodeAsLiteralArray. |
1719 spec := (cls perform:m selector) decodeAsLiteralArray. |
1720 spec do:[:eachComponent | |
1720 spec do:[:eachComponent | |
1721 eachComponent translationKeysDo:[:k | |
1721 eachComponent translationKeysDo:[:k | |
1722 (self includesKey: k) ifFalse:[ |
1722 (self includesKey: k) ifFalse:[ |
1723 missingStrings add: k. |
1723 missingStrings add: k. |
1724 Transcript showCR: k storeString, ' ', m printString]] |
1724 Transcript showCR: k storeString, ' ', m printString]] |
1725 ] |
1725 ] |
1726 ] |
1726 ] |
1727 ] |
1727 ] |
1728 ] |
1728 ] |
1729 ]. |
1729 ]. |
1730 missingStrings asSet inspect |
1730 missingStrings asSet inspect |
1731 ! |
1731 ! |
1732 |
1732 |
1733 menuNew |
1733 menuNew |
1734 modified ifTrue:[ |
1734 modified ifTrue:[ |
1735 (Dialog |
1735 (Dialog |
1736 confirm:(resources stringWithCRs:'Modified translations have not been changed.\\Create new translations set anyway ?') |
1736 confirm:(resources stringWithCRs:'Modified translations have not been changed.\\Create new translations set anyway ?') |
1737 default:false) ifFalse:[^ self]. |
1737 default:false) ifFalse:[^ self]. |
1738 ]. |
1738 ]. |
1739 |
1739 |
1740 keyStringsToLanguageMappings initialize. |
1740 keyStringsToLanguageMappings initialize. |
1741 keyStringsToLanguageMappings changed. |
1741 keyStringsToLanguageMappings changed. |
1742 |
1742 |
1747 |
1747 |
1748 menuOpen |
1748 menuOpen |
1749 |aFilename| |
1749 |aFilename| |
1750 |
1750 |
1751 self withWaitCursorDo:[ |
1751 self withWaitCursorDo:[ |
1752 aFilename := self requestFilename. |
1752 aFilename := self requestFilename. |
1753 aFilename isNil ifTrue:[^ self ]. |
1753 aFilename isNil ifTrue:[^ self ]. |
1754 self readResourceFile:aFilename. |
1754 self readResourceFile:aFilename. |
1755 ] |
1755 ] |
1756 ! |
1756 ! |
1757 |
1757 |
1758 menuOpenByPackage |
1758 menuOpenByPackage |
1759 |package| |
1759 |package| |
1760 |
1760 |
1761 self withWaitCursorDo:[ |
1761 self withWaitCursorDo:[ |
1762 package := self requestPackage. |
1762 package := self requestPackage. |
1763 package isNil ifTrue:[^ self ]. |
1763 package isNil ifTrue:[^ self ]. |
1764 self readResourceFileForPackage:package. |
1764 self readResourceFileForPackage:package. |
1765 ] |
1765 ] |
1766 ! |
1766 ! |
1767 |
1767 |
1768 menuSave |
1768 menuSave |
1769 "Saves the language selected in the fileName from where the language resource was obtained." |
1769 "Saves the language selected in the fileName from where the language resource was obtained." |
1774 self saveLanguage: lang |
1774 self saveLanguage: lang |
1775 ! |
1775 ! |
1776 |
1776 |
1777 menuSaveAll |
1777 menuSaveAll |
1778 "Saves all the languages in the fileName from where the language resource was obtained." |
1778 "Saves all the languages in the fileName from where the language resource was obtained." |
1779 keyStringsToLanguageMappings languagesInUse do:[:each | self saveLanguage: each]. |
1779 keyStringsToLanguageMappings languagesInUse do:[:each | self saveLanguage: each]. |
1780 ! |
1780 ! |
1781 |
1781 |
1782 menuSaveAs |
1782 menuSaveAs |
1783 "Saves the language selected in the specified fileName." |
1783 "Saves the language selected in the specified fileName." |
1784 |lang aFilename| |
1784 |lang aFilename| |
1785 |
1785 |
1786 lang := self requestLanguageToSave. |
1786 lang := self requestLanguageToSave. |
1787 lang isNil ifTrue:[^ self]. |
1787 lang isNil ifTrue:[^ self]. |
1788 aFilename := self requestFilenameFor:lang. |
1788 aFilename := self requestFilenameFor:lang. |
1789 aFilename isNil ifTrue:[^ self]. |
1789 aFilename isNil ifTrue:[^ self]. |
1790 self saveResourceFile:aFilename for:lang asSymbol |
1790 self saveResourceFile:aFilename for:lang asSymbol |
1791 ! |
1791 ! |
1792 |
1792 |
1827 packageDir := Smalltalk packageDirectoryForPackageId:aPackage. |
1827 packageDir := Smalltalk packageDirectoryForPackageId:aPackage. |
1828 resourceDir := packageDir asFilename construct:'resources'. |
1828 resourceDir := packageDir asFilename construct:'resources'. |
1829 |
1829 |
1830 allLanguages := Set new. |
1830 allLanguages := Set new. |
1831 resourceDir directoryContentsAsFilenamesDo:[:eachFile | |
1831 resourceDir directoryContentsAsFilenamesDo:[:eachFile | |
1832 eachFile suffix = 'rs' ifTrue:[ |
1832 eachFile suffix = 'rs' ifTrue:[ |
1833 (('##.rs' match:eachFile baseName) |
1833 (('##.rs' match:eachFile baseName) |
1834 or:[('##-##.rs' match:eachFile baseName)]) ifTrue:[ |
1834 or:[('##-##.rs' match:eachFile baseName)]) ifTrue:[ |
1835 allLanguages add:(eachFile withoutSuffix baseName) |
1835 allLanguages add:(eachFile withoutSuffix baseName) |
1836 ]. |
1836 ]. |
1837 ]. |
1837 ]. |
1838 ]. |
1838 ]. |
1839 |
1839 |
1840 allLanguages addAll:languagesList. |
1840 allLanguages addAll:languagesList. |
1841 allLanguages := allLanguages asSortedCollection. |
1841 allLanguages := allLanguages asSortedCollection. |
1842 |
1842 |
1843 lang := Dialog |
1843 lang := Dialog |
1844 choose:(resources string:'For which language ?') |
1844 choose:(resources string:'For which language ?') |
1845 fromList:allLanguages |
1845 fromList:allLanguages |
1846 values:allLanguages |
1846 values:allLanguages |
1847 buttons:(resources array:#('All')) |
1847 buttons:(resources array:#('All')) |
1848 values:#(all) |
1848 values:#(all) |
1849 lines:10 |
1849 lines:10 |
1850 cancel:nil. |
1850 cancel:nil. |
1851 |
1851 |
1852 lang isNil ifTrue:[^ self ]. |
1852 lang isNil ifTrue:[^ self ]. |
1853 |
1853 |
1854 langFile := resourceDir construct:lang,'.rs'. |
1854 langFile := resourceDir construct:lang,'.rs'. |
1855 |
1855 |
1856 lang == #all ifTrue:[ |
1856 lang == #all ifTrue:[ |
1857 allLanguages do:[:lang | |
1857 allLanguages do:[:lang | |
1858 self addLanguage:lang. |
1858 self addLanguage:lang. |
1859 self readResourceFile:(resourceDir construct:lang,'.rs') asLanguage:lang. |
1859 self readResourceFile:(resourceDir construct:lang,'.rs') asLanguage:lang. |
1860 ]. |
1860 ]. |
1861 ] ifFalse:[ |
1861 ] ifFalse:[ |
1862 self readResourceFile:langFile asLanguage:lang asSymbol |
1862 self readResourceFile:langFile asLanguage:lang asSymbol |
1863 ]. |
1863 ]. |
1864 ! |
1864 ! |
1865 |
1865 |
1866 removeLanguage |
1866 removeLanguage |
1867 |lang| |
1867 |lang| |
1868 |
1868 |
1869 lang := Dialog choose:'Which language do you want to remove?' fromList:languagesList lines:10. |
1869 lang := Dialog choose:'Which language do you want to remove?' fromList:languagesList lines:10. |
1870 lang isNil ifTrue:[^ self ]. |
1870 lang isNil ifTrue:[^ self ]. |
1871 (Dialog confirm: 'Are you sure to remove the language ', lang ) ifTrue:[ |
1871 (Dialog confirm: 'Are you sure to remove the language ', lang ) ifTrue:[ |
1872 self languagesList remove:lang. |
1872 self languagesList remove:lang. |
1873 self shownLanguages remove:lang. |
1873 self shownLanguages remove:lang. |
1874 ]. |
1874 ]. |
1875 ! |
1875 ! |
1876 |
1876 |
1877 removeTranslation |
1877 removeTranslation |
1878 |rowSelectionIndex selectedKey| |
1878 |rowSelectionIndex selectedKey| |
1879 |
1879 |
1880 rowSelectionIndex := self selectedKeyRow value. |
1880 rowSelectionIndex := self selectedKeyRow value. |
1881 rowSelectionIndex isNil ifTrue:[^self]. |
1881 rowSelectionIndex isNil ifTrue:[^self]. |
1882 rowSelectionIndex ~~ 0 ifTrue:[ |
1882 rowSelectionIndex ~~ 0 ifTrue:[ |
1883 selectedKey := keyStringsToLanguageMappings keyAt:rowSelectionIndex ifAbsent:nil. |
1883 selectedKey := keyStringsToLanguageMappings keyAt:rowSelectionIndex ifAbsent:nil. |
1884 selectedKey isNil ifTrue:[^self]. |
1884 selectedKey isNil ifTrue:[^self]. |
1885 (Dialog confirm:(resources string:'Really remove key %1' with:selectedKey)) ifTrue:[ |
1885 (Dialog confirm:(resources string:'Really remove key %1' with:selectedKey)) ifTrue:[ |
1886 keyStringsToLanguageMappings removeKey:selectedKey. |
1886 keyStringsToLanguageMappings removeKey:selectedKey. |
1887 ]. |
1887 ]. |
1888 ]. |
1888 ]. |
1889 ! |
1889 ! |
1890 |
1890 |
1891 runApplicationAndCollectTranslations |
1891 runApplicationAndCollectTranslations |
1892 |applicationClass newTranslations pseudoPack app startSelector| |
1892 |applicationClass newTranslations pseudoPack app startSelector| |
1893 |
1893 |
1894 monitoredApplication notNil ifTrue:[ |
1894 monitoredApplication notNil ifTrue:[ |
1895 monitoredApplication terminate. |
1895 monitoredApplication terminate. |
1896 [monitoredApplication notNil] whileTrue:[ |
1896 [monitoredApplication notNil] whileTrue:[ |
1897 Delay waitForSeconds:0.1 |
1897 Delay waitForSeconds:0.1 |
1898 ]. |
1898 ]. |
1899 ]. |
1899 ]. |
1900 |
1900 |
1901 applicationClass := Dialog |
1901 applicationClass := Dialog |
1902 requestClass:'Application class to start and collect translations from:' |
1902 requestClass:'Application class to start and collect translations from:' |
1903 okLabel:'OK' |
1903 okLabel:'OK' |
1904 initialAnswer:(lastExtractedApplicationClass ? LastExtractedApplicationClass ). |
1904 initialAnswer:(lastExtractedApplicationClass ? LastExtractedApplicationClass ). |
1905 applicationClass isNil ifTrue:[^ self ]. |
1905 applicationClass isNil ifTrue:[^ self ]. |
1906 applicationClass isNamespace ifTrue:[ |
1906 applicationClass isNamespace ifTrue:[ |
1907 Dialog warn:'Entered class is a NameSpace'. |
1907 Dialog warn:'Entered class is a NameSpace'. |
1908 ^ self. |
1908 ^ self. |
1909 ]. |
1909 ]. |
1910 |
1910 |
1911 applicationClass isVisualStartable ifTrue:[ |
1911 applicationClass isVisualStartable ifTrue:[ |
1912 startSelector := #open |
1912 startSelector := #open |
1913 ] ifFalse:[ |
1913 ] ifFalse:[ |
1914 startSelector := Dialog |
1914 startSelector := Dialog |
1915 request:'Entered class seems to be no application class. Ok to start using selector:' |
1915 request:'Entered class seems to be no application class. Ok to start using selector:' |
1916 initialAnswer:((applicationClass respondsTo:#'start') |
1916 initialAnswer:((applicationClass respondsTo:#'start') |
1917 ifTrue:#'start' |
1917 ifTrue:#'start' |
1918 ifFalse:#'new') |
1918 ifFalse:#'new') |
1919 okLabel:'START' |
1919 okLabel:'START' |
1920 title:'Start Application'. |
1920 title:'Start Application'. |
1921 startSelector isNil ifTrue:[ |
1921 startSelector isNil ifTrue:[ |
1922 ^ self |
1922 ^ self |
1923 ]. |
1923 ]. |
1924 startSelector := startSelector asSymbol. |
1924 startSelector := startSelector asSymbol. |
1925 ]. |
1925 ]. |
1926 |
1926 |
1927 lastExtractedApplicationClass := LastExtractedApplicationClass := applicationClass. |
1927 lastExtractedApplicationClass := LastExtractedApplicationClass := applicationClass. |
1928 |
1928 |
1929 newTranslations := Set new. |
1929 newTranslations := Set new. |
1932 pseudoPack realResourcePack:(applicationClass classResources). |
1932 pseudoPack realResourcePack:(applicationClass classResources). |
1933 |
1933 |
1934 self stopApplicationIconVisibleHolder value:true. |
1934 self stopApplicationIconVisibleHolder value:true. |
1935 |
1935 |
1936 monitoredApplication := [ |
1936 monitoredApplication := [ |
1937 [ |
1937 [ |
1938 app := applicationClass new. |
1938 app := applicationClass new. |
1939 app perform:startSelector. |
1939 app perform:startSelector. |
1940 app window waitUntilVisible. |
1940 app window waitUntilVisible. |
1941 app window waitUntilClosed. |
1941 app window waitUntilClosed. |
1942 ] ensure:[ |
1942 ] ensure:[ |
1943 app closeRequest. |
1943 app closeRequest. |
1944 self stopApplicationIconVisibleHolder value:false. |
1944 self stopApplicationIconVisibleHolder value:false. |
1945 monitoredApplication := nil. |
1945 monitoredApplication := nil. |
1946 ]. |
1946 ]. |
1947 ] fork. |
1947 ] fork. |
1948 ! |
1948 ! |
1949 |
1949 |
1950 searchStringInLastNameSpace |
1950 searchStringInLastNameSpace |
1951 |
1951 |
1955 selectedKey isNil ifTrue:[^Dialog information: 'No selected key']. |
1955 selectedKey isNil ifTrue:[^Dialog information: 'No selected key']. |
1956 browser := NewSystemBrowser new "open". |
1956 browser := NewSystemBrowser new "open". |
1957 browser allButOpen. |
1957 browser allButOpen. |
1958 lastSearchPatterns := browser lastSearchPatterns. |
1958 lastSearchPatterns := browser lastSearchPatterns. |
1959 (lastSearchPatterns notNil and:[lastSearchPatterns first ~= selectedKey]) ifTrue:[ |
1959 (lastSearchPatterns notNil and:[lastSearchPatterns first ~= selectedKey]) ifTrue:[ |
1960 browser lastSearchPatterns addFirst: selectedKey |
1960 browser lastSearchPatterns addFirst: selectedKey |
1961 ]. |
1961 ]. |
1962 SearchDialog lastStringSearchArea: #currentNameSpace. |
1962 SearchDialog lastStringSearchArea: #currentNameSpace. |
1963 lastNameSpace isNil ifTrue:[ |
1963 lastNameSpace isNil ifTrue:[ |
1964 self changeLastNameSpace. |
1964 self changeLastNameSpace. |
1965 ]. |
1965 ]. |
1966 lastNameSpace notNil ifTrue:[ |
1966 lastNameSpace notNil ifTrue:[ |
1967 "/ browser navigationState selectedClasses value: lastNameSpace allClasses. |
1967 "/ browser navigationState selectedClasses value: lastNameSpace allClasses. |
1968 browser navigationState nameSpaceFilter value: (OrderedCollection with:lastNameSpace name). |
1968 browser navigationState nameSpaceFilter value: (OrderedCollection with:lastNameSpace name). |
1969 browser navigationState selectedNamespaces value: (OrderedCollection with:lastNameSpace name). |
1969 browser navigationState selectedNamespaces value: (OrderedCollection with:lastNameSpace name). |
1970 ]. |
1970 ]. |
1971 self withWaitCursorDo:[ |
1971 self withWaitCursorDo:[ |
1972 browser browseMenuMethodsWithString |
1972 browser browseMenuMethodsWithString |
1973 ]. |
1973 ]. |
1974 ! |
1974 ! |
1975 |
1975 |
1976 searchStringInLastPackage |
1976 searchStringInLastPackage |
1977 |
1977 |
1981 selectedKey isNil ifTrue:[^Dialog information: 'No selected key']. |
1981 selectedKey isNil ifTrue:[^Dialog information: 'No selected key']. |
1982 browser := NewSystemBrowser new "open". |
1982 browser := NewSystemBrowser new "open". |
1983 browser allButOpen. |
1983 browser allButOpen. |
1984 lastSearchPatterns := browser lastSearchPatterns. |
1984 lastSearchPatterns := browser lastSearchPatterns. |
1985 (lastSearchPatterns notNil and:[lastSearchPatterns first ~= selectedKey]) ifTrue:[ |
1985 (lastSearchPatterns notNil and:[lastSearchPatterns first ~= selectedKey]) ifTrue:[ |
1986 browser lastSearchPatterns addFirst: selectedKey |
1986 browser lastSearchPatterns addFirst: selectedKey |
1987 ]. |
1987 ]. |
1988 SearchDialog lastStringSearchArea: #currentPackage. |
1988 SearchDialog lastStringSearchArea: #currentPackage. |
1989 lastPackage isNil ifTrue:[ |
1989 lastPackage isNil ifTrue:[ |
1990 self changeLastPackage. |
1990 self changeLastPackage. |
1991 ]. |
1991 ]. |
1992 lastPackage notNil ifTrue:[ |
1992 lastPackage notNil ifTrue:[ |
1993 "/ browser navigationState selectedClasses value: lastNameSpace allClasses. |
1993 "/ browser navigationState selectedClasses value: lastNameSpace allClasses. |
1994 browser navigationState packageFilter value: (OrderedCollection with:lastPackage). |
1994 browser navigationState packageFilter value: (OrderedCollection with:lastPackage). |
1995 browser navigationState selectedProjects value: (OrderedCollection with:lastPackage). |
1995 browser navigationState selectedProjects value: (OrderedCollection with:lastPackage). |
1996 ]. |
1996 ]. |
1997 self withWaitCursorDo:[ |
1997 self withWaitCursorDo:[ |
1998 browser browseMenuMethodsWithString |
1998 browser browseMenuMethodsWithString |
1999 ]. |
1999 ]. |
2000 ! ! |
2000 ! ! |
2001 |
2001 |
2002 !InternationalLanguageTranslationEditor methodsFor:'menus dynamic'! |
2002 !InternationalLanguageTranslationEditor methodsFor:'menus dynamic'! |
2003 |
2003 |
2011 (self shownLanguages includes:newLang) ifFalse:[ |
2011 (self shownLanguages includes:newLang) ifFalse:[ |
2012 "/ shownLanguagesInOrder := self languagesList |
2012 "/ shownLanguagesInOrder := self languagesList |
2013 "/ select:[:lang | (self shownLanguages includes:lang) |
2013 "/ select:[:lang | (self shownLanguages includes:lang) |
2014 "/ or:[ lang = newLang ]]. |
2014 "/ or:[ lang = newLang ]]. |
2015 "/ self shownLanguages contents:shownLanguagesInOrder. |
2015 "/ self shownLanguages contents:shownLanguagesInOrder. |
2016 self shownLanguages add:newLang. |
2016 self shownLanguages add:newLang. |
2017 ] |
2017 ] |
2018 ! |
2018 ! |
2019 |
2019 |
2020 isLanguageShown:lang |
2020 isLanguageShown:lang |
2021 ^ self shownLanguages includes:lang |
2021 ^ self shownLanguages includes:lang |
2023 |
2023 |
2024 shownLanguagesMenu |
2024 shownLanguagesMenu |
2025 <resource: #programMenu > |
2025 <resource: #programMenu > |
2026 |
2026 |
2027 ^ [ |
2027 ^ [ |
2028 |m selected| |
2028 |m selected| |
2029 |
2029 |
2030 m := Menu new. |
2030 m := Menu new. |
2031 |
2031 |
2032 self languagesList do:[:lang | |
2032 self languagesList do:[:lang | |
2033 |item| |
2033 |item| |
2034 |
2034 |
2035 item := MenuItem label:lang. |
2035 item := MenuItem label:lang. |
2036 item indication:(self languageShownHolderFor:lang). |
2036 item indication:(self languageShownHolderFor:lang). |
2037 item hideMenuOnActivated:false. |
2037 item hideMenuOnActivated:false. |
2038 m addItem:item. |
2038 m addItem:item. |
2039 ]. |
2039 ]. |
2040 m |
2040 m |
2041 ]. |
2041 ]. |
2042 ! |
2042 ! |
2043 |
2043 |
2044 toggleLanguageDisplayFor:lang |
2044 toggleLanguageDisplayFor:lang |
2045 (self shownLanguages includes:lang) ifTrue:[ |
2045 (self shownLanguages includes:lang) ifTrue:[ |
2046 self disableLanguageDisplayFor:lang |
2046 self disableLanguageDisplayFor:lang |
2047 ] ifFalse:[ |
2047 ] ifFalse:[ |
2048 self enableLanguageDisplayFor:lang |
2048 self enableLanguageDisplayFor:lang |
2049 ]. |
2049 ]. |
2050 ! ! |
2050 ! ! |
2051 |
2051 |
2052 !InternationalLanguageTranslationEditor methodsFor:'private-key extraction'! |
2052 !InternationalLanguageTranslationEditor methodsFor:'private-key extraction'! |
2053 |
2053 |
2054 addAllTranslations:newTranslations |
2054 addAllTranslations:newTranslations |
2055 |newTranslationKeys stringKeys nonStringKeys| |
2055 |newTranslationKeys stringKeys nonStringKeys| |
2056 |
2056 |
2057 newTranslationKeys := newTranslations select:[:k | k notEmpty and:[k isString not or:[k isBlank not]]]. |
2057 newTranslationKeys := newTranslations select:[:k | k notEmpty and:[k isString not or:[k isBlank not]]]. |
2058 newTranslationKeys := newTranslationKeys select:[:k | (keyStringsToLanguageMappings includesKey:k) not]. |
2058 newTranslationKeys := newTranslationKeys select:[:k | (keyStringsToLanguageMappings includesKey:k) not]. |
2059 newTranslationKeys := newTranslationKeys |
2059 newTranslationKeys := newTranslationKeys |
2060 collect:[:k | |
2060 collect:[:k | |
2061 (k endsWith:'...') ifTrue:[ |
2061 (k endsWith:'...') ifTrue:[ |
2062 k copyWithoutLast:3. |
2062 k copyWithoutLast:3. |
2063 ] ifFalse:[ |
2063 ] ifFalse:[ |
2064 ('.:?' includes:k last) ifTrue:[ |
2064 ('.:?' includes:k last) ifTrue:[ |
2065 k copyWithoutLast:1. |
2065 k copyWithoutLast:1. |
2066 ] ifFalse:[ |
2066 ] ifFalse:[ |
2067 k |
2067 k |
2068 ]]]. |
2068 ]]]. |
2069 newTranslationKeys := newTranslationKeys asSet. |
2069 newTranslationKeys := newTranslationKeys asSet. |
2070 |
2070 |
2071 newTranslationKeys notEmpty ifTrue:[ |
2071 newTranslationKeys notEmpty ifTrue:[ |
2072 stringKeys := newTranslationKeys select:[:k | k isString]. |
2072 stringKeys := newTranslationKeys select:[:k | k isString]. |
2073 nonStringKeys := newTranslationKeys select:[:k | k isString not]. |
2073 nonStringKeys := newTranslationKeys select:[:k | k isString not]. |
2074 |
2074 |
2075 stringKeys := stringKeys asSortedCollection. |
2075 stringKeys := stringKeys asSortedCollection. |
2076 keyStringsToLanguageMappings addKeys:stringKeys. |
2076 keyStringsToLanguageMappings addKeys:stringKeys. |
2077 keyStringsToLanguageMappings addKeys:nonStringKeys. |
2077 keyStringsToLanguageMappings addKeys:nonStringKeys. |
2078 modified := true. |
2078 modified := true. |
2079 ]. |
2079 ]. |
2080 ! |
2080 ! |
2081 |
2081 |
2082 extractTranslationsFromClass:aClass |
2082 extractTranslationsFromClass:aClass |
2083 |newTranslations| |
2083 |newTranslations| |
2084 |
2084 |
2085 newTranslations := Set new. |
2085 newTranslations := Set new. |
2086 |
2086 |
2087 self withWaitCursorDo:[ |
2087 self withWaitCursorDo:[ |
2088 "/ now, the hard part: |
2088 "/ now, the hard part: |
2089 "/ possible translations are in the specs, |
2089 "/ possible translations are in the specs, |
2090 "/ and all arguments to (resources string:) messages. |
2090 "/ and all arguments to (resources string:) messages. |
2091 aClass instAndClassMethodsDo:[:eachMethod | |
2091 aClass instAndClassMethodsDo:[:eachMethod | |
2092 newTranslations addAll:( self extractTranslationsFromMethod:eachMethod ). |
2092 newTranslations addAll:( self extractTranslationsFromMethod:eachMethod ). |
2093 ]. |
2093 ]. |
2094 ]. |
2094 ]. |
2095 ^ newTranslations |
2095 ^ newTranslations |
2096 ! |
2096 ! |
2097 |
2097 |
2098 extractTranslationsFromHelpSpecMethod:aMethod |
2098 extractTranslationsFromHelpSpecMethod:aMethod |
2099 |codeStrings matcher parseTree resourceKeys| |
2099 |codeStrings matcher parseTree resourceKeys| |
2100 |
2100 |
2101 parseTree := RBParser |
2101 parseTree := RBParser |
2102 parseMethod:aMethod source |
2102 parseMethod:aMethod source |
2103 onError: [:str :pos | Transcript showCR:str. Transcript showCR:pos. |
2103 onError: [:str :pos | Transcript showCR:str. Transcript showCR:pos. |
2104 nil]. |
2104 nil]. |
2105 parseTree isNil ifTrue:[^ #() ]. |
2105 parseTree isNil ifTrue:[^ #() ]. |
2106 |
2106 |
2107 codeStrings := |
2107 codeStrings := |
2108 #( |
2108 #( |
2109 '`@dict addPairsFrom: `#helpKeysAndStrings' |
2109 '`@dict addPairsFrom: `#helpKeysAndStrings' |
2110 ). |
2110 ). |
2111 |
2111 |
2112 resourceKeys := Set new. |
2112 resourceKeys := Set new. |
2113 |
2113 |
2114 matcher := ParseTreeSearcher new. |
2114 matcher := ParseTreeSearcher new. |
2115 matcher |
2115 matcher |
2116 matchesAnyOf: codeStrings |
2116 matchesAnyOf: codeStrings |
2117 do: [:aNode :answer | |
2117 do: [:aNode :answer | |
2118 |sel argNode arg| |
2118 |sel argNode arg| |
2119 |
2119 |
2120 sel := aNode selector. |
2120 sel := aNode selector. |
2121 (sel startsWith:'addPairsFrom:') ifTrue:[ |
2121 (sel startsWith:'addPairsFrom:') ifTrue:[ |
2122 argNode := aNode arguments at:1. |
2122 argNode := aNode arguments at:1. |
2123 argNode isLiteral ifTrue:[ |
2123 argNode isLiteral ifTrue:[ |
2124 arg := argNode value. |
2124 arg := argNode value. |
2125 arg isArray ifTrue:[ |
2125 arg isArray ifTrue:[ |
2126 arg doWithIndex:[:el :index | |
2126 arg doWithIndex:[:el :index | |
2127 index even ifTrue:[ |
2127 index even ifTrue:[ |
2128 el isString ifTrue:[ |
2128 el isString ifTrue:[ |
2129 resourceKeys add:el. |
2129 resourceKeys add:el. |
2130 ] |
2130 ] |
2131 ]. |
2131 ]. |
2132 ]. |
2132 ]. |
2133 ] ifFalse:[ |
2133 ] ifFalse:[ |
2134 Transcript |
2134 Transcript |
2135 showCR:(resources |
2135 showCR:(resources |
2136 string:'Cannot derive resourceKey from non-array in %1 in %2' |
2136 string:'Cannot derive resourceKey from non-array in %1 in %2' |
2137 with:argNode formattedCode |
2137 with:argNode formattedCode |
2138 with:aMethod selector). |
2138 with:aMethod selector). |
2139 ]. |
2139 ]. |
2140 ] ifFalse:[ |
2140 ] ifFalse:[ |
2141 Transcript |
2141 Transcript |
2142 showCR:(resources |
2142 showCR:(resources |
2143 string:'Cannot derive resourceKey from non-literal: %1 in %2' |
2143 string:'Cannot derive resourceKey from non-literal: %1 in %2' |
2144 with:argNode formattedCode |
2144 with:argNode formattedCode |
2145 with:aMethod selector). |
2145 with:aMethod selector). |
2146 ]. |
2146 ]. |
2147 ]. |
2147 ]. |
2148 aNode |
2148 aNode |
2149 ]. |
2149 ]. |
2150 |
2150 |
2151 matcher executeTree: parseTree initialAnswer: nil. |
2151 matcher executeTree: parseTree initialAnswer: nil. |
2152 ^ resourceKeys |
2152 ^ resourceKeys |
2153 ! |
2153 ! |
2154 |
2154 |
2157 |
2157 |
2158 menu := aMethod mclass theNonMetaclass perform:aMethod selector. |
2158 menu := aMethod mclass theNonMetaclass perform:aMethod selector. |
2159 menu isNil ifTrue:[ ^ #() ]. |
2159 menu isNil ifTrue:[ ^ #() ]. |
2160 |
2160 |
2161 (menu isKindOf:Menu) ifFalse:[ |
2161 (menu isKindOf:Menu) ifFalse:[ |
2162 menu := Menu new fromLiteralArrayEncoding:menu |
2162 menu := Menu new fromLiteralArrayEncoding:menu |
2163 ]. |
2163 ]. |
2164 |
2164 |
2165 resourceKeys := Set new. |
2165 resourceKeys := Set new. |
2166 menu allItemsDo:[:aMenuItem | |
2166 menu allItemsDo:[:aMenuItem | |
2167 aMenuItem translateLabel ifTrue:[ |
2167 aMenuItem translateLabel ifTrue:[ |
2168 aMenuItem isSeparatorItem ifFalse:[ |
2168 aMenuItem isSeparatorItem ifFalse:[ |
2169 resourceKeys add:aMenuItem label. |
2169 resourceKeys add:aMenuItem label. |
2170 ] |
2170 ] |
2171 ] |
2171 ] |
2172 ]. |
2172 ]. |
2173 ^ resourceKeys |
2173 ^ resourceKeys |
2174 ! |
2174 ! |
2175 |
2175 |
2176 extractTranslationsFromMethod:aMethod |
2176 extractTranslationsFromMethod:aMethod |
2177 |mResources| |
2177 |mResources| |
2178 |
2178 |
2179 mResources := aMethod resources. |
2179 mResources := aMethod resources. |
2180 mResources notNil ifTrue:[ |
2180 mResources notNil ifTrue:[ |
2181 (mResources includesKey:#menu) ifTrue:[ |
2181 (mResources includesKey:#menu) ifTrue:[ |
2182 ^ self extractTranslationsFromMenuSpecMethod:aMethod. |
2182 ^ self extractTranslationsFromMenuSpecMethod:aMethod. |
2183 ]. |
2183 ]. |
2184 (mResources includesKey:#canvas) ifTrue:[ |
2184 (mResources includesKey:#canvas) ifTrue:[ |
2185 ^ self extractTranslationsFromUISpecMethod:aMethod. |
2185 ^ self extractTranslationsFromUISpecMethod:aMethod. |
2186 ]. |
2186 ]. |
2187 (mResources includesKey:#help) ifTrue:[ |
2187 (mResources includesKey:#help) ifTrue:[ |
2188 ^ self extractTranslationsFromHelpSpecMethod:aMethod. |
2188 ^ self extractTranslationsFromHelpSpecMethod:aMethod. |
2189 ]. |
2189 ]. |
2190 (mResources includesKey:#tableColumns) ifTrue:[ |
2190 (mResources includesKey:#tableColumns) ifTrue:[ |
2191 ^ self extractTranslationsFromTableColumnsSpecMethod:aMethod. |
2191 ^ self extractTranslationsFromTableColumnsSpecMethod:aMethod. |
2192 ]. |
2192 ]. |
2193 |
2193 |
2194 ^ self extractTranslationsFromSpecMethod:aMethod. |
2194 ^ self extractTranslationsFromSpecMethod:aMethod. |
2195 ]. |
2195 ]. |
2196 ^ self extractTranslationsFromMethodsCode:aMethod |
2196 ^ self extractTranslationsFromMethodsCode:aMethod |
2197 ! |
2197 ! |
2198 |
2198 |
2199 extractTranslationsFromMethodsCode:aMethod |
2199 extractTranslationsFromMethodsCode:aMethod |
2200 "/method:mthd selector:sel inClass:cls matchesParseTreeMatcher:aMatcher |
2200 "/method:mthd selector:sel inClass:cls matchesParseTreeMatcher:aMatcher |
2201 |codeStrings matcher parseTree resourceKeys| |
2201 |codeStrings matcher parseTree resourceKeys| |
2202 |
2202 |
2203 parseTree := RBParser |
2203 parseTree := RBParser |
2204 parseMethod:aMethod source |
2204 parseMethod:aMethod source |
2205 onError: [:str :pos | Transcript showCR:str. Transcript showCR:pos. |
2205 onError: [:str :pos | Transcript showCR:str. Transcript showCR:pos. |
2206 nil]. |
2206 nil]. |
2207 parseTree isNil ifTrue:[^ #() ]. |
2207 parseTree isNil ifTrue:[^ #() ]. |
2208 |
2208 |
2209 codeStrings := |
2209 codeStrings := |
2210 #( |
2210 #( |
2211 'resources `@msg: `@args' |
2211 'resources `@msg: `@args' |
2212 'self resources `@msg: `@args' |
2212 'self resources `@msg: `@args' |
2213 'self class resources `@msg: `@args' |
2213 'self class resources `@msg: `@args' |
2214 'self classResources `@msg: `@args' |
2214 'self classResources `@msg: `@args' |
2215 ). |
2215 ). |
2216 |
2216 |
2217 resourceKeys := Set new. |
2217 resourceKeys := Set new. |
2218 |
2218 |
2219 matcher := ParseTreeSearcher new. |
2219 matcher := ParseTreeSearcher new. |
2220 matcher |
2220 matcher |
2221 matchesAnyOf: codeStrings |
2221 matchesAnyOf: codeStrings |
2222 do: [:aNode :answer | |
2222 do: [:aNode :answer | |
2223 |sel keyStringArgNode keyStringArg| |
2223 |sel keyStringArgNode keyStringArg| |
2224 |
2224 |
2225 sel := aNode selector. |
2225 sel := aNode selector. |
2226 ((sel startsWith:'string:') or:[(sel startsWith:'at:')]) ifTrue:[ |
2226 ((sel startsWith:'string:') or:[(sel startsWith:'at:')]) ifTrue:[ |
2227 keyStringArgNode := aNode arguments at:1. |
2227 keyStringArgNode := aNode arguments at:1. |
2228 keyStringArgNode isLiteral ifTrue:[ |
2228 keyStringArgNode isLiteral ifTrue:[ |
2229 keyStringArg := keyStringArgNode value. |
2229 keyStringArg := keyStringArgNode value. |
2230 keyStringArg isString ifTrue:[ |
2230 keyStringArg isString ifTrue:[ |
2231 resourceKeys add:keyStringArg. |
2231 resourceKeys add:keyStringArg. |
2232 ] ifFalse:[ |
2232 ] ifFalse:[ |
2233 Transcript |
2233 Transcript |
2234 showCR:(resources |
2234 showCR:(resources |
2235 string:'Cannot derive resourceKey from non-string: %1 in %2' |
2235 string:'Cannot derive resourceKey from non-string: %1 in %2' |
2236 with:keyStringArgNode formattedCode |
2236 with:keyStringArgNode formattedCode |
2237 with:aMethod selector). |
2237 with:aMethod selector). |
2238 ]. |
2238 ]. |
2239 ] ifFalse:[ |
2239 ] ifFalse:[ |
2240 Transcript |
2240 Transcript |
2241 showCR:(resources |
2241 showCR:(resources |
2242 string:'Cannot derive resourceKey from non-literal: %1 in %2' |
2242 string:'Cannot derive resourceKey from non-literal: %1 in %2' |
2243 with:keyStringArgNode formattedCode |
2243 with:keyStringArgNode formattedCode |
2244 with:aMethod selector). |
2244 with:aMethod selector). |
2245 ]. |
2245 ]. |
2246 ]. |
2246 ]. |
2247 aNode |
2247 aNode |
2248 ]. |
2248 ]. |
2249 |
2249 |
2250 matcher executeTree: parseTree initialAnswer: nil. |
2250 matcher executeTree: parseTree initialAnswer: nil. |
2251 ^ resourceKeys |
2251 ^ resourceKeys |
2252 ! |
2252 ! |
2253 |
2253 |
2260 |
2260 |
2261 columnDescription := aMethod mclass theNonMetaclass perform:aMethod selector. |
2261 columnDescription := aMethod mclass theNonMetaclass perform:aMethod selector. |
2262 columnDescription isNil ifTrue:[ ^ #() ]. |
2262 columnDescription isNil ifTrue:[ ^ #() ]. |
2263 |
2263 |
2264 (columnDescription first isKindOf:DataSetColumnSpec) ifFalse:[ |
2264 (columnDescription first isKindOf:DataSetColumnSpec) ifFalse:[ |
2265 columnDescription := columnDescription collect:[:el | DataSetColumnSpec new fromLiteralArrayEncoding:el]. |
2265 columnDescription := columnDescription collect:[:el | DataSetColumnSpec new fromLiteralArrayEncoding:el]. |
2266 ]. |
2266 ]. |
2267 |
2267 |
2268 resourceKeys := Set new. |
2268 resourceKeys := Set new. |
2269 columnDescription do:[:aColumnSpec | |
2269 columnDescription do:[:aColumnSpec | |
2270 aColumnSpec translateLabel ifTrue:[ |
2270 aColumnSpec translateLabel ifTrue:[ |
2271 resourceKeys add:aColumnSpec label. |
2271 resourceKeys add:aColumnSpec label. |
2272 ] |
2272 ] |
2273 ]. |
2273 ]. |
2274 ^ resourceKeys |
2274 ^ resourceKeys |
2275 ! |
2275 ! |
2276 |
2276 |
2277 extractTranslationsFromUISpecMethod:aMethod |
2277 extractTranslationsFromUISpecMethod:aMethod |
2279 |
2279 |
2280 spec := aMethod mclass theNonMetaclass perform:aMethod selector. |
2280 spec := aMethod mclass theNonMetaclass perform:aMethod selector. |
2281 spec isNil ifTrue:[ ^ #() ]. |
2281 spec isNil ifTrue:[ ^ #() ]. |
2282 |
2282 |
2283 (spec isKindOf:UISpecification) ifFalse:[ |
2283 (spec isKindOf:UISpecification) ifFalse:[ |
2284 spec := UISpecification from:spec |
2284 spec := UISpecification from:spec |
2285 ]. |
2285 ]. |
2286 |
2286 |
2287 resourceKeys := Set new. |
2287 resourceKeys := Set new. |
2288 |
2288 |
2289 visitor := UISpecVisitor new. |
2289 visitor := UISpecVisitor new. |
2292 ^ visitor translatedLabels |
2292 ^ visitor translatedLabels |
2293 ! ! |
2293 ! ! |
2294 |
2294 |
2295 !InternationalLanguageTranslationEditor methodsFor:'queries'! |
2295 !InternationalLanguageTranslationEditor methodsFor:'queries'! |
2296 |
2296 |
2297 autoAccept |
2297 autoAccept |
2298 |
2298 |
2299 ^ self autoAcceptHolder value |
2299 ^ self autoAcceptHolder value |
2300 ! |
2300 ! |
2301 |
2301 |
2302 currentExampleLanguageText |
2302 currentExampleLanguageText |
2303 "Returns the language text corresponding for the current selected key and the example language selection" |
2303 "Returns the language text corresponding for the current selected key and the example language selection" |
2304 |
2304 |
2305 ^self languageTextFromSelectedKeyFor: self exampleLanguageSelectionHolder value |
2305 ^self languageTextFromSelectedKeyFor: self exampleLanguageSelectionHolder value |
2306 ! |
2306 ! |
2307 |
2307 |
2314 ! |
2314 ! |
2315 |
2315 |
2316 exampleLanguageByDefault |
2316 exampleLanguageByDefault |
2317 |
2317 |
2318 ^self shownLanguages isEmpty |
2318 ^self shownLanguages isEmpty |
2319 ifTrue:[nil] |
2319 ifTrue:[nil] |
2320 ifFalse:[self shownLanguages first] |
2320 ifFalse:[self shownLanguages first] |
2321 ! |
2321 ! |
2322 |
2322 |
2323 hasFirstRowSelection |
2323 hasFirstRowSelection |
2324 self selectedKeyRow isNil ifTrue:[^false]. |
2324 self selectedKeyRow isNil ifTrue:[^false]. |
2325 ^ self selectedKeyRow value > 1 |
2325 ^ self selectedKeyRow value > 1 |
2343 |
2343 |
2344 ^self searchForSimilarTranslationEnableHolder value |
2344 ^self searchForSimilarTranslationEnableHolder value |
2345 ! |
2345 ! |
2346 |
2346 |
2347 languageTextFromKey: aKeyIndex for: language |
2347 languageTextFromKey: aKeyIndex for: language |
2348 "Returns the language text corresponding for the aKeyIndex and the received language" |
2348 "Returns the language text corresponding for the aKeyIndex and the received language" |
2349 |
2349 |
2350 language isNil ifTrue:[^'']. |
2350 language isNil ifTrue:[^'']. |
2351 ^keyStringsToLanguageMappings at: aKeyIndex language:language. |
2351 ^keyStringsToLanguageMappings at: aKeyIndex language:language. |
2352 ! |
2352 ! |
2353 |
2353 |
2354 languageTextFromSelectedKeyFor: language |
2354 languageTextFromSelectedKeyFor: language |
2355 "Returns the language text corresponding for the current selected key and the received language" |
2355 "Returns the language text corresponding for the current selected key and the received language" |
2356 |
2356 |
2357 ^self languageTextFromKey: self selectedKey for: language |
2357 ^self languageTextFromKey: self selectedKey for: language |
2358 ! |
2358 ! |
2359 |
2359 |
2360 shouldCopyPreviousTranslationButtonBeEnabled |
2360 shouldCopyPreviousTranslationButtonBeEnabled |
2361 ^ self hasLanguageSelection |
2361 ^ self hasLanguageSelection |
2362 and:[self hasFirstRowSelection] |
2362 and:[self hasFirstRowSelection] |
2363 ! |
2363 ! |
2364 |
2364 |
2365 shouldPasteOriginalButtonBeEnabled |
2365 shouldPasteOriginalButtonBeEnabled |
2366 ^ self hasLanguageSelection |
2366 ^ self hasLanguageSelection |
2367 and:[self hasFirstRowSelection] |
2367 and:[self hasFirstRowSelection] |
2368 ! |
2368 ! |
2369 |
2369 |
2370 shouldSearchForSimilarTranslation |
2370 shouldSearchForSimilarTranslation |
2371 |
2371 |
2372 self isSearchForSimilarTranslationEnabled ifFalse:[^false]. |
2372 self isSearchForSimilarTranslationEnabled ifFalse:[^false]. |
2384 ! |
2384 ! |
2385 |
2385 |
2386 printEditingWarningOn: aStream |
2386 printEditingWarningOn: aStream |
2387 |
2387 |
2388 aStream nextPutAll: ';'; |
2388 aStream nextPutAll: ';'; |
2389 cr; |
2389 cr; |
2390 nextPutAll: '; WARNING:'; |
2390 nextPutAll: '; WARNING:'; |
2391 cr; |
2391 cr; |
2392 nextPutAll: '; this file contains national characters'; |
2392 nextPutAll: '; this file contains national characters'; |
2393 cr; |
2393 cr; |
2394 nextPutAll: '; DONT EDIT this file with an old vi !!'; |
2394 nextPutAll: '; DONT EDIT this file with an old vi !!'; |
2395 cr; |
2395 cr; |
2396 nextPutAll: ';'; |
2396 nextPutAll: ';'; |
2397 cr; |
2397 cr; |
2398 cr. |
2398 cr. |
2399 ! |
2399 ! |
2400 |
2400 |
2401 printEncoderFor: lang on: aStream |
2401 printEncoderFor: lang on: aStream |
2402 |characterEncoder encoderString| |
2402 |characterEncoder encoderString| |
2403 |
2403 |
2404 characterEncoder := self encoderAt: lang. |
2404 characterEncoder := self encoderAt: lang. |
2405 encoderString := characterEncoder isNil |
2405 encoderString := characterEncoder isNil |
2406 ifTrue:[self requestEncoderStringFor: lang] |
2406 ifTrue:[self requestEncoderStringFor: lang] |
2407 ifFalse:[characterEncoder nameOfEncoding printString]. |
2407 ifFalse:[characterEncoder nameOfEncoding printString]. |
2408 |
2408 |
2409 aStream nextPutAll: '#encoding'; |
2409 aStream nextPutAll: '#encoding'; |
2410 space; |
2410 space; |
2411 nextPutAll: encoderString; |
2411 nextPutAll: encoderString; |
2412 cr; |
2412 cr; |
2413 cr. |
2413 cr. |
2414 ! |
2414 ! |
2415 |
2415 |
2416 printLanguage: lang on: aStream |
2416 printLanguage: lang on: aStream |
2417 |
2417 |
2418 self printEncoderFor: lang on: aStream. |
2418 self printEncoderFor: lang on: aStream. |
2420 self printLanguageMappingsFor: lang on: aStream. |
2420 self printLanguageMappingsFor: lang on: aStream. |
2421 ! |
2421 ! |
2422 |
2422 |
2423 printLanguageMappingsFor: lang on: aStream |
2423 printLanguageMappingsFor: lang on: aStream |
2424 |
2424 |
2425 |orderedAssociations maxKeySize characterEncoder| |
2425 |orderedAssociations maxKeySize characterEncoder| |
2426 |
2426 |
2427 characterEncoder := self encoderAt: lang. |
2427 characterEncoder := self encoderAt: lang. |
2428 characterEncoder isNil ifTrue:[ characterEncoder := CharacterEncoder::NullEncoder ]. |
2428 characterEncoder isNil ifTrue:[ characterEncoder := CharacterEncoder::NullEncoder ]. |
2429 orderedAssociations := keyStringsToLanguageMappings orderedLanguageMappingsAssociationsFor: lang. |
2429 orderedAssociations := keyStringsToLanguageMappings orderedLanguageMappingsAssociationsFor: lang. |
2430 |
2430 |
2431 maxKeySize := keyStringsToLanguageMappings maxKeySizeForLanguage: lang. |
2431 maxKeySize := keyStringsToLanguageMappings maxKeySizeForLanguage: lang. |
2432 |
2432 |
2433 orderedAssociations do:[:association | |
2433 orderedAssociations do:[:association | |
2434 aStream nextPutAll: (association key storeString paddedTo: maxKeySize) ; |
2434 aStream nextPutAll: (association key storeString paddedTo: maxKeySize) ; |
2435 nextPutAll: (String new: 10); |
2435 nextPutAll: (String new: 10); |
2436 nextPutAll: (characterEncoder encodeString: association value) storeString; |
2436 nextPutAll: (characterEncoder encodeString: association value) storeString; |
2437 cr. |
2437 cr. |
2438 ]. |
2438 ]. |
2439 ! |
2439 ! |
2440 |
2440 |
2441 readResourceFile:aFilename asLanguage:lang |
2441 readResourceFile:aFilename asLanguage:lang |
2442 |resourcePack inStream lineString encoding decoder sortedKeys remainingKeys| |
2442 |resourcePack inStream lineString encoding decoder sortedKeys remainingKeys| |
2443 |
2443 |
2444 aFilename exists ifFalse:[ |
2444 aFilename exists ifFalse:[ |
2445 Dialog information:(resources string:'Language file: "%1" does not exist' with:aFilename baseName). |
2445 Dialog information:(resources string:'Language file: "%1" does not exist' with:aFilename baseName). |
2446 ^ self |
2446 ^ self |
2447 ]. |
2447 ]. |
2448 |
2448 |
2449 resourcePack := ResourcePack new. |
2449 resourcePack := ResourcePack new. |
2450 |
2450 |
2451 inStream := aFilename readStream. |
2451 inStream := aFilename readStream. |
2452 [inStream atEnd] whileFalse:[ |
2452 [inStream atEnd] whileFalse:[ |
2453 lineString := inStream nextLine. |
2453 lineString := inStream nextLine. |
2454 (lineString notEmpty |
2454 (lineString notEmpty |
2455 and:[ (lineString startsWith:';') not ]) ifTrue:[ |
2455 and:[ (lineString startsWith:';') not ]) ifTrue:[ |
2456 ((lineString startsWith:'#') and:[(lineString startsWith:'#(') not]) ifTrue:[ |
2456 ((lineString startsWith:'#') and:[(lineString startsWith:'#(') not]) ifTrue:[ |
2457 lineString := (lineString copyFrom:2) withoutSeparators. |
2457 lineString := (lineString copyFrom:2) withoutSeparators. |
2458 (lineString startsWith:'encoding ') ifTrue:[ |
2458 (lineString startsWith:'encoding ') ifTrue:[ |
2459 encoding := ResourcePack extractEncodingFromLine:lineString. |
2459 encoding := ResourcePack extractEncodingFromLine:lineString. |
2460 decoder := CharacterEncoder encoderFor:encoding ifAbsent:nil. |
2460 decoder := CharacterEncoder encoderFor:encoding ifAbsent:nil. |
2461 ]. |
2461 ]. |
2462 ] ifFalse:[ |
2462 ] ifFalse:[ |
2463 ResourcePack |
2463 ResourcePack |
2464 processResourceLine:lineString |
2464 processResourceLine:lineString |
2465 encoding:decoder |
2465 encoding:decoder |
2466 file:aFilename pathName |
2466 file:aFilename pathName |
2467 printErrorWith:[:msg | Transcript showCR:msg ] |
2467 printErrorWith:[:msg | Transcript showCR:msg ] |
2468 for:resourcePack |
2468 for:resourcePack |
2469 keepUselessTranslations:true. |
2469 keepUselessTranslations:true. |
2470 ]. |
2470 ]. |
2471 ]. |
2471 ]. |
2472 ]. |
2472 ]. |
2473 inStream close. |
2473 inStream close. |
2474 |
2474 |
2475 sortedKeys := (resourcePack keys select:[:k | k isString]) asSortedCollection. |
2475 sortedKeys := (resourcePack keys select:[:k | k isString]) asSortedCollection. |
2476 remainingKeys := resourcePack keys select:[:k | k isString not]. |
2476 remainingKeys := resourcePack keys select:[:k | k isString not]. |
2477 |
2477 |
2478 keyStringsToLanguageMappings atLanguage: lang putFilename: aFilename. |
2478 keyStringsToLanguageMappings atLanguage: lang putFilename: aFilename. |
2479 keyStringsToLanguageMappings atLanguage: lang putEncoder: decoder. |
2479 keyStringsToLanguageMappings atLanguage: lang putEncoder: decoder. |
2480 |
2480 |
2481 sortedKeys do:[:k | |
2481 sortedKeys do:[:k | |
2482 keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k) sendChange:false |
2482 keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k) sendChange:false |
2483 ]. |
2483 ]. |
2484 remainingKeys do:[:k | |
2484 remainingKeys do:[:k | |
2485 keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k) sendChange:false |
2485 keyStringsToLanguageMappings at:k language:lang put:(resourcePack at:k) sendChange:false |
2486 ]. |
2486 ]. |
2487 keyStringsToLanguageMappings changed. |
2487 keyStringsToLanguageMappings changed. |
2488 ! |
2488 ! |
2489 |
2489 |
2490 saveLanguage: lang |
2490 saveLanguage: lang |
2492 |aFilename| |
2492 |aFilename| |
2493 |
2493 |
2494 lang isNil ifTrue:[^ self]. |
2494 lang isNil ifTrue:[^ self]. |
2495 aFilename := keyStringsToLanguageMappings filenameAt:lang. |
2495 aFilename := keyStringsToLanguageMappings filenameAt:lang. |
2496 aFilename isNil ifTrue:[ |
2496 aFilename isNil ifTrue:[ |
2497 aFilename := self requestFilenameFor: lang. |
2497 aFilename := self requestFilenameFor: lang. |
2498 aFilename isNil ifTrue:[^ self]. |
2498 aFilename isNil ifTrue:[^ self]. |
2499 ]. |
2499 ]. |
2500 self saveResourceFile:aFilename for:lang asSymbol |
2500 self saveResourceFile:aFilename for:lang asSymbol |
2501 ! |
2501 ! |
2502 |
2502 |
2503 saveResourceFile: aFilename for: lang |
2503 saveResourceFile: aFilename for: lang |
2504 |
2504 |
2505 |aStream | |
2505 |aStream | |
2506 |
2506 |
2507 keyStringsToLanguageMappings atLanguage: lang putFilename: aFilename. |
2507 keyStringsToLanguageMappings atLanguage: lang putFilename: aFilename. |
2508 aStream := FileStream newFileNamed: aFilename. |
2508 aStream := FileStream newFileNamed: aFilename. |
2509 self printLanguage: lang on: aStream. |
2509 self printLanguage: lang on: aStream. |
2510 aStream flush; |
2510 aStream flush; |
2511 close. |
2511 close. |
2512 DialogBox information: 'The resource file for the language ', lang printString storeString, ' was saved in the file: ', aFilename nameString |
2512 DialogBox information: 'The resource file for the language ', lang printString storeString, ' was saved in the file: ', aFilename nameString |
2513 ! ! |
2513 ! ! |
2514 |
2514 |
2515 !InternationalLanguageTranslationEditor methodsFor:'searching'! |
2515 !InternationalLanguageTranslationEditor methodsFor:'searching'! |
2516 |
2516 |
2532 |searchText rowFoundIndex| |
2532 |searchText rowFoundIndex| |
2533 |
2533 |
2534 searchText := searchTextView contents. |
2534 searchText := searchTextView contents. |
2535 searchText isEmptyOrNil ifTrue:[^self]. |
2535 searchText isEmptyOrNil ifTrue:[^self]. |
2536 self objectsList isEmpty ifTrue:[^self]. |
2536 self objectsList isEmpty ifTrue:[^self]. |
2537 rowFoundIndex := self tableView findFirstRowWithString: searchText |
2537 rowFoundIndex := self tableView findFirstRowWithString: searchText |
2538 from:1 |
2538 from:1 |
2539 to:self objectsList size |
2539 to:self objectsList size |
2540 ignoreCase:self ignoreCaseHolder value. |
2540 ignoreCase:self ignoreCaseHolder value. |
2541 rowFoundIndex isNil ifTrue:[ |
2541 rowFoundIndex isNil ifTrue:[ |
2542 self searchTextNotFound. |
2542 self searchTextNotFound. |
2543 ^self |
2543 ^self |
2544 ]. |
2544 ]. |
2545 self selectListIndex: rowFoundIndex |
2545 self selectListIndex: rowFoundIndex |
2546 |
2546 |
2547 "Created: / 16-06-2007 / 10:54:51 / Administrador" |
2547 "Created: / 16-06-2007 / 10:54:51 / Administrador" |
2548 "Modified: / 19-06-2007 / 15:38:59 / Administrador" |
2548 "Modified: / 19-06-2007 / 15:38:59 / Administrador" |
2555 searchText := searchTextView contents. |
2555 searchText := searchTextView contents. |
2556 searchText isEmptyOrNil ifTrue:[^self]. |
2556 searchText isEmptyOrNil ifTrue:[^self]. |
2557 self objectsList isEmpty ifTrue:[^self]. |
2557 self objectsList isEmpty ifTrue:[^self]. |
2558 currentSelectionIndex := self currentSelectionIndex. |
2558 currentSelectionIndex := self currentSelectionIndex. |
2559 (currentSelectionIndex isNil or:[currentSelectionIndex == 0]) ifTrue:[ |
2559 (currentSelectionIndex isNil or:[currentSelectionIndex == 0]) ifTrue:[ |
2560 self searchNextTextFromBeginning. |
2560 self searchNextTextFromBeginning. |
2561 ^self. |
2561 ^self. |
2562 ]. |
2562 ]. |
2563 listSize := self objectsList size. |
2563 listSize := self objectsList size. |
2564 (currentSelectionIndex == listSize and:[includeCurrentSelection not]) ifTrue:[ |
2564 (currentSelectionIndex == listSize and:[includeCurrentSelection not]) ifTrue:[ |
2565 self searchNextTextReachEnd. |
2565 self searchNextTextReachEnd. |
2566 ^self. |
2566 ^self. |
2567 ]. |
2567 ]. |
2568 fromIndex := includeCurrentSelection |
2568 fromIndex := includeCurrentSelection |
2569 ifTrue:[currentSelectionIndex] |
2569 ifTrue:[currentSelectionIndex] |
2570 ifFalse:[currentSelectionIndex + 1]. |
2570 ifFalse:[currentSelectionIndex + 1]. |
2571 rowFoundIndex := self tableView findFirstRowWithString: searchText |
2571 rowFoundIndex := self tableView findFirstRowWithString: searchText |
2572 from:fromIndex |
2572 from:fromIndex |
2573 to:listSize |
2573 to:listSize |
2574 ignoreCase:self ignoreCaseHolder value. |
2574 ignoreCase:self ignoreCaseHolder value. |
2575 rowFoundIndex isNil ifTrue:[ |
2575 rowFoundIndex isNil ifTrue:[ |
2576 self searchNextTextReachEnd. |
2576 self searchNextTextReachEnd. |
2577 ^self |
2577 ^self |
2578 ]. |
2578 ]. |
2579 self selectListIndex: rowFoundIndex |
2579 self selectListIndex: rowFoundIndex |
2580 |
2580 |
2581 "Created: / 16-06-2007 / 09:20:57 / Administrador" |
2581 "Created: / 16-06-2007 / 09:20:57 / Administrador" |
2582 "Modified: / 19-06-2007 / 15:38:06 / Administrador" |
2582 "Modified: / 19-06-2007 / 15:38:06 / Administrador" |
2600 searchText := searchTextView contents. |
2600 searchText := searchTextView contents. |
2601 searchText isEmptyOrNil ifTrue:[^self]. |
2601 searchText isEmptyOrNil ifTrue:[^self]. |
2602 self objectsList isEmpty ifTrue:[^self]. |
2602 self objectsList isEmpty ifTrue:[^self]. |
2603 currentSelectionIndex := self currentSelectionIndex. |
2603 currentSelectionIndex := self currentSelectionIndex. |
2604 currentSelectionIndex == 1 ifTrue:[ |
2604 currentSelectionIndex == 1 ifTrue:[ |
2605 self searchPreviousTextReachBeginning. |
2605 self searchPreviousTextReachBeginning. |
2606 ^self. |
2606 ^self. |
2607 ]. |
2607 ]. |
2608 (currentSelectionIndex isNil or:[currentSelectionIndex == 0]) |
2608 (currentSelectionIndex isNil or:[currentSelectionIndex == 0]) |
2609 ifTrue:[ |
2609 ifTrue:[ |
2610 self searchPreviousTextFromEnd. |
2610 self searchPreviousTextFromEnd. |
2611 ^self. |
2611 ^self. |
2612 ] |
2612 ] |
2613 ifFalse:[fromIndex := currentSelectionIndex - 1]. |
2613 ifFalse:[fromIndex := currentSelectionIndex - 1]. |
2614 rowFoundIndex := self tableView findFirstRowWithString: searchText |
2614 rowFoundIndex := self tableView findFirstRowWithString: searchText |
2615 from: fromIndex |
2615 from: fromIndex |
2616 to: 1 |
2616 to: 1 |
2617 by: -1 |
2617 by: -1 |
2618 ignoreCase:self ignoreCaseHolder value. |
2618 ignoreCase:self ignoreCaseHolder value. |
2619 rowFoundIndex isNil ifTrue:[ |
2619 rowFoundIndex isNil ifTrue:[ |
2620 self searchPreviousTextReachBeginning. |
2620 self searchPreviousTextReachBeginning. |
2621 ^self |
2621 ^self |
2622 ]. |
2622 ]. |
2623 self selectListIndex: rowFoundIndex. |
2623 self selectListIndex: rowFoundIndex. |
2624 |
2624 |
2625 "Modified: / 19-06-2007 / 15:38:16 / Administrador" |
2625 "Modified: / 19-06-2007 / 15:38:16 / Administrador" |
2626 ! |
2626 ! |
2630 |searchText rowFoundIndex| |
2630 |searchText rowFoundIndex| |
2631 |
2631 |
2632 searchText := searchTextView contents. |
2632 searchText := searchTextView contents. |
2633 searchText isEmptyOrNil ifTrue:[^self]. |
2633 searchText isEmptyOrNil ifTrue:[^self]. |
2634 self objectsList isEmpty ifTrue:[^self]. |
2634 self objectsList isEmpty ifTrue:[^self]. |
2635 rowFoundIndex := self tableView findFirstRowWithString: searchText |
2635 rowFoundIndex := self tableView findFirstRowWithString: searchText |
2636 from: self objectsList size |
2636 from: self objectsList size |
2637 to: 1 |
2637 to: 1 |
2638 by: -1 |
2638 by: -1 |
2639 ignoreCase:self ignoreCaseHolder value. |
2639 ignoreCase:self ignoreCaseHolder value. |
2640 rowFoundIndex isNil ifTrue:[ |
2640 rowFoundIndex isNil ifTrue:[ |
2641 self searchTextNotFound. |
2641 self searchTextNotFound. |
2642 ^self |
2642 ^self |
2643 ]. |
2643 ]. |
2644 self selectListIndex: rowFoundIndex. |
2644 self selectListIndex: rowFoundIndex. |
2645 |
2645 |
2646 "Created: / 16-06-2007 / 10:55:43 / Administrador" |
2646 "Created: / 16-06-2007 / 10:55:43 / Administrador" |
2647 "Modified: / 19-06-2007 / 15:38:26 / Administrador" |
2647 "Modified: / 19-06-2007 / 15:38:26 / Administrador" |
2738 spec := OrderedCollection new. |
2738 spec := OrderedCollection new. |
2739 |
2739 |
2740 spec add:(self class keyTableColumn first). |
2740 spec add:(self class keyTableColumn first). |
2741 |
2741 |
2742 self shownLanguages do:[:lang | |
2742 self shownLanguages do:[:lang | |
2743 |entry| |
2743 |entry| |
2744 |
2744 |
2745 entry := self class languageTableColumn first. |
2745 entry := self class languageTableColumn first. |
2746 entry := entry copy replaceAll:#lang with:lang. |
2746 entry := entry copy replaceAll:#lang with:lang. |
2747 spec add: entry |
2747 spec add: entry |
2748 ]. |
2748 ]. |
2749 ^ spec |
2749 ^ spec |
2750 ! |
2750 ! |
2751 |
2751 |
2752 keyStringInRow:row |
2752 keyStringInRow:row |
2760 |
2760 |
2761 bottomOffset := 0. |
2761 bottomOffset := 0. |
2762 |
2762 |
2763 searchBarVisible := self searchBoxVisible value. |
2763 searchBarVisible := self searchBoxVisible value. |
2764 searchBarVisible ifTrue:[ |
2764 searchBarVisible ifTrue:[ |
2765 bottomOffset := bottomOffset - searchBoxView height. |
2765 bottomOffset := bottomOffset - searchBoxView height. |
2766 ]. |
2766 ]. |
2767 translationsPanel layout bottomOffset:bottomOffset-1. |
2767 translationsPanel layout bottomOffset:bottomOffset-1. |
2768 translationsPanel container notNil ifTrue:[ |
2768 translationsPanel container notNil ifTrue:[ |
2769 translationsPanel containerChangedSize. |
2769 translationsPanel containerChangedSize. |
2770 ]. |
2770 ]. |
2771 |
2771 |
2772 "Created: / 16-06-2007 / 11:58:25 / Administrador" |
2772 "Created: / 16-06-2007 / 11:58:25 / Administrador" |
2773 ! ! |
2773 ! ! |
2774 |
2774 |
2786 exampleLanguageSelectionChanged |
2786 exampleLanguageSelectionChanged |
2787 |
2787 |
2788 self updateExampleLanguageText. |
2788 self updateExampleLanguageText. |
2789 ! |
2789 ! |
2790 |
2790 |
2791 languageTextAccepted |
2791 languageTextAccepted |
2792 |nextRowIndex selRow| |
2792 |nextRowIndex selRow| |
2793 |
2793 |
2794 selRow := self selectedKeyRow value. |
2794 selRow := self selectedKeyRow value. |
2795 selRow notNil ifTrue:[ |
2795 selRow notNil ifTrue:[ |
2796 keyStringsToLanguageMappings size = selRow |
2796 keyStringsToLanguageMappings size = selRow |
2797 ifTrue:[ self updateLanguageTextModification.] |
2797 ifTrue:[ self updateLanguageTextModification.] |
2798 ifFalse:[ |
2798 ifFalse:[ |
2799 nextRowIndex := selRow + 1. |
2799 nextRowIndex := selRow + 1. |
2800 self selectedKeyRow value: nextRowIndex] |
2800 self selectedKeyRow value: nextRowIndex] |
2801 ]. |
2801 ]. |
2802 ! |
2802 ! |
2803 |
2803 |
2804 pasteOriginalInLanguageText |
2804 pasteOriginalInLanguageText |
2805 <resource: #uiCallback> |
2805 <resource: #uiCallback> |
2812 self languageTextModifiedHolder value:true. |
2812 self languageTextModifiedHolder value:true. |
2813 ! |
2813 ! |
2814 |
2814 |
2815 pastePreviousTranslationInLanguageText |
2815 pastePreviousTranslationInLanguageText |
2816 "Obtain the text from the previous translation and paste it into the languageTextEditor" |
2816 "Obtain the text from the previous translation and paste it into the languageTextEditor" |
2817 |
2817 |
2818 | previousLanguageText previousLanguageRow| |
2818 | previousLanguageText previousLanguageRow| |
2819 |
2819 |
2820 previousLanguageRow := dataSetView at:self selectedKeyRow value - 1 |
2820 previousLanguageRow := dataSetView at:self selectedKeyRow value - 1 |
2821 ifAbsent:[^self]. |
2821 ifAbsent:[^self]. |
2822 previousLanguageText := previousLanguageRow atLanguage: self currentLanguage. |
2822 previousLanguageText := previousLanguageRow atLanguage: self currentLanguage. |
2823 languageEditor selectAll. |
2823 languageEditor selectAll. |
2824 languageEditor pasteOrReplace:previousLanguageText. |
2824 languageEditor pasteOrReplace:previousLanguageText. |
2825 self languageTextModifiedHolder value:true. |
2825 self languageTextModifiedHolder value:true. |
2826 ! |
2826 ! |
2832 searchTextView takeFocus. |
2832 searchTextView takeFocus. |
2833 |
2833 |
2834 "Modified: / 16-06-2007 / 11:58:44 / Administrador" |
2834 "Modified: / 16-06-2007 / 11:58:44 / Administrador" |
2835 ! |
2835 ! |
2836 |
2836 |
2837 selectionChanged |
2837 selectionChanged |
2838 |
2838 |
2839 self updateOriginalTextModification. |
2839 self updateOriginalTextModification. |
2840 self updateLanguageTextModification. |
2840 self updateLanguageTextModification. |
2841 self updateLanguageAndKeySelection. |
2841 self updateLanguageAndKeySelection. |
2842 self updateExampleLanguageText. |
2842 self updateExampleLanguageText. |
2852 |
2852 |
2853 showMissingTranslationsOnlyChanged |
2853 showMissingTranslationsOnlyChanged |
2854 ! |
2854 ! |
2855 |
2855 |
2856 shownLanguagesChanged |
2856 shownLanguagesChanged |
2857 self keyStringAndLanguageSelectionTableColumnDescriptionHolder |
2857 self keyStringAndLanguageSelectionTableColumnDescriptionHolder |
2858 value:(self keyStringAndLanguageSelectionTableColumnDescription). |
2858 value:(self keyStringAndLanguageSelectionTableColumnDescription). |
2859 ! |
2859 ! |
2860 |
2860 |
2861 stopApplication |
2861 stopApplication |
2862 |p| |
2862 |p| |
2863 |
2863 |
2864 (p := monitoredApplication) notNil ifTrue:[ |
2864 (p := monitoredApplication) notNil ifTrue:[ |
2865 p terminate. |
2865 p terminate. |
2866 ]. |
2866 ]. |
2867 ! ! |
2867 ! ! |
2868 |
2868 |
2869 !InternationalLanguageTranslationEditor::AccessCollectingPseudoResourcePack methodsFor:'accessing'! |
2869 !InternationalLanguageTranslationEditor::AccessCollectingPseudoResourcePack methodsFor:'accessing'! |
2870 |
2870 |
2884 self addKey:aKey sendChange:true |
2884 self addKey:aKey sendChange:true |
2885 ! |
2885 ! |
2886 |
2886 |
2887 addKey:aKey sendChange:aBoolean |
2887 addKey:aKey sendChange:aBoolean |
2888 (keys includes:aKey) ifFalse:[ |
2888 (keys includes:aKey) ifFalse:[ |
2889 keys add:aKey. |
2889 keys add:aKey. |
2890 aBoolean ifTrue:[ self changed ]. |
2890 aBoolean ifTrue:[ self changed ]. |
2891 ] |
2891 ] |
2892 ! |
2892 ! |
2893 |
2893 |
2894 addKeys:aCollectionOfKey |
2894 addKeys:aCollectionOfKey |
2895 keys addAll:aCollectionOfKey. |
2895 keys addAll:aCollectionOfKey. |
2896 self changed. |
2896 self changed. |
2897 ! |
2897 ! |
2898 |
2898 |
2899 addLanguage:lang |
2899 addLanguage:lang |
2900 (languages includes:lang) ifFalse:[ |
2900 (languages includes:lang) ifFalse:[ |
2901 languages add:lang. |
2901 languages add:lang. |
2902 perLanguageMappings at:lang put:(OrderedDictionary new). |
2902 perLanguageMappings at:lang put:(OrderedDictionary new). |
2903 ] |
2903 ] |
2904 ! |
2904 ! |
2905 |
2905 |
2906 at:aKey language:language |
2906 at:aKey language:language |
2907 ^ (perLanguageMappings at:language) at:aKey ifAbsent:nil |
2907 ^ (perLanguageMappings at:language) at:aKey ifAbsent:nil |
2931 |
2931 |
2932 decoderKey |
2932 decoderKey |
2933 ^#decoder |
2933 ^#decoder |
2934 ! |
2934 ! |
2935 |
2935 |
2936 encoderAt:lang |
2936 encoderAt:lang |
2937 ^ (self languageInfoAt:lang) at: self encoderKey ifAbsent:[nil] |
2937 ^ (self languageInfoAt:lang) at: self encoderKey ifAbsent:[nil] |
2938 ! |
2938 ! |
2939 |
2939 |
2940 encoderKey |
2940 encoderKey |
2941 ^#encoder |
2941 ^#encoder |
2943 |
2943 |
2944 fileNameKey |
2944 fileNameKey |
2945 ^ #filename |
2945 ^ #filename |
2946 ! |
2946 ! |
2947 |
2947 |
2948 filenameAt:lang |
2948 filenameAt:lang |
2949 ^ (self languageInfoAt:lang) at: self fileNameKey ifAbsent:[nil] |
2949 ^ (self languageInfoAt:lang) at: self fileNameKey ifAbsent:[nil] |
2950 ! |
2950 ! |
2951 |
2951 |
2952 keyAt:index |
2952 keyAt:index |
2953 ^ keys at:index ifAbsent:[nil]. |
2953 ^ keys at:index ifAbsent:[nil]. |
2959 |
2959 |
2960 keys |
2960 keys |
2961 ^ keys |
2961 ^ keys |
2962 ! |
2962 ! |
2963 |
2963 |
2964 languageInfoAt: lang |
2964 languageInfoAt: lang |
2965 |
2965 |
2966 ^self perLanguageInfo at: lang ifAbsentPut:[Dictionary new] |
2966 ^self perLanguageInfo at: lang ifAbsentPut:[Dictionary new] |
2967 ! |
2967 ! |
2968 |
2968 |
2969 languages |
2969 languages |
2990 ! |
2990 ! |
2991 |
2991 |
2992 removeKey:aKey |
2992 removeKey:aKey |
2993 keys remove:aKey ifAbsent:[]. |
2993 keys remove:aKey ifAbsent:[]. |
2994 perLanguageMappings do:[:eachMapping | |
2994 perLanguageMappings do:[:eachMapping | |
2995 eachMapping removeKey:aKey ifAbsent:[]. |
2995 eachMapping removeKey:aKey ifAbsent:[]. |
2996 ]. |
2996 ]. |
2997 self changed. |
2997 self changed. |
2998 ! |
2998 ! |
2999 |
2999 |
3000 rowForKey:aKey |
3000 rowForKey:aKey |
3001 ^ rowPerKey |
3001 ^ rowPerKey |
3002 at:aKey |
3002 at:aKey |
3003 ifAbsentPut:[InternationalLanguageTranslationEditor::LanguageMappingRow new |
3003 ifAbsentPut:[InternationalLanguageTranslationEditor::LanguageMappingRow new |
3004 key:aKey; mappings:self]. |
3004 key:aKey; mappings:self]. |
3005 ! |
3005 ! |
3006 |
3006 |
3007 size |
3007 size |
3008 ^ keys size |
3008 ^ keys size |
3009 ! ! |
3009 ! ! |
3010 |
3010 |
3011 !InternationalLanguageTranslationEditor::KeyStringsToLanguageMappings methodsFor:'enumerating'! |
3011 !InternationalLanguageTranslationEditor::KeyStringsToLanguageMappings methodsFor:'enumerating'! |
3012 |
3012 |
3013 do:aBlock |
3013 do:aBlock |
3014 keys do:[:eachKey | |
3014 keys do:[:eachKey | |
3015 aBlock value:(self rowForKey:eachKey). |
3015 aBlock value:(self rowForKey:eachKey). |
3016 ]. |
3016 ]. |
3017 ! ! |
3017 ! ! |
3018 |
3018 |
3019 !InternationalLanguageTranslationEditor::KeyStringsToLanguageMappings methodsFor:'initialization'! |
3019 !InternationalLanguageTranslationEditor::KeyStringsToLanguageMappings methodsFor:'initialization'! |
3020 |
3020 |
3022 super initialize. |
3022 super initialize. |
3023 |
3023 |
3024 keys := OrderedSet new. |
3024 keys := OrderedSet new. |
3025 languages := OrderedCollection new. |
3025 languages := OrderedCollection new. |
3026 perLanguageMappings := Dictionary new. |
3026 perLanguageMappings := Dictionary new. |
3027 perLanguageInfo := Dictionary new. |
3027 perLanguageInfo := Dictionary new. |
3028 rowPerKey := Dictionary new. |
3028 rowPerKey := Dictionary new. |
3029 |
3029 |
3030 self addLanguage:#'de'. |
3030 self addLanguage:#'de'. |
3031 self addLanguage:#'fr'. |
3031 self addLanguage:#'fr'. |
3032 self addLanguage:#'es'. |
3032 self addLanguage:#'es'. |
3042 keys add:'no'. |
3042 keys add:'no'. |
3043 |
3043 |
3044 self addLanguage:#'de'. |
3044 self addLanguage:#'de'. |
3045 self addLanguage:#'fr'. |
3045 self addLanguage:#'fr'. |
3046 |
3046 |
3047 self at:'open' language:#'de' put:'öffnen'. |
3047 self at:'open' language:#'de' put:'öffnen'. |
3048 self at:'close' language:#'de' put:'schliessen'. |
3048 self at:'close' language:#'de' put:'schließen'. |
3049 self at:'yes' language:#'de' put:'ja'. |
3049 self at:'yes' language:#'de' put:'ja'. |
3050 self at:'no' language:#'de' put:'nein'. |
3050 self at:'no' language:#'de' put:'nein'. |
3051 self at:'cancel' language:#'de' put:'abbrechen'. |
3051 self at:'cancel' language:#'de' put:'abbrechen'. |
3052 |
3052 |
3053 self at:'open' language:#'fr' put:'ouvrir'. |
3053 self at:'open' language:#'fr' put:'ouvrir'. |
3054 self at:'close' language:#'fr' put:'fermer'. |
3054 self at:'close' language:#'fr' put:'fermer'. |
3055 self at:'yes' language:#'fr' put:'oui'. |
3055 self at:'yes' language:#'fr' put:'oui'. |
3056 self at:'no' language:#'fr' put:'non'. |
3056 self at:'no' language:#'fr' put:'non'. |
3057 ! ! |
3057 ! ! |
3058 |
3058 |
3059 !InternationalLanguageTranslationEditor::KeyStringsToLanguageMappings methodsFor:'private'! |
3059 !InternationalLanguageTranslationEditor::KeyStringsToLanguageMappings methodsFor:'private'! |
3060 |
3060 |
3061 atLanguage:lang |
3061 atLanguage:lang |
3096 |
3096 |
3097 maxKeySizeForLanguage: lang |
3097 maxKeySizeForLanguage: lang |
3098 |
3098 |
3099 ^(self atLanguage: lang) keys inject: 0 into:[:maxSize :each | |
3099 ^(self atLanguage: lang) keys inject: 0 into:[:maxSize :each | |
3100 (maxSize < each size and:[each size < 100]) |
3100 (maxSize < each size and:[each size < 100]) |
3101 ifTrue:[each size] |
3101 ifTrue:[each size] |
3102 ifFalse:[maxSize].]. |
3102 ifFalse:[maxSize].]. |
3103 ! |
3103 ! |
3104 |
3104 |
3105 searchForSimilarTranslation: aKey in: language |
3105 searchForSimilarTranslation: aKey in: language |
3106 "Returns a collection of translation associations that corresponds to a quite similar key comparing with aKey" |
3106 "Returns a collection of translation associations that corresponds to a quite similar key comparing with aKey" |
3107 |
3107 |
3108 |similarAssociations| |
3108 |similarAssociations| |
3109 |
3109 |
3110 similarAssociations:= |
3110 similarAssociations:= |
3111 (self mappingAtLanguage: language) associationsSelect:[:each | |
3111 (self mappingAtLanguage: language) associationsSelect:[:each | |
3112 ((each key sameAs: aKey) |
3112 ((each key sameAs: aKey) |
3113 or:[(aKey asUppercase startsWith: each key asUppercase) |
3113 or:[(aKey asUppercase startsWith: each key asUppercase) |
3114 or:[((each key asUppercase levenshteinTo: aKey asUppercase)/ each key size) < 0.3 |
3114 or:[((each key asUppercase levenshteinTo: aKey asUppercase)/ each key size) < 0.3 |
3115 ]]) |
3115 ]]) |
3116 and:[each value notNil |
3116 and:[each value notNil |
3117 and:[each value notEmpty]] |
3117 and:[each value notEmpty]] |
3118 ]. |
3118 ]. |
3119 ^similarAssociations |
3119 ^similarAssociations |
3120 ! ! |
3120 ! ! |
3121 |
3121 |
3122 !InternationalLanguageTranslationEditor::LanguageMappingRow methodsFor:'accessing'! |
3122 !InternationalLanguageTranslationEditor::LanguageMappingRow methodsFor:'accessing'! |
3154 |
3154 |
3155 visitObject:anObject with:aParameter |
3155 visitObject:anObject with:aParameter |
3156 |l| |
3156 |l| |
3157 |
3157 |
3158 (anObject isKindOf:UISpecification) ifTrue:[ |
3158 (anObject isKindOf:UISpecification) ifTrue:[ |
3159 (anObject respondsTo:#translateLabel) ifTrue:[ |
3159 (anObject respondsTo:#translateLabel) ifTrue:[ |
3160 anObject translateLabel == true ifTrue:[ |
3160 anObject translateLabel == true ifTrue:[ |
3161 translatedLabels isNil ifTrue:[ |
3161 translatedLabels isNil ifTrue:[ |
3162 translatedLabels := Set new. |
3162 translatedLabels := Set new. |
3163 ]. |
3163 ]. |
3164 l := anObject perform:#label ifNotUnderstood:nil. |
3164 l := anObject perform:#label ifNotUnderstood:nil. |
3165 l notNil ifTrue:[ |
3165 l notNil ifTrue:[ |
3166 translatedLabels add:l. |
3166 translatedLabels add:l. |
3167 ]. |
3167 ]. |
3168 ]. |
3168 ]. |
3169 ]. |
3169 ]. |
3170 ]. |
3170 ]. |
3171 self visitChildrenOf:anObject. |
3171 self visitChildrenOf:anObject. |
3172 ! ! |
3172 ! ! |
3173 |
3173 |
3174 !InternationalLanguageTranslationEditor class methodsFor:'documentation'! |
3174 !InternationalLanguageTranslationEditor class methodsFor:'documentation'! |