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

Source Code for Module bearbeitesicherheitsanf

   1  # -*- coding: utf-8 -*- 
   2  # 
   3  # 
   4  #    filename:  bearbeitesicherheitsanf.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://www.michaelbellair.de/vf/index.html 
  35  # 
  36  # 
  37  # ---------------------------------------------------------------------------------------- 
  38  # 
  39  import wx 
  40   
  41  from bearbeiteuebersetzung import BearbeiteUebersetzung # Eingabeformular für Übersetzungen 
  42   
  43  from universal import zk                                # Zeichenketten bearbeiten 
  44   
  45  from wxuniversal import HK_ANM 
  46  from wxuniversal import HK_DOK 
  47  from wxuniversal import HK_INTERNFIRMA 
  48  from wxuniversal import HK_PE 
  49  from wxuniversal import HK_PETYP 
  50  from wxuniversal import HK_SIANF 
  51  from wxuniversal import HK_SIANFTYP 
  52  from wxuniversal import HK_STR 
  53  from wxuniversal import HK_STRBEZ 
  54   
  55  from wxuniversal import FlexGridSizerWxObjTitel         # wxObjekt mit Titel 
  56  from wxuniversal import DialogErg                       # wx.Dialog mit Ergänzungen 
  57  from wxuniversal import farbeBearbeiten                 # Farbe der Objekte, die  bearbeitet werden können 
  58  from wxuniversal import SiAnfStrktDok                   # Eingabeformular für Sicherheitsanforderungen 
  59  from wxuniversal import SiAnf                           # SiAnf einschl. zugeordneter Strkt, Dok, PE, ... 
  60  from wxuniversal import TreeCtrlErg                     # TreeCtrl mit Ergänzungen 
  61   
  62   
  63   
  64  # 
  65  # 
  66  # 
  67  # ---------------------------------------------------------------------------------------- 
  68  # ---------------------------------------------------------------------------------------- 
  69  # --                                    -------------------------------------------------- 
  70  # --    Offene Punkte / Aufgaben        -------------------------------------------------- 
  71  # --                                    -------------------------------------------------- 
  72  # ---------------------------------------------------------------------------------------- 
  73  # ---------------------------------------------------------------------------------------- 
  74  # 
  75  #  
  76  #       -- siehe TODO 'bearbeitesicherheitsanf.py' -- 
  77  # 
  78  # 
  79  # ---------------------------------------------------------------------------------------- 
  80  # 
  81   
  82   
  83   
  84   
  85   
  86   
  87   
  88  # 
  89  # ---------------------------------------------------------------------------------------- 
  90  # ---------------------------------------------------------------------------------------- 
  91  # --                                                            -------------------------- 
  92  # --    Eingabeformular 'Sicherheitsanforderungen bearbeiten'   -------------------------- 
  93  # --                                                            -------------------------- 
  94  # ---------------------------------------------------------------------------------------- 
  95  # ---------------------------------------------------------------------------------------- 
  96  # 
