Tools__InternationalLanguageTranslationEditor.st
changeset 3594 cfbc0a29b030
parent 3522 2a319ce12319
child 3595 ebf63823c259
equal deleted inserted replaced
3593:c7c138eb0d86 3594:cfbc0a29b030
       
     1 "{ Encoding: utf8 }"
       
     2 
     1 "{ Package: 'stx:libtool2' }"
     3 "{ Package: 'stx:libtool2' }"
     2 
     4 
     3 "{ NameSpace: Tools }"
     5 "{ NameSpace: Tools }"
     4 
     6 
     5 ApplicationModel subclass:#InternationalLanguageTranslationEditor
     7 ApplicationModel subclass:#InternationalLanguageTranslationEditor
   312      Tools::InternationalLanguageTranslationEditor open
   314      Tools::InternationalLanguageTranslationEditor open
   313     "
   315     "
   314 
   316 
   315     <resource: #canvas>
   317     <resource: #canvas>
   316 
   318 
   317     ^
   319     ^ 
   318     #(FullSpec
   320     #(FullSpec
   319        name: windowSpec
   321        name: windowSpec
   320        window:
   322        uuid: '37d7f37a-b8d0-11e8-aeef-b8f6b1108e05'
       
   323        window: 
   321       (WindowSpec
   324       (WindowSpec
   322 	 label: 'InternationalLanguageTranslationEditor'
   325          label: 'InternationalLanguageTranslationEditor'
   323 	 name: 'InternationalLanguageTranslationEditor'
   326          name: 'InternationalLanguageTranslationEditor'
   324 	 min: (Point 10 10)
   327          uuid: '37d7f60e-b8d0-11e8-aeef-b8f6b1108e05'
   325 	 bounds: (Rectangle 0 0 774 610)
   328          min: (Point 10 10)
   326 	 menu: mainMenu
   329          bounds: (Rectangle 0 0 774 610)
       
   330          menu: mainMenu
   327        )
   331        )
   328        component:
   332        component: 
   329       (SpecCollection
   333       (SpecCollection
   330 	 collection: (
   334          collection: (
   331 	  (MenuPanelSpec
   335           (MenuPanelSpec
   332 	     name: 'ToolBar'
   336              name: 'ToolBar'
   333 	     layout: (LayoutFrame 0 0 0 0 0 1 30 0)
   337              layout: (LayoutFrame 0 0 0 0 0 1 30 0)
   334 	     menu: menuToolBar
   338              uuid: '37d7f820-b8d0-11e8-aeef-b8f6b1108e05'
   335 	     textDefault: true
   339              menu: menuToolBar
   336 	   )
   340              textDefault: true
   337 	  (VariableVerticalPanelSpec
   341            )
   338 	     name: 'TranslationsVariableVerticalPanel'
   342           (VariableVerticalPanelSpec
   339 	     layout: (LayoutFrame 0 0 30 0 0 1 -32 1)
   343              name: 'TranslationsVariableVerticalPanel'
   340 	     component:
   344              layout: (LayoutFrame 0 0 30 0 0 1 -32 1)
   341 	    (SpecCollection
   345              uuid: '37d7f9ce-b8d0-11e8-aeef-b8f6b1108e05'
   342 	       collection: (
   346              component: 
   343 		(DataSetSpec
   347             (SpecCollection
   344 		   name: 'KeyStringAndLanguageSelectionTable'
   348                collection: (
   345 		   model: selectedKeyRow
   349                 (DataSetSpec
   346 		   menu: keyStringAndLanguageSelectionTableMenu
   350                    name: 'KeyStringAndLanguageSelectionTable'
   347 		   hasHorizontalScrollBar: true
   351                    uuid: '37d7fb2c-b8d0-11e8-aeef-b8f6b1108e05'
   348 		   hasVerticalScrollBar: true
   352                    model: selectedKeyRow
   349 		   dataList: keyStringAndLanguageSelectionTable
   353                    menu: keyStringAndLanguageSelectionTableMenu
   350 		   columnHolder: keyStringAndLanguageSelectionTableColumnDescriptionHolder
   354                    hasHorizontalScrollBar: true
   351 		   beDependentOfRows: true
   355                    hasVerticalScrollBar: true
   352 		   columnAdaptor: yourself
   356                    dataList: keyStringAndLanguageSelectionTable
   353 		   postBuildCallback: postBuildDataSet:
   357                    columnHolder: keyStringAndLanguageSelectionTableColumnDescriptionHolder
   354 		 )
   358                    beDependentOfRows: true
   355 		(VariableVerticalPanelSpec
   359                    columnAdaptor: yourself
   356 		   name: 'VariableVerticalPanel1'
   360                    postBuildCallback: postBuildDataSet:
   357 		   component:
   361                  )
   358 		  (SpecCollection
   362                 (VariableVerticalPanelSpec
   359 		     collection: (
   363                    name: 'VariableVerticalPanel1'
   360 		      (ViewSpec
   364                    uuid: '37d7fd48-b8d0-11e8-aeef-b8f6b1108e05'
   361 			 name: 'Box1'
   365                    component: 
   362 			 component:
   366                   (SpecCollection
   363 			(SpecCollection
   367                      collection: (
   364 			   collection: (
   368                       (ViewSpec
   365 			    (LabelSpec
   369                          name: 'Box1'
   366 			       label: 'Original String (Key):'
   370                          uuid: '37d7fe24-b8d0-11e8-aeef-b8f6b1108e05'
   367 			       name: 'Label2'
   371                          component: 
   368 			       layout: (LayoutFrame 0 0 -2 0 0 1 28 0)
   372                         (SpecCollection
   369 			       translateLabel: true
   373                            collection: (
   370 			       adjust: left
   374                             (LabelSpec
   371 			     )
   375                                label: 'Original String (Key):'
   372 			    (TextEditorSpec
   376                                name: 'Label2'
   373 			       name: 'OriginalText'
   377                                layout: (LayoutFrame 0 0 -2 0 0 1 28 0)
   374 			       layout: (LayoutFrame 0 0 27 0 0 1 -2 1)
   378                                uuid: '37d7fee2-b8d0-11e8-aeef-b8f6b1108e05'
   375 			       model: originalTextHolder
   379                                translateLabel: true
   376 			       hasHorizontalScrollBar: true
   380                                adjust: left
   377 			       hasVerticalScrollBar: true
   381                              )
   378 			       modifiedChannel: originalTextModifiedHolder
   382                             (TextEditorSpec
   379 			       acceptCallBack: languageTextAccepted
   383                                name: 'OriginalText'
   380 			       hasKeyboardFocusInitially: false
   384                                layout: (LayoutFrame 0 0 27 0 0 1 -2 1)
   381 			     )
   385                                uuid: '37d8002c-b8d0-11e8-aeef-b8f6b1108e05'
   382 			    )
   386                                model: originalTextHolder
   383 
   387                                hasHorizontalScrollBar: true
   384 			 )
   388                                hasVerticalScrollBar: true
   385 		       )
   389                                modifiedChannel: originalTextModifiedHolder
   386 		      (ViewSpec
   390                                acceptCallBack: languageTextAccepted
   387 			 name: 'Box3'
   391                                hasKeyboardFocusInitially: false
   388 			 component:
   392                              )
   389 			(SpecCollection
   393                             )
   390 			   collection: (
   394                           
   391 			    (LabelSpec
   395                          )
   392 			       label: 'Select Another Language as example:'
   396                        )
   393 			       name: 'Label3'
   397                       (ViewSpec
   394 			       layout: (LayoutFrame 0 0 -6 0 0 1 24 0)
   398                          name: 'Box3'
   395 			       translateLabel: true
   399                          uuid: '37d801bc-b8d0-11e8-aeef-b8f6b1108e05'
   396 			       adjust: left
   400                          component: 
   397 			     )
   401                         (SpecCollection
   398 			    (ComboBoxSpec
   402                            collection: (
   399 			       name: 'ComboBox1'
   403                             (LabelSpec
   400 			       layout: (LayoutFrame 281 0 -2 0 406 0 18 0)
   404                                label: 'Select Another Language as example:'
   401 			       model: exampleLanguageSelectionHolder
   405                                name: 'Label3'
   402 			       immediateAccept: false
   406                                layout: (LayoutFrame 0 0 -6 0 0 1 24 0)
   403 			       acceptOnLeave: true
   407                                uuid: '37d80270-b8d0-11e8-aeef-b8f6b1108e05'
   404 			       acceptOnLostFocus: true
   408                                translateLabel: true
   405 			       acceptOnPointerLeave: false
   409                                adjust: left
   406 			       comboList: shownLanguages
   410                              )
   407 			       useIndex: false
   411                             (ComboBoxSpec
   408 			     )
   412                                name: 'ComboBox1'
   409 			    (TextEditorSpec
   413                                layout: (LayoutFrame 281 0 -2 0 406 0 18 0)
   410 			       name: 'ExampleLanguageText'
   414                                uuid: '37d80360-b8d0-11e8-aeef-b8f6b1108e05'
   411 			       layout: (LayoutFrame 0 0 30 0 0 1 0 1)
   415                                model: exampleLanguageSelectionHolder
   412 			       model: exampleLanguageTextHolder
   416                                immediateAccept: false
   413 			       hasHorizontalScrollBar: true
   417                                acceptOnLeave: true
   414 			       hasVerticalScrollBar: true
   418                                acceptOnLostFocus: true
   415 			       isReadOnly: true
   419                                acceptOnPointerLeave: false
   416 			       hasKeyboardFocusInitially: false
   420                                comboList: shownLanguages
   417 			     )
   421                                useIndex: false
   418 			    )
   422                              )
   419 
   423                             (TextEditorSpec
   420 			 )
   424                                name: 'ExampleLanguageText'
   421 		       )
   425                                layout: (LayoutFrame 0 0 30 0 0 1 0 1)
   422 		      (ViewSpec
   426                                uuid: '37d805cc-b8d0-11e8-aeef-b8f6b1108e05'
   423 			 name: 'Box2'
   427                                model: exampleLanguageTextHolder
   424 			 component:
   428                                hasHorizontalScrollBar: true
   425 			(SpecCollection
   429                                hasVerticalScrollBar: true
   426 			   collection: (
   430                                isReadOnly: true
   427 			    (LabelSpec
   431                                hasKeyboardFocusInitially: false
   428 			       label: 'Translated String:'
   432                              )
   429 			       name: 'Label1'
   433                             )
   430 			       layout: (LayoutFrame 0 0 0 0 0 1 30 0)
   434                           
   431 			       translateLabel: true
   435                          )
   432 			       adjust: left
   436                        )
   433 			     )
   437                       (ViewSpec
   434 			    (TextEditorSpec
   438                          name: 'Box2'
   435 			       name: 'LanguageText'
   439                          uuid: '37d8070c-b8d0-11e8-aeef-b8f6b1108e05'
   436 			       layout: (LayoutFrame 0 0 30 0 0 1 0 1)
   440                          component: 
   437 			       model: languageTextHolder
   441                         (SpecCollection
   438 			       hasHorizontalScrollBar: true
   442                            collection: (
   439 			       hasVerticalScrollBar: true
   443                             (LabelSpec
   440 			       acceptChannel: languageTextAcceptHolder
   444                                label: 'Translated String:'
   441 			       modifiedChannel: languageTextModifiedHolder
   445                                name: 'Label1'
   442 			       acceptCallBack: languageTextAccepted
   446                                layout: (LayoutFrame 0 0 0 0 0 1 30 0)
   443 			       hasKeyboardFocusInitially: false
   447                                uuid: '37d807ca-b8d0-11e8-aeef-b8f6b1108e05'
   444 			       postBuildCallback: languageEditorBuilt:
   448                                translateLabel: true
   445 			     )
   449                                adjust: left
   446 			    (ActionButtonSpec
   450                              )
   447 			       label: 'Paste Previous'
   451                             (TextEditorSpec
   448 			       name: 'pastePreviousTranslation'
   452                                name: 'LanguageText'
   449 			       layout: (LayoutOrigin 0 0.83085250338295003 0 0.034482758620689995)
   453                                layout: (LayoutFrame 0 0 30 0 0 1 0 1)
   450 			       translateLabel: true
   454                                uuid: '37d808ba-b8d0-11e8-aeef-b8f6b1108e05'
   451 			       model: pastePreviousTranslationInLanguageText
   455                                model: languageTextHolder
   452 			       enableChannel: pastePreviousTranslationEnableHolder
   456                                hasHorizontalScrollBar: true
   453 			       disabledLogo: 'Paste Previous'
   457                                hasVerticalScrollBar: true
   454 			     )
   458                                acceptChannel: languageTextAcceptHolder
   455 			    (ActionButtonSpec
   459                                modifiedChannel: languageTextModifiedHolder
   456 			       label: 'Paste Original'
   460                                acceptCallBack: languageTextAccepted
   457 			       name: 'Button1'
   461                                hasKeyboardFocusInitially: false
   458 			       layout: (LayoutOrigin -95 0.83085250338295003 0 0.034482758620689995)
   462                                postBuildCallback: languageEditorBuilt:
   459 			       translateLabel: true
   463                              )
   460 			       model: pasteOriginalInLanguageText
   464                             (ActionButtonSpec
   461 			       enableChannel: pasteOriginalEnableHolder
   465                                label: 'Paste Original'
   462 			       disabledLogo: 'Paste Original'
   466                                name: 'Button1'
   463 			     )
   467                                layout: (LayoutFrame -186 0.83085250338295003 0 0 -64 0.83085250338295003 27 0)
   464 			    )
   468                                uuid: '37d809fa-b8d0-11e8-aeef-b8f6b1108e05'
   465 
   469                                translateLabel: true
   466 			 )
   470                                model: pasteOriginalInLanguageText
   467 		       )
   471                                enableChannel: pasteOriginalEnableHolder
   468 		      )
   472                                disabledLogo: 'Paste Original'
   469 
   473                              )
   470 		   )
   474                             (ActionButtonSpec
   471 		   handles: (Any 0.3333333333333301 0.66666666666667018 1.0)
   475                                label: 'Paste Previous'
   472 		 )
   476                                name: 'pastePreviousTranslation'
   473 		)
   477                                layout: (LayoutFrame -42 0.83085250338295003 0 0 118 0.83085250338295003 27 0)
   474 
   478                                uuid: '37d80b80-b8d0-11e8-aeef-b8f6b1108e05'
   475 	     )
   479                                translateLabel: true
   476 	     handles: (Any 0.5 1.0)
   480                                model: pastePreviousTranslationInLanguageText
   477 	     postBuildCallback: postBuildTranslationsPanel:
   481                                enableChannel: pastePreviousTranslationEnableHolder
   478 	   )
   482                                disabledLogo: 'Paste Previous'
   479 	  (ViewSpec
   483                              )
   480 	     name: 'SearchBox'
   484                             )
   481 	     layout: (LayoutFrame 0 0 -32 1 0 1 0 1)
   485                           
   482 	     level: -1
   486                          )
   483 	     visibilityChannel: searchBoxVisible
   487                        )
   484 	     component:
   488                       )
   485 	    (SpecCollection
   489                     
   486 	       collection: (
   490                    )
   487 		(ActionButtonSpec
   491                    handles: (Any 0.33000000000000002 0.67000000000000004 1.0)
   488 		   label: 'closeSearchBarIcon'
   492                  )
   489 		   name: 'closeSearchBarButton'
   493                 )
   490 		   layout: (LayoutFrame 4 0 5 0 25 0 26 0)
   494               
   491 		   hasCharacterOrientedLabel: false
   495              )
   492 		   translateLabel: true
   496              handles: (Any 0.5 1.0)
   493 		   model: closeSearchBar
   497              postBuildCallback: postBuildTranslationsPanel:
   494 		 )
   498            )
   495 		(LabelSpec
   499           (ViewSpec
   496 		   label: 'Search:'
   500              name: 'SearchBox'
   497 		   name: 'SearchLabel'
   501              layout: (LayoutFrame 0 0 -32 1 0 1 0 1)
   498 		   layout: (LayoutFrame 30 0 5 0 100 0 27 0)
   502              uuid: '37d80cf2-b8d0-11e8-aeef-b8f6b1108e05'
   499 		   translateLabel: true
   503              level: -1
   500 		   adjust: right
   504              visibilityChannel: searchBoxVisible
   501 		 )
   505              component: 
   502 		(InputFieldSpec
   506             (SpecCollection
   503 		   name: 'SearchEntryField'
   507                collection: (
   504 		   layout: (LayoutFrame 100 0 5 0 257 0 27 0)
   508                 (ActionButtonSpec
   505 		   model: searchTextHolder
   509                    label: 'closeSearchBarIcon'
   506 		   immediateAccept: true
   510                    name: 'closeSearchBarButton'
   507 		   acceptOnReturn: true
   511                    layout: (LayoutFrame 4 0 5 0 25 0 26 0)
   508 		   acceptOnTab: true
   512                    uuid: '37d80dc4-b8d0-11e8-aeef-b8f6b1108e05'
   509 		   acceptOnLostFocus: true
   513                    hasCharacterOrientedLabel: false
   510 		   modifiedChannel: searchTextModifiedHolder
   514                    translateLabel: true
   511 		   acceptOnPointerLeave: false
   515                    model: closeSearchBar
   512 		   postBuildCallback: postBuildSearchTextView:
   516                  )
   513 		 )
   517                 (LabelSpec
   514 		(ActionButtonSpec
   518                    label: 'Search:'
   515 		   label: 'searchNextIcon'
   519                    name: 'SearchLabel'
   516 		   name: 'SearchNextButton'
   520                    layout: (LayoutFrame 30 0 5 0 100 0 27 0)
   517 		   layout: (LayoutFrame 264 0 5 0 285 0 26 0)
   521                    uuid: '37d80ef0-b8d0-11e8-aeef-b8f6b1108e05'
   518 		   hasCharacterOrientedLabel: false
   522                    translateLabel: true
   519 		   translateLabel: true
   523                    adjust: right
   520 		   model: searchNextText
   524                  )
   521 		 )
   525                 (InputFieldSpec
   522 		(ActionButtonSpec
   526                    name: 'SearchEntryField'
   523 		   label: 'searchPreviousIcon'
   527                    layout: (LayoutFrame 100 0 5 0 257 0 27 0)
   524 		   name: 'searchPreviousButton'
   528                    uuid: '37d80fd6-b8d0-11e8-aeef-b8f6b1108e05'
   525 		   layout: (LayoutFrame 292 0 5 0 313 0 26 0)
   529                    model: searchTextHolder
   526 		   hasCharacterOrientedLabel: false
   530                    immediateAccept: true
   527 		   translateLabel: true
   531                    acceptOnReturn: true
   528 		   model: searchPreviousText
   532                    acceptOnTab: true
   529 		 )
   533                    acceptOnLostFocus: true
   530 		(CheckBoxSpec
   534                    modifiedChannel: searchTextModifiedHolder
   531 		   label: 'Ignore case'
   535                    acceptOnPointerLeave: false
   532 		   name: 'IgnoreCaseCheckBox'
   536                    postBuildCallback: postBuildSearchTextView:
   533 		   layout: (LayoutFrame 322 0 5 0 518 0 27 0)
   537                  )
   534 		   model: ignoreCaseHolder
   538                 (ActionButtonSpec
   535 		   translateLabel: true
   539                    label: 'searchNextIcon'
   536 		 )
   540                    name: 'SearchNextButton'
   537 		(LabelSpec
   541                    layout: (LayoutFrame 264 0 5 0 285 0 26 0)
   538 		   label: 'SearchBarImageInfoLabel'
   542                    uuid: '37d8117a-b8d0-11e8-aeef-b8f6b1108e05'
   539 		   name: 'SearchBarImageInfoLabel'
   543                    hasCharacterOrientedLabel: false
   540 		   layout: (LayoutFrame 524 0 5 0 548 0 27 0)
   544                    translateLabel: true
   541 		   hasCharacterOrientedLabel: false
   545                    model: searchNextText
   542 		   translateLabel: true
   546                  )
   543 		   labelChannel: searchBarImageInfoLabelHolder
   547                 (ActionButtonSpec
   544 		 )
   548                    label: 'searchPreviousIcon'
   545 		(LabelSpec
   549                    name: 'searchPreviousButton'
   546 		   label: 'SearchBarInfoLabel'
   550                    layout: (LayoutFrame 292 0 5 0 313 0 26 0)
   547 		   name: 'SearchBarInfoLabel'
   551                    uuid: '37d812b0-b8d0-11e8-aeef-b8f6b1108e05'
   548 		   layout: (LayoutFrame 551 0 5 0 829 0 27 0)
   552                    hasCharacterOrientedLabel: false
   549 		   translateLabel: true
   553                    translateLabel: true
   550 		   labelChannel: searchBarInfoLabelHolder
   554                    model: searchPreviousText
   551 		   adjust: left
   555                  )
   552 		 )
   556                 (CheckBoxSpec
   553 		)
   557                    label: 'Ignore case'
   554 
   558                    name: 'IgnoreCaseCheckBox'
   555 	     )
   559                    layout: (LayoutFrame 322 0 5 0 518 0 27 0)
   556 	     postBuildCallback: postBuildSearchBoxView:
   560                    uuid: '37d813d2-b8d0-11e8-aeef-b8f6b1108e05'
   557 	   )
   561                    model: ignoreCaseHolder
   558 	  )
   562                    translateLabel: true
   559 
   563                  )
       
   564                 (LabelSpec
       
   565                    label: 'SearchBarImageInfoLabel'
       
   566                    name: 'SearchBarImageInfoLabel'
       
   567                    layout: (LayoutFrame 524 0 5 0 548 0 27 0)
       
   568                    uuid: '37d81512-b8d0-11e8-aeef-b8f6b1108e05'
       
   569                    hasCharacterOrientedLabel: false
       
   570                    translateLabel: true
       
   571                    labelChannel: searchBarImageInfoLabelHolder
       
   572                  )
       
   573                 (LabelSpec
       
   574                    label: 'SearchBarInfoLabel'
       
   575                    name: 'SearchBarInfoLabel'
       
   576                    layout: (LayoutFrame 551 0 5 0 829 0 27 0)
       
   577                    uuid: '37d8160c-b8d0-11e8-aeef-b8f6b1108e05'
       
   578                    translateLabel: true
       
   579                    labelChannel: searchBarInfoLabelHolder
       
   580                    adjust: left
       
   581                  )
       
   582                 )
       
   583               
       
   584              )
       
   585              postBuildCallback: postBuildSearchBoxView:
       
   586            )
       
   587           )
       
   588         
   560        )
   589        )
   561      )
   590      )
   562 ! !
   591 ! !
   563 
   592 
   564 !InternationalLanguageTranslationEditor class methodsFor:'menu specs'!
   593 !InternationalLanguageTranslationEditor class methodsFor:'menu specs'!
  1120     similarTranslationsAssociations := similarTranslationsAssociations associations inject: OrderedCollection new into:[:collection :association |
  1149     similarTranslationsAssociations := similarTranslationsAssociations associations inject: OrderedCollection new into:[:collection :association |
  1121 	collection detect:[:selectedAssociation |
  1150 	collection detect:[:selectedAssociation |
  1122 	    selectedAssociation value sameAs: association value] ifNone:[collection add: association].
  1151 	    selectedAssociation value sameAs: association value] ifNone:[collection add: association].
  1123 	collection].
  1152 	collection].
  1124     selectedTranslation := Dialog
  1153     selectedTranslation := Dialog
  1125 	choose:'Choose one if you consider it´s usefull to translate:
  1154 	choose:'Choose one if you consider it´s usefull to translate:
  1126     ',
  1155     ',
  1127 	'<', key, '>  ', (self currentExampleLanguageText ifNil:[''])
  1156 	'<', key, '>  ', (self currentExampleLanguageText ifNil:[''])
  1128 	fromList: (similarTranslationsAssociations collect:[:each |  '<', each key, '>  ', each value])
  1157 	fromList: (similarTranslationsAssociations collect:[:each |  '<', each key, '>  ', each value])
  1129 	values: (similarTranslationsAssociations collect:[:each | each value])
  1158 	values: (similarTranslationsAssociations collect:[:each | each value])
  1130 	lines:10
  1159 	lines:10
  1378     self languageTextHolder value: aString.
  1407     self languageTextHolder value: aString.
  1379     self languageTextModifiedHolder value:true.
  1408     self languageTextModifiedHolder value:true.
  1380 !
  1409 !
  1381 
  1410 
  1382 update:something with:aParameter from:changedObject
  1411 update:something with:aParameter from:changedObject
       
  1412     languageEditor modified ifTrue:[
       
  1413         languageEditor accept
       
  1414     ].    
  1383     changedObject == shownLanguages ifTrue:[
  1415     changedObject == shownLanguages ifTrue:[
  1384 	 self shownLanguagesChanged.
  1416          self shownLanguagesChanged.
  1385 	 ^ self.
  1417          ^ self.
  1386     ].
  1418     ].
  1387     changedObject == languageTextAcceptHolder ifTrue:[
  1419     changedObject == languageTextAcceptHolder ifTrue:[
  1388 	 self updateLanguageTextModification.
  1420          self updateLanguageTextModification.
  1389 	 ^ self.
  1421          ^ self.
  1390     ].
  1422     ].
  1391     changedObject == exampleLanguageSelectionHolder ifTrue:[
  1423     changedObject == exampleLanguageSelectionHolder ifTrue:[
  1392 	self updateExampleLanguageText.
  1424         self updateExampleLanguageText.
  1393 	^ self.
  1425         ^ self.
  1394     ].
  1426     ].
  1395     changedObject == showMissingTranslationsOnly ifTrue:[
  1427     changedObject == showMissingTranslationsOnly ifTrue:[
  1396 	self showMissingTranslationsOnlyChanged.
  1428         self showMissingTranslationsOnlyChanged.
  1397 	^ self.
  1429         ^ self.
  1398     ].
  1430     ].
       
  1431 
       
  1432     "Modified: / 15-09-2018 / 12:17:07 / Claus Gittinger"
  1399 !
  1433 !
  1400 
  1434 
  1401 updateCopyPreviousTranslationButtonEnabled
  1435 updateCopyPreviousTranslationButtonEnabled
  1402 
  1436 
  1403      self pastePreviousTranslationEnableHolder value: self shouldCopyPreviousTranslationButtonBeEnabled
  1437      self pastePreviousTranslationEnableHolder value: self shouldCopyPreviousTranslationButtonBeEnabled
  1505     aFilename isEmptyOrNil ifTrue:[^ nil ].
  1539     aFilename isEmptyOrNil ifTrue:[^ nil ].
  1506     ^aFilename asFilename
  1540     ^aFilename asFilename
  1507 !
  1541 !
  1508 
  1542 
  1509 requestFilenameFor: lang
  1543 requestFilenameFor: lang
  1510   "Returns a filename to save the language resource and updates the language's info"
  1544     "Returns a filename to save the language resource and updates the language's info"
       
  1545 
  1511     |aFilename|
  1546     |aFilename|
  1512 
  1547 
  1513     aFilename := Dialog
  1548     aFilename := Dialog
  1514 	requestFileName:(resources string:'Name of resource file to save %1:' with:lang asString)
  1549         requestFileName:(resources string:'Name of resource file to save %1:' with:lang asString)
  1515 	default:nil
  1550         default:nil
  1516 	pattern:'*.rs'.
  1551         pattern:'*.rs'.
  1517 
  1552 
  1518     aFilename isEmptyOrNil ifTrue:[^ nil ].
  1553     aFilename isEmptyOrNil ifTrue:[^ nil ].
  1519     keyStringsToLanguageMappings atLanguage: lang putFilename: aFilename.
  1554     keyStringsToLanguageMappings atLanguage: lang putFilename: aFilename.
  1520     ^aFilename asFilename
  1555     ^aFilename asFilename
       
  1556 
       
  1557     "Modified (format): / 15-09-2018 / 12:28:28 / Claus Gittinger"
  1521 !
  1558 !
  1522 
  1559 
  1523 requestLanguage
  1560 requestLanguage
  1524     ^ Dialog
  1561     ^ Dialog
  1525 	choose:(resources string:'For which language ?')
  1562 	choose:(resources string:'For which language ?')
  1526 	fromList:languagesList
  1563 	fromList:languagesList
  1527 	lines:10.
  1564 	lines:10.
  1528 !
  1565 !
  1529 
  1566 
  1530 requestLanguageToSave
  1567 requestLanguageToSave
       
  1568     |question filename|
       
  1569 
       
  1570     question := resources string:'Which language do you want to save?'.
       
  1571     
       
  1572     lastLanguage notNil ifTrue:[
       
  1573         filename := keyStringsToLanguageMappings filenameAt:lastLanguage.
       
  1574         filename notNil ifTrue:[
       
  1575             question := question , Character cr , 
       
  1576                         (resources string:'(Last was "%1" in "%2")'
       
  1577                                    with:lastLanguage
       
  1578                                    with:(filename asFilename pathName)).
       
  1579         ].    
       
  1580     ].    
       
  1581 
  1531     ^ Dialog
  1582     ^ Dialog
  1532 	choose:'Which language do you want to save?'
  1583         choose:question
  1533 	fromList:languagesList
  1584         fromList:languagesList
  1534 	lines:10
  1585         lines:10
       
  1586 
       
  1587     "Modified: / 15-09-2018 / 12:39:30 / Claus Gittinger"
  1535 !
  1588 !
  1536 
  1589 
  1537 requestPackage
  1590 requestPackage
  1538     |package allProjects projectsWithResources|
  1591     |package allProjects projectsWithResources|
  1539 
  1592 
  1592     super initialize
  1645     super initialize
  1593 !
  1646 !
  1594 
  1647 
  1595 languageEditorBuilt:aView
  1648 languageEditorBuilt:aView
  1596     languageEditor := aView.
  1649     languageEditor := aView.
       
  1650 
       
  1651     "Modified: / 15-09-2018 / 12:16:22 / Claus Gittinger"
  1597 !
  1652 !
  1598 
  1653 
  1599 postBuildDataSet:aView
  1654 postBuildDataSet:aView
  1600     dataSetView := aView.
  1655     dataSetView := aView.
  1601     aView selectedColIndexHolder onChangeSend:#selectionChanged to:self.
  1656     aView selectedColIndexHolder onChangeSend:#selectionChanged to:self.
  2703     ].
  2758     ].
  2704     keyStringsToLanguageMappings changed.
  2759     keyStringsToLanguageMappings changed.
  2705 !
  2760 !
  2706 
  2761 
  2707 saveLanguage: lang
  2762 saveLanguage: lang
  2708 "Saves the language in the fileName from where the language resource was obtained."
  2763     "Saves the language in the fileName from where the language resource was obtained."
  2709     |aFilename|
  2764     |filename|
  2710 
  2765 
  2711     lang isNil ifTrue:[^ self].
  2766     lang isNil ifTrue:[^ self].
  2712     aFilename := keyStringsToLanguageMappings filenameAt:lang.
  2767     filename := keyStringsToLanguageMappings filenameAt:lang.
  2713     aFilename isNil ifTrue:[
  2768     filename isNil ifTrue:[
  2714 	aFilename := self requestFilenameFor: lang.
  2769         "/ ask
  2715 	aFilename isNil ifTrue:[^ self].
  2770         filename := self requestFilenameFor: lang.
  2716     ].
  2771         filename isNil ifTrue:[^ self].
  2717     self saveResourceFile:aFilename for:lang asSymbol
  2772     ].
       
  2773     self saveResourceFile:filename for:lang asSymbol
       
  2774 
       
  2775     "Modified (format): / 15-09-2018 / 12:29:59 / Claus Gittinger"
  2718 !
  2776 !
  2719 
  2777 
  2720 saveResourceFile: aFilename for: lang
  2778 saveResourceFile: aFilename for: lang
  2721 
  2779 
  2722     |aStream |
  2780     |aStream |
  3284     keys add:'no'.
  3342     keys add:'no'.
  3285 
  3343 
  3286     self addLanguage:#'de'.
  3344     self addLanguage:#'de'.
  3287     self addLanguage:#'fr'.
  3345     self addLanguage:#'fr'.
  3288 
  3346 
  3289     self at:'open' language:#'de' put:'öffnen'.
  3347     self at:'open' language:#'de' put:'öffnen'.
  3290     self at:'close' language:#'de' put:'schließen'.
  3348     self at:'close' language:#'de' put:'schließen'.
  3291     self at:'yes' language:#'de' put:'ja'.
  3349     self at:'yes' language:#'de' put:'ja'.
  3292     self at:'no' language:#'de' put:'nein'.
  3350     self at:'no' language:#'de' put:'nein'.
  3293     self at:'cancel' language:#'de' put:'abbrechen'.
  3351     self at:'cancel' language:#'de' put:'abbrechen'.
  3294 
  3352 
  3295     self at:'open' language:#'fr' put:'ouvrir'.
  3353     self at:'open' language:#'fr' put:'ouvrir'.
  3423 !
  3481 !
  3424 
  3482 
  3425 version_CVS
  3483 version_CVS
  3426     ^ '$Header$'
  3484     ^ '$Header$'
  3427 ! !
  3485 ! !
       
  3486