Module bearbeiteuebersetzung
[hide private]
[frames] | no frames]

Source Code for Module bearbeiteuebersetzung

  1  # -*- coding: utf-8 -*- 
  2  # 
  3  # 
  4  #    filename:  bearbeiteuebersetzung.py 
  5  # 
  6  #    version:   see wxvf.py 
  7  # 
  8  # 
  9  # ---------------------------------------------------------------------------------------- 
 10  # 
 11  # 
 12  #    Copyright (C) 2010  Michael Bellair 
 13  # 
 14  #    This file is part of wxvf. 
 15  # 
 16  #    wxvf is free software: you can redistribute it and/or modify 
 17  #    it under the terms of the GNU General Public License as published by 
 18  #    the Free Software Foundation, either version 3 of the License, or 
 19  #    (at your option) any later version. 
 20  # 
 21  #    wxvf is distributed in the hope that it will be useful, 
 22  #    but WITHOUT ANY WARRANTY; without even the implied warranty of 
 23  #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 24  #    GNU General Public License for more details. 
 25  # 
 26  #    You should have received a copy of the GNU General Public License 
 27  #    along with wxvf.  If not, see <http://www.gnu.org/licenses/>. 
 28  # 
 29  #    Michael Bellair 
 30  #    Sportplatzstrasse 11 
 31  #    01259 Dresden 
 32  # 
 33  #    E-Mail:    bellair@freenet.de 
 34  #    homepage:  http://freenet-homepage.de/bellair/vf/index.html 
 35  # 
 36  # 
 37  # ---------------------------------------------------------------------------------------- 
 38  # 
 39  import wx 
 40   
 41  from universal import zk                        # Zeichenketten bearbeiten 
 42   
 43  from wxuniversal import ComboBoxErg             # wx.ComboBox mit Ergänzungen 
 44  from wxuniversal import DialogErg               # wx.Dialog mit Ergänzungen 
 45  from wxuniversal import farbeAuswahlListe       # Farbe der Objekte, die Vorgabewerte enthalten 
 46  from wxuniversal import FlexGridSizerWxObjTitel # wxObjekt mit Titel 
 47  from wxuniversal import ListBoxErg              # wx.ListBox mit Ergänzungen 
 48  from wxuniversal import TextCtrlErg             # wx.TextCtrl mit Ergänzungen 
 49  from wxuniversal import TextCtrlSpWTitel        # TextCtrl im SplitterWindow mit Titel 
 50   
 51   
 52  # 
 53  # 
 54  # 
 55  # ---------------------------------------------------------------------------------------- 
 56  # ---------------------------------------------------------------------------------------- 
 57  # --                                    -------------------------------------------------- 
 58  # --    Offene Punkte / Aufgaben        -------------------------------------------------- 
 59  # --                                    -------------------------------------------------- 
 60  # ---------------------------------------------------------------------------------------- 
 61  # ---------------------------------------------------------------------------------------- 
 62  # 
 63  #  
 64  #       -- siehe TODO 'bearbeiteuebersetzung.py' -- 
 65  # 
 66  # 
 67  # ---------------------------------------------------------------------------------------- 
 68  # 
 69   
 70   
 71   
 72  # 
 73  # ---------------------------------------------------------------------------------------- 
 74  # ---------------------------------------------------------------------------------------- 
 75  # --                                                            -------------------------- 
 76  # --    Eingabeformular 'Übersetzung anzeigen/bearbeiten'      -------------------------- 
 77  # --                                                            -------------------------- 
 78  # ---------------------------------------------------------------------------------------- 
 79  # ---------------------------------------------------------------------------------------- 
 80  # 
