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

Source Code for Module gefahrenanalyse

  1  # -*- coding: utf-8 -*- 
  2  # 
  3  # 
  4  #    filename:  gefahrenanalyse.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 bearbeiteanmerkung import BearbeiteAnmerkung               # Eingabeformular für Anmerkungen 
 42  from bearbeiteuebersetzung import BearbeiteUebersetzung         # Eingabeformular für Übersetzungen 
 43   
 44  from universal import allg                                      # Allgemeine Funktionen 
 45  from universal import zk                                        # Zeichenketten bearbeiten 
 46   
 47  from wxuniversal import HK_GEFAHRENSZENARIO 
 48  from wxuniversal import HK_REPR_GEFSZENARIO 
 49   
 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 ListBoxErgSpWTitelAL            # ListBox im SplitterWindow m. Titel + AW-Liste 
 53  from wxuniversal import TreeCtrlErg                     # TreeCtrl mit Ergänzungen 
 54   
 55   
 56   
 57  # 
 58  # 
 59  # 
 60  # ---------------------------------------------------------------------------------------- 
 61  # ---------------------------------------------------------------------------------------- 
 62  # --                                    -------------------------------------------------- 
 63  # --    Offene Punkte / Aufgaben        -------------------------------------------------- 
 64  # --                                    -------------------------------------------------- 
 65  # ---------------------------------------------------------------------------------------- 
 66  # ---------------------------------------------------------------------------------------- 
 67  # 
 68  #  
 69  #       -- siehe TODO 'gefahrenanalyse.py' -- 
 70  # 
 71  # 
 72  # ---------------------------------------------------------------------------------------- 
 73  # 
 74   
 75  # 
 76  # ---------------------------------------------------------------------------------------- 
 77  # ---------------------------------------------------------------------------------------- 
 78  # --                                    -------------------------------------------------- 
 79  # --    Eingabeformular 'Gefahrenanalyse'       -------------------------------------------------- 
 80  # --                                    -------------------------------------------------- 
 81  # ---------------------------------------------------------------------------------------- 
 82  # ---------------------------------------------------------------------------------------- 
 83  # 