97 -class BearbeiteSicherheitsanf( DialogErg ):
98 99 """ 100 Klasse zur Abbildung des Eingabeformulars 'Sicherheitsanforderungen bearbeiten'. 101 """ 102 103 # 104 # ------------------------------------------------------------------------------------ 105 # -- Eingabeformular initialisieren ---------------------------------- 106 # ------------------------------------------------------------------------------------ 107 #
108 - def __init__( self, parent, Statusleiste, dbVerbindung ):
109 DialogErg.__init__( self 110 , parent = parent 111 , title = u"Sicherheitsanforderungen bearbeiten." 112 , dbVerbindung = dbVerbindung ) 113 114 # 115 # -- Namen setzen (somit Klasse / Objekt erkennen) -------------------------- 116 # 117 self.SetName( name = "BearbeiteSicherheitsanf" ) 118 119 120 # 121 # -- Randbedingungen übernehmen ------------------------------------------ 122 # 123 self.Statusleiste = Statusleiste 124 self.dbVerbindung = dbVerbindung 125 126 127 128 # 129 # -------------------------------------------------------------------------------- 130 # -- Eingabeobjekte anlegen -------------------------------------------------- 131 # -------------------------------------------------------------------------------- 132 # 133 134 # 135 # -- Sicherheitsanforderungen ------------------------------------------ 136 # -- Objekt-Id = ------------------ 137 # 138 self.SiAnf__SiAnf = SiAnf( parent = self 139 , Statusleiste = self.Statusleiste 140 , dbVerbindung = self.dbVerbindung ) 141 142 143 144 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 145 , self.__ereignisBearbeiten__ 146 , self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt ) 147 148 self.Bind( wx.EVT_TREE_ITEM_MIDDLE_CLICK 149 , self.__ereignisSiAnfLoesen__ 150 , self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt ) 151 152 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 153 , self.__ereignisSPktDokumentLoesen__ 154 , self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt ) 155 156 157 158 # 159 # -- Tabulatorbereich ---------- 160 # -- Verfügbare Sicherheitsanforderungen, Strukturpunke, Dokumente ---------- 161 # -- Protokolleinträge ---------- 162 # 163 self.Notebook__Verfuegbar = wx.Notebook( self ) 164 165 166 # 167 # -- Verfügbare Sicherheitsanforderungen ---------------------------------- 168 # -- Objekt-Id = ------------------ 169 # 170 self.SiAnf__SiAnfVerfuegbar = SiAnf( parent = self.Notebook__Verfuegbar 171 , Statusleiste = self.Statusleiste 172 , dbVerbindung = self.dbVerbindung 173 , varId = 1 ) 174 175 176 177 178 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 179 , self.__ereignisSiAnfZuordnen__ 180 , self.SiAnf__SiAnfVerfuegbar.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt ) 181 182 self.Bind( wx.EVT_TREE_ITEM_MIDDLE_CLICK 183 , self.__ereignisSiAnfZuordnen__ 184 , self.SiAnf__SiAnfVerfuegbar.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt ) 185 186 187 self.Notebook__Verfuegbar.AddPage( self.SiAnf__SiAnfVerfuegbar, u"Sicherheitsanforderungen" ) 188 189 190 # 191 # -- Verfügbare Strukturpunkte, Dokumente, Protokolleinträge ------------------ 192 # -- Objekt-Id = ------------------ 193 # 194 self.Notebook__Verfuegbar.AddPage( SiAnfStrktDok( parent = self.Notebook__Verfuegbar 195 , varId = 3 196 , Statusleiste = self.Statusleiste 197 , dbVerbindung = self.dbVerbindung ) 198 , u"Strukturpunkte" ) 199 200 201 self.Notebook__Verfuegbar.AddPage( SiAnfStrktDok( parent = self.Notebook__Verfuegbar 202 , varId = 4 203 , Statusleiste = self.Statusleiste 204 , dbVerbindung = self.dbVerbindung ) 205 , u"Dokumente" ) 206 207 208 self.Notebook__Verfuegbar.AddPage( SiAnfStrktDok( parent = self.Notebook__Verfuegbar 209 , varId = 5 210 , Statusleiste = self.Statusleiste 211 , dbVerbindung = self.dbVerbindung ) 212 , u"Protokolleinträge" ) 213 214 self.Notebook__Verfuegbar.GetPage( 3 ).TreeCtrlErg__Id.wxObjekt.SetToolTip( wx.ToolTip( u"Doppelklick:\nProtokolleintrag der gewählten Sicherheitsanforderung zuordnen." ) ) 215 216 217 218 # 219 # -- Wechsel der Karteikarten bearbeiten ---------------------------------- 220 # 221 self.Bind( wx.EVT_NOTEBOOK_PAGE_CHANGED 222 , self.__ereignisKKGewechselt__ 223 , self.Notebook__Verfuegbar ) 224 225 226 # 227 # -- Sicherheitsanforderung und Strukturpunkt verbinden ------------------ 228 # 229 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 230 , self.__ereignisSPktDokumentZuordnen__ 231 , self.Notebook__Verfuegbar.GetPage( 1 ).TreeCtrlErg__Id.wxObjekt ) 232 233 234 # 235 # -- Sicherheitsanforderung und Dokument verbinden -------------------------- 236 # 237 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 238 , self.__ereignisSPktDokumentZuordnen__ 239 , self.Notebook__Verfuegbar.GetPage( 2 ).TreeCtrlErg__Id.wxObjekt ) 240 241 242 # 243 # -- Sicherheitsanforderung und Protokolleintrag verbinden ------------------ 244 # 245 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 246 , self.__ereignisSPktDokumentZuordnen__ 247 , self.Notebook__Verfuegbar.GetPage( 3 ).TreeCtrlErg__Id.wxObjekt ) 248 249 250 # 251 # -- Layout festlegen ------------------ 252 # -- (Fenster später im >wx.SplitterWindow< darstellen ------------------ 253 # 254 BoxSizerGes = wx.BoxSizer( wx.HORIZONTAL ) 255 256 BoxSizerGes.Add( self.SiAnf__SiAnf 257 , proportion = 1 258 , flag = wx.ALL|wx.EXPAND 259 , border = 5 ) 260 261 BoxSizerGes.Add( self.Notebook__Verfuegbar 262 , proportion = 1 263 , flag = wx.ALL|wx.EXPAND 264 , border = 5 ) 265 266 267 # 268 # -- In das Eingabeformular übernehmen ---------------------------------- 269 # 270 self.nimmDialogElemente( BoxSizerGes ) 271 272 273 # 274 # -- Tooltips / Hintergrundfarben setzen ---------------------------------- 275 # 276 self.__ereignisKKGewechselt__() 277 278 279 # 280 # -- Liste der Sicherheitsanforderungen-Id füllen ------------------ 281 # 282 self.SiAnf__SiAnf.liesDB() 283 284 # 285 # -- Button 'Änderungen verwerfen' / 'Änderungen sichern' deaktivieren -- 286 # 287 self.Button__Verwerfen.Enable( False ) 288 self.Button__Sichern.Enable( False )
289 290 291 292 293 # 294 # ------------------------------------------------------------------------------------ 295 # -- Sicherheitsanforderung bearbeiten ---------------------------------- 296 # ------------------------------------------------------------------------------------ 297 #
298 - def __ereignisBearbeiten__( self, ereignis = None ):
299 """ 300 Methode die aufgerufen wird, wenn der Text der Sicherheitsanforderung bearbeitet werden soll. 301 302 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 303 @type ereignis: C{wx - Ereignisobjekt} 304 """ 305 306 # 307 # -- Formular zur Bearbeitung der Übersetzungsvariante aufrufen ---------- 308 # 309 dlg = BearbeiteUebersetzung( parent = self 310 , Statusleiste = self.Statusleiste 311 , dbVerbindung = self.dbVerbindung 312 , sprUebvarId = ereignis.GetEventObject().gibClientData()[1] 313 , notizen = ereignis.GetEventObject().gibClientData()[2] ) 314 315 316 # 317 # -- Dialog aufrufen ---------------------------------------------------------- 318 # 319 dlg.ShowModal() 320 dlg.Destroy() 321 322 323 # 324 # -- geänderte >spr.uebvar.id< bzw. >notizen< in -------------------------- 325 # -- >prj.pp_prtprotokoll< übernehmen -------------------------- 326 # 327 if( dlg.gibWerte()[0] 328 and ( dlg.gibWerte()[1] != ereignis.GetEventObject().gibClientData()[1] 329 or dlg.gibWerte()[2] != ereignis.GetEventObject().gibClientData()[2] ) ) : 330 331 self.dbVerbindung.schreibe__prjPPPrtProtokoll__UPDATE( 332 sprUebvarId = dlg.gibWerte()[1] 333 , whereId = [ self.dbVerbindung.filter__prj_projekte_id 334 , ereignis.GetEventObject().gibDbId() 335 , ereignis.GetEventObject().gibClientData()[1]] ) 336 337 338 # 339 # -- SiAnfId - 'Verfügbare Sicherheitsanforderungen' neu auslesen -- 340 # -- SiAnfId - 'bereits zugeordnete Sicherheitsanforderungen' neu auslesen -- 341 # 342 self.Notebook__Verfuegbar.GetPage( 1 ).__ereignisLiesDBVerfSiAnf__() 343 self.SiAnf__SiAnf.liesDB() 344 345 346 347 348 # 349 # -- Button 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 350 # -- aktivieren, wenn eine Benutzeränderung vorliegt ------------------ 351 # 352 if( dlg.gibWerte()[0] ) : 353 self.Button__Verwerfen.Enable( True ) 354 self.Button__Sichern.Enable( True ) 355 356 357 # 358 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 359 # -- ausgewertet werden kann -------------------------- 360 # 361 if( ereignis != None ) : ereignis.Skip( skip = True )
362 363 364 365 366 # 367 # ------------------------------------------------------------------------------------ 368 # -- Karteikarten gewechselt -------------------------------------------------- 369 # ------------------------------------------------------------------------------------ 370 #
371 - def __ereignisKKGewechselt__( self, ereignis = None ):
372 """ 373 Es wurde zwischen den Karteikarten gewechselt. 374 375 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 376 @type ereignis: C{wx - Ereignisobjekt} 377 """ 378 379 # 380 # -- KK 'Sicherheitsanforderungen' gewählt ---------------------------------- 381 # 382 if( self.Notebook__Verfuegbar.GetCurrentPage() == self.Notebook__Verfuegbar.GetPage( 0 ) ) : 383 384 # 385 # -- SiAnf-Id (links) ------------------------------------------ 386 # 387 self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.SetBackgroundColour( farbeBearbeiten ) 388 self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.SetToolTip( wx.ToolTip( u"Doppelklick:\nSicherheitsanforderung bearbeiten.\n\nMittlere Maustaste:\nVerbindung zwischen Sicherheitsanforderung und Gefahrenszenario aufheben." ) ) 389 390 391 # 392 # -- Zugeordnete Strukturpunkte / Dokumente / ------------------ 393 # -- Protokolleinträge (links) ------------------ 394 # 395 self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.SetBackgroundColour( self.GetBackgroundColour() ) 396 self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.SetToolTip( wx.ToolTip( " " ) ) 397 398 399 # 400 # -- KK 'Strukturpunkte' / 'Dokumente' / 'Protokolleinträge' gewählt ---------- 401 # 402 elif( self.Notebook__Verfuegbar.GetCurrentPage() == self.Notebook__Verfuegbar.GetPage( 1 ) 403 or self.Notebook__Verfuegbar.GetCurrentPage() == self.Notebook__Verfuegbar.GetPage( 2 ) 404 or self.Notebook__Verfuegbar.GetCurrentPage() == self.Notebook__Verfuegbar.GetPage( 3 ) ) : 405 406 # 407 # -- SiAnf-Id (links) ------------------------------------------ 408 # 409 self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.SetBackgroundColour( 'WHITE' ) 410 self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.SetToolTip( wx.ToolTip( " " ) ) 411 412 # 413 # -- Zugeordnete Strukturpunkte / Dokumente / ------------------ 414 # -- Protokolleinträge (links) ------------------ 415 # 416 self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.SetBackgroundColour( farbeBearbeiten ) 417 418 if( self.Notebook__Verfuegbar.GetCurrentPage() == self.Notebook__Verfuegbar.GetPage( 1 ) ) : 419 self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.SetToolTip( wx.ToolTip( u"Doppelklick:\nVerbindung zwischen Strukturpunkt und Sicherheitsanforderung aufheben." ) ) 420 421 elif( self.Notebook__Verfuegbar.GetCurrentPage() == self.Notebook__Verfuegbar.GetPage( 2 ) ) : 422 self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.SetToolTip( wx.ToolTip( u"Doppelklick:\nVerbindung zwischen Dokument und Sicherheitsanforderung aufheben." ) ) 423 424 elif( self.Notebook__Verfuegbar.GetCurrentPage() == self.Notebook__Verfuegbar.GetPage( 3 ) ) : 425 self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.SetToolTip( wx.ToolTip( u"Doppelklick:\nVerbindung zwischen Protokolleintrag und Sicherheitsanforderung aufheben." ) ) 426 427 428 429 # 430 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 431 # -- ausgewertet werden kann -------------------------- 432 # 433 if( ereignis != None ) : ereignis.Skip( skip = True )
434 435 436 437 438 # 439 # ------------------------------------------------------------------------------------ 440 # -- Sicherheitsanforderung vom Gefahrenszenario lösen ------------------ 441 # ------------------------------------------------------------------------------------ 442 #
443 - def __ereignisSiAnfLoesen__( self, ereignis = None ):
444 """ 445 Die aktuelle(n) Sicherheitsanforderungen von der Sicherheitsanforderung (Technische Maßnahme) bzw. dem Gefahrenszenario lösen. 446 447 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 448 @type ereignis: C{wx - Ereignisobjekt} 449 """ 450 451 # 452 # -- ---------- 453 # -- 1. Verbindung zwischen den Protokolleinträgen und Strukutur- ---------- 454 # -- punkten aufheben; ---------- 455 # -- Strukturpunkte ggf. (aus dem Projekt entfernen) ---------- 456 # -- ---------- 457 # -- >prj.pp_strstrkt< ---------- 458 # -- >prj.p_strverbindung< ---------- 459 # -- >prj.p_prtstrstrkt< ---------- 460 # -- ---------- 461 # 462 self.dbVerbindung.schreibe__Strukturpunkte( TreeCtrlErg = ereignis.GetEventObject() ) 463 464 465 466 # 467 # -- ---------- 468 # -- 2. Verbindung zwischen den Protokolleinträgen und Dokumenten ---------- 469 # -- aufheben; ---------- 470 # -- Dokumente ggf. (aus dem Projekt entfernen) ---------- 471 # -- ---------- 472 # -- Dokumente entfernen ---------- 473 # -- >prj.pl_prtdokdoku< ---------- 474 # -- >prj.ppl_dokdoku< ---------- 475 # -- >prj.pl_dokausgabe< ---------- 476 # -- ---------- 477 # 478 self.dbVerbindung.schreibe__Dokumente( TreeCtrlErg = ereignis.GetEventObject() 479 , nimmAusgabe = 'true' ) 480 481 482 483 484 # 485 # -- ------------------ 486 # -- 3. Protokolleintrag vom Gefahrenszenario lösen ------------------ 487 # -- .............................................. ------------------ 488 # -- ------------------ 489 # -- >prj.pl_prtpsgefszenario< ------------------ 490 # -- ------------------ 491 # 492 self.dbVerbindung.schreibe__prjPlPrtPsGefszenario( 493 listeWerte = zk.gibListeTeilmenge( liste = ereignis.GetEventObject().gibZweigDaten() ) 494 , psGefszenarioId = self.dbVerbindung.gib__PsGefszenarioId() 495 , logentfernt = 'true' ) 496 497 498 # 499 # -- ------------------ 500 # -- 4. Protokolleintrag aus dem Projekt entfernen ------------------ 501 # -- .............................................. ------------------ 502 # -- ------------------ 503 # -- >prj.pp_prtprotokoll< ------------------ 504 # -- ------------------ 505 # 506 self.dbVerbindung.schreibe__prjPPPrtProtokoll( listeWerte = ereignis.GetEventObject().gibZweigDaten() ) 507 508 509 510 # 511 # -- ------------------ 512 # -- 5. Verbindung zwischen den Protokolleinträgen aufheben ------------------ 513 # -- (aus dem Projekt entfernen) ------------------ 514 # -- ...................................................... ------------------ 515 # -- ------------------ 516 # -- >prj.p_prtverbindung< ------------------ 517 # -- ------------------ 518 # 519 self.dbVerbindung.schreibePrtProtokollVerbindung( TreeCtrlErg = ereignis.GetEventObject() 520 , prtProtokollIdVorg = None ) 521 522 523 524 # 525 # -- SiAnfId - 'Verfügbare Sicherheitsanforderungen' neu auslesen -- 526 # -- SiAnfId - 'bereits zugeordnete Sicherheitsanforderungen' neu auslesen -- 527 # 528 self.Notebook__Verfuegbar.GetPage( 1 ).__ereignisLiesDBVerfSiAnf__() 529 self.SiAnf__SiAnf.liesDB() 530 531 532 # 533 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 534 # -- aktivieren, wenn eine Benutzeränderung vorliegt ------------------ 535 # 536 self.Button__Verwerfen.Enable( True ) 537 self.Button__Sichern.Enable( True ) 538 539 540 # 541 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 542 # -- ausgewertet werden kann -------------------------- 543 # 544 if( ereignis != None ) : ereignis.Skip( skip = True )
545 546 547 548 549 # 550 # ------------------------------------------------------------------------------------ 551 # -- Sicherheitsanforderung zuordnen ---------------------------------- 552 # ------------------------------------------------------------------------------------ 553 #
554 - def __ereignisSiAnfZuordnen__( self, ereignis = None ):
555 """ 556 Die aktuelle(n) Sicherheitsanforderungen der gewählten Sicherheitsanforderung (dem Gefahrenszenario) zuordnen. 557 558 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 559 @type ereignis: C{wx - Ereignisobjekt} 560 """ 561 562 # 563 # -- Ereignistypen (ggf. später verbessern) ---------------------------------- 564 # 565 evtDClick = 10033 566 evtMMouse = 10035 567 568 569 # 570 # -- ---------- 571 # -- Generelle Regeln zum Zuordnen (Übernehmen) der SiAnf ------------------ 572 # -- .................................................... ---------- 573 # -- ---------- 574 # -- Die bereits zugeordneten SiAnf (Id wird betrachtet) werden ---------- 575 # -- nicht verändert (Doppelklick / mittl. Maustaste wird ignoriert) ---------- 576 # -- ---------- 577 # -- Den bereits zugeordneten Knoten (techn. Maßn.) werden nur die ---------- 578 # -- SiAnf hinzugefügt, die noch nicht vorhanden sind. ---------- 579 # -- ---------- 580 # -- Werden Knoten (techn. Maßn.) übernommen, dann werden die ---------- 581 # -- untergeordneten SiAnf ohne Nachfragen ebenfalls übernommen ---------- 582 # -- ---------- 583 # -- Die den SiAnf zugeordneten Strukturpunkte werden ohne ---------- 584 # -- Nachfragen übernommen ---------- 585 # -- ---------- 586 # -- Die den SiAnf zugeordneten Dokumente werden als Platzhalter ---------- 587 # -- (Standardauswahl) ODER vollständig übernommen (Dialog aufrufen) ---------- 588 # -- ---------- 589 # -- ---------- 590 # -- ---------- 591 # -- Doppelklick ausgeführt: ------------------------------------------ 592 # -- ....................... ---------- 593 # -- ---------- 594 # -- Knoten selektiert (Technische Maßnahme) ---------- 595 # -- -> Knoten (einschl. untergeordneter SiAnf) dem ---------- 596 # -- Gefahrenzenario zuordnen ---------- 597 # -- ---------- 598 # -- Alleinstehende SiAnf (Technische Maßnahme) selektiert ---------- 599 # -- -> SiAnf (Technische Maßnahme) dem Gefahrenzenario zuordnen ---------- 600 # -- ---------- 601 # -- Alleinstehende SiAnf (Organisatorische Maßnahme) UND ---------- 602 # -- bereits zugeordneten SiAnf (Technische Maßnahme) selektiert ---------- 603 # -- -> SiAnf (Organisatorische Maßnahme) der ausgewählten ---------- 604 # -- bereits zugeordneten SiAnf (Technische Maßnahme; keine ---------- 605 # -- Organisatorische Maßnahme !) zuordnen (übernehmen) ---------- 606 # -- ---------- 607 # -- Alleinstehende SiAnf (Organisatorische Maßnahme) UND ---------- 608 # -- bereits zugeordneten SiAnf (Org. Maßnahme) selektiert ---------- 609 # -- -> UNZULÄSSIG ---------- 610 # -- ---------- 611 # -- ---------- 612 # -- ---------- 613 # -- Mittlere Maustaste betätigt: ---------- 614 # -- ............................ ---------- 615 # -- ---------- 616 # -- Organisatorische Maßnahme selektiert ---------- 617 # -- -> SiAnf dem Gefahrenszenario direkt zuordnen ---------- 618 # -- ---------- 619 # -- Technische Maßnahme selektiert ---------- 620 # -- -> UNZULÄSSIG ---------- 621 # -- ---------- 622 # 623 624 # 625 # -- Unzulässige Aktionen abfangen (siehe oben) -------------------------- 626 # 627 if( ( ereignis.GetEventType() == evtDClick 628 and not ereignis.GetEventObject().gibClientData()[0] 629 and not self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibClientData()[0] ) 630 or ( ereignis.GetEventType() == evtMMouse and ereignis.GetEventObject().gibClientData()[0] ) ) : 631 632 if( ereignis != None ) : ereignis.Skip( skip = True ) 633 return 634 635 636 637 # 638 # -- ---------- 639 # -- 1. Zuordnung zum Projekt / Gefahrenszenario -------------------------- 640 # -- ........................................... ---------- 641 # -- ---------- 642 # -- SiAnf dem Gefahrenszenario zuordnen ---------------------------------- 643 # -- >prj.pl_prtpsgefszenario< ---------- 644 # -- ---------- 645 # -- SiAnf dem Projekt zuordnen (Text/Notizen übernehmen) ------------------ 646 # -- >prj.pp_prtprotokoll< ---------- 647 # -- ---------- 648 # -- Strukturpunkte übernehmen ------------------------------------------ 649 # -- >prj.pp_strstrkt< ---------- 650 # -- >prj.p_strverbindung< ---------- 651 # -- >prj.p_prtstrstrkt< ---------- 652 # -- ---------- 653 # -- Dokumente übernehmen -------------------------------------------------- 654 # -- >prj.ppl_dokdoku< ---------- 655 # -- wenn sie vollständig übernommen werden sollen ---------- 656 # -- >prj.pl_prtdokdoku< ---------- 657 # -- >prj.pl_dokausgabe< ---------- 658 # -- ---------- 659 # -- Im Projekt zugeordnete Protokolleinträge übernehmen ------------------ 660 # -- >prj.pl_prtpsgefszenario< ---------- 661 # -- ---------- 662 # 663 self.dbVerbindung.schreibe__prjPlPrtPsGefszenario( 664 listeWerte = zk.gibListeTeilmenge( liste = ereignis.GetEventObject().gibZweigDaten() ) 665 , psGefszenarioId = self.dbVerbindung.gib__PsGefszenarioId() ) 666 667 self.dbVerbindung.schreibe__prjPPPrtProtokoll( listeWerte = ereignis.GetEventObject().gibZweigDaten() ) 668 669 670 # 671 # -- Strukturpunkte übernehmen ------------------------------------------ 672 # 673 self.dbVerbindung.schreibe__Strukturpunkte( TreeCtrlErg = ereignis.GetEventObject() 674 , ignorierePsGefszenarioId = True ) 675 676 677 # 678 # -- Meldung ausgeben -------------------------------------------------- 679 # 680 dlg = wx.MessageDialog( parent = self 681 , message = u"Alle Dokumente, die den Sicherheitsanforderungen zugeordnet sind, werden übernommen.\n\nSollen sie vollständig (d.h. mit Titel, akt. Revisionsstand, Datum) in das Projekt übernommen werden ?\nWenn nicht, dann werden sie nur als Platzhalter übernommen." 682 , caption = u"Dokumente zuordnen" 683 , style = wx.YES_NO|wx.ICON_QUESTION) 684 685 nimmAusgabe = ( dlg.ShowModal() == wx.ID_YES ) 686 687 688 # 689 # -- Dokumente übernehmen -------------------------------------------------- 690 # 691 self.dbVerbindung.schreibe__Dokumente( TreeCtrlErg = ereignis.GetEventObject() 692 , nimmAusgabe = nimmAusgabe 693 , ignorierePsGefszenarioId = True ) 694 695 696 # 697 # -- ---------- 698 # -- 2. Verbindung zwischen den SiAnf ---------------------------------- 699 # -- ................................ ---------- 700 # -- ---------- 701 # -- Verbindung herstellen -------------------------------------------------- 702 # -- >prj.p_prtverbindung< ---------- 703 # -- ---------- 704 # -- -> wenn Knoten ausgewählt wurde ---------- 705 # -- -> wenn Org. SiAnf UND Doppelklick UND bereits zugeordnete ---------- 706 # -- Techn. SiAnf markiert wurde ---------- 707 # -- ---------- 708 # 709 if( ereignis.GetEventObject().ItemHasChildren( ereignis.GetItem() ) 710 or ( ereignis.GetEventObject().gibClientData()[0] == False 711 and ereignis.GetEventType() == evtDClick 712 and self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibClientData()[0] ) ) : 713 714 # 715 # -- Knoten ausgewählt ------------------------------------------ 716 # 717 if( ereignis.GetEventObject().ItemHasChildren( ereignis.GetItem() ) ) : 718 719 self.dbVerbindung.schreibePrtProtokollVerbindung( 720 TreeCtrlErg = ereignis.GetEventObject() 721 , prtProtokollIdVorg = ereignis.GetEventObject().gibDbId() 722 , ignoriereSprSprachenId = True 723 , ignorierePsGefszenarioId = True ) 724 725 # 726 # -- keinen Knoten ausgewählt ---------------------------------- 727 # 728 else : 729 730 self.dbVerbindung.schreibePrtProtokollVerbindung( 731 TreeCtrlErg = ereignis.GetEventObject() 732 , prtProtokollIdVorg = self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibDbId() 733 , ignoriereSprSprachenId = False 734 , ignorierePsGefszenarioId = True ) 735 736 737 # 738 # -- ---------- 739 # -- Protokolleinträge zuordnen ------------------------------------------ 740 # -- .......................... ---------- 741 # -- ---------- 742 # -- Es werden die Protokolleinträge, die der aktuell gewählten ---------- 743 # -- SiAnf (im aktuellen Projekt) zugeordnet sind, übernommen ---------- 744 # -- ---------- 745 # 746 self.dbVerbindung.schreibe__prjPlPrtPsGefszenario( 747 listeWerte = self.dbVerbindung.gibListePsPrtProtokollWerte( 748 psGefszenarioId = None 749 , prtTypAspekt = 'PE' 750 , prtTypId = None 751 , prtProtokollIdVorg = zk.gibListeTeilmengeZk( liste = ereignis.GetEventObject().gibZweigDaten() ) ) 752 , psGefszenarioId = self.dbVerbindung.gib__PsGefszenarioId() ) 753 754 755 # 756 # -- SiAnfId - 'Verfügbare Sicherheitsanforderungen' neu auslesen -- 757 # -- SiAnfId - 'bereits zugeordnete Sicherheitsanforderungen' neu auslesen -- 758 # 759 self.SiAnf__SiAnfVerfuegbar.liesDB() 760 self.SiAnf__SiAnf.liesDB() 761 762 763 # 764 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 765 # -- aktivieren, wenn eine Benutzeränderung vorliegt ------------------ 766 # 767 self.Button__Verwerfen.Enable( True ) 768 self.Button__Sichern.Enable( True ) 769 770 771 # 772 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 773 # -- ausgewertet werden kann -------------------------- 774 # 775 if( ereignis != None ) : ereignis.Skip( skip = True )
776 777 778 779 780 # 781 # ------------------------------------------------------------------------------------ 782 # -- Strukturpunkt / Dokument entfernen ---------------------------------- 783 # ------------------------------------------------------------------------------------ 784 #
785 - def __ereignisSPktDokumentLoesen__( self, ereignis ):
786 """ 787 Die Verbindung zwischen dem aktuellen Dokument und der gewählten Sicherheitsanforderung lösen. 788 789 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 790 @type ereignis: C{wx - Ereignisobjekt} 791 """ 792 793 # 794 # -- Keine weitere Aktion ausführen, -------------------------- 795 # -- wenn ein Hauptknoten gewählt wurde, -- 796 # -- ODER -- 797 # -- ein Strukturpunkt, aber nicht KK 'Strukturpunkte' gewählt wurde, -- 798 # -- ODER -- 799 # -- ein Dokument, aber nicht KK 'Dokumente' gewählt wurde. -- 800 # -- ODER -- 801 # -- ein Protokolleintrag, aber nicht KK 'Protokolleinträge' gewählt wurde. -- 802 # 803 if( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.istHauptknoten( ereignis.GetItem() ) 804 or ( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.gibBezeichnungHauptknoten( ereignis.GetItem() ) == HK_STR and self.Notebook__Verfuegbar.GetSelection() != 1 ) 805 or ( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.gibBezeichnungHauptknoten( ereignis.GetItem() ) == HK_DOK and self.Notebook__Verfuegbar.GetSelection() != 2 ) 806 or ( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.gibBezeichnungHauptknoten( ereignis.GetItem() ) == HK_PE and self.Notebook__Verfuegbar.GetSelection() != 3 ) ) : 807 808 ereignis.Skip( skip = True ) 809 return 810 811 812 # 813 # -- Den Strukturpunkt von der aktuellen Sicherheitsanforderung lösen -- 814 # 815 if( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.gibBezeichnungHauptknoten( ereignis.GetItem() ) == HK_STR ) : 816 817 self.dbVerbindung.schreibe__psPrtStrkt( 818 prjProjekteId = self.dbVerbindung.filter__prj_projekte_id 819 , prtProtokollId = self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibDbId() 820 , strStrktId = ereignis.GetEventObject().gibClientData()[0] 821 , notizen = '' 822 , prjPPrtStrstrktId = ereignis.GetEventObject().gibClientData()[1] ) 823 824 825 # 826 # -- Das Dokument von der aktuellen Sicherheitsanforderung lösen ---------- 827 # 828 elif( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.gibBezeichnungHauptknoten( ereignis.GetItem() ) == HK_DOK ) : 829 830 self.dbVerbindung.schreibe__prjPrtDoku( 831 prtProtokollId = self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibDbId() 832 , dokDokuId = ereignis.GetEventObject().gibWert() 833 , plPrtDokdoku = [ ereignis.GetEventObject().gibClientData()[1] 834 , ereignis.GetEventObject().gibClientData()[2] 835 , ereignis.GetEventObject().gibClientData()[3] 836 , ereignis.GetEventObject().gibClientData()[0] ] 837 , plDokAusgabe = [ ereignis.GetEventObject().gibClientData()[7] 838 , ereignis.GetEventObject().gibClientData()[5] 839 , ereignis.GetEventObject().gibClientData()[6] 840 , ereignis.GetEventObject().gibClientData()[4] ] 841 , logentfernt = 'true' ) 842 843 844 # 845 # -- Den Protokolleintrag von der aktuellen Sicherheitsanforderung lösen -- 846 # 847 elif( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.gibBezeichnungHauptknoten( ereignis.GetItem() ) == HK_PE ) : 848 849 self.dbVerbindung.schreibe__prjPPrtVerbindung( 850 prjProjekteId = self.dbVerbindung.filter__prj_projekte_id 851 , prtProtokollIdVorg = self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibDbId() 852 , prtProtokollIdNachf = ereignis.GetEventObject().gibDbId() 853 , trennen = True ) 854 855 856 # 857 # -- 'Zugeordnete Strukturpunkte/Dokumente/Protokolleinträge' neu auslesen -- 858 # 859 self.SiAnf__SiAnf.__ereignisNavigation__() 860 861 862 # 863 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 864 # -- aktivieren, wenn eine Benutzeränderung vorliegt ------------------ 865 # 866 self.Button__Verwerfen.Enable( True ) 867 self.Button__Sichern.Enable( True ) 868 869 870 # 871 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 872 # -- ausgewertet werden kann -------------------------- 873 # 874 if( ereignis != None ) : ereignis.Skip( skip = True )
875 876 877 878 879 # 880 # ------------------------------------------------------------------------------------ 881 # -- ---------------------------------- 882 # -- Strukturpunkt / Dokument zuordnen ---------------------------------- 883 # -- ---------------------------------- 884 # ------------------------------------------------------------------------------------ 885 #
886 - def __ereignisSPktDokumentZuordnen__( self, ereignis = None ):
887 """ 888 Das aktuelle Dokument der gewählten Sicherheitsanforderung zuordnen. 889 890 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 891 @type ereignis: C{wx - Ereignisobjekt} 892 """ 893 894 # 895 # -------------------------------------------------------------------------------- 896 # -- Strukturpunkt und aktuelle Sicherheitsanforderung verbinden ---------- 897 # -- ---------- 898 # -- Es muß KK 'Strukturpunkte' selektiert sein ---------- 899 # -------------------------------------------------------------------------------- 900 # 901 if( self.Notebook__Verfuegbar.GetSelection() == 1 ) : 902 903 # 904 # -- Wenn Strukturpunkt bereits zugeordnet ist, ------------------ 905 # -- Routine verlassen ------------------ 906 # 907 if( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.istDbIdVorhanden( ereignis.GetEventObject().gibDbId() ) ) : 908 909 if( ereignis != None ) : ereignis.Skip( skip = True ) 910 return 911 912 # 913 # -- Den Strukturpunkt der aktuellen Sicherheitsanforderung zuordnen -- 914 # 915 self.dbVerbindung.schreibe__psPrtStrkt( 916 prjProjekteId = self.dbVerbindung.filter__prj_projekte_id 917 , prtProtokollId = self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibDbId() 918 , strStrktId = ereignis.GetEventObject().gibClientData()[0] 919 , notizen = '' ) 920 921 922 923 # 924 # -------------------------------------------------------------------------------- 925 # -- Dokument und aktuelle Sicherheitsanforderung verbinden ------------------ 926 # -- (Dokumentenhierarchie bilden) ------------------ 927 # -- ------------------ 928 # -- Es muß ein Dokumenteintrag selektiert sein ------------------ 929 # -- UND ------------------ 930 # -- KK 'Dokumente' muß selektiert sein ------------------ 931 # -------------------------------------------------------------------------------- 932 # 933 elif( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.gibBezeichnungHauptknoten() == HK_DOK 934 and self.Notebook__Verfuegbar.GetSelection() == 2 ) : 935 936 # 937 # -- Wenn Dok-Id bereits zugeordnet ist, Routine verlassen ------------------ 938 # 939 if( self.SiAnf__SiAnf.SiAnfStrktDok__Zugeordnet.TreeCtrlErg__Id.wxObjekt.istDbIdVorhanden( ereignis.GetEventObject().gibDbId() ) ) : 940 941 if( ereignis != None ) : ereignis.Skip( skip = True ) 942 return 943 944 945 # 946 # -- Plausibilitätsprüfung der Dokumentzuordnung ------------------ 947 # -- ........................................... ------------------ 948 # -- ---------- 949 # -- 1. ) Dokumente, die den Ursprung einer SiAnf belegen, ---------- 950 # -- >dok.doku.aspekt == QUELLE< können allen SiAnf ---------- 951 # -- zugeordnet werden ---------- 952 # -- ---------- 953 # -- 2. ) Dokumente, die die Umsetzung der SiAnf beweisen, ---------- 954 # -- >dok.doku.aspekt == BEWEIS< ---------- 955 # -- werden nur den ---------- 956 # -- - Dokumentationsanforderungen >prt.typ.id == 22< ---------- 957 # -- - Prüfungen >prt.typ.id == 23< ---------- 958 # -- zugeordnet. ---------- 959 # -- Somit kann (muß) in der SiAnf der Gedanke des ---------- 960 # -- Beweises (Punkt im Dokument) benannt werden ---------- 961 # 962 if( ereignis.GetEventObject().gibClientData()[8] == 'BEWEIS' 963 and self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibClientData()[3] not in [22, 23] ) : 964 965 # 966 # -- Dokument und Sicherheitsanforderung nicht verbinden ---------- 967 # 968 if( ereignis != None ) : ereignis.Skip( skip = True ) 969 return 970 971 972 973 # 974 # -- Das Dokument der aktuellen Sicherheitsanforderung zuordnen ------------------ 975 # 976 self.dbVerbindung.schreibe__prjPrtDoku( 977 prtProtokollId = self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibDbId() 978 , dokDokuId = ereignis.GetEventObject().gibWert() 979 , plPrtDokdoku = [ ereignis.GetEventObject().gibClientData()[1] 980 , ereignis.GetEventObject().gibClientData()[2] 981 , ereignis.GetEventObject().gibClientData()[3] 982 , ereignis.GetEventObject().gibClientData()[0] ] 983 , plDokAusgabe = [ ereignis.GetEventObject().gibClientData()[7] 984 , ereignis.GetEventObject().gibClientData()[5] 985 , ereignis.GetEventObject().gibClientData()[6] 986 , ereignis.GetEventObject().gibClientData()[4] ] ) 987 988 989 990 991 992 # 993 # -------------------------------------------------------------------------------- 994 # -- Protokolleintrag und aktuelle Sicherheitsanforderung verbinden ---------- 995 # -- ---------- 996 # -- Es muß KK 'Protokolleinträge' selektiert sein ---------- 997 # -------------------------------------------------------------------------------- 998 # 999 elif( self.Notebook__Verfuegbar.GetSelection() == 3 ) : 1000 1001 # 1002 # -- gewählte PE und SiAnf verbinden ---------------------------------- 1003 # 1004 tmpEintraege = ereignis.GetEventObject().gibZweig() 1005 1006 for i in range( len( tmpEintraege ) ) : 1007 1008 self.dbVerbindung.schreibe__prjPPrtVerbindung( 1009 prjProjekteId = self.dbVerbindung.filter__prj_projekte_id 1010 , prtProtokollIdVorg = self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibDbId() 1011 , prtProtokollIdNachf = ereignis.GetEventObject().gibDbId( tmpEintraege[i] ) ) 1012 1013 1014 # 1015 # -- PE automatisch den anderen Gefahren-Id zuordnen, in denen ---------- 1016 # -- die SiAnf verwendet wurden ---------- 1017 # 1018 tmpPsGefszenarioId = self.dbVerbindung.gibListePrjPlPrtPsGefszenarioWerte( 1019 prtProtokollId = self.SiAnf__SiAnf.SiAnfStrktDok__SiAnf.TreeCtrlErg__Id.wxObjekt.gibDbId() ) 1020 1021 for i in range( len( tmpPsGefszenarioId ) ) : 1022 1023 # 1024 # -- aktuelles Gefahrenszenario überspringen -------------------------- 1025 # 1026 if( str( tmpPsGefszenarioId[i] ) == str( self.dbVerbindung.gib__PsGefszenarioId() ) ) : 1027 1028 continue 1029 1030 self.dbVerbindung.schreibe__prjPlPrtPsGefszenario( 1031 listeWerte = zk.gibListeTeilmenge( liste = ereignis.GetEventObject().gibZweigDaten() ) 1032 , psGefszenarioId = tmpPsGefszenarioId[i] ) 1033 1034 1035 1036 1037 # 1038 # -- keine gültige Aktion -------------------------------------------------- 1039 # 1040 else : 1041 1042 1043 # 1044 # -- Routine verlassen ------------------------------------------ 1045 # 1046 if( ereignis != None ) : ereignis.Skip( skip = True ) 1047 return 1048 1049 1050 1051 # 1052 # -- 'Zugeordnete Strukturpunkte/Dokumente/Protokolleinträge' neu auslesen -- 1053 # 1054 self.SiAnf__SiAnf.__ereignisNavigation__() 1055 1056 1057 # 1058 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 1059 # -- aktivieren, wenn eine Benutzeränderung vorliegt ------------------ 1060 # 1061 self.Button__Verwerfen.Enable( True ) 1062 self.Button__Sichern.Enable( True ) 1063 1064 1065 # 1066 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 1067 # -- ausgewertet werden kann -------------------------- 1068 # 1069 if( ereignis != None ) : ereignis.Skip( skip = True )
1070 1071 1072 1073 # 1074 # ------------------------------------------------------------------------------------ 1075 # -- Besondere Aktivitäten des abgeleiteten Objektes beim Verwerfen ---------- 1076 # ------------------------------------------------------------------------------------ 1077 #
1078 - def __spezAktionenVerwerfen__( self ):
1079 """ 1080 Methode die von der abgeleiteten Klasse überschrieben wird, um spezifische Aktionen beim Verwerfen der Änderungen auszuführen. 1081 """ 1082 1083 # 1084 # -- SiAnfId - 'Verfügbare Sicherheitsanforderungen' neu auslesen -- 1085 # -- SiAnfId - 'bereits zugeordnete Sicherheitsanforderungen' neu auslesen -- 1086 # 1087 self.Notebook__Verfuegbar.GetPage( 1 ).__ereignisLiesDBVerfSiAnf__() 1088 self.SiAnf__SiAnf.liesDB()
1089 1090 1091 1092 # 1093 # ------------------------------------------------------------------------------------ 1094 # -- ClientData des Eintrages mit der lfdNr zurückgegeben ------------------ 1095 # ------------------------------------------------------------------------------------ 1096 #
1098 """ 1099 Mit Aufruf dieser Methode wird die Karteikarte 'Protokolleinträge' ausgewählt. 1100 1101 """ 1102 1103 # 1104 # -- Karteikarte auswählen -------------------------------------------------- 1105 # 1106 self.Notebook__Verfuegbar.ChangeSelection( 3 ) 1107 self.__ereignisKKGewechselt__()
1108