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

Source Code for Module gefahrenprotokoll

  1  # -*- coding: utf-8 -*- 
  2  # 
  3  # 
  4  #    filename:  gefahrenprotokoll.py 
  5  # 
  6  #    version:   see wxvf.py 
  7  # 
  8  # 
  9  # ---------------------------------------------------------------------------------------- 
 10  # 
 11  # 
 12  #    Copyright (C) 2010  Michael Bellair 
 13  # 
 14  #    This file is part of wxvf. 
 15  # 
 16  #    wxvf is free software: you can redistribute it and/or modify 
 17  #    it under the terms of the GNU General Public License as published by 
 18  #    the Free Software Foundation, either version 3 of the License, or 
 19  #    (at your option) any later version. 
 20  # 
 21  #    wxvf is distributed in the hope that it will be useful, 
 22  #    but WITHOUT ANY WARRANTY; without even the implied warranty of 
 23  #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 24  #    GNU General Public License for more details. 
 25  # 
 26  #    You should have received a copy of the GNU General Public License 
 27  #    along with wxvf.  If not, see <http://www.gnu.org/licenses/>. 
 28  # 
 29  #    Michael Bellair 
 30  #    Sportplatzstrasse 11 
 31  #    01259 Dresden 
 32  # 
 33  #    E-Mail:    bellair@freenet.de 
 34  #    homepage:  http://freenet-homepage.de/bellair/vf/index.html 
 35  # 
 36  # 
 37  # ---------------------------------------------------------------------------------------- 
 38  # 
 39  import wx 
 40   
 41  from bearbeitesicherheitsanf import BearbeiteSicherheitsanf     # Eingabeformular für PSAnf 
 42   
 43  from bearbeiteuebersetzung import BearbeiteUebersetzungNeu      # Eingabeformular für Übersetzungen 
 44   
 45  from wxuniversal import CheckBoxErg             # wx.CheckBox mit Ergänzungen 
 46  from wxuniversal import ComboBoxErg             # wx.ComboBox mit Ergänzungen 
 47  from wxuniversal import farbeBearbeiten                 # Farbe der Objekte, die  bearbeitet werden können 
 48  from wxuniversal import FlexGridSizerWxObjTitel # wxObjekt mit Titel 
 49  from wxuniversal import ListBoxSpWTitel         # ListBox im SplitterWindow mit Titel 
 50  from wxuniversal import ListBoxSpWTitelAL       # ListBox im SplitterWindow m. Titel+AW-Liste 
 51  from wxuniversal import MaskedTextCtrlErg       # wx.MaskedTextCtrl mit Ergänzungen 
 52  from wxuniversal import SiAnfStrktDok                   # Eingabeformular für Sicherheitsanforderungen 
 53  from wxuniversal import TextCtrlSpWTitel        # TextCtrl im SplitterWindow mit Titel 
 54  from wxuniversal import TreeCtrlErg             # TreeCtrl mit Ergänzungen 
 55   
 56   
 57  # 
 58  # 
 59  # 
 60  # ---------------------------------------------------------------------------------------- 
 61  # ---------------------------------------------------------------------------------------- 
 62  # --                                    -------------------------------------------------- 
 63  # --    Offene Punkte / Aufgaben        -------------------------------------------------- 
 64  # --                                    -------------------------------------------------- 
 65  # ---------------------------------------------------------------------------------------- 
 66  # ---------------------------------------------------------------------------------------- 
 67  # 
 68  #  
 69  #       -- siehe TODO 'bearbeitesicherheitsanf.py' -- 
 70  # 
 71  # 
 72  # ---------------------------------------------------------------------------------------- 
 73  # 
 74   
 75   
 76   
 77  # 
 78  # 
 79  # 
 80  # ---------------------------------------------------------------------------------------- 
 81  # ---------------------------------------------------------------------------------------- 
 82  # --                                            ------------------------------------------ 
 83  # --    Eingabeformular 'Gefahrenprotokoll'     ------------------------------------------ 
 84  # --                                            ------------------------------------------ 
 85  # ---------------------------------------------------------------------------------------- 
 86  # ---------------------------------------------------------------------------------------- 
 87  # 