84 -class Gefahrenanalyse( wx.Panel ):
85 86 """ 87 Klasse zur Abbildung des Eingabeformulars 'Gefahrenanalyse' 88 89 @keyword parent: Es ist der Datenbankbenutzername zu übergeben. 90 @type parent: Zeichenkette 91 @keyword id: Es ist das Kennwort des Datenbankbenutzers zu übergeben. 92 @type id: Zeichenkette 93 @keyword size: Es ist die IP-Adresse anzugeben, über die der PostgreSQL-Datenbankserver ansprechbar ist. 94 @type size: Zeichenkette 95 96 @raise Fehler: ?? Fehlermeldung und Programmende, wenn die Datenbankverbindung nicht hergestellt werden kann. ?? 97 """ 98 99 # 100 # ------------------------------------------------------------------------------------ 101 # -- Eingabeformular initialisieren ---------------------------------- 102 # ------------------------------------------------------------------------------------ 103 #
104 - def __init__( self, parent, Notizen, Fortschritt, dbVerbindung ):
105 wx.Panel.__init__( self, parent = parent ) 106 107 # 108 # -- Namen setzen (somit Klasse / Objekt erkennen) -------------------------- 109 # 110 self.SetName( name = "Gefahrenanalyse" ) 111 112 113 # 114 # -- Randbedingungen übernehmen ------------------------------------------ 115 # 116 self.__Notizen__ = Notizen 117 self.__Fortschritt__ = Fortschritt 118 self.__dbVerbindung__ = dbVerbindung 119 120 self.__txtUebersetzung__ = u"Doppelklick:\nÜbersetzungen anzeigen/bearbeiten" 121 122 123 124 125 # 126 # -------------------------------------------------------------------------------- 127 # -- Eingabeobjekte anlegen -------------------------------------------------- 128 # -------------------------------------------------------------------------------- 129 # 130 131 # 132 # -------------------------------------------------------------------------------- 133 # -- Enthalten im Gefahrennetz ------------------------------------------ 134 # -------------------------------------------------------------------------------- 135 # 136 self.ListBoxAL__GefNetz = ListBoxErgSpWTitelAL( parent = self 137 , titel = u"Enthalten im Gefahrennetz" 138 , minSize = ( -1, 150 ) 139 , orient = wx.VERTICAL 140 , Notizen = self.__Notizen__ ) 141 142 # Es muß mindestens ein Element ausgewählt sein ! 143 self.ListBoxAL__GefNetz.ListBoxLiDarfLeerSein = False 144 145 self.ListBoxAL__GefNetz.ListBox__li.nimmWerteStatusleiste( 146 DBSpNameErlaeuterung = u"Dem aktuellen Gefahrenszenario zugeordneter Strukturpunkt im Gefahrennetz." 147 , DBSpName = "str.strkt / prj.pp_strstrkt / prj.p_strverbindung / prj.pl_psgefstrkt" ) 148 149 self.ListBoxAL__GefNetz.ListBox__re.nimmWerteStatusleiste( 150 DBSpNameErlaeuterung = u"Verfügbare Strukturpunkte im Gefahrennetz." 151 , DBSpName = "str.strkt / prj.pp_strstrkt / prj.p_strverbindung" ) 152 153 self.ListBoxAL__GefNetz.ListBox__li.Bind( wx.EVT_LISTBOX 154 , self.__ereignisNotizenLoeschen__ ) 155 156 self.ListBoxAL__GefNetz.ListBox__re.Bind( wx.EVT_LISTBOX 157 , self.__ereignisNotizenLoeschen__ ) 158 159 160 161 162 # 163 # -------------------------------------------------------------------------------- 164 # -- Gefährdete Personen ------------------------------------------ 165 # -------------------------------------------------------------------------------- 166 # 167 self.ListBoxAL__GefPersonen = ListBoxErgSpWTitelAL( parent = self 168 , titel = u"Gefährdete Personengruppen" 169 , minSize = ( -1, 150 ) 170 , orient = wx.VERTICAL 171 , Notizen = self.__Notizen__ ) 172 173 # Es muß mindestens ein Element ausgewählt sein ! 174 self.ListBoxAL__GefPersonen.ListBoxLiDarfLeerSein = False 175 176 self.ListBoxAL__GefPersonen.ListBox__li.nimmWerteStatusleiste( 177 DBSpNameErlaeuterung = u"Vom Gefahrenszenario unmittelbar betroffene Personengruppen." 178 , DBSpName = "ps.abk / prj.p_psabk / prj.pl_psgefabk" ) 179 180 self.ListBoxAL__GefPersonen.ListBox__re.nimmWerteStatusleiste( 181 DBSpNameErlaeuterung = u"Verfügbare Personengruppen, die vom Gefahrenszenario betroffen sein können." 182 , DBSpName = "ps.abk / prj.p_psabk" ) 183 184 self.ListBoxAL__GefPersonen.ListBox__li.Bind( wx.EVT_LISTBOX 185 , self.__ereignisNotizenLoeschen__ ) 186 187 self.ListBoxAL__GefPersonen.ListBox__re.Bind( wx.EVT_LISTBOX 188 , self.__ereignisNotizenLoeschen__ ) 189 190 191 # 192 # -------------------------------------------------------------------------------- 193 # -- Gefahrenszenario / Interne Notizen zum Gefahrenszenario -- 194 # -- Repräsentatives Gefahrenszenario -- 195 # -- Anmerkungen zum Gefahrenszenario / Interne Notizen zu den Anmerkungen -- 196 # -------------------------------------------------------------------------------- 197 # 198 self.TreeCtrlErg__GefszenAnm = FlexGridSizerWxObjTitel( parent = self 199 , wxObj = TreeCtrlErg( self 200 , Notizen = self.__Notizen__ ) 201 , titel = u"Gefahrenszenario, Repräsentatives Gefahrenszenario, Anmerkungen zum Gefahrenszenario" 202 , orient = wx.VERTICAL ) 203 204 self.TreeCtrlErg__GefszenAnm.wxObjekt.SetMinSize( ( -1, 300 ) ) 205 206 self.TreeCtrlErg__GefszenAnm.wxObjekt.SetBackgroundColour( farbeBearbeiten ) 207 208 self.TreeCtrlErg__GefszenAnm.wxObjekt.nimmTooltip( u"F2/F3:\nÜbersetzung des (Repräsentativen) Gefahrenszenarios bearbeiten\n\nAnmerkung bearbeiten" ) 209 210 self.TreeCtrlErg__GefszenAnm.wxObjekt.Bind( wx.EVT_TREE_SEL_CHANGED 211 , self.__ereignisStatusleiste__ ) 212 213 self.TreeCtrlErg__GefszenAnm.wxObjekt.Bind( wx.EVT_KEY_DOWN 214 , self.__ereignisGefahrenszenarioAnmerkungen__ ) 215 216 217 218 219 # 220 # -------------------------------------------------------------------------------- 221 # -- Layout setzen ---------------------------------------------------------- 222 # -------------------------------------------------------------------------------- 223 # 224 225 # 226 # -- Gefahrennetz, gefährdete Personen ---------------------------------- 227 # 228 FlexGridSizer_GefNetz = wx.FlexGridSizer( rows = 1, cols = 2, vgap = 0, hgap = 10 ) 229 230 FlexGridSizer_GefNetz.AddGrowableCol( idx = 0, proportion = 1 ) 231 FlexGridSizer_GefNetz.AddGrowableCol( idx = 1, proportion = 1 ) 232 233 FlexGridSizer_GefNetz.Add( self.ListBoxAL__GefNetz 234 , flag = wx.EXPAND ) 235 236 FlexGridSizer_GefNetz.Add( self.ListBoxAL__GefPersonen 237 , flag = wx.EXPAND ) 238 239 240 241 # 242 # -- Hauptlayout ---------------------------------------------------------- 243 # 244 FlexGridSizer = wx.FlexGridSizer( rows = 2, cols = 1, vgap = 10, hgap = 0 ) 245 246 FlexGridSizer.AddGrowableRow( idx = 1, proportion = 1 ) 247 248 FlexGridSizer.AddGrowableCol( idx = 0, proportion = 1 ) 249 250 251 FlexGridSizer.Add( FlexGridSizer_GefNetz 252 , flag = wx.LEFT|wx.TOP|wx.RIGHT|wx.EXPAND 253 , border = 10 ) 254 255 FlexGridSizer.Add( self.TreeCtrlErg__GefszenAnm 256 , flag = wx.LEFT|wx.BOTTOM|wx.RIGHT|wx.EXPAND 257 , border = 10 ) 258 259 260 # 261 # -- in das Fenster einpassen ------------------------------------------ 262 # 263 self.SetSizerAndFit( FlexGridSizer ) 264 265 266 267 # 268 # -- Gefahrenanalyse initialisieren ---------------------------------- 269 # -- aktuelles Gefahrenszenario auslesen ---------------------------------- 270 # 271 self.init_Gefahrenanalyse() 272 self.liesDB()
273 274 275 276 277 # 278 # ------------------------------------------------------------------------------------ 279 # -- Gefahrenszenario und Anmerkungen ---------------------------------- 280 # ------------------------------------------------------------------------------------ 281 #
282 - def __ereignisGefahrenszenarioAnmerkungen__( self, ereignis ):
283 """ 284 Das Gefahrenszenario, Repräsentative Gefahrenszenario und die Anmerkungen zum Gefahrenszenario bearbeiten. 285 286 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 287 @type ereignis: C{wx - Ereignisobjekt} 288 """ 289 290 # 291 # -- Ungültige Tastaturereignisse abfangen ---------------------------------- 292 # 293 if( not( ereignis.GetKeyCode() == wx.WXK_F2 294 or ereignis.GetKeyCode() == wx.WXK_F3 ) ) : 295 296 return 297 298 299 300 # 301 # -- Gefahrenszenario / Repräsentatives Gefahrenszenario bearbeiten ---------- 302 # 303 if( ereignis.GetEventObject().gibBezeichnungHauptknoten() == HK_GEFAHRENSZENARIO 304 or ereignis.GetEventObject().gibBezeichnungHauptknoten() == HK_REPR_GEFSZENARIO ) : 305 306 self.__ereignisUebersezung__( ereignis = ereignis ) 307 308 309 # 310 # -- Anmerkungen bearbeiten -------------------------------------------------- 311 # -- Meldung ausgeben -------------------------------------------------- 312 # 313 else : 314 315 dlg = BearbeiteAnmerkung( parent = self 316 , Notizen = self.__Notizen__ 317 , Fortschritt = self.__Fortschritt__ 318 , dbVerbindung = self.__dbVerbindung__ ) 319 dlg.ShowModal() 320 dlg.CenterOnScreen() 321 dlg.Destroy() 322 323 324 # 325 # -- Änderungen in Gefahrenanalyse übernehmen ---------------------------------- 326 # 327 ereignis.GetEventObject().loescheAlles() 328 329 self.__dbVerbindung__.selektiere__GefszenId_Wortgruppen__Sprache__Projekt( 330 TreeCtrlErg_Gefszenario = self.TreeCtrlErg__GefszenAnm.wxObjekt ) 331 332 333 334 335 psAnmerkungId = None 336 if( self.__dbVerbindung__.ps_gefszenario_id in self.__dbVerbindung__.daten__GefszenId_AnmId__Sprache__Projekt ) : 337 338 psAnmerkungId = zk.gibListeTeilmenge( liste = self.__dbVerbindung__.daten__GefszenId_AnmId__Sprache__Projekt[self.__dbVerbindung__.ps_gefszenario_id] ) 339 340 self.__dbVerbindung__.selektiere__GefszenId_AnmId__Sprache__Projekt( 341 TreeCtrlErg_ListBoxErg = ereignis.GetEventObject() 342 , psAnmerkungId = psAnmerkungId ) 343 344 345 346 347 # 348 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 349 # -- ausgewertet werden kann -------------------------- 350 # 351 if( ereignis != None ) : ereignis.Skip( skip = True )
352 353 354 355 356 # 357 # ------------------------------------------------------------------------------------ 358 # -- Notizen in der Statusleiste löschen ---------------------------------- 359 # ------------------------------------------------------------------------------------ 360 #
361 - def __ereignisNotizenLoeschen__( self, ereignis ):
362 """ 363 Notizen in der Statusleiste löschen 364 365 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 366 @type ereignis: C{wx - Ereignisobjekt} 367 """ 368 369 # 370 # -- Notizen löschen -------------------------------------------------- 371 # 372 self.__Notizen__.TextCtrlErg__li.nimmWert( "" ) 373 374 375 # 376 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 377 # -- ausgewertet werden kann -------------------------- 378 # 379 if( ereignis != None ) : ereignis.Skip( skip = True )
380 381 382 383 384 # 385 # ------------------------------------------------------------------------------------ 386 # -- Statusleiste setzen -------------------------------------------------- 387 # ------------------------------------------------------------------------------------ 388 #
389 - def __ereignisStatusleiste__( self, ereignis ):
390 """ 391 Statusleiste entsprechend selektierten Element setzen 392 393 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 394 @type ereignis: C{wx - Ereignisobjekt} 395 """ 396 397 # 398 # -- Notizen löschen -------------------------------------------------- 399 # 400 self.__Notizen__.TextCtrlErg__li.nimmWert( "" ) 401 402 403 # 404 # -- Gefahrenszenario -------------------------------------------------- 405 # 406 if( ereignis.GetEventObject().gibBezeichnungHauptknoten() == HK_GEFAHRENSZENARIO ) : 407 408 # 409 # -- linker Bereich der Statusleiste -------------------------- 410 # 411 if( self.__dbVerbindung__.ps_gefszenario_id in self.__dbVerbindung__.daten__GefszenId_Wortgruppen__Sprache__Projekt 412 and not ereignis.GetEventObject().istHauptknoten() ) : 413 414 self.__Notizen__.TextCtrlErg__li.nimmWert( self.__dbVerbindung__.daten__GefszenId_Wortgruppen__Sprache__Projekt[self.__dbVerbindung__.ps_gefszenario_id][0][2] ) 415 416 # 417 # -- rechter Bereich der Statusleiste ---------------------------------- 418 # 419 self.TreeCtrlErg__GefszenAnm.wxObjekt.nimmWerteStatusleiste( 420 DBSpNameErlaeuterung = u"Beschreibung des Gefahrenszenarios." 421 , DBSpName = "ps.gefszenario / prj.pp_psgefszenario" ) 422 423 424 425 # 426 # -- Repräsentatives Gefahrenszenario ---------------------------------- 427 # 428 elif( ereignis.GetEventObject().gibBezeichnungHauptknoten() == HK_REPR_GEFSZENARIO ) : 429 430 # 431 # -- linker Bereich der Statusleiste -------------------------- 432 # 433 if( self.__dbVerbindung__.ps_gefszenario_id in self.__dbVerbindung__.daten__GefszenId_Wortgruppen__Sprache__Projekt 434 and not ereignis.GetEventObject().istHauptknoten() ) : 435 436 self.__Notizen__.TextCtrlErg__li.nimmWert( self.__dbVerbindung__.daten__GefszenId_Wortgruppen__Sprache__Projekt[self.__dbVerbindung__.ps_gefszenario_id][0][2] ) 437 438 # 439 # -- rechter Bereich der Statusleiste ---------------------------------- 440 # 441 self.TreeCtrlErg__GefszenAnm.wxObjekt.nimmWerteStatusleiste( 442 DBSpNameErlaeuterung = u"Beschreibung des mit dem größten Risiko verbundenen Gefahrenszenarios." 443 , DBSpName = "ps.gefszenario / prj.pp_psgefszenario" ) 444 445 446 # 447 # -- Anmerkungen ---------------------------------------------------------- 448 # 449 else : 450 451 # 452 # -- linker Bereich der Statusleiste -------------------------- 453 # 454 if( self.__dbVerbindung__.ps_gefszenario_id in self.__dbVerbindung__.daten__GefszenId_AnmId__Sprache__Projekt ) : 455 456 for notizen in self.__dbVerbindung__.daten__GefszenId_AnmId__Sprache__Projekt[self.__dbVerbindung__.ps_gefszenario_id] : 457 458 if( notizen[0] == ereignis.GetEventObject().gibDbId() ) : 459 460 self.__Notizen__.TextCtrlErg__li.nimmWert( notizen[3] ) 461 462 # 463 # -- rechter Bereich der Statusleiste ---------------------------------- 464 # 465 self.TreeCtrlErg__GefszenAnm.wxObjekt.nimmWerteStatusleiste( 466 DBSpNameErlaeuterung = u"Anmerkungen / Randbedingungen zum aktuelle Gefahrenszenario." 467 , DBSpName = "ps.anmerkung / prj.pl_psgefanm" ) 468 469 470 471 # 472 # -- Statusleiste aktualisieren ------------------------------------------ 473 # 474 self.TreeCtrlErg__GefszenAnm.wxObjekt.__ereignisStatusleiste__( ereignis = None ) 475 476 477 478 # 479 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 480 # -- ausgewertet werden kann -------------------------- 481 # 482 if( ereignis != None ) : ereignis.Skip( skip = True )
483 484 485 486 487 488 # 489 # ------------------------------------------------------------------------------------ 490 # -- Gefahrenszenario / Repr. Gefahrenszenario bearbeiten ------------------- 491 # ------------------------------------------------------------------------------------ 492 #
493 - def __ereignisUebersezung__( self, ereignis ):
494 """ 495 Übersetzung anzeigen / bearbeiten 496 497 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 498 @type ereignis: C{wx - Ereignisobjekt} 499 """ 500 501 # 502 # -- Gefahrenszenario / Repräsentatives Gefahrenszenario ------------------ 503 # -- ------------------ 504 # -- Hauptknoten gewählt ------------------ 505 # 506 if( ereignis.GetId() == self.TreeCtrlErg__GefszenAnm.wxObjekt.GetId() ) : 507 508 if( ereignis.GetEventObject().istHauptknoten() ) : 509 510 return 511 512 513 514 # 515 # -- Der Status der Benutzeränderung ist irrelevant ---------- 516 # -- (Vorliegende Änderungen werden an den Rückgabewerten von ---------- 517 # -- >BearbeiteUebersetzung(...)< erkannt) ---------- 518 # 519 self.TreeCtrlErg__GefszenAnm.wxObjekt.nimmIstVomBenutzerGeaendert( istVomBenutzerGeaendert = False ) 520 521 522 523 # 524 # -- Aktuelle Werte ---------------------------------------------------------- 525 # 526 listeWerte = [] 527 sprUebvarId = None 528 notizen = None 529 530 531 532 # 533 # -- Gefahrenszenario / Notizen / Repräsentatives Gefahrenszenario ---------- 534 # -- ------------------ 535 # -- [0] prj.pp_psgefszenario.spr_uebvar_id ------------------ 536 # -- [1] prj.pp_psgefszenario.notizen ------------------ 537 # -- [2] prj.pp_psgefszenario.spr_uebvar_id_reprgefszen ------------------ 538 # -- [3] prj.pp_psgefszenario.id ------------------ 539 # 540 # 541 if( self.__dbVerbindung__.ps_gefszenario_id in self.__dbVerbindung__.daten__GefszenId_Wortgruppen__Sprache__Projekt ) : 542 543 listeWerte.append( self.__dbVerbindung__.daten__GefszenId_Wortgruppen__Sprache__Projekt[self.__dbVerbindung__.ps_gefszenario_id][0][0] ) 544 listeWerte.append( self.__dbVerbindung__.daten__GefszenId_Wortgruppen__Sprache__Projekt[self.__dbVerbindung__.ps_gefszenario_id][0][2] ) 545 listeWerte.append( self.__dbVerbindung__.daten__GefszenId_Wortgruppen__Sprache__Projekt[self.__dbVerbindung__.ps_gefszenario_id][0][3] ) 546 listeWerte.append( self.__dbVerbindung__.daten__GefszenId_Wortgruppen__Sprache__Projekt[self.__dbVerbindung__.ps_gefszenario_id][0][5] ) 547 548 else : 549 550 return 551 552 sprUebvarId = listeWerte[0] 553 notizen = listeWerte[1] 554 555 if( ereignis.GetEventObject().gibBezeichnungHauptknoten() == HK_REPR_GEFSZENARIO ) : 556 557 sprUebvarId = listeWerte[2] 558 559 560 561 # 562 # -- Formular zur Bearbeitung der Übersetzungsvariante aufrufen ---------- 563 # 564 dlg = BearbeiteUebersetzung( parent = self 565 , Notizen = self.__Notizen__ 566 , Fortschritt = self.__Fortschritt__ 567 , dbVerbindung = self.__dbVerbindung__ 568 , sprUebvarId = sprUebvarId 569 , notizen_db = None 570 , notizenKontext_db = notizen ) 571 572 573 574 # 575 # -- Dialog aufrufen ---------------------------------------------------------- 576 # 577 dlg.ShowModal() 578 dlg.Destroy() 579 580 581 # 582 # -- Fortschrittsdialog -------------------------------------------------- 583 # -- Delta = 100 / ( 4 ) -------------------------------------------------- 584 # 585 self.__Fortschritt__.nimmDelta( delta = 100 / 4 ) 586 587 588 589 # 590 # -- Änderungen übernehmen -------------------------------------------------- 591 # 592 if( dlg.gibWerte()[0] ) : 593 594 # 595 # -- >spr.uebvar.id< und/oder >notizen< geändert ------------------ 596 # 597 istAenderungId = ( dlg.gibWerte()[1] != sprUebvarId ) 598 istAenderungIdNotizen = ( dlg.gibWerte()[2] != unicode( notizen, 'utf-8' ) ) 599 600 601 602 # 603 # -- Gefahrenszenario / Notizen ---------------------------------- 604 # -- Repräsentatives Gefahrenszenario -------------------------- 605 # 606 # 607 # -- geänderte Werte zusammenstellen und übernehmen ------------------ 608 # 609 if( istAenderungId or istAenderungIdNotizen ) : 610 611 if( ereignis.GetEventObject().gibBezeichnungHauptknoten() == HK_GEFAHRENSZENARIO ) : 612 613 listeWerte[0] = dlg.gibWerte()[1] 614 615 else : 616 617 listeWerte[2] = dlg.gibWerte()[1] 618 619 listeWerte[1] = dlg.gibWerte()[2] 620 621 622 # 623 # -- Datenbank aktualisieren -------------------------- 624 # 625 self.__dbVerbindung__.schreibe__PrjPpPsGefszenario( Fortschritt = self.__Fortschritt__ 626 , listeGefszen = listeWerte ) 627 628 629 # 630 # -- permanente Datenstruktur aktualisieren ------------------ 631 # 632 self.__dbVerbindung__.daten__GefszenId_Wortgruppen__Sprache__Projekt.clear() 633 self.__dbVerbindung__.init__GefszenId_Wortgruppen__Sprache__Projekt( Fortschritt = self.__Fortschritt__ ) 634 635 636 # 637 # -- Änderungen in Gefahrenanalyse übernehmen ------------------ 638 # 639 ereignis.GetEventObject().loescheAlles() 640 641 self.__dbVerbindung__.selektiere__GefszenId_Wortgruppen__Sprache__Projekt( 642 TreeCtrlErg_Gefszenario = self.TreeCtrlErg__GefszenAnm.wxObjekt ) 643 644 psAnmerkungId = None 645 if( self.__dbVerbindung__.ps_gefszenario_id in self.__dbVerbindung__.daten__GefszenId_AnmId__Sprache__Projekt ) : 646 647 psAnmerkungId = zk.gibListeTeilmenge( liste = self.__dbVerbindung__.daten__GefszenId_AnmId__Sprache__Projekt[self.__dbVerbindung__.ps_gefszenario_id] ) 648 649 self.__dbVerbindung__.selektiere__GefszenId_AnmId__Sprache__Projekt( 650 TreeCtrlErg_ListBoxErg = ereignis.GetEventObject() 651 , psAnmerkungId = psAnmerkungId ) 652 653 654 # 655 # -- Fortschrittsdialog schließen ------------------------------------------ 656 # 657 self.__Fortschritt__.loescheFortschritt()
658 659 660 661 662 # 663 # ------------------------------------------------------------------------------------ 664 # -- Auswahlfelder initialisieren ------------------------------------------ 665 # ------------------------------------------------------------------------------------ 666 #
667 - def init_Gefahrenanalyse( self ):
668 """ 669 Methode die aufgerufen wird, wenn Projekt oder Sprache geändert wurden. 670 """ 671 672 # 673 # -- Im Gefahrennetz alle Strukturpunkte eintragen -------------------------- 674 # 675 for strkt in self.__dbVerbindung__.daten__strStrkt__Sprache__Projekt : 676 677 # 678 # -- Gefahrennetz filtern ------------------------------------------ 679 # 680 if( strkt[5] != self.__dbVerbindung__.konstante__str_name_id__gefahrennetz ) : 681 682 continue 683 684 # 685 # -- Keine Dopplungen ------------------------------------------ 686 # 687 if( strkt[1] in self.ListBoxAL__GefNetz.ListBox__re.gibDbIdListe() ) : 688 689 continue 690 691 # 692 # -- Werte übernehmen ------------------------------------------ 693 # 694 self.ListBoxAL__GefNetz.ListBox__re.nimmWert( wert = str( strkt[0] ), dbId = strkt[1] ) 695 696 697 698 699 # 700 # -- Alle Abkürzungen eintragen ------------------------------------------ 701 # 702 self.__dbVerbindung__.selektiere__psAbk__Sprache__Projekt( 703 ComboBoxErg_ListBoxErgSpWTitelAL = self.ListBoxAL__GefPersonen 704 , psAbkTyp = "GP" )
705 706 707 708 709 710 711 # 712 # ------------------------------------------------------------------------------------ 713 # -- Datenbank auslesen -------------------------------------------------- 714 # ------------------------------------------------------------------------------------ 715 #
716 - def liesDB( self ):
717 """ 718 Methode die aufgerufen wird, wenn die Datenbankwerte im Fenster dargestellt werden sollen. 719 """ 720 721 # 722 # -------------------------------------------------------------------------------- 723 # -- Gefahrenszenario-Id ist nicht vorhanden -------------------------- 724 # -- -> alles löschen -------------------------- 725 # -------------------------------------------------------------------------------- 726 # 727 self.ListBoxAL__GefNetz.schiebeAlleRechts() 728 self.ListBoxAL__GefPersonen.schiebeAlleRechts() 729 730 self.TreeCtrlErg__GefszenAnm.wxObjekt.loescheAlles() 731 732 733 734 # 735 # -------------------------------------------------------------------------------- 736 # -- Gefahrenszenario darstellen ------------------------------------------ 737 # -------------------------------------------------------------------------------- 738 # 739 # 740 # -- Gefahrenszenario auslesen (>prj.zeige__psgefszenario<) ------------------ 741 # 742 self.__dbVerbindung__.selektiere__GefszenId_Wortgruppen__Sprache__Projekt( 743 TreeCtrlErg_Gefszenario = self.TreeCtrlErg__GefszenAnm.wxObjekt ) 744 745 746 # 747 # -------------------------------------------------------------------------------- 748 # -- Enthalten im Gefahrennetz (>prj.zeige__psgefstrkt<) ------------------ 749 # -------------------------------------------------------------------------------- 750 # 751 # -- >self.ListBoxAL__GefNetz = str_strkt_id< 752 # 753 if( self.__dbVerbindung__.ps_gefszenario_id in self.__dbVerbindung__.daten__GefszenId_StruktId__Projekt ) : 754 755 for i in self.__dbVerbindung__.daten__GefszenId_StruktId__Projekt[self.__dbVerbindung__.ps_gefszenario_id] : 756 757 self.ListBoxAL__GefNetz.schiebeLinks( i[0] ) 758 759 760 761 # 762 # -- Anmerkungen zum Gefahrenszenario / Interne Notizen zu den Anmerkungen 763 # 764 # -- >self.TreeCtrlErg__GefszenAnm = ps_gefanm_id< 765 # 766 psAnmerkungId = None 767 if( self.__dbVerbindung__.ps_gefszenario_id in self.__dbVerbindung__.daten__GefszenId_AnmId__Sprache__Projekt ) : 768 769 psAnmerkungId = zk.gibListeTeilmenge( liste = self.__dbVerbindung__.daten__GefszenId_AnmId__Sprache__Projekt[self.__dbVerbindung__.ps_gefszenario_id] ) 770 771 self.__dbVerbindung__.selektiere__GefszenId_AnmId__Sprache__Projekt( 772 TreeCtrlErg_ListBoxErg = self.TreeCtrlErg__GefszenAnm.wxObjekt 773 , psAnmerkungId = psAnmerkungId ) 774 775 self.TreeCtrlErg__GefszenAnm.wxObjekt.ExpandAll() 776 777 778 779 # 780 # -- Gefährdete Personen ------------------------------------------ 781 # 782 self.__dbVerbindung__.selektiere__GefszenId_AbkId__Sprache__Projekt( 783 ComboBoxErg_ListBoxErgSpWTitelAL = self.ListBoxAL__GefPersonen 784 , ListBoxErg = None 785 , psAbkTyp = 'GP' )
786 787 788 789 790 791 792 793 # 794 # ------------------------------------------------------------------------------------ 795 # -- Datenbank schreiben -------------------------------------------------- 796 # ------------------------------------------------------------------------------------ 797 #
798 - def schreibDB( self ):
799 """ 800 Methode die aufgerufen wird, um den Wert der Gefährdeten Personen, Häufigkeit, Gefahrenstufe, Risikostufe in die Datenbank zu schreiben. 801 """ 802 803 # 804 # -- Fortschrittsdialog -------------------------------------------------- 805 # -- Delta = 100 / ( 5 ) -------------------------------------------------- 806 # 807 self.__Fortschritt__.nimmDelta( delta = 100 / 5 ) 808 809 810 811 # 812 # -------------------------------------------------------------------------------- 813 # -- Gefahrennetz ---------------------------------------------------------- 814 # -------------------------------------------------------------------------------- 815 # 816 if( self.ListBoxAL__GefNetz.ListBox__li.gibIstVomBenutzerGeaendert() ) : 817 818 # 819 # -- Strukturpunkt wurde entfernt ---------------------------------- 820 # 821 dbIdListe = self.ListBoxAL__GefNetz.ListBox__re.gibDbIdListe() 822 for i in range( len( dbIdListe ) ) : 823 824 if( allg.hatWert__List( 825 liste = self.__dbVerbindung__.daten__GefszenId_StruktId__Projekt[self.__dbVerbindung__.ps_gefszenario_id] 826 , pos = 0 827 , wert = dbIdListe[i] ) ) : 828 829 self.__dbVerbindung__.schreibe__PrjPlPsGefStrkt( 830 Fortschritt = self.__Fortschritt__ 831 , listeWerte = [ 832 # 833 # -- str_strkt_id --------------- 834 # 835 dbIdListe[i] 836 # 837 # -- notizen -------------------- 838 # 839 , zk.gibZk( '' ) ] 840 # 841 # -- logentfernt -- 842 # 843 , logentfernt = 'true' ) 844 845 846 # 847 # -- Strukturpunkt wurde hinzugefügt ---------------------------------- 848 # 849 dbIdListeLi = self.ListBoxAL__GefNetz.ListBox__li.gibDbIdListe() 850 for i in range( len( dbIdListeLi ) ) : 851 852 # 853 # -- bereits zugeordnete >str.strkt.id< überspringen ---------- 854 # 855 if( allg.hatWert__List( 856 liste = self.__dbVerbindung__.daten__GefszenId_StruktId__Projekt[self.__dbVerbindung__.ps_gefszenario_id] 857 , pos = 0 858 , wert = dbIdListeLi[i] ) ) : 859 860 continue 861 862 self.__dbVerbindung__.schreibe__PrjPlPsGefStrkt( Fortschritt = self.__Fortschritt__ 863 , listeWerte = [ # 864 # -- str_strkt_id --------------- 865 # 866 dbIdListeLi[i] 867 # 868 # -- notizen -------------------- 869 # 870 , zk.gibZk( '' ) ] ) 871 872 873 # 874 # -- permanente Datenstruktur aktualisieren ------------------ 875 # 876 self.__dbVerbindung__.daten__GefszenId_StruktId__Projekt.clear() 877 self.__dbVerbindung__.init__GefszenId_StruktId__Projekt( Fortschritt = self.__Fortschritt__ ) 878 879 880 881 # 882 # -------------------------------------------------------------------------------- 883 # -- Gefährdete Personen ------------------------------------------ 884 # -------------------------------------------------------------------------------- 885 # 886 if( self.ListBoxAL__GefPersonen.ListBox__li.gibIstVomBenutzerGeaendert() ) : 887 888 # 889 # -- Gefährdete Person wurde entfernt -------------------------- 890 # 891 dbIdListe = self.ListBoxAL__GefPersonen.ListBox__re.gibDbIdListe() 892 893 for i in range( len( dbIdListe ) ) : 894 895 if( allg.hatWert__List( 896 liste = self.__dbVerbindung__.daten__GefszenId_AbkId_gp__Sprache__Projekt[self.__dbVerbindung__.ps_gefszenario_id] 897 , pos = 0 898 , wert = dbIdListe[i] ) ) : 899 900 self.__dbVerbindung__.schreibe__prjPlPsGefAbk( 901 Fortschritt = self.__Fortschritt__ 902 , listeWerte = [# 903 # -- ps_abk_id --------------------- 904 # 905 dbIdListe[i] 906 # 907 # -- spr_uebvar_id_zus ------------- 908 # 909 , '0' 910 # 911 # -- notizen ----------------------- 912 # 913 , zk.gibZk( '' ) ] 914 # 915 # -- logentfernt ---------- 916 # 917 , logentfernt = 'true' ) 918 919 # 920 # -- Gefährdete Person wurde hinzugefügt -------------------------- 921 # 922 dbIdListeLi = self.ListBoxAL__GefPersonen.ListBox__li.gibDbIdListe() 923 for i in range( len( dbIdListeLi ) ) : 924 925 # 926 # -- bereits zugeordnete >ps.abk.id< überspringen ---------- 927 # 928 if( allg.hatWert__List( 929 liste = self.__dbVerbindung__.daten__GefszenId_AbkId_gp__Sprache__Projekt[self.__dbVerbindung__.ps_gefszenario_id] 930 , pos = 0 931 , wert = dbIdListeLi[i] ) ) : 932 933 continue 934 935 self.__dbVerbindung__.schreibe__prjPlPsGefAbk( Fortschritt = self.__Fortschritt__ 936 , listeWerte = [ 937 # 938 # -- ps_abk_id --------------------- 939 # 940 dbIdListeLi[i] 941 # 942 # -- spr_uebvar_id_zus ------------- 943 # 944 , '0' 945 # 946 # -- notizen ----------------------- 947 # 948 , zk.gibZk( '' ) ] ) 949 950 951 # 952 # -- permanente Datenstruktur aktualisieren -------------------------- 953 # 954 self.__dbVerbindung__.daten__GefszenId_AbkId_gp__Sprache__Projekt.clear() 955 self.__dbVerbindung__.init__GefszenId_AbkId__Sprache__Projekt( Fortschritt = self.__Fortschritt__ ) 956 957 958 # 959 # -- Fortschrittsdialog schließen ------------------------------------------ 960 # 961 self.__Fortschritt__.loescheFortschritt() 962 963 964 965 # 966 # -- hier ausgewertete Benutzeränderungen zurücksetzen ------------------ 967 # 968 self.ListBoxAL__GefPersonen.ListBox__li.nimmIstVomBenutzerGeaendert( istVomBenutzerGeaendert = False ) 969 self.ListBoxAL__GefNetz.ListBox__li.nimmIstVomBenutzerGeaendert( istVomBenutzerGeaendert = False )
970