81 -class BearbeiteUebersetzungNeu( DialogErg ):
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 # -- Eingabeformular initialisieren ---------------------------------- 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 # -- Randbedingungen übernehmen ------------------------------------------ 104 # 105 self.Statusleiste = Statusleiste 106 self.dbVerbindung = dbVerbindung 107 self.sprUebvarId = sprUebvarId 108 self.sprUebvarIdStart = sprUebvarId # >spr_uebvar_id< beim Öffnen des Fensters 109 self.sprSprachenId = sprSprachenId 110 self.notizen = notizen 111 self.notizenStart = notizen # >notizen< beim Öffnen des Fensters 112 self.istAenderung = False 113 114 115 116 # 117 # -- Übersetzungsvarianten -------------------------------------------------- 118 # -- Objekt-Id = - -------------------------------------------------- 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 # -- Sprache -------------------------------------------------- 143 # -- Objekt-Id = ???? -------------------------------------------------- 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 # -- Sprachen einlesen -------------------------------------------------- 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 # -- Übersetzung bearbeiten -------------------------------------------------- 167 # -- Objekt-Id = ???? -------------------------------------------------- 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 # -- Kontextbezogene interne Notizen zur Übersetzungsvariante ---------- 191 # -- Objekt-Id = ???? -------------------------------------------------- 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 # -- es sind keine internen Notizen zu bearbeiten -------------------------- 210 # 211 if( self.notizen is None ) : 212 213 self.notizen = zk.gibZk( "" ) 214 self.notizenStart = self.notizen # >notizen< beim Öffnen des Fensters 215 216 self.TextCtrl__KontextNotizen.wxObjekt.Enable( False ) 217 218 219 220 # 221 # -- Layout setzen ---------------------------------------------------------- 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 # -- In das Eingabeformular übernehmen ---------------------------------- 236 # 237 self.nimmDialogElemente( FlexGridSizer ) 238 239 240 # 241 # -- Eingabeobjekte initialisieren / auswählen -------------------------- 242 # 243 self.__spezAktionenVerwerfen__()
244 245 246 247 248 249 # 250 # ------------------------------------------------------------------------------------ 251 # -- Änderungen in den Texteingabefeldern auswerten -------------------------- 252 # ------------------------------------------------------------------------------------ 253 #
254 - def __ereignisAenderung__( self, ereignis = None ):
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 # -- Buttton 'Anderungen speichern' aktivieren, -------------------------- 264 # -- Buttton 'Anderungen verwerfen' aktivieren -------------------------- 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 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 275 # -- ausgewertet werden kann -------------------------- 276 # 277 ereignis.Skip( skip = True )
278 279 280 281 282 283 # 284 # ------------------------------------------------------------------------------------ 285 # -- Innerhalb der verfügbaren Übersetzungen / Sprachen navigieren ---------- 286 # ------------------------------------------------------------------------------------ 287 #
288 - def __ereignisNavigation__( self, ereignis = None ):
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 # -- Es gibt nichts zu bearbeiten ------------------------------------------ 299 # 300 if( self.ListBox__Uebersetzungsvarianten.wxObjekt.IsEmpty() 301 or self.ComboBox__Sprache.wxObjekt.IsEmpty() ) : 302 303 return 304 305 306 307 # 308 # -- Änderungen übernehmen -------------------------------------------------- 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 # -- Sicherheitsanforderung in 'Übersetzungsvarianten' gewählt ---------- 334 # 335 if( ereignis is not None 336 and ereignis.GetId() == self.ListBox__Uebersetzungsvarianten.wxObjekt.GetId() ) : 337 338 # 339 # -- Sprache setzen -------------------------------------------------- 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 # -- Sprache gewählt -------------------------------------------------- 353 # 354 elif( ereignis is None 355 or ereignis.GetId() == self.ComboBox__Sprache.wxObjekt.GetId() ) : 356 357 # 358 # -- >spr_sprachen_id< übernehmen ---------------------------------- 359 # 360 self.aktSprSprachenId = self.ComboBox__Sprache.wxObjekt.gibClientData() 361 362 # 363 # -- 'Übersetzungsvarianten' setzen ---------------------------------- 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 # -- 'Übersetzung bearbeiten' -------------------------- 374 # -- Text aus 'Übersetzungsvarianten' übernehmen -------------------------- 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 # -- Kontextbezogene interne Notizen zur Übersetzungsvariante ---------- 384 # -- Text übernehmen ---------- 385 # 386 self.notizen = self.TextCtrl__KontextNotizen.wxObjekt.gibWert()
387 388 389 390 391 # 392 # ------------------------------------------------------------------------------------ 393 # -- Datenbank schreiben -------------------------------------------------- 394 # ------------------------------------------------------------------------------------ 395 #
396 - def __schreibDB__( self ):
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 # -- Datenbank aktualisieren ------------------------------------------ 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 # -- spätestens nach dem ersten Schreiben wird die >spr_uebvar_id< ---------- 415 # -- nicht mehrfach verwendet ---------- 416 # 417 self.sprUebvarIdMehrfachVerw = False
418 419 420 421 422 # 423 # ------------------------------------------------------------------------------------ 424 # -- Speichern ---------------------------------------------------------- 425 # ------------------------------------------------------------------------------------ 426 #
427 - def __spezAktionenSpeichern__( self ):
428 """ 429 Methode die in der abgeleiteten Klasse überschrieben wird, um spezifische Aktionen beim Speichern der Änderungen auszuführen. 430 """ 431 432 # 433 # -- Änderungen im Fenster / Datenbank übernehmen -------------------------- 434 # 435 self.__ereignisNavigation__() 436 437 438 # 439 # -- Änderungen werden gespeichert ------------------------------------------ 440 # 441 self.istAenderung = True;
442 443 444 445 446 # 447 # ------------------------------------------------------------------------------------ 448 # -- Verwerfen ---------------------------------------------------------- 449 # ------------------------------------------------------------------------------------ 450 #
451 - def __spezAktionenVerwerfen__( self ):
452 """ 453 Methode die in der abgeleiteten Klasse überschrieben wird, um spezifische Aktionen beim Verwerfen der Änderungen auszuführen. 454 """ 455 456 # 457 # -- prüfen, ob >self.sprUebvarId< mehrfach verwendet wird ------------------ 458 # 459 self.sprUebvarIdMehrfachVerw = self.dbVerbindung.istIdMehrfachVerwendet( zielSpalte = 'spr.uebvar.id' 460 , dbId = self.sprUebvarIdStart ) 461 462 463 # 464 # -- 'Übersetzungsvarianten' neu initialisieren -------------------------- 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 # -- Sprache auswählen -------------------------------------------------- 478 # 479 self.ComboBox__Sprache.wxObjekt.selektiereWert( clientDataId = self.sprSprachenId ) 480 481 self.aktSprSprachenId = self.ComboBox__Sprache.wxObjekt.gibClientData() 482 483 484 485 # 486 # -- 'Übersetzung bearbeiten' ------------------------------------------ 487 # 488 self.TextCtrlErg__Uebersetzung.wxObjekt.nimmWert( wert = self.ListBox__Uebersetzungsvarianten.wxObjekt.gibWert() ) 489 490 491 # 492 # -- 'Kontextbezogene interne Notizen' ---------------------------------- 493 # 494 self.TextCtrl__KontextNotizen.wxObjekt.nimmWert( wert = self.notizenStart )
495 496 497 498 499 # 500 # ------------------------------------------------------------------------------------ 501 # -- Es werden die veränderbaren Werte zurückgegeben -------------------------- 502 # ------------------------------------------------------------------------------------ 503 #
504 - def gibWerte( self ):
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 # -- später löschen !!! -------------------------- 532 # -- -------------------------- 533 # ---------------------------------------------------------------------------------------- 534 # 535 536 537 # 538 # ---------------------------------------------------------------------------------------- 539 # ---------------------------------------------------------------------------------------- 540 # -- -------------------------- 541 # -- Eingabeformular 'Übersetzung anzeigen/bearbeiten' -------------------------- 542 # -- -------------------------- 543 # ---------------------------------------------------------------------------------------- 544 # ---------------------------------------------------------------------------------------- 545 #
546 -class BearbeiteUebersetzung( DialogErg ):
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 # -- Eingabeformular initialisieren ---------------------------------- 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 # -- Randbedingungen übernehmen ------------------------------------------ 566 # 567 self.Statusleiste = Statusleiste 568 self.dbVerbindung = dbVerbindung 569 self.sprUebvarId = txtCtrl.clientData 570 self.sprSprachenId = sprSprachenId 571 572 573 # 574 # -- zu übersetzender Text -------------------------------------------------- 575 # -- Objekt-Id = ???? -------------------------------------------------- 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 # -- Sprache -------------------------------------------------- 589 # -- Objekt-Id = ???? -------------------------------------------------- 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 # if self.ComboBox__Sprache.wxObjekt.GetClientData( i )[0] == self.sprSprachenId : 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 # -- Übersetzung -------------------------------------------------- 614 # -- Objekt-Id = ???? -------------------------------------------------- 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 # -- Änderungen sind nur zulässig, wenn das aufrufende ------------------ 629 # -- Texteingabeobjekt nicht 'leer' ist ------------------ 630 # 631 if( txtCtrl.istLeer() ) : self.TextCtrl__Uebersetzung.wxObjekt.Enable( False ) 632 633 # 634 # -- Änderungen sind stets Rechtschreibfehlerkorrekturen ------------------ 635 # 636 self.TextCtrl__Uebersetzung.wxObjekt.istMeldungRechtschreibFehlerKorrektur = False 637 638 # 639 # -- Button 'Änderungen verwerfen' wurde betätigt -------------------------- 640 # 641 self.Bind( wx.EVT_BUTTON, self.__ereignisLiesDB__, self.Button__Verwerfen ) 642 643 644 # 645 # -- Button 'Änderungen sichern' wurde betätigt -------------------------- 646 # 647 self.Bind( wx.EVT_BUTTON, self.__ereignisSchreibDB__, self.Button__Sichern ) 648 649 650 651 # 652 # -- Layout setzen ---------------------------------------------------------- 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 # -- In das Eingabeformular übernehmen ---------------------------------- 667 # 668 self.nimmDialogElemente( FlexGridSizer ) 669 670 671 # 672 # -- Datenbank auslesen -------------------------------------------------- 673 # 674 self.__ereignisLiesDB__()
675 676 677 678 # 679 # ------------------------------------------------------------------------------------ 680 # -- Änderungen im Texteingabefeld auswerten -------------------------- 681 # ------------------------------------------------------------------------------------ 682 #
683 - def __ereignisAenderung__( self, ereignis = None ):
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 # -- ComboBox 'Sprache' deaktivieren ---------------------------------- 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 # -- Buttton 'Anderungen speichern' deaktivieren, -------------------------- 702 # -- wenn das Texteingabefeld 'leer' ist -------------------------- 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 # -- Buttton 'Anderungen speichern' aktivieren, -------------------------- 712 # -- wenn das Texteingabefeld nicht 'leer' ist -------------------------- 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 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 722 # -- ausgewertet werden kann -------------------------- 723 # 724 ereignis.Skip( skip = True )
725 726 727 728 729 # 730 # ------------------------------------------------------------------------------------ 731 # -- Datenbank auslesen -------------------------------------------------- 732 # ------------------------------------------------------------------------------------ 733 #
734 - def __ereignisLiesDB__( self, ereignis = None ):
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 # -- zugeordnete Zeichenkette auslesen ---------------------------------- 745 # 746 self.dbVerbindung.selektiere__sprSprachen( 747 txtCtrlErg = self.TextCtrl__Uebersetzung.wxObjekt 748 , sprUebvarId = self.sprUebvarId 749 # , sprSprachenId = self.ComboBox__Sprache.wxObjekt.GetClientData( self.ComboBox__Sprache.wxObjekt.GetSelection() )[0] ) 750 , sprSprachenId = self.ComboBox__Sprache.wxObjekt.gibClientData() ) 751 752 753 # 754 # -- unmittelbar nach dem Lesen gibt es nichts zu verwerfen/sichern ---------- 755 # 756 self.Button__Verwerfen.Enable( False ) 757 self.Button__Sichern.Enable( False ) 758 759 760 # 761 # -- ComboBox 'Sprache' aktivieren ---------------------------------- 762 # 763 self.ComboBox__Sprache.wxObjekt.Enable( True ) 764 765 766 # 767 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 768 # -- ausgewertet werden kann -------------------------- 769 # 770 if( ereignis != None ) : 771 ereignis.Skip( skip = True )
772 773 774 775 776 777 # 778 # ------------------------------------------------------------------------------------ 779 # -- Eingabeformular schließen; Änderungen verwerfen ---------------------------------- 780 # ------------------------------------------------------------------------------------ 781 #
782 - def __ereignisSchliessen__( self, ereignis ):
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 # -- Es liegen nichtgespeicherte Daten vor ---------------------------------- 792 # 793 if( self.TextCtrl__Uebersetzung.wxObjekt.gibIstVomBenutzerGeaendert() ) : 794 795 # 796 # -- Meldung ausgeben ------------------------------------------ 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 # -- Meldungsfenster nicht schließen ---------------------------------- 807 # 808 if ( dlg.ShowModal() != wx.ID_YES ): 809 810 # 811 # -- Das Ereignis weiterreichen, damit es weiter ------------------ 812 # -- ausgewertet werden kann ------------------ 813 # 814 ereignis.Skip( skip = True ) 815 return 816 817 818 # 819 # -- Meldungsfenster schließen ------------------------------------------ 820 # 821 self.Destroy() 822 823 824 # 825 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 826 # -- ausgewertet werden kann -------------------------- 827 # 828 ereignis.Skip( skip = True )
829 830 831 832 833 # 834 # ------------------------------------------------------------------------------------ 835 # -- Datenbank schreiben -------------------------------------------------- 836 # ------------------------------------------------------------------------------------ 837 #
838 - def __ereignisSchreibDB__( self, ereignis = None ):
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 # -- Datenbank aktualisieren ------------------------------------------ 849 # 850 spr_uebvar_id__neu = self.dbVerbindung.schreibeSprNimmWgruppe( 851 sprUebvarId = self.sprUebvarId 852 # , sprSprachenId = self.ComboBox__Sprache.wxObjekt.GetClientData( self.ComboBox__Sprache.wxObjekt.GetSelection() )[0] 853 , sprSprachenId = self.ComboBox__Sprache.wxObjekt.gibClientData() 854 , wgruppe = self.TextCtrl__Uebersetzung.wxObjekt.gibWert() 855 , istRFKorr = True ) 856 857 858 # 859 # -- Änderungsstatus zurücksetzen ------------------------------------------ 860 # 861 self.TextCtrl__Uebersetzung.wxObjekt.nimmIstVomBenutzerGeaendert( istVomBenutzerGeaendert = False ) 862 863 864 # 865 # -- ComboBox 'Sprache' aktivieren ---------------------------------- 866 # 867 self.ComboBox__Sprache.wxObjekt.Enable( True ) 868 869 870 # 871 # -- Button 'Änderungen verwerfen' / 'Änderungen sichern' deaktivieren -- 872 # 873 self.Button__Verwerfen.Enable( False ) 874 self.Button__Sichern.Enable( False ) 875 876 877 # 878 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 879 # -- ausgewertet werden kann -------------------------- 880 # 881 ereignis.Skip( skip = True )
882