|
Module bearbeiteuebersetzung
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 import wx
40
41 from universal import zk
42
43 from wxuniversal import ComboBoxErg
44 from wxuniversal import DialogErg
45 from wxuniversal import farbeAuswahlListe
46 from wxuniversal import FlexGridSizerWxObjTitel
47 from wxuniversal import ListBoxErg
48 from wxuniversal import TextCtrlErg
49 from wxuniversal import TextCtrlSpWTitel
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
82
83 """
84 Klasse zur Abbildung des Eingabeformulars 'Übersetzung anzeigen/bearbeiten.
85 Dem Formular wird eine >spr_uebvar_id< einschließlich aktueller >spr.sprachen.id< und zugeordnete >notizen< übergeben.
86
87 Beim Bearbeiten der Sicherheitsanforderung wird der Einfluß auf weitere Verwendungen der >spr_uebvar_id< überwacht !
88 Wenn die aktuelle >spr_uebvar_id< mehrfach verwendet wird, wird sie nicht verändert, sondern eine Kopie einschließlich zugeordneter Übersetzungen angelegt
89 """
90
91
92
93
94
95
96 - def __init__( self, parent, Statusleiste, dbVerbindung, sprSprachenId, sprUebvarId, notizen ):
97 DialogErg.__init__( self
98 , parent = parent
99 , title = u"Übersetzungen anzeigen/bearbeiten."
100 , dbVerbindung = dbVerbindung )
101
102
103
104
105 self.Statusleiste = Statusleiste
106 self.dbVerbindung = dbVerbindung
107 self.sprUebvarId = sprUebvarId
108 self.sprUebvarIdStart = sprUebvarId
109 self.sprSprachenId = sprSprachenId
110 self.notizen = notizen
111 self.notizenStart = notizen
112 self.istAenderung = False
113
114
115
116
117
118
119
120 self.ListBox__Uebersetzungsvarianten = FlexGridSizerWxObjTitel( parent = self
121 , wxObj = ListBoxErg( self
122 , size = ( -1, 150 )
123 , style = wx.BORDER_SUNKEN | wx.LB_SORT
124 , Statusleiste = self.Statusleiste
125 , dbVerbindung = self.dbVerbindung )
126 , titel = "Übersetzungsvarianten"
127 , orient = wx.VERTICAL )
128
129 self.ListBox__Uebersetzungsvarianten.wxObjekt.statusLeisteDBSpNameErlaeuterung = """Alle Übersetzungen zur aktuellen Übersetzungsvariante."""
130
131 self.ListBox__Uebersetzungsvarianten.wxObjekt.SetBackgroundColour( wx.NamedColour( farbeAuswahlListe ) )
132
133 self.Bind( wx.EVT_LISTBOX
134 , self.__ereignisNavigation__
135 , self.ListBox__Uebersetzungsvarianten.wxObjekt )
136
137
138
139
140
141
142
143
144
145 self.ComboBox__Sprache = FlexGridSizerWxObjTitel( parent = self
146 , wxObj = ComboBoxErg( self
147 , choices = []
148 , style = wx.CB_DROPDOWN|wx.CB_READONLY
149 , Statusleiste = self.Statusleiste
150 , dbVerbindung = self.dbVerbindung )
151 , orient = wx.VERTICAL
152 , titel = "Sprache:" )
153
154
155
156
157 self.dbVerbindung.init_sprSprachen( self.ComboBox__Sprache.wxObjekt )
158
159 self.Bind( wx.EVT_COMBOBOX
160 , self.__ereignisNavigation__
161 , self.ComboBox__Sprache.wxObjekt )
162
163
164
165
166
167
168
169 self.TextCtrlErg__Uebersetzung = FlexGridSizerWxObjTitel( parent = self
170 , wxObj = TextCtrlErg( self
171 , size = ( -1, 100 )
172 , style = wx.TE_MULTILINE|wx.BORDER_SUNKEN
173 , Statusleiste = self.Statusleiste
174 , dbVerbindung = self.dbVerbindung )
175 , titel = "Übersetzung bearbeiten:"
176 , orient = wx.VERTICAL )
177
178
179 self.TextCtrlErg__Uebersetzung.wxObjekt.statusLeisteDBSpNameErlaeuterung = """Die Übersetzung in der aktuell gewählten Sprache."""
180
181 self.TextCtrlErg__Uebersetzung.wxObjekt.istMeldungRechtschreibFehlerKorrektur = False
182
183 self.Bind( wx.EVT_TEXT
184 , self.__ereignisAenderung__
185 , self.TextCtrlErg__Uebersetzung.wxObjekt )
186
187
188
189
190
191
192
193 self.TextCtrl__KontextNotizen = FlexGridSizerWxObjTitel( parent = self
194 , wxObj = TextCtrlErg( self
195 , size = ( -1, 100 )
196 , style = wx.TE_MULTILINE|wx.BORDER_SUNKEN
197 , Statusleiste = self.Statusleiste
198 , dbVerbindung = self.dbVerbindung )
199 , titel = "Kontextbezogene interne Notizen zur Übersetzungsvariante:"
200 , orient = wx.VERTICAL )
201
202 self.TextCtrl__KontextNotizen.wxObjekt.istMeldungRechtschreibFehlerKorrektur = False
203
204 self.Bind( wx.EVT_TEXT
205 , self.__ereignisAenderung__
206 , self.TextCtrl__KontextNotizen.wxObjekt )
207
208
209
210
211 if( self.notizen is None ) :
212
213 self.notizen = zk.gibZk( "" )
214 self.notizenStart = self.notizen
215
216 self.TextCtrl__KontextNotizen.wxObjekt.Enable( False )
217
218
219
220
221
222
223 FlexGridSizer = wx.FlexGridSizer( rows = 4, cols = 1, vgap = 5, hgap = 0 )
224
225 FlexGridSizer.AddGrowableCol( idx = 0, proportion = 1 )
226 FlexGridSizer.AddGrowableRow( idx = 0, proportion = 1 )
227
228 FlexGridSizer.Add( self.ListBox__Uebersetzungsvarianten, flag = wx.EXPAND )
229 FlexGridSizer.Add( self.ComboBox__Sprache, flag = wx.EXPAND )
230 FlexGridSizer.Add( self.TextCtrlErg__Uebersetzung, flag = wx.EXPAND )
231 FlexGridSizer.Add( self.TextCtrl__KontextNotizen, flag = wx.EXPAND )
232
233
234
235
236
237 self.nimmDialogElemente( FlexGridSizer )
238
239
240
241
242
243 self.__spezAktionenVerwerfen__()
244
245
246
247
248
249
250
251
252
253
255 """
256 Methode die aufgerufen wird, wenn der Text im Texteingabefeld geändert wird.
257
258 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben.
259 @type ereignis: C{wx - Ereignisobjekt}
260 """
261
262
263
264
265
266 if( self.TextCtrlErg__Uebersetzung.wxObjekt.istBenutzerAenderungJetzt
267 or self.TextCtrl__KontextNotizen.wxObjekt.istBenutzerAenderungJetzt ):
268
269 self.Button__Verwerfen.Enable( True )
270 self.Button__Sichern.Enable( True )
271
272
273
274
275
276
277 ereignis.Skip( skip = True )
278
279
280
281
282
283
284
285
286
287
289 """
290 Innerhalb der verfügbaren Übersetzungen / Sprachen navigieren. Die entsprechende Sicherheitsanforderung wird in das Objekt zur Textbearbeitung eingetragen.
291
292 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben.
293 @type ereignis: C{wx - Ereignisobjekt}
294 """
295
296
297
298
299
300 if( self.ListBox__Uebersetzungsvarianten.wxObjekt.IsEmpty()
301 or self.ComboBox__Sprache.wxObjekt.IsEmpty() ) :
302
303 return
304
305
306
307
308
309
310 if( self.TextCtrlErg__Uebersetzung.wxObjekt.istBenutzerAenderungJetzt ) :
311
312 if( self.aktLfdNr_Uebersetzungsvarianten is not None ) :
313
314 self.ListBox__Uebersetzungsvarianten.wxObjekt.SetString(
315 self.aktLfdNr_Uebersetzungsvarianten
316 , zk.gibZk( zk = self.TextCtrlErg__Uebersetzung.wxObjekt.gibWert()
317 , leerZkAlternativ = self.TextCtrlErg__Uebersetzung.wxObjekt.wertNichtMod[0] ) )
318
319 else :
320
321 self.ListBox__Uebersetzungsvarianten.wxObjekt.nimmWert(
322 wert = zk.gibZk( zk = self.TextCtrlErg__Uebersetzung.wxObjekt.gibWert()
323 , leerZkAlternativ = self.TextCtrlErg__Uebersetzung.wxObjekt.wertNichtMod[0] )
324 , clientData = [self.aktSprSprachenId] )
325
326 self.__schreibDB__()
327
328 self.TextCtrlErg__Uebersetzung.wxObjekt.istBenutzerAenderungJetzt = False
329
330
331
332
333
334
335 if( ereignis is not None
336 and ereignis.GetId() == self.ListBox__Uebersetzungsvarianten.wxObjekt.GetId() ) :
337
338
339
340
341 self.aktLfdNr_Uebersetzungsvarianten = self.ListBox__Uebersetzungsvarianten.wxObjekt.GetSelection()
342
343 self.ComboBox__Sprache.wxObjekt.selektiereWert(
344 clientDataId = self.ListBox__Uebersetzungsvarianten.wxObjekt.gibClientData(
345 lfdNr = self.aktLfdNr_Uebersetzungsvarianten )[0] )
346
347 self.aktSprSprachenId = self.ComboBox__Sprache.wxObjekt.gibClientData()
348
349
350
351
352
353
354 elif( ereignis is None
355 or ereignis.GetId() == self.ComboBox__Sprache.wxObjekt.GetId() ) :
356
357
358
359
360 self.aktSprSprachenId = self.ComboBox__Sprache.wxObjekt.gibClientData()
361
362
363
364
365 if( not self.ListBox__Uebersetzungsvarianten.wxObjekt.selektiereWert(
366 clientDataId = self.ComboBox__Sprache.wxObjekt.gibClientData() ) ) :
367
368 self.aktLfdNr_Uebersetzungsvarianten = None
369
370
371
372
373
374
375
376 if( ereignis is not None ) :
377 self.TextCtrlErg__Uebersetzung.wxObjekt.nimmWert(
378 wert = self.ListBox__Uebersetzungsvarianten.wxObjekt.gibWert() )
379
380
381
382
383
384
385
386 self.notizen = self.TextCtrl__KontextNotizen.wxObjekt.gibWert()
387
388
389
390
391
392
393
394
395
397 """
398 Methode die aufgerufen wird, wenn die Änderungen in die Datenbank geschrieben werden sollen.
399
400 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben.
401 @type ereignis: C{wx - Ereignisobjekt}
402 """
403
404
405
406
407 self.sprUebvarId = self.dbVerbindung.schreibe__sprUebvar(
408 ListBoxErg = self.ListBox__Uebersetzungsvarianten.wxObjekt
409 , sprUebvarId = self.sprUebvarId
410 , istMehrfachVerw = self.sprUebvarIdMehrfachVerw )
411
412
413
414
415
416
417 self.sprUebvarIdMehrfachVerw = False
418
419
420
421
422
423
424
425
426
428 """
429 Methode die in der abgeleiteten Klasse überschrieben wird, um spezifische Aktionen beim Speichern der Änderungen auszuführen.
430 """
431
432
433
434
435 self.__ereignisNavigation__()
436
437
438
439
440
441 self.istAenderung = True;
442
443
444
445
446
447
448
449
450
452 """
453 Methode die in der abgeleiteten Klasse überschrieben wird, um spezifische Aktionen beim Verwerfen der Änderungen auszuführen.
454 """
455
456
457
458
459 self.sprUebvarIdMehrfachVerw = self.dbVerbindung.istIdMehrfachVerwendet( zielSpalte = 'spr.uebvar.id'
460 , dbId = self.sprUebvarIdStart )
461
462
463
464
465
466 self.ListBox__Uebersetzungsvarianten.wxObjekt.loescheAlles()
467
468 self.dbVerbindung.init_sprWgruppe( wxListBox = self.ListBox__Uebersetzungsvarianten.wxObjekt
469 , sprUebvarId = self.sprUebvarIdStart )
470
471 self.ListBox__Uebersetzungsvarianten.wxObjekt.selektiereWert( clientDataId = self.sprSprachenId )
472
473 self.aktLfdNr_Uebersetzungsvarianten = self.ListBox__Uebersetzungsvarianten.wxObjekt.GetSelection()
474
475
476
477
478
479 self.ComboBox__Sprache.wxObjekt.selektiereWert( clientDataId = self.sprSprachenId )
480
481 self.aktSprSprachenId = self.ComboBox__Sprache.wxObjekt.gibClientData()
482
483
484
485
486
487
488 self.TextCtrlErg__Uebersetzung.wxObjekt.nimmWert( wert = self.ListBox__Uebersetzungsvarianten.wxObjekt.gibWert() )
489
490
491
492
493
494 self.TextCtrl__KontextNotizen.wxObjekt.nimmWert( wert = self.notizenStart )
495
496
497
498
499
500
501
502
503
505 """
506 Es wird der Änderungszustand (wenn Änderungen vorliegen C{True}), die veränderbaren Werte C{spr_uebvar_id} und C{notizen} zurückgegeben.
507
508 @return: Es wird C{[spr_uebvar_id, notizen]} zurückgegeben.
509 @rtype: Python-Liste
510 """
511
512 return [self.istAenderung, self.sprUebvarId, self.notizen]
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
547
548 """
549 Klasse zur Abbildung des Eingabeformulars 'Übersetzung anzeigen/bearbeiten.
550 ACHTUNG: Die Änderungen werden ausschließlich als Rechtschreibfehlerkorrektur interpretiert. Folglich bleibt C{spr.uebvar.id} unverändert !
551 """
552
553
554
555
556
557
558 - def __init__( self, parent, Statusleiste, dbVerbindung, sprSprachenId, txtCtrl ):
559 DialogErg.__init__( self
560 , parent = parent
561 , title = u"Übersetzungen anzeigen/bearbeiten."
562 , dbVerbindung = dbVerbindung )
563
564
565
566
567 self.Statusleiste = Statusleiste
568 self.dbVerbindung = dbVerbindung
569 self.sprUebvarId = txtCtrl.clientData
570 self.sprSprachenId = sprSprachenId
571
572
573
574
575
576
577 self.StaticText__Text = FlexGridSizerWxObjTitel( parent = self
578 , wxObj = wx.StaticText( self
579 , label = "\n"
580 + txtCtrl.gibWert()
581 + "\n\n"
582 , style = wx.BORDER_SUNKEN )
583 , titel = "Zu übersetzender Text:"
584 , orient = wx.VERTICAL )
585
586
587
588
589
590
591 self.ComboBox__Sprache = FlexGridSizerWxObjTitel( parent = self
592 , wxObj = ComboBoxErg( self
593 , choices = []
594 , style = wx.CB_DROPDOWN|wx.CB_READONLY
595 , Statusleiste = self.Statusleiste
596 , dbVerbindung = self.dbVerbindung )
597 , orient = wx.VERTICAL
598 , titel = "Sprache:" )
599
600 self.dbVerbindung.init_sprSprachen( self.ComboBox__Sprache.wxObjekt )
601
602 for i in range( self.ComboBox__Sprache.wxObjekt.GetCount() ) :
603
604 if self.ComboBox__Sprache.wxObjekt.gibClientData( selection = i, lfdNr = 0 ) == self.sprSprachenId :
605 break
606 self.ComboBox__Sprache.wxObjekt.Delete( i )
607 self.ComboBox__Sprache.wxObjekt.SetSelection( 0 )
608
609 self.ComboBox__Sprache.wxObjekt.Bind( wx.EVT_COMBOBOX, self.__ereignisLiesDB__ )
610
611
612
613
614
615
616 self.TextCtrl__Uebersetzung = FlexGridSizerWxObjTitel( parent = self
617 , wxObj = TextCtrlErg( self
618 , size = ( -1, 100 )
619 , style = wx.TE_MULTILINE|wx.BORDER_SUNKEN
620 , Statusleiste = self.Statusleiste
621 , dbVerbindung = self.dbVerbindung )
622 , titel = "Übersetzung:"
623 , orient = wx.VERTICAL )
624
625 self.TextCtrl__Uebersetzung.wxObjekt.Bind( wx.EVT_TEXT, self.__ereignisAenderung__ )
626
627
628
629
630
631 if( txtCtrl.istLeer() ) : self.TextCtrl__Uebersetzung.wxObjekt.Enable( False )
632
633
634
635
636 self.TextCtrl__Uebersetzung.wxObjekt.istMeldungRechtschreibFehlerKorrektur = False
637
638
639
640
641 self.Bind( wx.EVT_BUTTON, self.__ereignisLiesDB__, self.Button__Verwerfen )
642
643
644
645
646
647 self.Bind( wx.EVT_BUTTON, self.__ereignisSchreibDB__, self.Button__Sichern )
648
649
650
651
652
653
654 FlexGridSizer = wx.FlexGridSizer( rows = 3, cols = 1, vgap = 5, hgap = 0 )
655
656 FlexGridSizer.AddGrowableCol( idx = 0, proportion = 1 )
657 FlexGridSizer.AddGrowableRow( idx = 0, proportion = 1 )
658 FlexGridSizer.AddGrowableRow( idx = 2, proportion = 1 )
659
660 FlexGridSizer.Add( self.StaticText__Text, flag = wx.EXPAND )
661 FlexGridSizer.Add( self.ComboBox__Sprache, flag = wx.EXPAND )
662 FlexGridSizer.Add( self.TextCtrl__Uebersetzung, flag = wx.EXPAND )
663
664
665
666
667
668 self.nimmDialogElemente( FlexGridSizer )
669
670
671
672
673
674 self.__ereignisLiesDB__()
675
676
677
678
679
680
681
682
684 """
685 Methode die aufgerufen wird, wenn der Text im Texteingabefeld geändert wird.
686
687 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben.
688 @type ereignis: C{wx - Ereignisobjekt}
689 """
690
691
692
693
694 if( self.ComboBox__Sprache.wxObjekt.IsEnabled()
695 and self.TextCtrl__Uebersetzung.wxObjekt.gibIstVomBenutzerGeaendert() ) :
696
697 self.ComboBox__Sprache.wxObjekt.Enable( False )
698
699
700
701
702
703
704 if( self.Button__Sichern.IsEnabled()
705 and self.TextCtrl__Uebersetzung.wxObjekt.istLeer() ):
706 self.Button__Verwerfen.Enable( False )
707 self.Button__Sichern.Enable( False )
708
709
710
711
712
713
714 if( not self.Button__Sichern.IsEnabled()
715 and not self.TextCtrl__Uebersetzung.wxObjekt.istLeer() ):
716 self.Button__Verwerfen.Enable( True )
717 self.Button__Sichern.Enable( True )
718
719
720
721
722
723
724 ereignis.Skip( skip = True )
725
726
727
728
729
730
731
732
733
735 """
736 Methode die aufgerufen wird, wenn nach Änderung der Sprache die Datenbank ausgelesen werden muß.
737
738 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben.
739 @type ereignis: C{wx - Ereignisobjekt}
740 """
741
742
743
744
745
746 self.dbVerbindung.selektiere__sprSprachen(
747 txtCtrlErg = self.TextCtrl__Uebersetzung.wxObjekt
748 , sprUebvarId = self.sprUebvarId
749
750 , sprSprachenId = self.ComboBox__Sprache.wxObjekt.gibClientData() )
751
752
753
754
755
756 self.Button__Verwerfen.Enable( False )
757 self.Button__Sichern.Enable( False )
758
759
760
761
762
763 self.ComboBox__Sprache.wxObjekt.Enable( True )
764
765
766
767
768
769
770 if( ereignis != None ) :
771 ereignis.Skip( skip = True )
772
773
774
775
776
777
778
779
780
781
783 """
784 Methode die aufgerufen wird, wenn das Meldungsfenster geschlossen werden soll (sie überschreibt die Standardmethode)
785
786 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben.
787 @type ereignis: C{wx - Ereignisobjekt}
788 """
789
790
791
792
793 if( self.TextCtrl__Uebersetzung.wxObjekt.gibIstVomBenutzerGeaendert() ) :
794
795
796
797
798 dlg = wx.MessageDialog( parent = self
799 , message = """Die Änderungen wurden nicht gesichert. Soll das Fenster trotzdem geschlossen werden ?
800
801 Die Änderungen werden dann verworfen."""
802 , caption = "Änderungen verwerfen ?"
803 , style = wx.YES_NO | wx.ICON_QUESTION )
804
805
806
807
808 if ( dlg.ShowModal() != wx.ID_YES ):
809
810
811
812
813
814 ereignis.Skip( skip = True )
815 return
816
817
818
819
820
821 self.Destroy()
822
823
824
825
826
827
828 ereignis.Skip( skip = True )
829
830
831
832
833
834
835
836
837
839 """
840 Methode die aufgerufen wird, wenn die Änderungen in die Datenbank geschrieben werden sollen.
841
842 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben.
843 @type ereignis: C{wx - Ereignisobjekt}
844 """
845
846
847
848
849
850 spr_uebvar_id__neu = self.dbVerbindung.schreibeSprNimmWgruppe(
851 sprUebvarId = self.sprUebvarId
852
853 , sprSprachenId = self.ComboBox__Sprache.wxObjekt.gibClientData()
854 , wgruppe = self.TextCtrl__Uebersetzung.wxObjekt.gibWert()
855 , istRFKorr = True )
856
857
858
859
860
861 self.TextCtrl__Uebersetzung.wxObjekt.nimmIstVomBenutzerGeaendert( istVomBenutzerGeaendert = False )
862
863
864
865
866
867 self.ComboBox__Sprache.wxObjekt.Enable( True )
868
869
870
871
872
873 self.Button__Verwerfen.Enable( False )
874 self.Button__Sichern.Enable( False )
875
876
877
878
879
880
881 ereignis.Skip( skip = True )
882