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

Source Code for Module bearbeitedokumente

   1  # -*- coding: utf-8 -*- 
   2  # 
   3  # 
   4  #    filename:  bearbeitedokumente.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 bearbeiteuebersetzung import BearbeiteUebersetzung         # Eingabeformular für Übersetzungen 
  42   
  43  from universal import allg                                      # Listen durchsuchen 
  44  from universal import zk                                        # Zeichenketten bearbeiten 
  45   
  46  from wxuniversal import CheckBoxErg                             # wx.CheckBox mit Ergänzungen 
  47  from wxuniversal import ComboBoxErg                             # wx.ComboBox mit Ergänzungen 
  48  from wxuniversal import DialogErg                               # wx.Dialog mit Ergänzungen 
  49  from wxuniversal import farbeAuswahlListe                       # Farbe der Objekte, die Vorgabewerte enthalten 
  50  from wxuniversal import farbeBearbeiten                         # Farbe der Objekte, die  bearbeitet werden können 
  51  from wxuniversal import FlexGridSizerWxObjTitel                 # wxObjekt mit Titel 
  52  from wxuniversal import ListBoxErg                              # wx.ListBox mit Ergänzungen 
  53  from wxuniversal import MaskedTextCtrlErg                       # wx.MaskedTextCtrl mit Ergänzungen 
  54  from wxuniversal import TextCtrlErg                             # wx.TextCtrl mit Ergänzungen 
  55   
  56   
  57   
  58   
  59  # 
  60  # 
  61  # 
  62  # ---------------------------------------------------------------------------------------- 
  63  # ---------------------------------------------------------------------------------------- 
  64  # --                                    -------------------------------------------------- 
  65  # --    Offene Punkte / Aufgaben        -------------------------------------------------- 
  66  # --                                    -------------------------------------------------- 
  67  # ---------------------------------------------------------------------------------------- 
  68  # ---------------------------------------------------------------------------------------- 
  69  # 
  70  #  
  71  #       -- siehe TODO 'bearbeitedokumente.py' -- 
  72  # 
  73  # 
  74  # ---------------------------------------------------------------------------------------- 
  75  # 
  76   
  77   
  78   
  79  # 
  80  # ---------------------------------------------------------------------------------------- 
  81  # ---------------------------------------------------------------------------------------- 
  82  # --                                            ------------------------------------------ 
  83  # --    Eingabeformular 'Dokumente bearbeiten'  ------------------------------------------ 
  84  # --                                            ------------------------------------------ 
  85  # ---------------------------------------------------------------------------------------- 
  86  # ---------------------------------------------------------------------------------------- 
  87  # 