88 -class Gefahrenprotokoll( wx.ScrolledWindow ):
89 """ 90 Klasse zur Abbildung des Eingabeformulars 'Gefahrenprotokoll'. ACHTUNG ! im Normalfall soll ein Protokolleintrag angelegt und nicht wieder verändert (modifiziert / gelöscht) werden. Die Modifikation / das Löschen eines Protokolleintrages muß auf Ausnahmen beschränkt werden werden (Korrektur von Rechtschreibfehlern). 91 92 @keyword parent: Es ist der Datenbankbenutzername zu übergeben. 93 @type parent: Zeichenkette 94 @keyword id: Es ist das Kennwort des Datenbankbenutzers zu übergeben. 95 @type id: Zeichenkette 96 @keyword size: Es ist die IP-Adresse anzugeben, über die der PostgreSQL-Datenbankserver ansprechbar ist. 97 @type size: Zeichenkette 98 99 @raise Fehler: ?? Fehlermeldung und Programmende, wenn die Datenbankverbindung nicht hergestellt werden kann. ?? 100 """ 101 102 # 103 # ------------------------------------------------------------------------------------ 104 # -- Eingabeformular initialisieren ---------------------------------- 105 # ------------------------------------------------------------------------------------ 106 #
107 - def __init__(self, parent, Statusleiste, dbVerbindung, prjProjekteId, sprSprachenId, psGefszenarioId, id = -1, size = wx.DefaultSize):
108 wx.ScrolledWindow.__init__( self, parent, id, (0, 0), size=size ) 109 110 111 # 112 # -- Vorgabewerte für ScrolledWindow ------------------------------------------ 113 # 114 self.SetScrollRate( 20, 20 ) 115 self.EnableScrolling( True, True ) 116 117 118 # 119 # -- Statusleiste übernehmen -------------------------------------------------- 120 # 121 self.Statusleiste = Statusleiste 122 123 124 # 125 # -- Datenbankwerte übernehmen (im Konstruktor werden sie nur zum Füllen der 126 # -- Auswahllisten benötigt ) 127 # 128 self.dbVerbindung = dbVerbindung 129 self.prjProjekteId = prjProjekteId 130 self.sprSprachenId = sprSprachenId 131 self.psGefszenarioId = psGefszenarioId 132 self.protokollId = 0 133 134 135 136 137 138 139 # 140 # -- Sicherheitsanforderungen ------------------------------------------ 141 # -- Objekt-Id = -255 / -256 ------------------------------------------ 142 # 143 self.TreeCtrlErg__SiAnf = FlexGridSizerWxObjTitel( parent = self 144 , wxObj = TreeCtrlErg( self 145 , Statusleiste = self.Statusleiste 146 , dbVerbindung = self.dbVerbindung ) 147 , titel = "Sicherheitsanforderungen:" 148 , orient = wx.VERTICAL ) 149 150 self.TreeCtrlErg__SiAnf.wxObjekt.SetMinSize( ( -1, 200 ) ) 151 152 self.TreeCtrlErg__SiAnf.wxObjekt.statusLeisteDBSpNameErlaeuterung = """Technisch/Organisatorische Maßnahmen zur Risikominderung.""" 153 154 self.TreeCtrlErg__SiAnf.wxObjekt.SetBackgroundColour( farbeBearbeiten ) 155 156 self.TreeCtrlErg__SiAnf.wxObjekt.SetToolTip( wx.ToolTip( """Doppelklick:\tSicherheitsanforderungen bearbeiten""" ) ) 157 158 self.Bind( wx.EVT_TREE_SEL_CHANGED 159 , self.__ereignisSiAnfNavigation__ 160 , self.TreeCtrlErg__SiAnf.wxObjekt ) 161 162 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 163 , self.__ereignisBearbeiteSiAnf__ 164 , self.TreeCtrlErg__SiAnf.wxObjekt ) 165 166 167 # 168 # -- Zugeordnete Strukturpunkte, Dokumente / ------------------ 169 # -- Interne Notizen zu den Strukturpunkten, Dokumenten ------------------ 170 # -- Objekt-Id = - ------------------ 171 # 172 self.SiAnfStrktDok__Zugeordnet = SiAnfStrktDok( parent = self 173 , varId = 2 174 , Statusleiste = self.Statusleiste 175 , dbVerbindung = self.dbVerbindung 176 , prjProjekteId = self.prjProjekteId 177 , sprSprachenId = self.sprSprachenId 178 , psGefszenarioId = self.psGefszenarioId ) 179 180 self.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.SetBackgroundColour( self.GetBackgroundColour() ) 181 182 self.SiAnfStrktDok__Zugeordnet.SetMinSize( ( -1, 200 ) ) 183 184 185 186 # 187 # -- Protokolleintrag / Interne Notizen zum Protokolleintrag ---------- 188 # -- Objekt-Id = -299 ---------- 189 # 190 self.TreeCtrlErg__GefProtId = FlexGridSizerWxObjTitel( parent = self 191 , wxObj = TreeCtrlErg( self 192 , Statusleiste = self.Statusleiste 193 , dbVerbindung = self.dbVerbindung ) 194 , titel = "Protokolleintrag / Interne Notizen zum Protokolleintrag:" 195 , orient = wx.VERTICAL ) 196 197 self.TreeCtrlErg__GefProtId.wxObjekt.statusLeisteDBSpNameErlaeuterung = """Relevante Aufzeichnungen (Notizen, Aufgabenstellungen, Vereinbarungen, ...) zum aktuellen Gefahrenszenario und/oder Sicherheitsanforderung.""" 198 199 self.TreeCtrlErg__GefProtId.wxObjekt.SetBackgroundColour( farbeBearbeiten ) 200 201 self.TreeCtrlErg__GefProtId.wxObjekt.SetMinSize( ( -1, 250 ) ) 202 203 self.TreeCtrlErg__GefProtId.wxObjekt.SetToolTip( wx.ToolTip( """Doppelklick:\tProtokolleintrag bearbeiten""" ) ) 204 205 self.Bind( wx.EVT_TREE_SEL_CHANGED 206 , self.__ereignisNavigation__ 207 , self.TreeCtrlErg__GefProtId.wxObjekt ) 208 209 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 210 , self.__ereignisBearbeiteGefProt__ 211 , self.TreeCtrlErg__GefProtId.wxObjekt ) 212 213 214 # 215 # -- Intern -------------------------------------------------- 216 # -- Objekt-Id = -301 -------------------------------------------------- 217 # 218 self.CheckBox__Intern = FlexGridSizerWxObjTitel( parent = self 219 , wxObj = CheckBoxErg( self 220 , Statusleiste = self.Statusleiste 221 , dbVerbindung = self.dbVerbindung ) 222 , titel = "Intern:" 223 , orient = wx.VERTICAL ) 224 225 self.CheckBox__Intern.wxObjekt.statusLeisteDBSpNameErlaeuterung = """Der Gefahrenprotokolleintrag wird intern verwendet.""" 226 227 228 229 # 230 # -- Typ des Protokolleintrages ------------------------------------------ 231 # -- Objekt-Id = -305 ------------------------------------------ 232 # 233 self.ComboBox__TypPE = FlexGridSizerWxObjTitel( parent = self 234 , wxObj = ComboBoxErg( self 235 , choices = [] 236 , style = wx.CB_DROPDOWN|wx.CB_READONLY 237 , Statusleiste = self.Statusleiste 238 , dbVerbindung = self.dbVerbindung ) 239 , titel = "Typ des Protokolleintrages:" 240 , orient = wx.VERTICAL ) 241 242 self.ComboBox__TypPE.wxObjekt.statusLeisteDBSpNameErlaeuterung = """Welcher Typ des Gefahrenprotokolleintrages liegt vor ?""" 243 244 self.dbVerbindung.init_prtTyp( self.ComboBox__TypPE.wxObjekt 245 , self.sprSprachenId 246 , "PE" ) 247 self.ComboBox__TypPE.Enable( False ) 248 249 self.ComboBox__TypPE.wxObjekt.Bind( wx.EVT_COMBOBOX, self.__ereignisAntwort__ ) 250 251 252 253 # 254 # -- Beteiligte Personen -------------------------------------------------- 255 # -- Objekt-Id = -310 -------------------------------------------------- 256 # 257 self.ListBoxAL__BetPers = ListBoxSpWTitelAL( parent = self 258 , titel = "Beteiligte Personen:" 259 , minSize = ( -1, 150 ) 260 , orient = wx.VERTICAL 261 , Statusleiste = self.Statusleiste 262 , dbVerbindung = self.dbVerbindung ) 263 264 self.ListBoxAL__BetPers.ListBox__li.statusLeisteDBSpNameErlaeuterung = """Welche Personen waren an der Entstehung des Gefahrenprotokolleintrages beteiligt ?""" 265 self.ListBoxAL__BetPers.ListBox__re.statusLeisteDBSpNameErlaeuterung = self.ListBoxAL__BetPers.ListBox__li.statusLeisteDBSpNameErlaeuterung 266 267 self.ListBoxAL__BetPers.SplitterWindow.SetSashPosition( 250 ) 268 269 self.dbVerbindung.init_prjPersonen( self.ListBoxAL__BetPers.ListBox__re ) 270 271 272 273 274 # 275 # -- Erledigt -------------------------------------------------- 276 # -- Objekt-Id = -303 -------------------------------------------------- 277 # 278 self.CheckBox__Erledigt = FlexGridSizerWxObjTitel( parent = self 279 , wxObj = CheckBoxErg( self 280 , Statusleiste = self.Statusleiste 281 , dbVerbindung = self.dbVerbindung ) 282 , titel = "Erledigt:" 283 , orient = wx.VERTICAL ) 284 285 self.CheckBox__Erledigt.wxObjekt.statusLeisteDBSpNameErlaeuterung = """Sind die die Aufgabe(n) zufriedenstellend gelöst ?""" 286 287 # 288 # -- Datum des Protokolleintrages ------------------------------------------ 289 # -- Objekt-Id = -307 ------------------------------------------ 290 # 291 self.Ctrl__DatumPE = FlexGridSizerWxObjTitel( parent = self 292 , wxObj = MaskedTextCtrlErg( parent = self 293 , validRequired = True 294 , autoformat = "EUDATEDDMMYYYY." 295 , Statusleiste = self.Statusleiste 296 , dbVerbindung = self.dbVerbindung ) 297 , titel = "Datum des Protokolleintrages:" 298 , orient = wx.VERTICAL ) 299 self.Ctrl__DatumPE.wxObjekt.SetMaxSize( ( 85, -1 ) ) 300 301 self.Ctrl__DatumPE.wxObjekt.statusLeisteDBSpNameErlaeuterung = """Wann wurde der Gefahrenprotokolleintrag vorgenommen ?""" 302 303 304 305 # 306 # -- Termin -------------------------------------------------- 307 # -- Objekt-Id = -323 -------------------------------------------------- 308 # 309 self.Ctrl__Termin = FlexGridSizerWxObjTitel( parent = self 310 , wxObj = MaskedTextCtrlErg( parent = self 311 , validRequired = True 312 , autoformat = "EUDATEDDMMYYYY." 313 , Statusleiste = self.Statusleiste 314 , dbVerbindung = self.dbVerbindung ) 315 , titel = "Termin:" 316 , orient = wx.VERTICAL ) 317 self.Ctrl__Termin.wxObjekt.SetMaxSize( ( 85, -1 ) ) 318 self.Ctrl__Termin.Enable( False ) 319 320 self.Ctrl__Termin.wxObjekt.statusLeisteDBSpNameErlaeuterung = """Wann soll(en) die Aufgabe(n) gelöst sein ?""" 321 322 323 324 325 # 326 # -- Bitte um Antwort versendet am ... ---------------------------------- 327 # -- Objekt-Id = -321 ---------------------------------- 328 # 329 self.Ctrl__AntwDatum = FlexGridSizerWxObjTitel( parent = self 330 , wxObj = MaskedTextCtrlErg( parent = self 331 , validRequired = True 332 , autoformat = "EUDATEDDMMYYYY." 333 , Statusleiste = self.Statusleiste 334 , dbVerbindung = self.dbVerbindung ) 335 , titel = "Bitte um Antwort versendet am:" 336 , orient = wx.VERTICAL ) 337 self.Ctrl__AntwDatum.wxObjekt.SetMaxSize( ( 85, -1 ) ) 338 self.Ctrl__AntwDatum.Enable( False ) 339 340 self.Ctrl__AntwDatum.wxObjekt.statusLeisteDBSpNameErlaeuterung = """Wann wurde(n) die Aufgabe(n) gestellt / versendet ?""" 341 342 343 344 # 345 # -- Bitte um Antwort an ... ------------------------------------------ 346 # -- Objekt-Id = -326 ------------------------------------------ 347 # 348 self.ListBoxAL__AntwPers = ListBoxSpWTitelAL( parent = self 349 , titel = "Bitte um Antwort an:" 350 , minSize = ( -1, 150 ) 351 , orient = wx.VERTICAL 352 , Statusleiste = self.Statusleiste 353 , dbVerbindung = self.dbVerbindung ) 354 self.ListBoxAL__AntwPers.SplitterWindow.SetSashPosition( 300 ) 355 self.ListBoxAL__AntwPers.Enable( False ) 356 357 # Es muß mindestens eine Person ausgewählt sein ! 358 self.ListBoxAL__AntwPers.ListBoxLiDarfLeerSein = False 359 360 self.ListBoxAL__AntwPers.ListBox__li.statusLeisteDBSpNameErlaeuterung = """Wem wurde(n) die Aufgabe(n) gestellt ?""" 361 self.ListBoxAL__AntwPers.ListBox__re.statusLeisteDBSpNameErlaeuterung = self.ListBoxAL__AntwPers.ListBox__li.statusLeisteDBSpNameErlaeuterung 362 363 self.dbVerbindung.init_prjPersonen( self.ListBoxAL__AntwPers.ListBox__re ) 364 365 366 367 # 368 # -------------------------------------------------------------------------------- 369 # -- Layout setzen ---------------------------------------------------------- 370 # -------------------------------------------------------------------------------- 371 # 372 GridBagSizer = wx.GridBagSizer( vgap = 10, hgap = 10 ) 373 374 GridBagSizer.AddGrowableCol( idx = 2, proportion = 1 ) 375 376 GridBagSizer.AddGrowableRow( idx = 0, proportion = 2 ) 377 GridBagSizer.AddGrowableRow( idx = 3, proportion = 1 ) 378 GridBagSizer.AddGrowableRow( idx = 5, proportion = 1 ) 379 GridBagSizer.AddGrowableRow( idx = 6, proportion = 1 ) 380 GridBagSizer.AddGrowableRow( idx = 7, proportion = 1 ) 381 382 383 # 384 # -- 0.) ------------------------------------------------------------------ 385 # 386 GridBagSizer.Add( self.TreeCtrlErg__GefProtId 387 , pos = wx.GBPosition( row = 0, col = 0 ) 388 , span = wx.GBSpan( rowspan = 1, colspan = 3 ) 389 , flag = wx.LEFT|wx.TOP|wx.RIGHT|wx.EXPAND 390 , border = 10 ) 391 392 393 # 394 # -- 1.) ------------------------------------------------------------------ 395 # 396 GridBagSizer.Add( self.CheckBox__Intern 397 , pos = wx.GBPosition( row = 1, col = 0 ) 398 , flag = wx.LEFT|wx.EXPAND 399 , border = 10 ) 400 401 GridBagSizer.Add( self.ComboBox__TypPE 402 , pos = wx.GBPosition( row = 1, col = 1 ) 403 , flag = wx.EXPAND ) 404 405 GridBagSizer.Add( self.ListBoxAL__BetPers 406 , pos = wx.GBPosition( row = 1, col = 2 ) 407 , span = wx.GBSpan( rowspan = 3, colspan = 1 ) 408 , flag = wx.RIGHT|wx.EXPAND 409 , border = 10 ) 410 411 412 # 413 # -- 2.) ------------------------------------------------------------------ 414 # 415 GridBagSizer.Add( self.CheckBox__Erledigt 416 , pos = wx.GBPosition( row = 2, col = 0 ) 417 , flag = wx.LEFT|wx.EXPAND 418 , border = 10 ) 419 420 GridBagSizer.Add( self.Ctrl__DatumPE 421 , pos = wx.GBPosition( row = 2, col = 1 ) 422 , flag = wx.EXPAND ) 423 424 425 # 426 # -- 3.) ------------------------------------------------------------------ 427 # 428 # Notlösung ! 429 # Ich habe den Umgang mit >wx.AddStretchSpacer< nicht verstanden 430 GridBagSizer.Add( wx.StaticText( self ) 431 , pos = wx.GBPosition( row = 3, col = 0 ) 432 , span = wx.GBSpan( rowspan = 1, colspan = 2 ) 433 , flag = wx.EXPAND ) 434 435 436 # 437 # -- 4.) ------------------------------------------------------------------ 438 # 439 GridBagSizer.Add( self.Ctrl__Termin 440 , wx.GBPosition( row = 4, col = 0 ) 441 , flag = wx.LEFT|wx.EXPAND 442 , border = 10 ) 443 444 GridBagSizer.Add( self.Ctrl__AntwDatum 445 , wx.GBPosition( row = 4, col = 1 ) 446 , flag = wx.EXPAND ) 447 448 GridBagSizer.Add( self.ListBoxAL__AntwPers 449 , pos = wx.GBPosition( row = 4, col = 2 ) 450 , span = wx.GBSpan( rowspan = 2, colspan = 1 ) 451 , flag = wx.RIGHT|wx.EXPAND 452 , border = 10 ) 453 454 455 # 456 # -- 5.) ------------------------------------------------------------------ 457 # 458 # Notlösung ! 459 # Ich habe den Umgang mit >wx.AddStretchSpacer< nicht verstanden 460 GridBagSizer.Add( wx.StaticText( self ) 461 , pos = wx.GBPosition( row = 5, col = 0 ) 462 , span = wx.GBSpan( rowspan = 1, colspan = 2 ) 463 , flag = wx.EXPAND ) 464 465 466 # 467 # -- 6.) ------------------------------------------------------------------ 468 # 469 GridBagSizer.Add( self.TreeCtrlErg__SiAnf 470 , pos = wx.GBPosition( row = 6, col = 0 ) 471 , span = wx.GBSpan( rowspan = 1, colspan = 3 ) 472 , flag = wx.LEFT|wx.RIGHT|wx.EXPAND 473 , border = 10 ) 474 475 476 # 477 # -- 7.) ------------------------------------------------------------------ 478 # 479 GridBagSizer.Add( self.SiAnfStrktDok__Zugeordnet 480 , pos = wx.GBPosition( row = 7, col = 0 ) 481 , span = wx.GBSpan( rowspan = 1, colspan = 3 ) 482 , flag = wx.LEFT|wx.BOTTOM|wx.RIGHT|wx.EXPAND 483 , border = 10 ) 484 485 486 # 487 # -- in das Fenster einpassen ------------------------------------------ 488 # 489 self.SetSizerAndFit( GridBagSizer )
490 491 492 493 494 # 495 # ------------------------------------------------------------------------------------ 496 # -- 'Bitte um Antwort' (de)aktivieren ---------------------------------- 497 # ------------------------------------------------------------------------------------ 498 #
499 - def __ereignisAntwort__( self, ereignisDummy = None ):
500 """ 501 Methode die aufgerufen wird, um den Bereich 'Bitte um Antwort ...' einzublenden, wenn eine Frage gestellt wurde. 502 503 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 504 @type ereignisDummy: C{wx - Ereignisobjekt} 505 """ 506 507 # 508 # -- Anhand >prt.typ.id< wird die Frage erkannt -------------------------- 509 # 510 # 1 | 01: Frage 511 # 512 if self.ComboBox__TypPE.wxObjekt.gibClientData() == 1 : 513 # 514 # -- Felder einblenden ------------------------------------------ 515 # 516 self.Ctrl__AntwDatum.Enable( True ) 517 self.Ctrl__Termin.Enable( True ) 518 self.ListBoxAL__AntwPers.Enable( True ) 519 520 else : 521 # 522 # -- Felder ausblenden ------------------------------------------ 523 # 524 self.Ctrl__AntwDatum.Enable( False ) 525 self.Ctrl__Termin.Enable( False ) 526 self.ListBoxAL__AntwPers.Enable( False ) 527 528 529 # 530 # -- Das Ereignis weiterreichen, damit es weiter ausgewertet werden ---------- 531 # -- kann (wird z.B. von >ListBoxSpWTitelAL< benötigt) ---------- 532 # 533 if ereignisDummy != None : ereignisDummy.Skip( skip = True )
534 535 536 537 538 # 539 # ------------------------------------------------------------------------------------ 540 # -- Sicherheitsanforderungen bearbeiten ---------------------------------- 541 # ------------------------------------------------------------------------------------ 542 #
543 - def __ereignisBearbeiteSiAnf__( self, ereignis ):
544 """ 545 Sicherheitsaforderungen zum Gefahrenszenario bearbeiten. 546 547 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 548 @type ereignis: C{wx - Ereignisobjekt} 549 """ 550 551 552 # 553 # -- Meldung ausgeben -------------------------------------------------- 554 # 555 dlg = BearbeiteSicherheitsanf( parent = self 556 , Statusleiste = self.Statusleiste 557 , dbVerbindung = self.dbVerbindung 558 , prjProjekteId = self.prjProjekteId 559 , sprSprachenId = self.sprSprachenId 560 , psGefszenarioId = self.psGefszenarioId ) 561 562 # 563 # -- Dialog aufrufen ---------------------------------------------------------- 564 # 565 dlg.SetMinSize( ( 800, 700 ) ) 566 dlg.ShowModal() 567 dlg.Destroy() 568 569 570 571 # 572 # -- Sicherheitsanforderungen aktualisieren ---------------------------------- 573 # 574 self.dbVerbindung.selektiere__psPrtProtokoll( TreeCtrlErg = self.TreeCtrlErg__SiAnf.wxObjekt 575 , prjProjekteId = self.prjProjekteId 576 , sprSprachenId = self.sprSprachenId 577 , psGefszenarioId = self.psGefszenarioId 578 , prtTypId = None )
579 580 581 582 # 583 # ------------------------------------------------------------------------------------ 584 # -- Protokolleinträge bearbeiten ------------------------------------------ 585 # ------------------------------------------------------------------------------------ 586 #
587 - def __ereignisBearbeiteGefProt__( self, ereignis ):
588 """ 589 Anmerkungen zum Gefahrenszenario bearbeiten. 590 591 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 592 @type ereignis: C{wx - Ereignisobjekt} 593 """ 594 595 # 596 # -- Formular zur Bearbeitung der Übersetzungsvariante aufrufen ---------- 597 # 598 dlg = BearbeiteUebersetzungNeu( parent = self 599 , Statusleiste = self.Statusleiste 600 , dbVerbindung = self.dbVerbindung 601 , sprSprachenId = self.sprSprachenId 602 , sprUebvarId = ereignis.GetEventObject().gibClientData()[1] 603 , notizen = ereignis.GetEventObject().gibClientData()[2] ) 604 605 606 # 607 # -- Dialog aufrufen ---------------------------------------------------------- 608 # 609 dlg.ShowModal() 610 dlg.Destroy() 611 612 613 # 614 # -- geänderte >spr.uebvar.id< bzw. >notizen< in -------------------------- 615 # -- >prj.pp_prtprotokoll< übernehmen -------------------------- 616 # 617 if( dlg.gibWerte()[0] 618 and ( dlg.gibWerte()[1] != ereignis.GetEventObject().gibClientData()[1] 619 or dlg.gibWerte()[2] != ereignis.GetEventObject().gibClientData()[2] ) ) : 620 621 self.dbVerbindung.schreibe__prjPPPrtProtokoll__UPDATE( 622 sprUebvarId = dlg.gibWerte()[1] 623 , whereId = [ self.prjProjekteId 624 , ereignis.GetEventObject().gibDbId() 625 , ereignis.GetEventObject().gibClientData()[1]] ) 626 627 628 # 629 # -- Protokolleinträge neu auslesen ------------------------------------------ 630 # 631 self.dbVerbindung.selektiere__psGefProt( 632 LBSpWTU_SiAnf = None 633 , TreeCtrlErg_Prot = self.TreeCtrlErg__GefProtId.wxObjekt 634 , SiAnfStrktDok = None 635 , prjProjekteId = self.prjProjekteId 636 , sprSprachenId = self.sprSprachenId 637 , psGefszenarioId = self.psGefszenarioId 638 , aspekt = 'PE' ) 639 640 641 642 # 643 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 644 # -- ausgewertet werden kann -------------------------- 645 # 646 if( ereignis != None ) : ereignis.Skip( skip = True )
647 648 649 650 651 # 652 # ------------------------------------------------------------------------------------ 653 # -- Navigationsereignisse behandeln ---------------------------------- 654 # ------------------------------------------------------------------------------------ 655 #
656 - def __ereignisNavigation__( self, ereignis ):
657 """ 658 Methode die aufgerufen wird, wenn eine Gefahrenprotokoll-Id ausgewählt wurde. 659 660 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 661 @type ereignis: C{wx - Ereignisobjekt} 662 """ 663 664 # 665 # -- Änderungen in die Datenbank schreiben ---------------------------------- 666 # 667 self.schreibDB() 668 669 670 # 671 # -- Alle Gefahrenprotokolleinträge setzen ---------------------------------- 672 # 673 self.protokollId = self.TreeCtrlErg__GefProtId.wxObjekt.gibDbId( eintrag = ereignis.GetItem() ) 674 self.dbVerbindung.selektiere__prtProtokoll( 675 wxCheckBoxIntern = self.CheckBox__Intern.wxObjekt 676 , wxCheckBoxErledigt = self.CheckBox__Erledigt.wxObjekt 677 , wxComboBoxTypPE = self.ComboBox__TypPE.wxObjekt 678 , wxmskCtrlDatumPE = self.Ctrl__DatumPE.wxObjekt 679 , LBSpWTALBetPers = self.ListBoxAL__BetPers 680 , wxmskCtrlAntwDatum = self.Ctrl__AntwDatum.wxObjekt 681 , wxmskCtrlTermin = self.Ctrl__Termin.wxObjekt 682 , LBSpWTALAntwPers = self.ListBoxAL__AntwPers 683 , prjProjekteId = self.prjProjekteId 684 , sprSprachenId = self.sprSprachenId 685 , prtProtokollId = self.protokollId ) 686 687 688 # 689 # -- Zusatzfelder bei einer Frage ein-/ausblenden -------------------------- 690 # 691 self.__ereignisAntwort__()
692 693 694 695 696 # 697 # ------------------------------------------------------------------------------------ 698 # -- Innerhalb der Sicherheitsanforderungen navigieren ------------------ 699 # ------------------------------------------------------------------------------------ 700 #
701 - def __ereignisSiAnfNavigation__( self, ereignis ):
702 """ 703 Innerhalb der Sicherheitsaforderungen die Dokumente / Strukturpunkte anzeigen. 704 705 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 706 @type ereignis: C{wx - Ereignisobjekt} 707 """ 708 709 # 710 # -- Zugeordnete Strukturpunkte / Dokumente anzeigen ------------------ 711 # 712 self.dbVerbindung.selektiere__psPrtStrkt( 713 SiAnfStrktDok = self.SiAnfStrktDok__Zugeordnet 714 , prjProjekteId = self.prjProjekteId 715 , sprSprachenId = self.sprSprachenId 716 , prtProtokollId = ereignis.GetEventObject().gibDbId() 717 , psGefszenarioId = None 718 , strNameId = None ) 719 720 self.dbVerbindung.selektiere__prjPrtDoku( 721 SiAnfStrktDok = self.SiAnfStrktDok__Zugeordnet 722 , prjProjekteId = self.prjProjekteId 723 , sprSprachenId = self.sprSprachenId 724 , prtProtokollId = ereignis.GetEventObject().gibDbId() 725 , psGefszenarioId = None 726 , internFirmaId = None )
727 728 729 730 731 # 732 # ------------------------------------------------------------------------------------ 733 # -- Datenbank auslesen -------------------------------------------------- 734 # ------------------------------------------------------------------------------------ 735 #
736 - def liesDB( self, psGefszenarioId = None ):
737 """ 738 Methode die aufgerufen wird, wenn die Datenbankwerte im Fenster dargestellt werden sollen. 739 740 @param psGefszenarioId: Es ist die Identifikationsnummer des Gefahrenszenarios anzugeben. 741 @type psGefszenarioId: Ganzzahl 742 """ 743 744 745 # 746 # -- Gefahrenszenario auslesen (>prj.zeige__psgefszenario<) ------------------ 747 # 748 if psGefszenarioId != None: 749 750 # 751 # -- Gefahrenprotokolleinträge ---------------------------------- 752 # 753 self.dbVerbindung.selektiere__psGefProt( 754 LBSpWTU_SiAnf = None 755 , TreeCtrlErg_Prot = self.TreeCtrlErg__GefProtId.wxObjekt 756 , SiAnfStrktDok = None 757 , prjProjekteId = self.prjProjekteId 758 , sprSprachenId = self.sprSprachenId 759 , psGefszenarioId = psGefszenarioId 760 , aspekt = 'PE' ) 761 762 # 763 # -- Sicherheitsanforderungen ---------------------------------- 764 # 765 self.dbVerbindung.selektiere__psPrtProtokoll( TreeCtrlErg = self.TreeCtrlErg__SiAnf.wxObjekt 766 , prjProjekteId = self.prjProjekteId 767 , sprSprachenId = self.sprSprachenId 768 , psGefszenarioId = psGefszenarioId 769 , prtTypId = None ) 770 771 else: 772 773 # 774 # -- Alles löschen -------------------------------------------------- 775 # 776 self.TreeCtrlErg__GefProtId.wxObjekt.loescheBaum() 777 self.CheckBox__Intern.wxObjekt.loescheAlles() 778 self.CheckBox__Erledigt.wxObjekt.loescheAlles() 779 self.ComboBox__TypPE.wxObjekt.SetSelection( 0 ) 780 self.Ctrl__DatumPE.wxObjekt.loescheAlles() 781 self.ListBoxAL__BetPers.schiebeAlleRechts() 782 self.Ctrl__AntwDatum.wxObjekt.loescheAlles() 783 self.Ctrl__AntwDatum.wxObjekt.loescheAlles() 784 self.Ctrl__Termin.wxObjekt.schiebeAlleRechts()
785 786 787 788 # 789 # ------------------------------------------------------------------------------------ 790 # -- Datenbank schreiben -------------------------------------------------- 791 # ------------------------------------------------------------------------------------ 792 #
793 - def schreibDB( self ):
794 """ 795 Methode die aufgerufen wird, wenn die Eingabefelder ausgelesen und deren Werte in die Datenbank geschrieben werden sollen. 796 """ 797 798 # 799 # -- Es gibt keine Benutzeränderungen ---------------------------------- 800 # -- ---------------------------------- 801 # -- Der Typ des Protokolleintrages ist momentan nicht veränderbar ---------- 802 # -- ---------------------------------- 803 # 804 if( not( self.CheckBox__Intern.wxObjekt.gibIstVomBenutzerGeaendert() 805 or self.CheckBox__Erledigt.wxObjekt.gibIstVomBenutzerGeaendert() 806 # or self.ComboBox__TypPE.wxObjekt.gibIstVomBenutzerGeaendert() 807 or self.Ctrl__DatumPE.wxObjekt.gibIstVomBenutzerGeaendert() 808 or self.ListBoxAL__BetPers.ListBox__li.gibIstVomBenutzerGeaendert() 809 or self.Ctrl__AntwDatum.wxObjekt.gibIstVomBenutzerGeaendert() 810 or self.Ctrl__Termin.wxObjekt.gibIstVomBenutzerGeaendert() 811 or self.ListBoxAL__AntwPers.ListBox__li.gibIstVomBenutzerGeaendert() ) ) : 812 return 813 814 815 # 816 # -- Fallunterscheidung -------------------------------------------------- 817 # -- ------------------ 818 # -- 1. projektspezifischer Protokolleintrag ------------------ 819 # -- 2. beteiligte Personen zuordnen ------------------ 820 # -- 3. der Protokolleintrag ist eine Frage / Aufgabe ------------------ 821 # 822 fallunterscheidung = None 823 824 if( self.ListBoxAL__BetPers.ListBox__li.gibIstVomBenutzerGeaendert() ) : 825 826 fallunterscheidung = True 827 828 if( self.Ctrl__AntwDatum.wxObjekt.gibIstVomBenutzerGeaendert() 829 or self.Ctrl__Termin.wxObjekt.gibIstVomBenutzerGeaendert() 830 or self.ListBoxAL__AntwPers.ListBox__li.gibIstVomBenutzerGeaendert() ) : 831 832 fallunterscheidung = False 833 834 835 836 837 # 838 # -- prt.protokoll / prj.pp_protokoll ---------------------------------- 839 # 840 self.dbVerbindung.schreibePrtProtokoll( 841 wxCheckBoxIntern = self.CheckBox__Intern.wxObjekt 842 , wxCheckBoxErledigt = self.CheckBox__Erledigt.wxObjekt 843 , wxComboBoxTypPE = self.ComboBox__TypPE.wxObjekt 844 , wxmskCtrlDatumPE = self.Ctrl__DatumPE.wxObjekt 845 , LBSpWTALBetPers = self.ListBoxAL__BetPers 846 # -- prj.pp_prtprotokoll.id ------------------------------- 847 # -- spr_uebvar_id --------------------------------------------- 848 # -- notizen --------------------------------------------- 849 , listeWerte = self.TreeCtrlErg__GefProtId.wxObjekt.gibClientData() 850 , wxmskCtrlAntwDatum = self.Ctrl__AntwDatum.wxObjekt 851 , wxmskCtrlTermin = self.Ctrl__Termin.wxObjekt 852 , LBSpWTALAntwPers = self.ListBoxAL__AntwPers 853 , fallunterscheidung = fallunterscheidung 854 , prjProjekteId = self.prjProjekteId 855 , sprSprachenId = self.sprSprachenId 856 , prtProtokollId = self.protokollId ) 857 858 859 860 861 862 # 863 # -- hier ausgewertete Benutzeränderungen zurücksetzen ------------------ 864 # 865 self.CheckBox__Intern.wxObjekt.nimmIstVomBenutzerGeaendert( istVomBenutzerGeaendert = False ) 866 self.CheckBox__Erledigt.wxObjekt.nimmIstVomBenutzerGeaendert( istVomBenutzerGeaendert = False ) 867 # self.ComboBox__TypPE.wxObjekt.nimmIstVomBenutzerGeaendert( istVomBenutzerGeaendert = False ) 868 self.Ctrl__DatumPE.wxObjekt.nimmIstVomBenutzerGeaendert( istVomBenutzerGeaendert = False ) 869 self.ListBoxAL__BetPers.ListBox__li.nimmIstVomBenutzerGeaendert( istVomBenutzerGeaendert = False ) 870 self.Ctrl__AntwDatum.wxObjekt.nimmIstVomBenutzerGeaendert( istVomBenutzerGeaendert = False ) 871 self.Ctrl__Termin.wxObjekt.nimmIstVomBenutzerGeaendert( istVomBenutzerGeaendert = False ) 872 self.ListBoxAL__AntwPers.ListBox__li.nimmIstVomBenutzerGeaendert( istVomBenutzerGeaendert = False )
873