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, 2011  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://vf.michaelbellair.de/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   
 50   
 51   
 52   
 53  # 
 54  # 
 55  # 
 56  # ---------------------------------------------------------------------------------------- 
 57  # ---------------------------------------------------------------------------------------- 
 58  # --                                    -------------------------------------------------- 
 59  # --    Offene Punkte / Aufgaben        -------------------------------------------------- 
 60  # --                                    -------------------------------------------------- 
 61  # ---------------------------------------------------------------------------------------- 
 62  # ---------------------------------------------------------------------------------------- 
 63  # 
 64  #  
 65  #       -- siehe TODO 'bearbeiteuebersetzung.py' -- 
 66  # 
 67  # 
 68  # ---------------------------------------------------------------------------------------- 
 69  # 
 70   
 71   
 72   
 73  # 
 74  # ---------------------------------------------------------------------------------------- 
 75  # ---------------------------------------------------------------------------------------- 
 76  # --                                                            -------------------------- 
 77  # --    Eingabeformular 'Übersetzung anzeigen/bearbeiten'      -------------------------- 
 78  # --                                                            -------------------------- 
 79  # ---------------------------------------------------------------------------------------- 
 80  # ---------------------------------------------------------------------------------------- 
 81  # 
82 -class BearbeiteUebersetzung( DialogErg ):
83 84 """ 85 Klasse zur Abbildung des Eingabeformulars 'Übersetzung anzeigen/bearbeiten. 86 Dem Formular wird eine >spr_uebvar_id< einschließlich aktueller >spr.sprachen.id< und zugeordnete >notizen< übergeben. 87 88 Beim Bearbeiten der Sicherheitsanforderung wird der Einfluß auf weitere Verwendungen der >spr_uebvar_id< überwacht ! 89 Wenn die aktuelle >spr_uebvar_id< mehrfach verwendet wird, wird sie nicht verändert, sondern eine Kopie einschließlich zugeordneter Übersetzungen angelegt 90 """ 91 92 # 93 # ------------------------------------------------------------------------------------ 94 # -- Eingabeformular initialisieren ---------------------------------- 95 # ------------------------------------------------------------------------------------ 96 #
97 - def __init__( self, parent, Notizen, Fortschritt, dbVerbindung, sprUebvarId, notizen_db = None, notizenKontext_db = None ):
98 DialogErg.__init__( self 99 , parent = parent 100 , title = u"Übersetzungen bearbeiten." 101 , dbVerbindung = dbVerbindung ) 102 103 # 104 # -- Namen setzen (somit Klasse / Objekt erkennen) -------------------------- 105 # 106 self.SetName( name = "BearbeiteUebersetzung" ) 107 108 109 110 # 111 # -- Randbedingungen übernehmen ------------------------------------------ 112 # 113 self.__Notizen__ = Notizen 114 self.__Fortschritt__ = Fortschritt 115 self.__dbVerbindung__ = dbVerbindung 116 117 self.sprUebvarId = sprUebvarId 118 self.sprUebvarIdStart = sprUebvarId # >spr_uebvar_id< beim Öffnen des Fensters 119 self.notizen_db = notizen_db 120 self.notizenStart = notizen_db # >notizen< beim Öffnen des Fensters 121 self.notizenKontext_db = notizenKontext_db 122 self.notizenKontextStart = notizenKontext_db # >notizen< beim Öffnen des Fensters 123 124 125 126 # 127 # -- Id -------------------------------------------------- 128 # 129 self.TextCtrlErg__Id = FlexGridSizerWxObjTitel( parent = self 130 , wxObj = TextCtrlErg( self 131 , style = wx.TE_READONLY|wx.BORDER_SUNKEN 132 , Notizen = self.__Notizen__ ) 133 , titel = u"Id der Übersetzungsvariante" 134 , orient = wx.VERTICAL ) 135 136 self.TextCtrlErg__Id.wxObjekt.Enable( False ) 137 138 139 140 # 141 # -- Übersetzungsvarianten -------------------------------------------------- 142 # 143 self.ListBox__Uebersetzungsvarianten = FlexGridSizerWxObjTitel( parent = self 144 , wxObj = ListBoxErg( self 145 , style = wx.BORDER_SUNKEN | wx.LB_SORT 146 , Notizen = self.__Notizen__ ) 147 , titel = u"Übersetzungen" 148 , orient = wx.VERTICAL ) 149 150 self.ListBox__Uebersetzungsvarianten.wxObjekt.nimmWerteStatusleiste( 151 DBSpNameErlaeuterung = u"Alle Übersetzungen zur aktuellen Übersetzungsvariante." 152 , DBSpName = "spr.pos / spr.wgruppe / spr.uebersetzung / spr.uebvar" ) 153 154 self.ListBox__Uebersetzungsvarianten.wxObjekt.SetBackgroundColour( wx.NamedColour( farbeAuswahlListe ) ) 155 156 self.ListBox__Uebersetzungsvarianten.wxObjekt.Bind( wx.EVT_LISTBOX 157 , self.__ereignisNavigation__ ) 158 159 160 161 162 163 # 164 # -- Sprache -------------------------------------------------- 165 # 166 self.ComboBox__Sprache = FlexGridSizerWxObjTitel( parent = self 167 , wxObj = ComboBoxErg( self 168 , choices = [] 169 , style = wx.CB_DROPDOWN|wx.CB_READONLY 170 , Notizen = self.__Notizen__ ) 171 , orient = wx.VERTICAL 172 , titel = u"Sprache" ) 173 174 self.ComboBox__Sprache.wxObjekt.nimmWerteStatusleiste( 175 DBSpNameErlaeuterung = u"Die Sprache der Übersetzungsvariante." 176 , DBSpName = "spr.sprachen" ) 177 178 self.__dbVerbindung__.selektiere__sprSprachen( ComboBoxErg = self.ComboBox__Sprache.wxObjekt ) 179 180 self.ComboBox__Sprache.wxObjekt.Bind( wx.EVT_COMBOBOX 181 , self.__ereignisNavigation__ ) 182 183 184 185 # 186 # -- Übersetzung bearbeiten -------------------------------------------------- 187 # 188 self.TextCtrlErg__Uebersetzung = FlexGridSizerWxObjTitel( parent = self 189 , wxObj = TextCtrlErg( self 190 , style = wx.TE_MULTILINE|wx.BORDER_SUNKEN 191 , Notizen = self.__Notizen__ ) 192 , titel = u"Übersetzung bearbeiten" 193 , orient = wx.VERTICAL ) 194 195 self.TextCtrlErg__Uebersetzung.wxObjekt.nimmWerteStatusleiste( 196 DBSpNameErlaeuterung = u"Die Übersetzung zur aktuellen Übersetzungsvariante bearbeiten." 197 , DBSpName = "spr.pos / spr.wgruppe / spr.uebersetzung / spr.uebvar" ) 198 199 self.TextCtrlErg__Uebersetzung.wxObjekt.Bind( wx.EVT_TEXT 200 , self.__ereignisAenderung__ ) 201 202 203 204 # 205 # -- Interne Notizen zur Übersetzungsvariante -------------------------- 206 # 207 self.TextCtrlErg__Notizen = FlexGridSizerWxObjTitel( parent = self 208 , wxObj = TextCtrlErg( self 209 , style = wx.TE_MULTILINE|wx.BORDER_SUNKEN 210 , Notizen = self.__Notizen__ ) 211 , titel = u"Interne Notizen zur Übersetzung" 212 , orient = wx.VERTICAL ) 213 214 self.TextCtrlErg__Notizen.wxObjekt.Bind( wx.EVT_TEXT 215 , self.__ereignisAenderung__ ) 216 217 if( self.notizen_db is None ) : 218 219 self.notizen_db = zk.gibZk( "" ) 220 self.notizenStart = self.notizen_db # >notizen< beim Öffnen des Fensters 221 222 self.TextCtrlErg__Notizen.wxObjekt.Enable( False ) 223 224 225 226 # 227 # -- Kontextbezogene interne Notizen zur Übersetzungsvariante ---------- 228 # 229 self.TextCtrl__KontextNotizen = FlexGridSizerWxObjTitel( parent = self 230 , wxObj = TextCtrlErg( self 231 , style = wx.TE_MULTILINE|wx.BORDER_SUNKEN 232 , Notizen = self.__Notizen__ ) 233 , titel = u"Interne Notizen (kontextbezogen)" 234 , orient = wx.VERTICAL ) 235 236 self.TextCtrl__KontextNotizen.wxObjekt.nimmWerteStatusleiste( 237 DBSpNameErlaeuterung = u"Interne, kontextbezogene Notizen zur aktuellen Übersetzungsvariante bearbeiten." 238 , DBSpName = "kontextabhaengig" ) 239 240 self.TextCtrl__KontextNotizen.wxObjekt.Bind( wx.EVT_TEXT 241 , self.__ereignisAenderung__ ) 242 243 if( self.notizenKontext_db is None ) : 244 245 self.notizenKontext_db = zk.gibZk( "" ) 246 self.notizenKontextStart = self.notizenKontext_db # >notizen< beim Öffnen des Fensters 247 248 self.TextCtrl__KontextNotizen.wxObjekt.Enable( False ) 249 250 251 252 # 253 # -- Layout setzen ---------------------------------------------------------- 254 # 255 FlexGridSizer = wx.FlexGridSizer( rows = 7, cols = 1, vgap = 10, hgap = 0 ) 256 257 FlexGridSizer.AddGrowableCol( idx = 0, proportion = 1 ) 258 259 FlexGridSizer.AddGrowableRow( idx = 1, proportion = 1 ) 260 FlexGridSizer.AddGrowableRow( idx = 3, proportion = 1 ) 261 FlexGridSizer.AddGrowableRow( idx = 4, proportion = 1 ) 262 FlexGridSizer.AddGrowableRow( idx = 6, proportion = 1 ) 263 264 FlexGridSizer.Add( self.TextCtrlErg__Id 265 , flag = wx.EXPAND|wx.LEFT|wx.TOP|wx.RIGHT 266 , border = 5 ) 267 268 FlexGridSizer.Add( self.ListBox__Uebersetzungsvarianten 269 , flag = wx.EXPAND|wx.LEFT|wx.RIGHT 270 , border = 5 ) 271 272 FlexGridSizer.Add( self.ComboBox__Sprache 273 , flag = wx.EXPAND|wx.LEFT|wx.RIGHT 274 , border = 5 ) 275 276 FlexGridSizer.Add( self.TextCtrlErg__Uebersetzung 277 , flag = wx.EXPAND|wx.LEFT|wx.RIGHT 278 , border = 5 ) 279 280 FlexGridSizer.Add( self.TextCtrlErg__Notizen 281 , flag = wx.EXPAND|wx.LEFT|wx.RIGHT 282 , border = 5 ) 283 284 FlexGridSizer.Add( wx.StaticLine( parent = self, style = wx.LI_HORIZONTAL ) 285 , flag = wx.EXPAND|wx.LEFT|wx.RIGHT 286 , border = 5 ) 287 288 FlexGridSizer.Add( self.TextCtrl__KontextNotizen 289 , flag = wx.EXPAND|wx.LEFT|wx.BOTTOM|wx.RIGHT 290 , border = 5 ) 291 292 293 294 # 295 # -- In das Eingabeformular übernehmen ---------------------------------- 296 # 297 self.nimmDialogElemente( FlexGridSizer ) 298 299 300 # 301 # -- Eingabeobjekte initialisieren / auswählen -------------------------- 302 # 303 self.__spezAktionenVerwerfen__() 304 305 306 307 # 308 # -- Fenster zentrieren -------------------------------------------------- 309 # 310 self.CenterOnScreen()
311 312 313 314 315 316 # 317 # ------------------------------------------------------------------------------------ 318 # -- Innerhalb der verfügbaren Übersetzungen / Sprachen navigieren ---------- 319 # ------------------------------------------------------------------------------------ 320 #
321 - def __ereignisNavigation__( self, ereignis = None ):
322 """ 323 Innerhalb der verfügbaren Übersetzungen / Sprachen navigieren. Die entsprechende Sicherheitsanforderung wird in das Objekt zur Textbearbeitung eingetragen. 324 325 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 326 @type ereignis: C{wx - Ereignisobjekt} 327 """ 328 329 330 # 331 # -- Es gibt nichts zu bearbeiten ------------------------------------------ 332 # 333 if( self.ListBox__Uebersetzungsvarianten.wxObjekt.IsEmpty() 334 or self.ComboBox__Sprache.wxObjekt.IsEmpty() ) : 335 336 return 337 338 339 340 # 341 # -- Änderungen übernehmen -------------------------------------------------- 342 # 343 if( self.TextCtrlErg__Uebersetzung.wxObjekt.istBenutzerAenderungJetzt ) : 344 345 if( self.aktLfdNr_Uebersetzungsvarianten is not None ) : 346 347 self.ListBox__Uebersetzungsvarianten.wxObjekt.SetString( 348 self.aktLfdNr_Uebersetzungsvarianten 349 , zk.gibZk( zk = self.TextCtrlErg__Uebersetzung.wxObjekt.gibWert() 350 , leerZkAlternativ = self.TextCtrlErg__Uebersetzung.wxObjekt.wertNichtMod[0] ) ) 351 352 else : 353 354 self.ListBox__Uebersetzungsvarianten.wxObjekt.nimmWert( 355 wert = zk.gibZk( zk = self.TextCtrlErg__Uebersetzung.wxObjekt.gibWert() 356 , leerZkAlternativ = self.TextCtrlErg__Uebersetzung.wxObjekt.wertNichtMod[0] ) 357 , dbId = self.aktSprSprachenId ) 358 359 self.__schreibDB__() 360 361 self.TextCtrlErg__Uebersetzung.wxObjekt.istBenutzerAenderungJetzt = False 362 363 364 365 # 366 # -- 'Übersetzungsvariante' gewählt ------------------------------------------ 367 # 368 if( ereignis is not None 369 and ereignis.GetId() == self.ListBox__Uebersetzungsvarianten.wxObjekt.GetId() ) : 370 371 # 372 # -- Sprache setzen -------------------------------------------------- 373 # 374 self.aktLfdNr_Uebersetzungsvarianten = self.ListBox__Uebersetzungsvarianten.wxObjekt.GetSelection() 375 376 self.aktSprSprachenId = self.ListBox__Uebersetzungsvarianten.wxObjekt.gibDbId() 377 378 self.ComboBox__Sprache.wxObjekt.selektiereWert( self.aktSprSprachenId ) 379 380 381 382 383 # 384 # -- Sprache gewählt -------------------------------------------------- 385 # 386 elif( ereignis is None 387 or ereignis.GetId() == self.ComboBox__Sprache.wxObjekt.GetId() ) : 388 389 390 # 391 # -- >spr_sprachen_id< übernehmen ---------------------------------- 392 # 393 self.aktSprSprachenId = self.ComboBox__Sprache.wxObjekt.gibDbId() 394 395 # 396 # -- 'Übersetzungsvarianten' setzen ---------------------------------- 397 # 398 if( not self.ListBox__Uebersetzungsvarianten.wxObjekt.selektiereWert( self.aktSprSprachenId ) ) : 399 400 self.aktLfdNr_Uebersetzungsvarianten = None 401 402 403 404 405 # 406 # -- 'Übersetzung bearbeiten' -------------------------- 407 # -- Text aus 'Übersetzungsvarianten' übernehmen -------------------------- 408 # 409 if( ereignis is not None ) : 410 self.TextCtrlErg__Uebersetzung.wxObjekt.nimmWert( 411 wert = self.ListBox__Uebersetzungsvarianten.wxObjekt.gibWert() ) 412 413 414 415 # 416 # -- interne Notizen zur Übersetzungsvariante ---------- 417 # -- Text übernehmen ---------- 418 # 419 self.notizen_db = self.TextCtrlErg__Notizen.wxObjekt.gibWert() 420 421 422 423 # 424 # -- Kontextbezogene interne Notizen zur Übersetzungsvariante ---------- 425 # -- Text übernehmen ---------- 426 # 427 self.notizenKontext_db = self.TextCtrl__KontextNotizen.wxObjekt.gibWert()
428 429 430 431 432 # 433 # ------------------------------------------------------------------------------------ 434 # -- Datenbank schreiben -------------------------------------------------- 435 # ------------------------------------------------------------------------------------ 436 #
437 - def __schreibDB__( self ):
438 """ 439 Methode die aufgerufen wird, wenn die Änderungen in die Datenbank geschrieben werden sollen. 440 441 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 442 @type ereignis: C{wx - Ereignisobjekt} 443 """ 444 445 # 446 # -- Datenbank aktualisieren ------------------------------------------ 447 # 448 self.sprUebvarId = self.__dbVerbindung__.schreibe__sprUebvar( 449 Fortschritt = self.__Fortschritt__ 450 , ListBoxErg = self.ListBox__Uebersetzungsvarianten.wxObjekt 451 , sprUebvarId = self.sprUebvarId ) 452 453 self.__Fortschritt__.loescheFortschritt() 454 455 456 457 # 458 # -- Id aktualisieren -------------------------------------------------- 459 # 460 self.TextCtrlErg__Id.wxObjekt.nimmWert( wert = str( self.sprUebvarId ) )
461 462 463 464 465 466 # 467 # ------------------------------------------------------------------------------------ 468 # -- Speichern ---------------------------------------------------------- 469 # ------------------------------------------------------------------------------------ 470 #
471 - def __spezAktionenSpeichern__( self ):
472 """ 473 Methode die in der abgeleiteten Klasse überschrieben wird, um spezifische Aktionen beim Speichern der Änderungen auszuführen. 474 """ 475 476 # 477 # -- Änderungen im Fenster / Datenbank übernehmen -------------------------- 478 # 479 self.__ereignisNavigation__()
480 481 482 483 484 # 485 # ------------------------------------------------------------------------------------ 486 # -- Verwerfen ---------------------------------------------------------- 487 # ------------------------------------------------------------------------------------ 488 #
489 - def __spezAktionenVerwerfen__( self ):
490 """ 491 Methode die in der abgeleiteten Klasse überschrieben wird, um spezifische Aktionen beim Verwerfen der Änderungen auszuführen. 492 """ 493 494 # 495 # -- Id neu initialisieren -------------------------------------------------- 496 # 497 self.TextCtrlErg__Id.wxObjekt.nimmWert( wert = str( self.sprUebvarIdStart ) ) 498 499 500 # 501 # -- 'Übersetzungsvarianten' neu initialisieren -------------------------- 502 # 503 self.ListBox__Uebersetzungsvarianten.wxObjekt.loescheAlles() 504 505 self.__dbVerbindung__.dbAbfrage__sprWgruppe( Fortschritt = self.__Fortschritt__ 506 , wxListBox = self.ListBox__Uebersetzungsvarianten.wxObjekt 507 , sprUebvarId = self.sprUebvarIdStart ) 508 509 self.__Fortschritt__.loescheFortschritt() 510 511 self.ListBox__Uebersetzungsvarianten.wxObjekt.selektiereWert( 512 dbId = self.__dbVerbindung__.filter__spr_sprachen_id ) 513 514 self.aktLfdNr_Uebersetzungsvarianten = self.ListBox__Uebersetzungsvarianten.wxObjekt.GetSelection() 515 516 517 # 518 # -- Sprache auswählen -------------------------------------------------- 519 # 520 self.ComboBox__Sprache.wxObjekt.selektiereWert( dbId = self.__dbVerbindung__.filter__spr_sprachen_id ) 521 522 self.aktSprSprachenId = self.ComboBox__Sprache.wxObjekt.gibDbId() 523 524 525 # 526 # -- 'Übersetzung bearbeiten' ------------------------------------------ 527 # 528 self.TextCtrlErg__Uebersetzung.wxObjekt.nimmWert( wert = self.ListBox__Uebersetzungsvarianten.wxObjekt.gibWert() ) 529 530 531 # 532 # -- 'Interne Notizen' ---------------------------------- 533 # 534 self.TextCtrlErg__Notizen.wxObjekt.nimmWert( wert = self.notizenStart ) 535 536 537 # 538 # -- 'Kontextbezogene interne Notizen' ---------------------------------- 539 # 540 self.TextCtrl__KontextNotizen.wxObjekt.nimmWert( wert = self.notizenKontextStart )
541 542 543 544 545 # 546 # ------------------------------------------------------------------------------------ 547 # -- Es werden die veränderbaren Werte zurückgegeben -------------------------- 548 # ------------------------------------------------------------------------------------ 549 #
550 - def gibWerte( self ):
551 """ 552 Es wird der Änderungszustand (wenn Änderungen vorliegen C{True}), die veränderbaren Werte C{spr_uebvar_id} und die kontextbezogenen C{notizen} zurückgegeben. 553 554 @return: Es wird C{[spr_uebvar_id, notizen]} zurückgegeben. 555 @rtype: Python-Liste 556 """ 557 558 return [self.gibAenderung(), self.sprUebvarId, self.notizenKontext_db]
559