88 -class BearbeiteDokumente( DialogErg ):
89 90 """ 91 Klasse zur Abbildung des Eingabeformulars 'Dokumente bearbeiten. 92 """ 93 94 # 95 # ------------------------------------------------------------------------------------ 96 # -- Eingabeformular initialisieren ---------------------------------- 97 # ------------------------------------------------------------------------------------ 98 #
99 - def __init__( self, parent, Notizen, Fortschritt, dbVerbindung ):
100 DialogErg.__init__( self 101 , parent = parent 102 , title = u"Dokumente bearbeiten." 103 , dbVerbindung = dbVerbindung ) 104 105 # 106 # -- Namen setzen (somit Klasse / Objekt erkennen) -------------------------- 107 # 108 self.SetName( name = "BearbeiteDokumente" ) 109 110 111 # 112 # -- Randbedingungen übernehmen ------------------------------------------ 113 # 114 self.__Notizen__ = Notizen 115 self.__Fortschritt__ = Fortschritt 116 self.__dbVerbindung__ = dbVerbindung 117 118 119 120 # 121 # -------------------------------------------------------------------------------- 122 # -- Eingabeobjekte anlegen -------------------------------------------------- 123 # -------------------------------------------------------------------------------- 124 # 125 126 # 127 # -- Dokumente nach Typ einschränken ---------------------------------- 128 # 129 self.ComboBox__Typ = FlexGridSizerWxObjTitel( parent = self 130 , wxObj = ComboBoxErg( self 131 , choices = [] 132 , style = wx.CB_DROPDOWN|wx.CB_READONLY 133 , Notizen = self.__Notizen__ ) 134 , orient = wx.VERTICAL 135 , titel = "Typ der Dokumente" ) 136 137 self.ComboBox__Typ.wxObjekt.nimmWerteStatusleiste( 138 DBSpNameErlaeuterung = "Die Dokumente anhand des Typs einschränken." 139 , DBSpName = "dok.typ / dok.doku" ) 140 141 self.ComboBox__Typ.wxObjekt.Bind( wx.EVT_COMBOBOX 142 , self.__ereignisLiesDB__ ) 143 144 145 # 146 # -- Dem Projekt zugeordnete Dokumente ---------------------------------- 147 # 148 self.ListBox__ProjektDokumente = FlexGridSizerWxObjTitel( parent = self 149 , wxObj = ListBoxErg( self 150 , style = wx.BORDER_SUNKEN 151 , Notizen = self.__Notizen__ ) 152 , titel = u"Dokumente projektspezifisch" 153 , orient = wx.VERTICAL ) 154 155 self.ListBox__ProjektDokumente.wxObjekt.SetMinSize( ( 450, 425 ) ) 156 157 self.ListBox__ProjektDokumente.wxObjekt.nimmWerteStatusleiste( 158 DBSpNameErlaeuterung = u"Die im Projekt verfügbaren Dokumente." 159 , DBSpName = "dok.doku / prj.pl_dokausgabe" ) 160 161 self.ListBox__ProjektDokumente.wxObjekt.nimmTooltip( u"Doppelklick:\nDokument aus dem Projekt entfernen\n\nF2:\nDokumenttitel / Dokumentnummer / Ausgabe bearbeiten\n\nF3:\nÜbersetzung des Dokumenttitels bearbeiten." ) 162 163 self.ListBox__ProjektDokumente.wxObjekt.SetBackgroundColour( wx.NamedColour( farbeBearbeiten ) ) 164 165 self.ListBox__ProjektDokumente.wxObjekt.Bind( wx.EVT_KEY_DOWN 166 , self.__ereignisTastaturProjekt__ ) 167 168 self.ListBox__ProjektDokumente.wxObjekt.Bind( wx.EVT_LISTBOX_DCLICK 169 , self.__ereignisDokumentEntfernen__ ) 170 171 self.ListBox__ProjektDokumente.wxObjekt.Bind( wx.EVT_LISTBOX 172 , self.__ereignisNotizenAnzeigen__ ) 173 174 175 176 # 177 # -- In der Datenbank verfügbare Dokumente ---------------------------------- 178 # 179 self.ListBox__DokumenteVerfuegbar = FlexGridSizerWxObjTitel( parent = self 180 , wxObj = ListBoxErg( self 181 , style = wx.BORDER_SUNKEN 182 , Notizen = self.__Notizen__ ) 183 , titel = u"Dokumente projektübergreifend" 184 , orient = wx.VERTICAL ) 185 186 self.ListBox__DokumenteVerfuegbar.wxObjekt.SetMinSize( ( 450, 425 ) ) 187 188 self.ListBox__DokumenteVerfuegbar.wxObjekt.nimmWerteStatusleiste( 189 DBSpNameErlaeuterung = u"Die in der Datenbank verfügbaren Dokumente." 190 , DBSpName = "dok.doku" ) 191 192 self.ListBox__DokumenteVerfuegbar.wxObjekt.nimmTooltip( u"Doppelklick:\nDokument in das Projekt übernehmen\n\nEinf:\nNeues Dokument in der Datenbank anlegen\n\nF2:\nDokument bearbeiten\n\nF3:\nÜbersetzung des projektübergreifenden Dokumenttitels bearbeiten\n\nEntf:\nDokument aus der Datenbank entfernen" ) 193 194 self.ListBox__DokumenteVerfuegbar.wxObjekt.SetBackgroundColour( wx.NamedColour( farbeBearbeiten ) ) 195 196 self.ListBox__DokumenteVerfuegbar.wxObjekt.Bind( wx.EVT_KEY_DOWN 197 , self.__ereignisTastaturDatenbank__ ) 198 199 self.ListBox__DokumenteVerfuegbar.wxObjekt.Bind( wx.EVT_LISTBOX_DCLICK 200 , self.__ereignisDokumentZuordnen__ ) 201 202 self.ListBox__DokumenteVerfuegbar.wxObjekt.Bind( wx.EVT_LISTBOX 203 , self.__ereignisNotizenAnzeigen__ ) 204 205 206 207 # 208 # -- Layout festlegen ------------------ 209 # -- (Fenster später im >wx.SplitterWindow< darstellen ------------------ 210 # 211 212 # 213 # -- proj. Dokumente, senkrechte Linie, verf. Dokumente ------------------ 214 # 215 FlexGridSizer_Doku = wx.FlexGridSizer( rows = 1, cols = 3, vgap = 0, hgap = 10 ) 216 217 FlexGridSizer_Doku.AddGrowableCol( idx = 0, proportion = 1 ) 218 FlexGridSizer_Doku.AddGrowableCol( idx = 2, proportion = 1 ) 219 220 FlexGridSizer_Doku.AddGrowableRow( idx = 0, proportion = 1 ) 221 222 FlexGridSizer_Doku.Add( self.ListBox__ProjektDokumente 223 , flag = wx.EXPAND ) 224 225 FlexGridSizer_Doku.Add( wx.StaticLine( parent = self, style = wx.LI_VERTICAL ) 226 , flag = wx.EXPAND ) 227 228 FlexGridSizer_Doku.Add( self.ListBox__DokumenteVerfuegbar 229 , flag = wx.EXPAND ) 230 231 232 # 233 # -- Alles zusammenfügen -------------------------------------------------- 234 # 235 FlexGridSizer = wx.FlexGridSizer( rows = 2, cols = 1, vgap = 10, hgap = 0 ) 236 237 FlexGridSizer.AddGrowableCol( idx = 0, proportion = 1 ) 238 239 FlexGridSizer.AddGrowableRow( idx = 1, proportion = 1 ) 240 241 FlexGridSizer.Add( self.ComboBox__Typ 242 , flag = wx.EXPAND|wx.LEFT|wx.TOP|wx.RIGHT 243 , border = 5 ) 244 245 FlexGridSizer.Add( FlexGridSizer_Doku 246 , flag = wx.EXPAND|wx.LEFT|wx.BOTTOM|wx.RIGHT 247 , border = 5 ) 248 249 250 251 # 252 # -- In das Eingabeformular übernehmen ---------------------------------- 253 # 254 self.nimmDialogElemente( FlexGridSizer ) 255 256 257 258 # 259 # -- Typen auslesen ------------------------------------------ 260 # -- Verfügbare Dokumente auslesen ------------------------------------------ 261 # 262 self.__dbVerbindung__.selektiere__dokTyp( TreeCtrlErg_ComboBoxErg = self.ComboBox__Typ.wxObjekt ) 263 264 265 # 266 # -- Datenbank auslesen -------------------------------------------------- 267 # 268 self.__ereignisLiesDB__() 269 270 271 # 272 # -- Button 'Änderungen verwerfen' / 'Änderungen sichern' deaktivieren -- 273 # 274 self.Button__Verwerfen.Enable( False ) 275 self.Button__Sichern.Enable( False ) 276 277 278 279 # 280 # -- Fenster zentrieren -------------------------------------------------- 281 # 282 self.CenterOnScreen()
283 284 285 286 287 288 # 289 # ------------------------------------------------------------------------------------ 290 # -- Dokument in das Projekt übernehmen ---------------------------------- 291 # ------------------------------------------------------------------------------------ 292 #
293 - def __ereignisDokumentZuordnen__( self, ereignis = None ):
294 """ 295 Dokument in das Projekt übernehmen. 296 297 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 298 @type ereignis: C{wx - Ereignisobjekt} 299 """ 300 301 # 302 # -- Daten zum gewählten Dokument auslesen ---------------------------------- 303 # 304 dokDokuId = self.ListBox__DokumenteVerfuegbar.wxObjekt.gibDbId() 305 sprUebvarId = self.__dbVerbindung__.daten__dokDoku__Sprache[dokDokuId][0][3] 306 dokDokuNotizen = self.__dbVerbindung__.daten__dokDoku__Sprache[dokDokuId][0][0] 307 308 309 310 # 311 # -- >dok_doku_id< nicht übernehmen, da bereits vorhanden ------------------ 312 # 313 if( allg.hatWert__List( liste = self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt 314 , pos = 0 315 , wert = dokDokuId ) ) : 316 317 dlg = wx.MessageDialog( self 318 , "Das in das Projekt zu übernehmende Dokument ist bereits vorhanden !\n\nEs wird nicht in das Projekt übernommen." 319 , "Dokument ist bereits vorhanden !" 320 , wx.OK | wx.ICON_INFORMATION ) 321 dlg.CenterOnScreen() 322 dlg.ShowModal() 323 dlg.Destroy() 324 325 return 326 327 328 329 # 330 # -- >dok_doku_id< in das Projekt übernehmen -------------------------- 331 # 332 self.__dbVerbindung__.schreibe__prjPlDokAusgabe( Fortschritt = self.__Fortschritt__ 333 , listeWerte = [ # 334 # -- dok_doku_id 335 # 336 dokDokuId 337 # 338 # -- nr -------------- 339 # 340 , '????' 341 # 342 # -- spr_uebvar_id --- 343 # 344 , sprUebvarId ] ) 345 346 self.__Fortschritt__.loescheFortschritt() 347 348 349 350 # 351 # -- Datenbank auslesen -------------------------------------------------- 352 # -- SQL-Abfrage ausführen -> Permanente Datenstruktur aktualisieren ---------- 353 # 354 self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt = [] 355 self.__ereignisLiesDB__() 356 357 358 359 # 360 # -- Buttton 'Anderungen speichern' aktivieren, -------------------------- 361 # -- Buttton 'Anderungen verwerfen' aktivieren -------------------------- 362 # 363 self.Button__Verwerfen.Enable( True ) 364 self.Button__Sichern.Enable( True )
365 366 367 368 369 # 370 # ------------------------------------------------------------------------------------ 371 # -- Notizen in der Statusleiste anzeigen ---------------------------------- 372 # ------------------------------------------------------------------------------------ 373 #
374 - def __ereignisNotizenAnzeigen__( self, ereignis ):
375 """ 376 Notizen in der Statusleiste anzeigen 377 378 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 379 @type ereignis: C{wx - Ereignisobjekt} 380 """ 381 382 # 383 # -- Notizen löschen -------------------------------------------------- 384 # 385 self.__Notizen__.TextCtrlErg__li.nimmWert( "" ) 386 387 388 389 # 390 # -- permanente Datenstruktur auswählen ---------------------------------- 391 # 392 daten__dokDoku__Sprache__Projekt = self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt 393 394 395 396 # 397 # -- linker Bereich der Statusleiste ------------------------------------------ 398 # -- projektspezifische Dokumente ------------------------------------------ 399 # 400 if( ereignis.GetId() == self.ListBox__ProjektDokumente.wxObjekt.GetId() ) : 401 402 for notizen in self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt : 403 404 if( notizen[0] == ereignis.GetEventObject().gibDbId() ) : 405 406 self.__Notizen__.TextCtrlErg__li.nimmWert( notizen[5] ) 407 408 # 409 # -- projektübergreifende Dokumente ------------------------------------------ 410 # 411 else : 412 413 if( ereignis.GetEventObject().gibDbId() in self.__dbVerbindung__.daten__dokDoku__Sprache ) : 414 415 self.__Notizen__.TextCtrlErg__li.nimmWert( self.__dbVerbindung__.daten__dokDoku__Sprache[ereignis.GetEventObject().gibDbId()][0][0] ) 416 417 418 419 420 # 421 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 422 # -- ausgewertet werden kann -------------------------- 423 # 424 if( ereignis != None ) : ereignis.Skip( skip = True )
425 426 427 428 429 430 # 431 # ------------------------------------------------------------------------------------ 432 # -- Dokument projektübergreifend bearbeiten ---------------------------------- 433 # ------------------------------------------------------------------------------------ 434 #
435 - def __ereignisTastaturDatenbank__( self, ereignis ):
436 """ 437 Projektübergreifende Dokumentinformationen bearbeiten. 438 439 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 440 @type ereignis: C{wx - Ereignisobjekt} 441 """ 442 443 # 444 # -------------------------------------------------------------------------------- 445 # -- Ungültige Tastaturereignisse abfangen ---------------------------------- 446 # -------------------------------------------------------------------------------- 447 # 448 if( not ( ereignis.GetKeyCode() == wx.WXK_F2 449 or ereignis.GetKeyCode() == wx.WXK_F3 450 or ereignis.GetKeyCode() == wx.WXK_INSERT 451 or ereignis.GetKeyCode() == wx.WXK_DELETE ) ) : return 452 453 454 455 # 456 # -- Fortschrittsdialog -------------------------------------------------- 457 # -- Delta = 100 / ( 2 ) -------------------------------------------------- 458 # 459 self.__Fortschritt__.nimmDelta( delta = 100 / 2 ) 460 461 462 463 # 464 # -- Daten zum gewählten Dokument auslesen ---------------------------------- 465 # 466 if( self.ListBox__DokumenteVerfuegbar.wxObjekt.gibDbId() is None ) : return 467 468 dokDokuId = self.ListBox__DokumenteVerfuegbar.wxObjekt.gibDbId() 469 sprUebvarId = self.__dbVerbindung__.daten__dokDoku__Sprache[dokDokuId][0][3] 470 dokDokuNotizen = self.__dbVerbindung__.daten__dokDoku__Sprache[dokDokuId][0][0] 471 472 473 # 474 # -------------------------------------------------------------------------------- 475 # -- Neues Dokument anlegen ------------------ 476 # -- Formular zum Bearbeiten des Dokumentes aufrufen ------------------ 477 # -------------------------------------------------------------------------------- 478 # 479 if( ereignis.GetKeyCode() == wx.WXK_F2 or ereignis.GetKeyCode() == wx.WXK_INSERT ) : 480 481 if( ereignis.GetKeyCode() == wx.WXK_INSERT ) : dokDokuId = None 482 483 dlg = BearbeiteDokumenteProjektUebergreifend( parent = self 484 , Notizen = self.__Notizen__ 485 , Fortschritt = self.__Fortschritt__ 486 , dbVerbindung = self.__dbVerbindung__ 487 , dokDokuId = dokDokuId ) 488 dlg.CenterOnScreen() 489 dlg.ShowModal() 490 dlg.Destroy() 491 492 # 493 # -- permanente Datenstrukturen aktualisieren ------------------ 494 # 495 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 496 # -- aktivieren ------------------ 497 # 498 if( dlg.gibAenderung() ): 499 500 self.__dbVerbindung__.daten__dokDoku__Sprache.clear() 501 502 self.Button__Verwerfen.Enable( True ) 503 self.Button__Sichern.Enable( True ) 504 505 506 507 # 508 # -------------------------------------------------------------------------------- 509 # -- Formular zur Bearbeitung der Übersetzungsvariante aufrufen ---------- 510 # -------------------------------------------------------------------------------- 511 # 512 if( ereignis.GetKeyCode() == wx.WXK_F3 ) : 513 514 dlg = BearbeiteUebersetzung( parent = self 515 , Notizen = self.__Notizen__ 516 , Fortschritt = self.__Fortschritt__ 517 , dbVerbindung = self.__dbVerbindung__ 518 , sprUebvarId = sprUebvarId 519 , notizen_db = None 520 , notizenKontext_db = dokDokuNotizen ) 521 dlg.CenterOnScreen() 522 dlg.ShowModal() 523 dlg.Destroy() 524 525 # 526 # -- Neue Übersetzungsvariante übernehmen ------------------ 527 # -- ------------------ 528 # -- permanente Datenstrukturen aktualisieren ------------------ 529 # 530 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 531 # -- aktivieren ------------------ 532 # 533 if( dlg.gibAenderung() ): 534 535 self.__dbVerbindung__.schreibe__DokDoku__UPDATE( Fortschritt = self.__Fortschritt__ 536 , dokDokuId = dokDokuId 537 , sprUebvarIdKb = dlg.gibWerte()[1] 538 , Notizen = dlg.gibWerte()[2] ) 539 540 self.__dbVerbindung__.daten__dokDoku__Sprache.clear() 541 542 self.Button__Verwerfen.Enable( True ) 543 self.Button__Sichern.Enable( True ) 544 545 546 547 548 # 549 # -------------------------------------------------------------------------------- 550 # -- Dokument entfernen -------------------------------------------------- 551 # -------------------------------------------------------------------------------- 552 # 553 if( ereignis.GetKeyCode() == wx.WXK_DELETE ) : 554 555 # 556 # -- Dokument aus Datenbank entfernen ---------- 557 # -- Fehlermeldung ausgeben, wenn Dokument in den Projekten ---------- 558 # -- verwendet wird ---------- 559 # 560 if( self.__dbVerbindung__.schreibe__DokDoku( Fortschritt = self.__Fortschritt__ 561 , listeWerte = None 562 , listeDokDokuId = None 563 , entferneDokDokuId = dokDokuId ) is None ) : 564 565 dlg = wx.MessageDialog( self 566 , "Das zu entfernende Dokument wird noch in den Projekten verwendet bzw. wurde in de Vergangenheit in einem Projekt verwendet (Logbuchfunktion) !\n\nEs kann nicht entfernt werden." 567 , "Dokument wird nicht entfernt !" 568 , wx.OK | wx.ICON_INFORMATION ) 569 dlg.CenterOnScreen() 570 dlg.ShowModal() 571 dlg.Destroy() 572 573 return 574 575 576 # 577 # -- permanente Datenstrukturen aktualisieren ---------- 578 # 579 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ---------- 580 # -- aktivieren ---------- 581 # 582 583 self.__dbVerbindung__.daten__dokDoku__Sprache.clear() 584 585 self.Button__Verwerfen.Enable( True ) 586 self.Button__Sichern.Enable( True ) 587 588 589 590 # 591 # -- Fortschrittsdialog schließen ------------------------------------------ 592 # 593 self.__Fortschritt__.loescheFortschritt() 594 595 596 597 # 598 # -------------------------------------------------------------------------------- 599 # -- Datenbank auslesen -------------------------------------------------- 600 # -- SQL-Abfrage ausführen -> Permanente Datenstruktur aktualisieren ---------- 601 # -------------------------------------------------------------------------------- 602 # 603 self.__ereignisLiesDB__()
604 605 606 607 # 608 # ------------------------------------------------------------------------------------ 609 # -- Dokument aus dem Projekt entfernen ---------------------------------- 610 # ------------------------------------------------------------------------------------ 611 #
612 - def __ereignisDokumentEntfernen__( self, ereignis = None ):
613 """ 614 Dokument / Literaturstelle aus dem Projekt entfernen 615 616 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 617 @type ereignis: C{wx - Ereignisobjekt} 618 """ 619 620 # 621 # -- gewähltes Dokument übernehmen ------------------------------------------ 622 # 623 dokDokuId = self.ListBox__ProjektDokumente.wxObjekt.gibDbId() 624 625 626 627 # 628 # -- Fehlermeldung ausgeben, wenn das Dokument einem gültigen -- 629 # -- Protokolleintrag (Sicherheitsanforderung) zugeordnet ist -- 630 # 631 if [dokDokuId] in zk.gibListeTeilmenge( liste = self.__dbVerbindung__.daten__ProtId_DokuId__Projekt.values() ) : 632 633 dlg = wx.MessageDialog( self 634 , "Das Dokument ist einer Sicherheitsanforderung zugeordnet.\nEs wird nicht gelöscht." 635 , "Dokument nicht löschen !" 636 , wx.OK | wx.ICON_INFORMATION ) 637 dlg.CenterOnScreen() 638 dlg.ShowModal() 639 dlg.Destroy() 640 641 return 642 643 644 645 646 # 647 # -- Dokument entfernen -------------------------------------------------- 648 # 649 self.__dbVerbindung__.schreibe__prjPlDokAusgabe( Fortschritt = self.__Fortschritt__ 650 , listeWerte = [ dokDokuId ] 651 , logentfernt = 'true' ) 652 653 self.__Fortschritt__.loescheFortschritt() 654 655 656 657 658 # 659 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ---------- 660 # -- aktivieren ---------- 661 # 662 self.Button__Verwerfen.Enable( True ) 663 self.Button__Sichern.Enable( True ) 664 665 666 667 # 668 # -------------------------------------------------------------------------------- 669 # -- Datenbank auslesen -------------------------------------------------- 670 # -- SQL-Abfrage ausführen -> Permanente Datenstruktur aktualisieren ---------- 671 # -------------------------------------------------------------------------------- 672 # 673 self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt = [] 674 self.__ereignisLiesDB__()
675 676 677 678 679 680 # 681 # ------------------------------------------------------------------------------------ 682 # -- Dokument projektbezogen bearbeiten ---------------------------------- 683 # ------------------------------------------------------------------------------------ 684 #
685 - def __ereignisTastaturProjekt__( self, ereignis ):
686 """ 687 Projektbezogene Dokumentinformationen bearbeiten. 688 689 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 690 @type ereignis: C{wx - Ereignisobjekt} 691 """ 692 693 # 694 # -------------------------------------------------------------------------------- 695 # -- Ungültige Tastaturereignisse abfangen ---------------------------------- 696 # -------------------------------------------------------------------------------- 697 # 698 if( not( ereignis.GetKeyCode() == wx.WXK_F2 699 or ereignis.GetKeyCode() == wx.WXK_F3 ) ) : return 700 701 702 703 # 704 # -------------------------------------------------------------------------------- 705 # -- gewähltes Dokument übernehmen ------------------------------------------ 706 # -------------------------------------------------------------------------------- 707 # 708 dokDokuId = self.ListBox__ProjektDokumente.wxObjekt.gibDbId() 709 710 lfdNr = zk.gibListeTeilmenge( liste = self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt ).index( dokDokuId ) 711 712 sprUebvarId = self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt[lfdNr][6] 713 notizen = self.__dbVerbindung__.daten__dokDoku__Sprache[dokDokuId][0][0] 714 nr = self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt[lfdNr][1] 715 stand = self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt[lfdNr][3] 716 datum = self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt[lfdNr][4] 717 istfrei = self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt[lfdNr][7] 718 719 720 # 721 # -------------------------------------------------------------------------------- 722 # -- Formular zum Bearbeiten des Dokumentes aufrufen ------------------ 723 # -------------------------------------------------------------------------------- 724 # 725 dlg = None 726 if( ereignis.GetKeyCode() == wx.WXK_F2 ) : 727 728 dlg = BearbeiteDokumenteProjekt( parent = self 729 , title = u"Dokumenttitel / Dokumentnummer / Ausgabe bearbeiten." 730 , Notizen = self.__Notizen__ 731 , Fortschritt = self.__Fortschritt__ 732 , dbVerbindung = self.__dbVerbindung__ 733 , dokDokuId = dokDokuId ) 734 735 dlg.CenterOnScreen() 736 dlg.ShowModal() 737 dlg.Destroy() 738 739 740 # 741 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 742 # -- aktivieren ------------------ 743 # 744 if( dlg.gibAenderung() ): 745 746 self.Button__Verwerfen.Enable( True ) 747 self.Button__Sichern.Enable( True ) 748 749 750 751 # 752 # -------------------------------------------------------------------------------- 753 # -- Formular zur Bearbeitung der Übersetzungsvariante des ------------------ 754 # -- Dokumenttitels aufrufen ------------------ 755 # -------------------------------------------------------------------------------- 756 # 757 if( ereignis.GetKeyCode() == wx.WXK_F3 ) : 758 759 dlg = BearbeiteUebersetzung( parent = self 760 , Notizen = self.__Notizen__ 761 , Fortschritt = self.__Fortschritt__ 762 , dbVerbindung = self.__dbVerbindung__ 763 , sprUebvarId = sprUebvarId 764 , notizen_db = None 765 , notizenKontext_db = notizen ) 766 767 dlg.CenterOnScreen() 768 dlg.ShowModal() 769 dlg.Destroy() 770 771 772 773 # 774 # -- Neue Übersetzungsvariante übernehmen ------------------ 775 # -- ------------------ 776 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 777 # -- aktivieren ------------------ 778 # 779 if( dlg.gibAenderung() ): 780 781 self.__dbVerbindung__.schreibe__prjPlDokAusgabe( Fortschritt = self.__Fortschritt__ 782 , listeWerte = [ # 783 # -- dok_doku_id 784 # 785 dokDokuId 786 # 787 # -- nr -------------- 788 # 789 , nr 790 # 791 # -- spr_uebvar_id --- 792 # 793 , dlg.gibWerte()[1] 794 # 795 # -- stand ----------- 796 # 797 , stand 798 # 799 # -- datum ----------- 800 # 801 , datum 802 # 803 # -- istfrei --------- 804 # 805 , istfrei 806 # 807 # -- notizen --------- 808 # 809 , dlg.gibWerte()[2] ] ) 810 811 self.__Fortschritt__.loescheFortschritt() 812 813 814 815 # 816 # -- permanente Datenstrukturen aktualisieren ------------------ 817 # 818 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 819 # -- aktivieren ------------------ 820 # 821 self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt = [] 822 823 self.Button__Verwerfen.Enable( True ) 824 self.Button__Sichern.Enable( True ) 825 826 827 828 829 # 830 # -------------------------------------------------------------------------------- 831 # -- Datenbank auslesen -------------------------------------------------- 832 # -- SQL-Abfrage ausführen -> Permanente Datenstruktur aktualisieren ---------- 833 # -------------------------------------------------------------------------------- 834 # 835 self.__ereignisLiesDB__()
836 837 838 839 840 # 841 # ------------------------------------------------------------------------------------ 842 # -- Datenbank auslesen -------------------------------------------------- 843 # ------------------------------------------------------------------------------------ 844 #
845 - def __ereignisLiesDB__( self, ereignis = None ):
846 """ 847 Methode die aufgerufen wird, wenn nach Änderung des Zustandes der C{wx.ComboBox} 'Typ der Dokumente' die Datenbank ausgelesen werden muß. 848 849 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 850 @type ereignis: C{wx - Ereignisobjekt} 851 """ 852 853 # 854 # -- Typ berücksichtigen ? ------------------------------------------ 855 # 856 typ = None 857 if( self.ComboBox__Typ.wxObjekt.gibDbId() > 0 ) : 858 859 typ = [self.ComboBox__Typ.wxObjekt.gibDbId()] 860 861 862 # 863 # -- Alle Dokumente löschen -------------------------------------------------- 864 # 865 self.ListBox__ProjektDokumente.wxObjekt.loescheAlles() 866 self.ListBox__DokumenteVerfuegbar.wxObjekt.loescheAlles() 867 868 869 # 870 # -- Projektbezogene Dokumente auslesen ---------------------------------- 871 # 872 873 # 874 # -- Fortschrittsdialog -------------------------------------------------- 875 # -- Delta = 100 / ( 2 ) -------------------------------------------------- 876 # 877 self.__Fortschritt__.nimmDelta( delta = 100 / 2 ) 878 879 self.__dbVerbindung__.init__dokDoku__Sprache__Projekt( Fortschritt = self.__Fortschritt__ ) 880 self.__dbVerbindung__.selektiere__dokDoku__Sprache__Projekt( 881 TreeCtrlErg_ListBoxErg = self.ListBox__ProjektDokumente.wxObjekt 882 , dokTypId = typ ) 883 # 884 # -- Fortschrittsdialog schließen ------------------------------------------ 885 # 886 self.__Fortschritt__.loescheFortschritt() 887 888 889 890 # 891 # -- Verfügbare Dokumente auslesen ------------------------------------------ 892 # 893 for dok in self.__dbVerbindung__.daten__dokDoku__Sprache.iteritems(): 894 895 # 896 # -- nach Typ des Dokumentes selektieren ------------------------------------------ 897 # 898 if( typ is not None 899 and dok[1][0][1] not in typ ) : 900 901 continue 902 903 904 # 905 # -- Dokumentinformationen ------------------------------------------ 906 # 907 aspekt = ' B:' 908 if( dok[1][0][2] == 'QUELLE' ) : aspekt = ' Q:' 909 910 911 # 912 # -- Dokumente übernehmen ------------------------------------------ 913 # 914 self.ListBox__DokumenteVerfuegbar.wxObjekt.nimmWert( wert = zk.gibIdWertNotizen( id = dok[0] 915 , zusInfo = aspekt 916 , wert = dok[1][0][4] ) 917 , dbId = dok[0] ) 918 919 920 921 922 # 923 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 924 # -- ausgewertet werden kann -------------------------- 925 # 926 if( ereignis != None ) : 927 ereignis.Skip( skip = True )
928 929 930 931 932 933 # 934 # ------------------------------------------------------------------------------------ 935 # -- Verwerfen ---------------------------------------------------------- 936 # ------------------------------------------------------------------------------------ 937 #
938 - def __spezAktionenVerwerfen__( self ):
939 """ 940 Methode die in der abgeleiteten Klasse überschrieben wird, um spezifische Aktionen beim Verwerfen der Änderungen auszuführen. 941 """ 942 943 # 944 # -- Datenbank auslesen -------------------------------------------------- 945 # -- SQL-Abfrage ausführen -> Permanente Datenstruktur aktualisieren ---------- 946 # 947 self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt = [] 948 self.__ereignisLiesDB__()
949 950 951 952 953 954 955 956 # 957 # ---------------------------------------------------------------------------------------- 958 # ---------------------------------------------------------------------------------------- 959 # -- Nächstes Eingabeformular ! -------------------------------------------------- 960 # ---------------------------------------------------------------------------------------- 961 # ---------------------------------------------------------------------------------------- 962 # 963 964 965 966 967 968 # 969 # ---------------------------------------------------------------------------------------- 970 # ---------------------------------------------------------------------------------------- 971 # -- ------------------ 972 # -- Eingabeformular 'Dokumente projektübergreifend bearbeiten' ------------------ 973 # -- ------------------ 974 # ---------------------------------------------------------------------------------------- 975 # ---------------------------------------------------------------------------------------- 976 #
977 -class BearbeiteDokumenteProjektUebergreifend( DialogErg ):
978 979 """ 980 Klasse zur Abbildung des Eingabeformulars 'Dokumente bearbeiten (Datenbank)'. Mittels dieses Formulares werden Dokumente aus der Datenbank entfern, hinzugefügt, Basisdaten bearbeitet. 981 """ 982 983 # 984 # ------------------------------------------------------------------------------------ 985 # -- Eingabeformular initialisieren ---------------------------------- 986 # ------------------------------------------------------------------------------------ 987 #
988 - def __init__( self, parent, Notizen, Fortschritt, dbVerbindung, dokDokuId ):
989 DialogErg.__init__( self 990 , parent = parent 991 , title = u"Dokumente projektübergreifend bearbeiten." 992 , dbVerbindung = dbVerbindung ) 993 994 # 995 # -- Namen setzen (somit Klasse / Objekt erkennen) -------------------------- 996 # 997 self.SetName( name = "BearbeiteDokumenteDatenbank" ) 998 999 1000 # 1001 # -- Randbedingungen übernehmen ------------------------------------------ 1002 # 1003 self.__Notizen__ = Notizen 1004 self.__Fortschritt__ = Fortschritt 1005 self.__dbVerbindung__ = dbVerbindung 1006 self.dokDokuId = dokDokuId 1007 self.__lfdNr__ = None 1008 1009 self.sprUebvarIdKb = 0 1010 1011 1012 1013 # 1014 # -------------------------------------------------------------------------------- 1015 # -- Eingabeobjekte anlegen -------------------------------------------------- 1016 # -------------------------------------------------------------------------------- 1017 # 1018 1019 # 1020 # -- Dokument-Id -------------------------------------------------- 1021 # 1022 self.TextCtrlErg__Id = FlexGridSizerWxObjTitel( parent = self 1023 , wxObj = TextCtrlErg( self 1024 , style = wx.TE_READONLY|wx.BORDER_SUNKEN 1025 , Notizen = self.__Notizen__ ) 1026 , titel = u"Dokument-Id" 1027 , orient = wx.VERTICAL ) 1028 1029 self.TextCtrlErg__Id.wxObjekt.Enable( False ) 1030 1031 1032 1033 # 1034 # -- Beweis ------------------------------------------------------------------ 1035 # 1036 self.CheckBox__Beweis = FlexGridSizerWxObjTitel( parent = self 1037 , wxObj = CheckBoxErg( self 1038 , Notizen = self.__Notizen__ ) 1039 , titel = u"Beweis" 1040 , orient = wx.VERTICAL ) 1041 1042 self.CheckBox__Beweis.wxObjekt.nimmWerteStatusleiste( 1043 DBSpNameErlaeuterung = u"Das Dokument ist ein Beweisdokument (andernfalls ein Quelldokument)." 1044 , DBSpName = "dok.doku" ) 1045 1046 self.CheckBox__Beweis.wxObjekt.Enable( False ) 1047 1048 self.CheckBox__Beweis.wxObjekt.Bind( wx.EVT_CHECKBOX 1049 , self.__ereignisAenderung__ ) 1050 1051 1052 1053 # 1054 # -- Typ auswählen ------------------------------------------ 1055 # 1056 self.ComboBox__Typ = FlexGridSizerWxObjTitel( parent = self 1057 , wxObj = ComboBoxErg( self 1058 , choices = [] 1059 , style = wx.CB_DROPDOWN|wx.CB_READONLY 1060 , Notizen = self.__Notizen__ ) 1061 , orient = wx.VERTICAL 1062 , titel = "Typ des Dokumentes" ) 1063 1064 self.ComboBox__Typ.wxObjekt.nimmWerteStatusleiste( 1065 DBSpNameErlaeuterung = "Den Typ des Dokumentes auswählen." 1066 , DBSpName = "dok.typ" ) 1067 1068 self.ComboBox__Typ.wxObjekt.Bind( wx.EVT_COMBOBOX 1069 , self.__ereignisAenderung__ ) 1070 1071 1072 1073 # 1074 # -- Dokumententitel -------------------------------------------------- 1075 # 1076 self.TextCtrlErg__Titel = FlexGridSizerWxObjTitel( parent = self 1077 , wxObj = TextCtrlErg( self 1078 , style = wx.TE_MULTILINE|wx.BORDER_SUNKEN 1079 , Notizen = self.__Notizen__ ) 1080 , titel = u"Projektübergreifender Dokumententitel (in der aktuellen Sprache)" 1081 , orient = wx.VERTICAL ) 1082 1083 self.TextCtrlErg__Titel.wxObjekt.nimmWerteStatusleiste( 1084 DBSpNameErlaeuterung = u"Der projektübergreifende Titel des Dokumentes in der aktuellen Sprache." 1085 , DBSpName = "dok.doku" ) 1086 1087 self.TextCtrlErg__Titel.wxObjekt.Bind( wx.EVT_TEXT 1088 , self.__ereignisAenderung__ ) 1089 1090 1091 1092 # 1093 # -- Interne Notizen -------------------------------------------------- 1094 # 1095 self.TextCtrl__Notizen = FlexGridSizerWxObjTitel( parent = self 1096 , wxObj = TextCtrlErg( self 1097 , style = wx.TE_MULTILINE|wx.BORDER_SUNKEN 1098 , Notizen = self.__Notizen__ ) 1099 , titel = u"Interne Notizen zum Dokument" 1100 , orient = wx.VERTICAL ) 1101 1102 self.TextCtrl__Notizen.wxObjekt.nimmWerteStatusleiste( 1103 DBSpNameErlaeuterung = u"Interne, projektübergreifende Notizen." 1104 , DBSpName = "dok.doku" ) 1105 1106 self.TextCtrl__Notizen.wxObjekt.Bind( wx.EVT_TEXT 1107 , self.__ereignisAenderung__ ) 1108 1109 1110 1111 1112 # 1113 # -- Layout festlegen ------------------ 1114 # -- (Fenster später im >wx.SplitterWindow< darstellen ------------------ 1115 # 1116 1117 # 1118 # -- Dok-Id, Beweis, Typ -------------------------------------------------- 1119 # 1120 FlexGridSizer_Dok = wx.FlexGridSizer( rows = 1, cols = 3, vgap = 0, hgap = 10 ) 1121 1122 FlexGridSizer_Dok.AddGrowableCol( idx = 2, proportion = 1 ) 1123 1124 FlexGridSizer_Dok.Add( self.TextCtrlErg__Id 1125 , flag = wx.EXPAND ) 1126 1127 FlexGridSizer_Dok.Add( self.CheckBox__Beweis 1128 , flag = wx.EXPAND ) 1129 1130 FlexGridSizer_Dok.Add( self.ComboBox__Typ 1131 , flag = wx.EXPAND ) 1132 1133 # 1134 # -- Alles zusammenfügen -------------------------------------------------- 1135 # 1136 FlexGridSizer = wx.FlexGridSizer( rows = 3, cols = 1, vgap = 10, hgap = 0 ) 1137 1138 FlexGridSizer.AddGrowableCol( idx = 0, proportion = 1 ) 1139 1140 FlexGridSizer.AddGrowableRow( idx = 1, proportion = 1 ) 1141 FlexGridSizer.AddGrowableRow( idx = 2, proportion = 1 ) 1142 1143 1144 FlexGridSizer.Add( FlexGridSizer_Dok 1145 , flag = wx.LEFT|wx.TOP|wx.EXPAND 1146 , border = 5 ) 1147 1148 FlexGridSizer.Add( self.TextCtrlErg__Titel 1149 , flag = wx.LEFT|wx.RIGHT|wx.EXPAND 1150 , border = 5 ) 1151 1152 FlexGridSizer.Add( self.TextCtrl__Notizen 1153 , flag = wx.LEFT|wx.BOTTOM|wx.RIGHT|wx.EXPAND 1154 , border = 5 ) 1155 1156 1157 1158 # 1159 # -- In das Eingabeformular übernehmen ---------------------------------- 1160 # 1161 self.nimmDialogElemente( FlexGridSizer ) 1162 1163 1164 1165 # 1166 # -- Typen auslesen ------------------------------------------ 1167 # -- Verfügbare Dokumente auslesen ------------------------------------------ 1168 # 1169 self.__dbVerbindung__.selektiere__dokTyp( TreeCtrlErg_ComboBoxErg = self.ComboBox__Typ.wxObjekt 1170 , hatAlle = False ) 1171 1172 1173 1174 # 1175 # -- Datenbank auslesen -------------------------------------------------- 1176 # 1177 self.__spezAktionenVerwerfen__() 1178 1179 1180 # 1181 # -- Button 'Änderungen verwerfen' / 'Änderungen sichern' deaktivieren -- 1182 # 1183 self.Button__Verwerfen.Enable( False ) 1184 self.Button__Sichern.Enable( False )
1185 1186 1187 1188 1189 # 1190 # ------------------------------------------------------------------------------------ 1191 # -- Speichern ---------------------------------------------------------- 1192 # ------------------------------------------------------------------------------------ 1193 #
1194 - def __spezAktionenSpeichern__( self ):
1195 """ 1196 Methode die in der abgeleiteten Klasse überschrieben wird, um spezifische Aktionen beim Speichern der Änderungen auszuführen. 1197 """ 1198 1199 # 1200 # -- Fortschrittsdialog -------------------------------------------------- 1201 # -- Delta = 100 / ( 2 + 1 ) -------------------------------------------------- 1202 # 1203 self.__Fortschritt__.nimmDelta( delta = 100 / 3 ) 1204 1205 1206 # 1207 # -- Geänderte Zeichenketten übernehmen ---------------------------------- 1208 # 1209 self.sprUebvarIdKb = self.__dbVerbindung__.schreibe__sprNimmWgruppe( 1210 Fortschritt = self.__Fortschritt__ 1211 , sprUebvarId = 0 1212 , wortgruppe = self.TextCtrlErg__Titel.wxObjekt.gibWert() 1213 , sprSprachenId = self.__dbVerbindung__.filter__spr_sprachen_id ) 1214 1215 1216 # 1217 # -- Änderungen in Datenbank übernehmen ---------------------------------- 1218 # -- [0] ... BEWEIS ---------------------------------- 1219 # -- [1] ... QUELLE ---------------------------------- 1220 # 1221 aspekt = self.__dbVerbindung__.konstante__dok_doku_aspekt[1] 1222 if( self.CheckBox__Beweis.wxObjekt.gibWert() ) : aspekt = self.__dbVerbindung__.konstante__dok_doku_aspekt[0] 1223 1224 1225 # 1226 # -- Änderungen in Datenbank übernehmen ---------- 1227 # -- und Fehlermeldung ausgeben, wenn Dokument bereits vorhanden ist ---------- 1228 # 1229 tmp = self.__dbVerbindung__.schreibe__DokDoku( Fortschritt = self.__Fortschritt__ 1230 , listeWerte = [# 1231 # -- dok.doku.id -------- 1232 # 1233 self.TextCtrlErg__Id.wxObjekt.gibWert() 1234 # 1235 # -- dok.doku.notizen --- 1236 # 1237 , self.TextCtrl__Notizen.wxObjekt.gibWert() 1238 # 1239 # -- dok.doku.dok_typ_id 1240 # 1241 , self.ComboBox__Typ.wxObjekt.gibDbId() 1242 # 1243 # -- dok.doku.spr_uebvar_id_kb 1244 # 1245 , self.sprUebvarIdKb 1246 # 1247 # -- dok.doku.aspekt ---- 1248 # 1249 , aspekt ] 1250 , listeDokDokuId = self.__dbVerbindung__.daten__dokDoku__Sprache.keys() ) 1251 1252 if( tmp is None ) : 1253 1254 dlg = wx.MessageDialog( self 1255 , "Das neu anzulegende Dokument ist bereits vorhanden !" 1256 , "Dokument vorhanden !" 1257 , wx.OK | wx.ICON_INFORMATION ) 1258 dlg.CenterOnScreen() 1259 dlg.ShowModal() 1260 dlg.Destroy() 1261 1262 return 1263 1264 1265 # 1266 # -- >dok.doku.id< übernehmen ------------------------------------------ 1267 # 1268 self.dokDokuId = tmp 1269 self.TextCtrlErg__Id.wxObjekt.nimmWert( wert = str( self.dokDokuId ).zfill( 4 ) ) 1270 1271 1272 # 1273 # -- permanente Datenstrukturen aktualisieren -------------------------- 1274 # 1275 self.__dbVerbindung__.daten__dokDoku__Sprache = dict() 1276 self.__dbVerbindung__.init__dokDoku__Sprache__Projekt( Fortschritt = self.__Fortschritt__ ) 1277 1278 # 1279 # -- Fortschrittsdialog schließen ------------------------------------------ 1280 # 1281 self.__Fortschritt__.loescheFortschritt()
1282 1283 1284 1285 1286 # 1287 # ------------------------------------------------------------------------------------ 1288 # -- Verwerfen ---------------------------------------------------------- 1289 # ------------------------------------------------------------------------------------ 1290 #
1291 - def __spezAktionenVerwerfen__( self ):
1292 """ 1293 Methode die in der abgeleiteten Klasse überschrieben wird, um spezifische Aktionen beim Verwerfen der Änderungen auszuführen. 1294 """ 1295 1296 1297 # 1298 # -- Neues Dokument ---------------------------------------------------------- 1299 # 1300 if( self.dokDokuId is None ) : 1301 1302 # 1303 # -- Id -------------------------------------------------- 1304 # 1305 self.TextCtrlErg__Id.wxObjekt.nimmWert( wert = '' ) 1306 1307 1308 # 1309 # -- BEWEIS / QUELLE aktivieren und Standardwert setzen ---------- 1310 # 1311 self.CheckBox__Beweis.wxObjekt.Enable( True ) 1312 self.CheckBox__Beweis.wxObjekt.nimmWert( wert = False ) 1313 1314 1315 # 1316 # -- Typ auf Standardwert setzen ------------------ 1317 # 1318 self.ComboBox__Typ.wxObjekt.SetSelection( 0 ) 1319 1320 1321 # 1322 # -- Dokumententitel / Notizen auf Standardwert setzen ---------- 1323 # 1324 self.TextCtrlErg__Titel.wxObjekt.nimmWert( wert = zk.LeerZk ) 1325 self.TextCtrl__Notizen.wxObjekt.nimmWert( wert = zk.LeerZk ) 1326 self.sprUebvarIdKb = 0 1327 1328 1329 # 1330 # -- Dokument bearbeiten -------------------------------------------------- 1331 # 1332 else : 1333 1334 # 1335 # -- Id -------------------------------------------------- 1336 # 1337 self.TextCtrlErg__Id.wxObjekt.nimmWert( wert = str( self.dokDokuId ).zfill( 4 ) ) 1338 1339 1340 # 1341 # -- BEWEIS / QUELLE deaktivieren und aktuellen Wert setzen ---------- 1342 # -- [0] ... BEWEIS ---------- 1343 # 1344 self.CheckBox__Beweis.wxObjekt.Enable( False ) 1345 self.CheckBox__Beweis.wxObjekt.nimmWert( 1346 wert = ( self.__dbVerbindung__.daten__dokDoku__Sprache[self.dokDokuId][0][2] == self.__dbVerbindung__.konstante__dok_doku_aspekt[0] ) ) 1347 1348 # 1349 # -- Typ auf Standardwert setzen ------------------ 1350 # 1351 self.ComboBox__Typ.wxObjekt.selektiereWert( 1352 dbId = self.__dbVerbindung__.daten__dokDoku__Sprache[self.dokDokuId][0][1] ) 1353 1354 1355 # 1356 # -- Dokumententitel / Notizen auf Standardwert setzen ---------- 1357 # 1358 self.TextCtrlErg__Titel.wxObjekt.nimmWert( 1359 wert = self.__dbVerbindung__.daten__dokDoku__Sprache[self.dokDokuId][0][4] ) 1360 self.TextCtrl__Notizen.wxObjekt.nimmWert( 1361 wert = self.__dbVerbindung__.daten__dokDoku__Sprache[self.dokDokuId][0][0] ) 1362 self.sprUebvarIdKb = self.__dbVerbindung__.daten__dokDoku__Sprache[self.dokDokuId][0][3]
1363 1364 1365 1366 1367 1368 1369 1370 # 1371 # ---------------------------------------------------------------------------------------- 1372 # ---------------------------------------------------------------------------------------- 1373 # -- Nächstes Eingabeformular ! -------------------------------------------------- 1374 # ---------------------------------------------------------------------------------------- 1375 # ---------------------------------------------------------------------------------------- 1376 # 1377 1378 1379 1380 1381 1382 # 1383 # ---------------------------------------------------------------------------------------- 1384 # ---------------------------------------------------------------------------------------- 1385 # -- -------------------------- 1386 # -- Eingabeformular 'Dokumente bearbeiten (Projekt)' -------------------------- 1387 # -- -------------------------- 1388 # ---------------------------------------------------------------------------------------- 1389 # ---------------------------------------------------------------------------------------- 1390 #
1391 -class BearbeiteDokumenteProjekt( DialogErg ):
1392 1393 """ 1394 Klasse zur Abbildung des Eingabeformulars 'Dokumente bearbeiten (Projekt)'. Mittels dieses Formulares werden Dokumente projektbezogen bearbeitet. 1395 """ 1396 1397 # 1398 # ------------------------------------------------------------------------------------ 1399 # -- Eingabeformular initialisieren ---------------------------------- 1400 # ------------------------------------------------------------------------------------ 1401 #
1402 - def __init__( self, parent, title, Notizen, Fortschritt, dbVerbindung, dokDokuId ):
1403 DialogErg.__init__( self 1404 , parent = parent 1405 , title = title 1406 , dbVerbindung = dbVerbindung ) 1407 1408 # 1409 # -- Namen setzen (somit Klasse / Objekt erkennen) -------------------------- 1410 # 1411 self.SetName( name = "BearbeiteDokumenteProjekt" ) 1412 1413 1414 # 1415 # -- Randbedingungen übernehmen ------------------------------------------ 1416 # 1417 self.__Notizen__ = Notizen 1418 self.__Fortschritt__ = Fortschritt 1419 self.__dbVerbindung__ = dbVerbindung 1420 self.__dokDokuId__ = dokDokuId 1421 self.__lfdNr__ = None 1422 1423 1424 1425 # 1426 # -------------------------------------------------------------------------------- 1427 # -- Eingabeobjekte anlegen -------------------------------------------------- 1428 # -------------------------------------------------------------------------------- 1429 # 1430 1431 # 1432 # -- Dokument-Id -------------------------------------------------- 1433 # 1434 self.TextCtrlErg__Id = FlexGridSizerWxObjTitel( parent = self 1435 , wxObj = TextCtrlErg( self 1436 , style = wx.TE_READONLY|wx.BORDER_SUNKEN 1437 , Notizen = self.__Notizen__ ) 1438 , titel = u"Dokument-Id" 1439 , orient = wx.VERTICAL ) 1440 1441 self.TextCtrlErg__Id.wxObjekt.Enable( False ) 1442 1443 1444 1445 # 1446 # -- Dokumentnummer -------------------------------------------------- 1447 # 1448 self.TextCtrlErg__DokNr = FlexGridSizerWxObjTitel( parent = self 1449 , wxObj = TextCtrlErg( self 1450 , style = wx.BORDER_SUNKEN 1451 , Notizen = self.__Notizen__ ) 1452 , titel = u"Dokumentennummer" 1453 , orient = wx.VERTICAL ) 1454 1455 self.TextCtrlErg__DokNr.wxObjekt.nimmWerteStatusleiste( 1456 DBSpNameErlaeuterung = u"Die Dokumentennummer." 1457 , DBSpName = "dok.doku / prj.pl_dokausgabe" ) 1458 1459 self.TextCtrlErg__DokNr.wxObjekt.Bind( wx.EVT_TEXT 1460 , self.__ereignisAenderung__ ) 1461 1462 1463 # 1464 # -- Dokumententitel -------------------------------------------------- 1465 # 1466 self.TextCtrlErg__Titel = FlexGridSizerWxObjTitel( parent = self 1467 , wxObj = TextCtrlErg( self 1468 , style = wx.BORDER_SUNKEN 1469 , Notizen = self.__Notizen__ ) 1470 , titel = u"Projektspezifischer Dokumententitel (in der aktuellen Sprache)" 1471 , orient = wx.VERTICAL ) 1472 1473 1474 self.TextCtrlErg__Titel.wxObjekt.nimmWerteStatusleiste( 1475 DBSpNameErlaeuterung = u"Der projektspezifische Titel des Dokumentes in der aktuellen Sprache." 1476 , DBSpName = "dok.doku / prj.pl_dokausgabe" ) 1477 1478 self.TextCtrlErg__Titel.wxObjekt.Bind( wx.EVT_TEXT 1479 , self.__ereignisAenderung__ ) 1480 1481 1482 1483 1484 # 1485 # -- Datum der Dokumentausgabe ------------------------------------------ 1486 # 1487 self.Ctrl__DatumAusgabe = FlexGridSizerWxObjTitel( parent = self 1488 , wxObj = MaskedTextCtrlErg( parent = self 1489 , validRequired = True 1490 , autoformat = "EUDATEDDMMYYYY." 1491 , Notizen = self.__Notizen__ ) 1492 , titel = u"Datum" 1493 , orient = wx.VERTICAL ) 1494 1495 self.Ctrl__DatumAusgabe.wxObjekt.nimmWerteStatusleiste( 1496 DBSpNameErlaeuterung = u"Das Datum der Dokumentausgabe." 1497 , DBSpName = "dok.doku / prj.pl_dokausgabe" ) 1498 1499 self.Ctrl__DatumAusgabe.wxObjekt.Bind( wx.EVT_TEXT 1500 , self.__ereignisAenderung__ ) 1501 1502 1503 1504 1505 # 1506 # -- Ausgabe / Revisionsstand ---------------------------------- 1507 # 1508 self.TextCtrlErg__Ausgabe = FlexGridSizerWxObjTitel( parent = self 1509 , wxObj = TextCtrlErg( self 1510 , style = wx.BORDER_SUNKEN 1511 , Notizen = self.__Notizen__ ) 1512 , titel = u"Ausgabe" 1513 , orient = wx.VERTICAL ) 1514 1515 1516 self.TextCtrlErg__Ausgabe.wxObjekt.SetMinSize( ( 150, -1 ) ) 1517 1518 self.TextCtrlErg__Ausgabe.wxObjekt.nimmWerteStatusleiste( 1519 DBSpNameErlaeuterung = u"Die Dokumentausgabe / Revisionsstand." 1520 , DBSpName = "dok.doku / prj.pl_dokausgabe" ) 1521 1522 self.TextCtrlErg__Ausgabe.wxObjekt.Bind( wx.EVT_TEXT 1523 , self.__ereignisAenderung__ ) 1524 1525 1526 1527 # 1528 # -- Ist freigegeben -------------------------------------------------- 1529 # 1530 self.CheckBox__Freigegeben = FlexGridSizerWxObjTitel( parent = self 1531 , wxObj = CheckBoxErg( self 1532 , Notizen = self.__Notizen__ ) 1533 , titel = u"Ist Freigegeben" 1534 , orient = wx.VERTICAL ) 1535 1536 self.CheckBox__Freigegeben.wxObjekt.nimmWerteStatusleiste( 1537 DBSpNameErlaeuterung = u"Das Dokument ist freigegeben." 1538 , DBSpName = "dok.doku / prj.pl_dokausgabe" ) 1539 1540 self.CheckBox__Freigegeben.wxObjekt.Bind( wx.EVT_CHECKBOX 1541 , self.__ereignisAenderung__ ) 1542 1543 1544 1545 # 1546 # -- Interne Notizen zur Ausgabe / Revision -------------------------- 1547 # 1548 self.TextCtrl__NotizenAusgabe = FlexGridSizerWxObjTitel( parent = self 1549 , wxObj = TextCtrlErg( self 1550 , style = wx.TE_MULTILINE|wx.BORDER_SUNKEN 1551 , Notizen = self.__Notizen__ ) 1552 , titel = u"Interne Notizen zur Ausgabe" 1553 , orient = wx.VERTICAL ) 1554 1555 self.TextCtrl__NotizenAusgabe.wxObjekt.nimmWerteStatusleiste( 1556 DBSpNameErlaeuterung = u"Interne, projektspezifische Notizen." 1557 , DBSpName = "dok.doku / prj.pl_dokausgabe" ) 1558 1559 self.TextCtrl__NotizenAusgabe.wxObjekt.Bind( wx.EVT_TEXT 1560 , self.__ereignisAenderung__ ) 1561 1562 1563 1564 # 1565 # -- Layout festlegen ------------------ 1566 # -- (Fenster später im >wx.SplitterWindow< darstellen ------------------ 1567 # 1568 1569 # 1570 # -- Dok-Id, Dok-Nr ---------------------------------------------------------- 1571 # 1572 FlexGridSizer_Id = wx.FlexGridSizer( rows = 1, cols = 2, vgap = 0, hgap = 10 ) 1573 1574 FlexGridSizer_Id.AddGrowableCol( idx = 1, proportion = 1 ) 1575 1576 FlexGridSizer_Id.Add( self.TextCtrlErg__Id 1577 , flag = wx.EXPAND ) 1578 1579 FlexGridSizer_Id.Add( self.TextCtrlErg__DokNr 1580 , flag = wx.EXPAND ) 1581 1582 1583 # 1584 # -- Datum, Ausgabe, Freigabe ------------------------------------------ 1585 # 1586 FlexGridSizer_Ausgabe = wx.FlexGridSizer( rows = 1, cols = 3, vgap = 0, hgap = 10 ) 1587 FlexGridSizer_Ausgabe.AddGrowableCol( idx = 1, proportion = 1 ) 1588 1589 FlexGridSizer_Ausgabe.Add( self.Ctrl__DatumAusgabe 1590 , flag = wx.EXPAND ) 1591 1592 FlexGridSizer_Ausgabe.Add( self.TextCtrlErg__Ausgabe 1593 , flag = wx.EXPAND ) 1594 1595 FlexGridSizer_Ausgabe.Add( self.CheckBox__Freigegeben 1596 , flag = wx.EXPAND ) 1597 1598 1599 # 1600 # -- Alles zusammenfügen -------------------------------------------------- 1601 # 1602 FlexGridSizer = wx.FlexGridSizer( rows = 4, cols = 1, vgap = 10, hgap = 0 ) 1603 1604 FlexGridSizer.AddGrowableCol( idx = 0, proportion = 1 ) 1605 1606 FlexGridSizer.AddGrowableRow( idx = 3, proportion = 1 ) 1607 1608 1609 FlexGridSizer.Add( FlexGridSizer_Id 1610 , flag = wx.EXPAND|wx.LEFT|wx.TOP|wx.RIGHT 1611 , border = 5 ) 1612 1613 FlexGridSizer.Add( self.TextCtrlErg__Titel 1614 , flag = wx.EXPAND|wx.LEFT|wx.RIGHT 1615 , border = 5 ) 1616 1617 FlexGridSizer.Add( FlexGridSizer_Ausgabe 1618 , flag = wx.EXPAND|wx.LEFT|wx.RIGHT 1619 , border = 5 ) 1620 1621 FlexGridSizer.Add( self.TextCtrl__NotizenAusgabe 1622 , flag = wx.EXPAND|wx.LEFT|wx.BOTTOM|wx.RIGHT 1623 , border = 5 ) 1624 1625 1626 # 1627 # -- In das Eingabeformular übernehmen ---------------------------------- 1628 # 1629 self.nimmDialogElemente( FlexGridSizer ) 1630 1631 1632 # 1633 # -- Vorgabewerte eintragen -------------------------------------------------- 1634 # 1635 self.__spezAktionenVerwerfen__() 1636 1637 1638 # 1639 # -- Button 'Änderungen verwerfen' / 'Änderungen sichern' deaktivieren -- 1640 # 1641 self.Button__Verwerfen.Enable( False ) 1642 self.Button__Sichern.Enable( False ) 1643 1644 1645 1646 # 1647 # -- Fenster zentrieren -------------------------------------------------- 1648 # 1649 self.CenterOnScreen()
1650 1651 1652 1653 1654 # 1655 # ------------------------------------------------------------------------------------ 1656 # -- Änderungsstatus der Eingabeobjekte des abgeleiteten Objektes ---------- 1657 # -- zurücksetzen ---------- 1658 # ------------------------------------------------------------------------------------ 1659 #
1661 """ 1662 Methode die von der abgeleiteten Klasse überschrieben werden kann, um den Änderungsstatus der Eingabeobjekte zurückzusetzen. 1663 """ 1664 1665 # 1666 # -- Änderungsstatus des Dokumententitels zurücksetzen ------------------ 1667 # 1668 self.TextCtrlErg__Titel.wxObjekt.nimmIstVomBenutzerGeaendert( istVomBenutzerGeaendert = False )
1669 1670 1671 1672 1673 1674 1675 # 1676 # ------------------------------------------------------------------------------------ 1677 # -- Speichern ---------------------------------------------------------- 1678 # ------------------------------------------------------------------------------------ 1679 #
1680 - def __spezAktionenSpeichern__( self ):
1681 """ 1682 Methode die in der abgeleiteten Klasse überschrieben wird, um spezifische Aktionen beim Speichern der Änderungen auszuführen. 1683 """ 1684 1685 # 1686 # -- Fortschrittsdialog -------------------------------------------------- 1687 # -- Delta = 100 / ( 1 ) -------------------------------------------------- 1688 # 1689 self.__Fortschritt__.nimmDelta( delta = 100 ) 1690 1691 1692 1693 # 1694 # -- Geänderten Dokumenttitel übernehmen ---------------------------------- 1695 # 1696 spr_uebvar_id = self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt[self.__lfdNr__][6] 1697 1698 if( self.TextCtrlErg__Titel.wxObjekt.gibIstVomBenutzerGeaendert() ) : 1699 1700 spr_uebvar_id = self.__dbVerbindung__.schreibe__sprNimmWgruppe( 1701 Fortschritt = self.__Fortschritt__ 1702 , sprUebvarId = 0 1703 , wortgruppe = self.TextCtrlErg__Titel.wxObjekt.gibWert() 1704 , sprSprachenId = self.__dbVerbindung__.filter__spr_sprachen_id ) 1705 1706 1707 1708 # 1709 # -- Dokumente in das aktuelle Projekt übernehmen ------------------ 1710 # 1711 self.__dbVerbindung__.schreibe__prjPlDokAusgabe( Fortschritt = self.__Fortschritt__ 1712 , listeWerte = [ # 1713 # -- dok_doku_id 1714 # 1715 self.__dokDokuId__ 1716 # 1717 # -- nr -------------- 1718 # 1719 , self.TextCtrlErg__DokNr.wxObjekt.gibWert() 1720 # 1721 # -- spr_uebvar_id --- 1722 # 1723 , spr_uebvar_id 1724 # 1725 # -- stand ----------- 1726 # 1727 , self.TextCtrlErg__Ausgabe.wxObjekt.gibWert() 1728 # 1729 # -- datum ----------- 1730 # 1731 , zk.gibDatum( self.Ctrl__DatumAusgabe.wxObjekt.gibWert() ) 1732 # 1733 # -- istfrei --------- 1734 # 1735 , self.CheckBox__Freigegeben.wxObjekt.gibWert() 1736 # 1737 # -- notizen --------- 1738 # 1739 , self.TextCtrl__NotizenAusgabe.wxObjekt.gibWert() ] ) 1740 1741 1742 1743 # 1744 # -- permanente Datenstrukturen aktualisieren ------------------ 1745 # 1746 self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt = [] 1747 self.__dbVerbindung__.init__dokDoku__Sprache__Projekt( Fortschritt = self.__Fortschritt__ ) 1748 self.__lfdNr__ = zk.gibListeTeilmenge( liste = self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt ).index( self.__dokDokuId__ ) 1749 1750 # 1751 # -- Fortschrittsdialog schließen ------------------------------------------ 1752 # 1753 self.__Fortschritt__.loescheFortschritt()
1754 1755 1756 1757 1758 1759 1760 1761 # 1762 # ------------------------------------------------------------------------------------ 1763 # -- Verwerfen ---------------------------------------------------------- 1764 # ------------------------------------------------------------------------------------ 1765 #
1766 - def __spezAktionenVerwerfen__( self ):
1767 """ 1768 Methode die in der abgeleiteten Klasse überschrieben wird, um spezifische Aktionen beim Verwerfen der Änderungen auszuführen. 1769 """ 1770 1771 # 1772 # -- Daten in permanenter Datenstruktur finden -------------------------- 1773 # 1774 self.__lfdNr__ = zk.gibListeTeilmenge( liste = self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt ).index( self.__dokDokuId__ ) 1775 1776 1777 # 1778 # -- Id -------------------------------------------------- 1779 # 1780 self.TextCtrlErg__Id.wxObjekt.nimmWert( wert = str( self.__dokDokuId__ ).zfill( 4 ) ) 1781 1782 1783 # 1784 # -- Dokumentnummer -------------------------------------------------- 1785 # 1786 self.TextCtrlErg__DokNr.wxObjekt.nimmWert( 1787 wert = self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt[self.__lfdNr__][1] ) 1788 1789 # 1790 # -- Dokumententitel -------------------------------------------------- 1791 # 1792 self.TextCtrlErg__Titel.wxObjekt.nimmWert( 1793 wert = self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt[self.__lfdNr__][2] ) 1794 1795 # 1796 # -- Datum der Dokumentausgabe ------------------------------------------ 1797 # 1798 self.Ctrl__DatumAusgabe.wxObjekt.nimmWert( 1799 wert = self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt[self.__lfdNr__][4] ) 1800 1801 # 1802 # -- Ausgabe / Revisionsstand ---------------------------------- 1803 # 1804 self.TextCtrlErg__Ausgabe.wxObjekt.nimmWert( 1805 wert = self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt[self.__lfdNr__][3] ) 1806 1807 # 1808 # -- Ist freigegeben -------------------------------------------------- 1809 # 1810 self.CheckBox__Freigegeben.wxObjekt.nimmWert( 1811 wert = ( str( self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt[self.__lfdNr__][7] ).upper() == 'TRUE' ) ) 1812 1813 # 1814 # -- Interne Notizen zur Ausgabe / Revision -------------------------- 1815 # 1816 self.TextCtrl__NotizenAusgabe.wxObjekt.nimmWert( 1817 wert = self.__dbVerbindung__.daten__dokDoku__Sprache__Projekt[self.__lfdNr__][5] )
1818