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

Source Code for Module filter

   1  # -*- coding: utf-8 -*- 
   2  # 
   3  # 
   4  #    filename:  filter.py 
   5  # 
   6  #    version:   see wxvf.py 
   7  # 
   8  # 
   9  # ---------------------------------------------------------------------------------------- 
  10  # 
  11  # 
  12  #    Copyright (C) 2010, 2011  Michael Bellair 
  13  # 
  14  #    This file is part of wxvf. 
  15  # 
  16  #    wxvf is free software: you can redistribute it and/or modify 
  17  #    it under the terms of the GNU General Public License as published by 
  18  #    the Free Software Foundation, either version 3 of the License, or 
  19  #    (at your option) any later version. 
  20  # 
  21  #    wxvf is distributed in the hope that it will be useful, 
  22  #    but WITHOUT ANY WARRANTY; without even the implied warranty of 
  23  #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  24  #    GNU General Public License for more details. 
  25  # 
  26  #    You should have received a copy of the GNU General Public License 
  27  #    along with wxvf.  If not, see <http://www.gnu.org/licenses/>. 
  28  # 
  29  #    Michael Bellair 
  30  #    Sportplatzstrasse 11 
  31  #    01259 Dresden 
  32  # 
  33  #    E-Mail:    bellair@freenet.de 
  34  #    homepage:  http://vf.michaelbellair.de/index.html 
  35  # 
  36  # 
  37  # ---------------------------------------------------------------------------------------- 
  38  # 
  39  import wx 
  40   
  41  from universal import zk                                        # Zeichenketten bearbeiten 
  42   
  43  from wxuniversal import HK_ANM 
  44  from wxuniversal import HK_DOK 
  45  from wxuniversal import HK_DOKTYP 
  46  from wxuniversal import HK_PE 
  47  from wxuniversal import HK_PETYP 
  48  from wxuniversal import HK_SIANF 
  49  from wxuniversal import HK_SIANFTYP 
  50  from wxuniversal import HK_STR 
  51  from wxuniversal import HK_STRBEZ 
  52   
  53  from wxuniversal import ComboBoxErg                             # wx.ComboBox mit Ergänzungen 
  54  from wxuniversal import DialogErg                               # wx.Dialog mit Ergänzungen 
  55  from wxuniversal import farbeAuswahlListe                       # Farbe der Objekte, die Vorgabewerte enthalten 
  56  from wxuniversal import FlexGridSizerWxObjTitel                 # wxObjekt mit Titel 
  57  from wxuniversal import TreeCtrlErg                             # TreeCtrl mit Ergänzungen 
  58   
  59   
  60   
  61   
  62   
  63   
  64  # 
  65  # 
  66  # 
  67  # ---------------------------------------------------------------------------------------- 
  68  # ---------------------------------------------------------------------------------------- 
  69  # --                                    -------------------------------------------------- 
  70  # --    Offene Punkte / Aufgaben        -------------------------------------------------- 
  71  # --                                    -------------------------------------------------- 
  72  # ---------------------------------------------------------------------------------------- 
  73  # ---------------------------------------------------------------------------------------- 
  74  # 
  75  #  
  76  #       -- siehe TODO 'bearbeitedokumente.py' -- 
  77  # 
  78  # 
  79  # ---------------------------------------------------------------------------------------- 
  80  # 
  81   
  82   
  83   
  84   
  85  # 
  86  # ---------------------------------------------------------------------------------------- 
  87  # ---------------------------------------------------------------------------------------- 
  88  # --                                    -------------------------------------------------- 
  89  # --    Eingabeformular 'Filter'        -------------------------------------------------- 
  90  # --                                    -------------------------------------------------- 
  91  # ---------------------------------------------------------------------------------------- 
  92  # ---------------------------------------------------------------------------------------- 
  93  # 
94 -class Filter( DialogErg ):
95 96 """ 97 Klasse zur Abbildung des Eingabeformulars 'Filter'. 98 """ 99 100 # 101 # ------------------------------------------------------------------------------------ 102 # -- Eingabeformular initialisieren ---------------------------------- 103 # ------------------------------------------------------------------------------------ 104 #
105 - def __init__( self, parent, Notizen, Fortschritt, dbVerbindung ):
106 DialogErg.__init__( self 107 , parent = parent 108 , title = u"Gefahrenszenarien einschränken" 109 , dbVerbindung = dbVerbindung ) 110 111 # 112 # -- Namen setzen (somit Klasse / Objekt erkennen) -------------------------- 113 # 114 self.SetName( name = "Filter" ) 115 116 117 # 118 # -- Randbedingungen übernehmen ------------------------------------------ 119 # 120 self.__Notizen__ = Notizen 121 self.__Fortschritt__ = Fortschritt 122 self.__dbVerbindung__ = dbVerbindung 123 124 125 # 126 # -------------------------------------------------------------------------------- 127 # -- Eingabeobjekte anlegen -------------------------------------------------- 128 # -------------------------------------------------------------------------------- 129 # 130 131 # 132 # -- Projekt -------------------------------------------------- 133 # 134 self.ComboBox__Projekt = FlexGridSizerWxObjTitel( 135 parent = self 136 , wxObj = ComboBoxErg( self 137 , choices = [] 138 , style = wx.CB_DROPDOWN|wx.CB_READONLY|wx.CB_SORT 139 , Notizen = self.__Notizen__ ) 140 , orient = wx.VERTICAL 141 , titel = u"Projekt" ) 142 self.ComboBox__Projekt.wxObjekt.nimmWerteStatusleiste( 143 DBSpNameErlaeuterung = u"Die Gefahrenszenarien auf das Projekt einschränken." 144 , DBSpName = "prj.projekte" ) 145 146 self.__dbVerbindung__.selektiere__prjProjekte( ComboBoxErg = self.ComboBox__Projekt.wxObjekt ) 147 148 self.ComboBox__Projekt.wxObjekt.selektiereWert( dbId = self.__dbVerbindung__.filter__prj_projekte_id ) 149 150 self.ComboBox__Projekt.wxObjekt.Bind( wx.EVT_COMBOBOX 151 , self.__ereignisProjekteSprache__ ) 152 153 154 155 # 156 # -- Sprache ---------------------------------------------------------- 157 # 158 self.ComboBox__Sprache = FlexGridSizerWxObjTitel( 159 parent = self 160 , wxObj = ComboBoxErg( self 161 , choices = [] 162 , style = wx.CB_DROPDOWN|wx.CB_READONLY|wx.CB_SORT 163 , Notizen = self.__Notizen__ ) 164 , orient = wx.VERTICAL 165 , titel = u"Sprache" ) 166 167 self.ComboBox__Sprache.wxObjekt.nimmWerteStatusleiste( 168 DBSpNameErlaeuterung = u"Die Sprache wählen." 169 , DBSpName = "spr.sprachen" ) 170 171 self.__dbVerbindung__.selektiere__sprSprachen( ComboBoxErg = self.ComboBox__Sprache.wxObjekt ) 172 173 self.ComboBox__Sprache.wxObjekt.selektiereWert( dbId = self.__dbVerbindung__.filter__spr_sprachen_id ) 174 175 self.ComboBox__Sprache.wxObjekt.Bind( wx.EVT_COMBOBOX 176 , self.__ereignisProjekteSprache__ ) 177 178 179 180 # 181 # -- Aspekt -------------------------------------------------- 182 # 183 self.ComboBox__Aspekt = FlexGridSizerWxObjTitel( 184 parent = self 185 , wxObj = ComboBoxErg( self 186 , choices = [] 187 , style = wx.CB_DROPDOWN|wx.CB_READONLY|wx.CB_SORT 188 , Notizen = self.__Notizen__ ) 189 , orient = wx.VERTICAL 190 , titel = u"Aspekt" ) 191 192 for i in range( len( self.__dbVerbindung__.filter__bezeichnungAspekte ) ): 193 194 self.ComboBox__Aspekt.wxObjekt.nimmWert( wert = self.__dbVerbindung__.filter__bezeichnungAspekte[i] 195 , dbId = i ) 196 197 self.ComboBox__Aspekt.wxObjekt.selektiereWert( dbId = 0 ) 198 199 self.ComboBox__Aspekt.wxObjekt.Bind( wx.EVT_COMBOBOX 200 , self.__ereignisAspekt__ ) 201 202 203 204 # 205 # -- Filterkriterien -------------------------------------------------- 206 # 207 self.TreeCtrlErg__Filterkrit = FlexGridSizerWxObjTitel( 208 parent = self 209 , wxObj = TreeCtrlErg( self 210 , Notizen = self.__Notizen__ ) 211 , titel = "Filterkriterien" 212 , orient = wx.VERTICAL ) 213 214 self.TreeCtrlErg__Filterkrit.wxObjekt.nimmWerteStatusleiste( 215 DBSpNameErlaeuterung = u"Die aktuell gesetzten Filterkriterien zur Einschränkung der Gefahrenszenarien." 216 , DBSpName = "bleibt leer" ) 217 218 self.TreeCtrlErg__Filterkrit.wxObjekt.nimmTooltip( u"Doppelklick:\nEintrag aus der Liste der Filterkriterien entfernen" ) 219 220 self.TreeCtrlErg__Filterkrit.wxObjekt.SetMinSize( ( 400, 350 ) ) 221 222 self.__filterkriterienDarstellen__() 223 224 self.TreeCtrlErg__Filterkrit.wxObjekt.Bind( wx.EVT_TREE_ITEM_ACTIVATED 225 , self.__ereignisFilterkriteriumEntfernen__ ) 226 227 228 229 # 230 # -- Aspekt (Detail) ---------------------------------- 231 # -- ---------------------------------- 232 # -- Struktur ---------------------------------- 233 # -- Typ der Sicherheitsanforderung ---------------------------------- 234 # -- Typ des Protokolleintrages ---------------------------------- 235 # -- Typ des Dokumentes ---------------------------------- 236 # -- ---------------------------------- 237 # 238 self.ComboBox__AspektDetail = FlexGridSizerWxObjTitel( 239 parent = self 240 , wxObj = ComboBoxErg( self 241 , choices = [] 242 , style = wx.CB_DROPDOWN|wx.CB_READONLY|wx.CB_SORT 243 , Notizen = self.__Notizen__ ) 244 , orient = wx.VERTICAL 245 , titel = u"---" ) 246 247 self.ComboBox__AspektDetail.Enable( False ) 248 249 self.ComboBox__AspektDetail.wxObjekt.Bind( wx.EVT_COMBOBOX 250 , self.__ereignisAspektDetail__ ) 251 252 253 254 # 255 # -- Filterkriterien (verfügbar) ------------------------------------------ 256 # -- ---------------------------------- 257 # -- Im Projekt Verfügbare Strukturpunkte ---------------------------------- 258 # -- ... Sicherheitsanforderungen ---------------------------------- 259 # -- ... Protokolleinträge ---------------------------------- 260 # -- ... Dokumente ---------------------------------- 261 # -- ---------------------------------- 262 # 263 self.TreeCtrlErg__FilterkritVerf = FlexGridSizerWxObjTitel( parent = self 264 , wxObj = TreeCtrlErg( self 265 , Notizen = self.__Notizen__ ) 266 , titel = "---" 267 , orient = wx.VERTICAL ) 268 269 self.TreeCtrlErg__FilterkritVerf.wxObjekt.nimmTooltip( u"Doppelklick:\nEintrag in die Liste der Filterkriterien übernehmen" ) 270 271 self.TreeCtrlErg__FilterkritVerf.wxObjekt.SetBackgroundColour( wx.NamedColour( farbeAuswahlListe ) ) 272 273 self.TreeCtrlErg__FilterkritVerf.wxObjekt.SetMinSize( ( 400, 300 ) ) 274 275 self.TreeCtrlErg__FilterkritVerf.Enable( False ) 276 277 self.TreeCtrlErg__FilterkritVerf.wxObjekt.Bind( wx.EVT_TREE_ITEM_ACTIVATED 278 , self.__ereignisFilterkriteriumSetzen__ ) 279 280 281 282 283 # 284 # -- Nichtbenötigte Button ausblenden ---------------------------------- 285 # 286 self.Button__Verwerfen.Show( show = False ) 287 self.Button__Sichern.Show( show = False ) 288 289 290 291 292 # 293 # -- Layout festlegen ------------------ 294 # -- (Fenster später im >wx.SplitterWindow< darstellen ------------------ 295 # 296 297 # 298 # -- Projekt, Sprache -------------------------------------------------- 299 # 300 FlexGridSizer_ProjSpr = wx.FlexGridSizer( rows = 1, cols = 2, vgap = 0, hgap = 10 ) 301 302 FlexGridSizer_ProjSpr.AddGrowableCol( idx = 0, proportion = 1 ) 303 FlexGridSizer_ProjSpr.AddGrowableCol( idx = 1, proportion = 1 ) 304 305 FlexGridSizer_ProjSpr.Add( self.ComboBox__Projekt 306 , flag = wx.EXPAND ) 307 308 FlexGridSizer_ProjSpr.Add( self.ComboBox__Sprache 309 , flag = wx.EXPAND ) 310 311 312 # 313 # -- Verf. Filterkriterien -------------------------------------------------- 314 # 315 FlexGridSizer_Verf = wx.FlexGridSizer( rows = 2, cols = 1, vgap = 10, hgap = 0 ) 316 317 FlexGridSizer_Verf.AddGrowableCol( idx = 0, proportion = 1 ) 318 FlexGridSizer_Verf.AddGrowableRow( idx = 1, proportion = 1 ) 319 320 FlexGridSizer_Verf.Add( self.ComboBox__AspektDetail 321 , flag = wx.EXPAND ) 322 323 FlexGridSizer_Verf.Add( self.TreeCtrlErg__FilterkritVerf 324 , flag = wx.EXPAND ) 325 326 327 # 328 # -- Filterkriterien, senkrechte Linie, Verf. Filterkriterien ---------- 329 # 330 FlexGridSizer_Filterkrit = wx.FlexGridSizer( rows = 1, cols = 3, vgap = 0, hgap = 10 ) 331 332 FlexGridSizer_Filterkrit.AddGrowableCol( idx = 0, proportion = 1 ) 333 FlexGridSizer_Filterkrit.AddGrowableCol( idx = 2, proportion = 1 ) 334 335 FlexGridSizer_Filterkrit.AddGrowableRow( idx = 0, proportion = 1 ) 336 337 FlexGridSizer_Filterkrit.Add( self.TreeCtrlErg__Filterkrit 338 , flag = wx.EXPAND ) 339 340 FlexGridSizer_Filterkrit.Add( wx.StaticLine( parent = self, style = wx.LI_VERTICAL ) 341 , flag = wx.EXPAND ) 342 343 344 FlexGridSizer_Filterkrit.Add( FlexGridSizer_Verf 345 , flag = wx.EXPAND ) 346 347 348 # 349 # -- Alles zusammenfügen -------------------------------------------------- 350 # 351 FlexGridSizer = wx.FlexGridSizer( rows = 3, cols = 1, vgap = 10, hgap = 0 ) 352 353 FlexGridSizer.AddGrowableCol( idx = 0, proportion = 1 ) 354 355 FlexGridSizer.AddGrowableRow( idx = 2, proportion = 1 ) 356 357 FlexGridSizer.Add( FlexGridSizer_ProjSpr 358 , flag = wx.EXPAND|wx.LEFT|wx.TOP|wx.RIGHT 359 , border = 5 ) 360 361 FlexGridSizer.Add( self.ComboBox__Aspekt 362 , flag = wx.EXPAND|wx.LEFT|wx.RIGHT 363 , border = 5 ) 364 365 FlexGridSizer.Add( FlexGridSizer_Filterkrit 366 , flag = wx.EXPAND|wx.LEFT|wx.BOTTOM|wx.RIGHT 367 , border = 5 ) 368 369 370 371 # 372 # -- In das Eingabeformular übernehmen ---------------------------------- 373 # 374 self.nimmDialogElemente( FlexGridSizer ) 375 376 377 378 # 379 # -- Button 'Änderungen verwerfen' / 'Änderungen sichern' deaktivieren -- 380 # 381 self.Button__Verwerfen.Enable( False ) 382 self.Button__Sichern.Enable( False ) 383 384 385 386 # 387 # -- Fenster zentrieren -------------------------------------------------- 388 # 389 self.CenterOnScreen() 390 391 392 393 # 394 # -- Statusleiste setzen -------------------------------------------------- 395 # 396 self.__ereignisAspekt__()
397 398 399 400 401 # 402 # ------------------------------------------------------------------------------------ 403 # -- Filterkriterien aktivieren ------------------------------------------ 404 # ------------------------------------------------------------------------------------ 405 #
406 - def __ereignisAspekt__( self, ereignis = None ):
407 """ 408 Methode die aufgerufen wird, um die anderen Eingabefelder freizuschalten. 409 410 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 411 @type ereignis: C{wx - Ereignisobjekt} 412 """ 413 414 # 415 # -- Liste der Detailaspekte leeren (Notlösung) -------------------------- 416 # -- Liste der verfügbaren Filterkriterien leeren -------------------------- 417 # 418 self.ComboBox__AspektDetail.wxObjekt.loescheAlles() 419 self.ComboBox__AspektDetail.wxObjekt.nimmWert( wert = "", dbId = 0 ) 420 self.ComboBox__AspektDetail.wxObjekt.selektiereWert( 0 ) 421 self.ComboBox__AspektDetail.wxObjekt.loescheAlles() 422 423 self.TreeCtrlErg__FilterkritVerf.wxObjekt.loescheAlles() 424 425 426 427 # 428 # -- Filterkriterien (de)aktivieren ---------------------------------- 429 # 430 self.ComboBox__AspektDetail.Enable( False ) 431 self.TreeCtrlErg__FilterkritVerf.Enable( True ) 432 433 434 435 # 436 # -- Titel der Filterkriterien setzen ---------------------------------- 437 # 438 titelAspektDetail = "---" 439 titelFilterkritVerf = "---" 440 441 442 443 # 444 # -- Routine verlassen, wenn >-- Kein Aspekt gewählt --< ist ---------- 445 # 446 if( ereignis is None or ereignis.GetEventObject().gibDbId() == 0 ) : 447 448 # 449 # -- Statusleiste setzen ------------------------------------------ 450 # 451 self.ComboBox__Aspekt.wxObjekt.nimmWerteStatusleiste( 452 DBSpNameErlaeuterung = u"Weitere Filterkriterien zur Einschränkung der Gefahrenszenarien wählen." 453 , DBSpName = "bleibt leer" ) 454 455 456 457 # 458 # -- Titel der Filterkriterien setzen -------------------------- 459 # 460 self.ComboBox__AspektDetail.wxText.SetLabel( label = titelAspektDetail ) 461 self.TreeCtrlErg__FilterkritVerf.wxText.SetLabel( label = titelFilterkritVerf ) 462 463 self.TreeCtrlErg__FilterkritVerf.Enable( False ) 464 465 # 466 # -- Routine verlassen ------------------------------------------ 467 # 468 return 469 470 471 472 # 473 # -- Strukturbezeichnung -------------------------------------------------- 474 # 475 elif( ereignis.GetEventObject().gibDbId() == 1 ) : 476 477 # 478 # -- Statusleiste setzen ------------------------------------------ 479 # 480 self.ComboBox__Aspekt.wxObjekt.nimmWerteStatusleiste( 481 DBSpNameErlaeuterung = u"Die Strukturbezeichnung als Filterkriterium wählen." 482 , DBSpName = "bleibt leer" ) 483 484 self.TreeCtrlErg__FilterkritVerf.wxObjekt.nimmWerteStatusleiste( 485 DBSpNameErlaeuterung = u"Die verfügbaren Strukturbezeichnungen." 486 , DBSpName = "str.name" ) 487 488 489 490 # 491 # -- Titel der Filterkriterien setzen -------------------------- 492 # 493 titelFilterkritVerf = "Verfügbare Strukturbezeichnungen" 494 495 496 497 # 498 # -- Strukturpunkt ---------------------------------------------------------- 499 # 500 if( ereignis.GetEventObject().gibDbId() == 2 ) : 501 502 # 503 # -- Statusleiste setzen ------------------------------------------ 504 # 505 self.ComboBox__Aspekt.wxObjekt.nimmWerteStatusleiste( 506 DBSpNameErlaeuterung = u"Den Strukturpunkt als Filterkriterium wählen." 507 , DBSpName = "bleibt leer" ) 508 509 self.ComboBox__AspektDetail.wxObjekt.nimmWerteStatusleiste( 510 DBSpNameErlaeuterung = u"Die Struktur auswählen." 511 , DBSpName = "str.name" ) 512 513 self.TreeCtrlErg__FilterkritVerf.wxObjekt.nimmWerteStatusleiste( 514 DBSpNameErlaeuterung = u"Die verfügbaren Strukturpunkte." 515 , DBSpName = "str.strkt / prj.pp_strstrkt / prj.p_strverbindung" ) 516 517 518 519 # 520 # -- Strukturbezeichnungen auslesen ---------------------------------- 521 # 522 self.__dbVerbindung__.selektiere__strName( TreeCtrlErg_ComboBoxErg = self.ComboBox__AspektDetail.wxObjekt ) 523 524 525 # 526 # -- Titel der Filterkriterien setzen -------------------------- 527 # 528 titelAspektDetail = "Strukturbezeichnung" 529 titelFilterkritVerf = "Im Projekt Verfügbare Strukturpunkte" 530 531 532 # 533 # -- Filterkriterien aktivieren ---------------------------------- 534 # 535 self.ComboBox__AspektDetail.Enable( True ) 536 537 538 539 # 540 # -- Typ der Sicherheitsanforderung ------------------------------------------ 541 # 542 elif( ereignis.GetEventObject().gibDbId() == 3 ) : 543 544 # 545 # -- Statusleiste setzen ------------------------------------------ 546 # 547 self.ComboBox__Aspekt.wxObjekt.nimmWerteStatusleiste( 548 DBSpNameErlaeuterung = u"Den Typ der Sicherheitsanforderung als Filterkriterium wählen." 549 , DBSpName = "bleibt leer" ) 550 551 self.TreeCtrlErg__FilterkritVerf.wxObjekt.nimmWerteStatusleiste( 552 DBSpNameErlaeuterung = u"Die verfügbaren Typen der Sicherheitsanforderungen." 553 , DBSpName = "prt.typ" ) 554 555 556 # 557 # -- Titel der Filterkriterien setzen -------------------------- 558 # 559 titelFilterkritVerf = "Typen der Sicherheitsanforderungen" 560 561 562 563 # 564 # -- Sicherheitsanforderung -------------------------------------------------- 565 # 566 elif( ereignis.GetEventObject().gibDbId() == 4 ) : 567 568 # 569 # -- Statusleiste setzen ------------------------------------------ 570 # 571 self.ComboBox__Aspekt.wxObjekt.nimmWerteStatusleiste( 572 DBSpNameErlaeuterung = u"Die Sicherheitsanforderung als Filterkriterium wählen." 573 , DBSpName = "bleibt leer" ) 574 575 self.ComboBox__AspektDetail.wxObjekt.nimmWerteStatusleiste( 576 DBSpNameErlaeuterung = u"Den Typ der Sicherheitsanforderung auswählen." 577 , DBSpName = "prt.typ" ) 578 579 self.TreeCtrlErg__FilterkritVerf.wxObjekt.nimmWerteStatusleiste( 580 DBSpNameErlaeuterung = u"Die verfügbaren Sicherheitsanforderungen." 581 , DBSpName = "prt.protokoll / prj.pp_prtprotokoll / prj.p_prtverbindung" ) 582 583 584 # 585 # -- Typen der Sicherheitsanforderungen auslesen ------------------ 586 # 587 self.__dbVerbindung__.selektiere__prtTyp__Sprache( 588 TreeCtrlErg_ComboBoxErg = self.ComboBox__AspektDetail.wxObjekt 589 , prtTypAspekt = "SF" 590 , hatAlle = True ) 591 592 593 # 594 # -- Titel der Filterkriterien setzen -------------------------- 595 # 596 titelAspektDetail = "Typ der Sicherheitsanforderung" 597 titelFilterkritVerf = "Im Projekt Verfügbare Sicherheitsanforderungen" 598 599 600 # 601 # -- Filterkriterien aktivieren ---------------------------------- 602 # 603 self.ComboBox__AspektDetail.Enable( True ) 604 605 606 607 # 608 # -- Typ des Protokolleintrages ------------------------------------------ 609 # 610 elif( ereignis.GetEventObject().gibDbId() == 5 ) : 611 612 # 613 # -- Statusleiste setzen ------------------------------------------ 614 # 615 self.ComboBox__Aspekt.wxObjekt.nimmWerteStatusleiste( 616 DBSpNameErlaeuterung = u"Den Typ des Gefahrenprotokolleintrages als Filterkriterium wählen." 617 , DBSpName = "bleibt leer" ) 618 619 self.TreeCtrlErg__FilterkritVerf.wxObjekt.nimmWerteStatusleiste( 620 DBSpNameErlaeuterung = u"Die verfügbaren Typen der Gefahrenprotokolleinträge." 621 , DBSpName = "prt.typ" ) 622 623 # 624 # -- Titel der Filterkriterien setzen -------------------------- 625 # 626 titelFilterkritVerf = "Typ der Protokolleinträge" 627 628 629 630 # 631 # -- Protokolleintrag -------------------------------------------------- 632 # 633 elif( ereignis.GetEventObject().gibDbId() == 6 ) : 634 635 # 636 # -- Statusleiste setzen ------------------------------------------ 637 # 638 self.ComboBox__Aspekt.wxObjekt.nimmWerteStatusleiste( 639 DBSpNameErlaeuterung = u"Den Gefahrenprotokolleintrag als Filterkriterium wählen." 640 , DBSpName = "bleibt leer" ) 641 642 self.ComboBox__AspektDetail.wxObjekt.nimmWerteStatusleiste( 643 DBSpNameErlaeuterung = u"Den Typ des Gefahrenprotokolleintrages auswählen." 644 , DBSpName = "prt.typ" ) 645 646 self.TreeCtrlErg__FilterkritVerf.wxObjekt.nimmWerteStatusleiste( 647 DBSpNameErlaeuterung = u"Die verfügbaren Gefahrenprotokolleinträge." 648 , DBSpName = "prt.protokoll / prj.pp_prtprotokoll / prj.p_prtverbindung" ) 649 650 651 # 652 # -- Typ der Protokolleinträge auselesen -------------------------- 653 # 654 self.__dbVerbindung__.selektiere__prtTyp__Sprache( 655 TreeCtrlErg_ComboBoxErg = self.ComboBox__AspektDetail.wxObjekt 656 , prtTypAspekt = "PE" 657 , hatAlle = True ) 658 659 660 # 661 # -- Titel der Filterkriterien setzen -------------------------- 662 # 663 titelAspektDetail = "Typ des Protokolleintrages" 664 titelFilterkritVerf = "Im Projekt Verfügbare Protokolleinträge" 665 666 667 # 668 # -- Filterkriterien aktivieren ---------------------------------- 669 # 670 self.ComboBox__AspektDetail.Enable( True ) 671 672 673 674 # 675 # -- Typ des Dokumentes ------------------------------------------ 676 # 677 elif( ereignis.GetEventObject().gibDbId() == 7 ) : 678 679 # 680 # -- Statusleiste setzen ------------------------------------------ 681 # 682 self.ComboBox__Aspekt.wxObjekt.nimmWerteStatusleiste( 683 DBSpNameErlaeuterung = u"Den Typ des Dokumentes als Filterkriterium wählen." 684 , DBSpName = "bleibt leer" ) 685 686 self.TreeCtrlErg__FilterkritVerf.wxObjekt.nimmWerteStatusleiste( 687 DBSpNameErlaeuterung = u"Die verfügbaren Typen der Dokumente." 688 , DBSpName = "dok.typ" ) 689 690 # 691 # -- Titel der Filterkriterien setzen -------------------------- 692 # 693 titelFilterkritVerf = "Dokumenttypen" 694 695 696 697 # 698 # -- Dokument ---------------------------------------------------------- 699 # 700 elif( ereignis.GetEventObject().gibDbId() == 8 ) : 701 702 # 703 # -- Statusleiste setzen ------------------------------------------ 704 # 705 self.ComboBox__Aspekt.wxObjekt.nimmWerteStatusleiste( 706 DBSpNameErlaeuterung = u"Das Dokument als Filterkriterium wählen." 707 , DBSpName = "bleibt leer" ) 708 709 self.ComboBox__AspektDetail.wxObjekt.nimmWerteStatusleiste( 710 DBSpNameErlaeuterung = u"Den Typ des Dokumentes auswählen." 711 , DBSpName = "dok.typ" ) 712 713 self.TreeCtrlErg__FilterkritVerf.wxObjekt.nimmWerteStatusleiste( 714 DBSpNameErlaeuterung = u"Die verfügbaren Dokumente." 715 , DBSpName = "dok.doku / prj.pl_dokausgabe" ) 716 717 # 718 # -- Typ des Dokumentes auslesen ---------------------------------- 719 # 720 self.__dbVerbindung__.selektiere__dokTyp( TreeCtrlErg_ComboBoxErg = self.ComboBox__AspektDetail.wxObjekt ) 721 722 723 # 724 # -- Titel der Filterkriterien setzen -------------------------- 725 # 726 titelAspektDetail = "Typ des Dokumentes" 727 titelFilterkritVerf = "Dokumente" 728 729 730 # 731 # -- Filterkriterien aktivieren ---------------------------------- 732 # 733 self.ComboBox__AspektDetail.Enable( True ) 734 735 736 737 # 738 # -- Liste der verfügbaren Filterkriterien füllen -------------------------- 739 # 740 self.__ereignisAspektDetail__() 741 742 743 744 # 745 # -- Titel der Filterkriterien setzen ---------------------------------- 746 # 747 self.ComboBox__AspektDetail.wxText.SetLabel( label = titelAspektDetail ) 748 self.TreeCtrlErg__FilterkritVerf.wxText.SetLabel( label = titelFilterkritVerf )
749 750 751 752 753 754 755 # 756 # ------------------------------------------------------------------------------------ 757 # -- Filterkriterien aktivieren ------------------------------------------ 758 # ------------------------------------------------------------------------------------ 759 #
760 - def __ereignisAspektDetail__( self, ereignis = None ):
761 """ 762 Methode die aufgerufen wird, um die verfügbaren Filterkriterien einzulesen. 763 764 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 765 @type ereignis: C{wx - Ereignisobjekt} 766 """ 767 768 # 769 # -- Liste der verfügbaren Filterkriterien leeren -------------------------- 770 # 771 self.TreeCtrlErg__FilterkritVerf.wxObjekt.loescheAlles() 772 773 774 775 # 776 # -- Ein Detailaspekt wurde gewählt ------------------------------------------ 777 # 778 detailAspektId = None 779 if( ereignis is not None ) : 780 781 if( ereignis.GetEventObject().gibDbId() > 0 ) : 782 783 detailAspektId = [ereignis.GetEventObject().gibDbId()] 784 785 786 787 # 788 # -- Strukturbezeichnung -------------------------------------------------- 789 # 790 elif( self.ComboBox__Aspekt.wxObjekt.gibDbId() == 1 ) : 791 792 self.__dbVerbindung__.selektiere__strName( TreeCtrlErg_ComboBoxErg = self.TreeCtrlErg__FilterkritVerf.wxObjekt ) 793 794 795 796 # 797 # -- Verfügbare Strukturpunkte auslesen ------------------ 798 # 799 if( self.ComboBox__Aspekt.wxObjekt.gibDbId() == 2 ) : 800 801 self.__dbVerbindung__.selektiere__strStrkt__Sprache__Projekt( 802 TreeCtrlErg = self.TreeCtrlErg__FilterkritVerf.wxObjekt 803 , strNameId = detailAspektId ) 804 805 806 807 # 808 # -- Typ der Sicherheitsanforderung ------------------------------------------ 809 # 810 elif( self.ComboBox__Aspekt.wxObjekt.gibDbId() == 3 ) : 811 812 self.__dbVerbindung__.selektiere__prtTyp__Sprache( 813 TreeCtrlErg_ComboBoxErg = self.TreeCtrlErg__FilterkritVerf.wxObjekt 814 , prtTypAspekt = "SF" 815 , hatAlle = True ) 816 817 818 819 820 # 821 # -- Verfügbare Sicherheitsanforderungen auslesen -------------------------- 822 # 823 elif( self.ComboBox__Aspekt.wxObjekt.gibDbId() == 4 ) : 824 825 self.__dbVerbindung__.selektiere__prtProtokoll__Sprache__Projekt( 826 TreeCtrlErg = self.TreeCtrlErg__FilterkritVerf.wxObjekt 827 , istGefProt = False 828 , prtTypId = detailAspektId 829 , prtProtokollId = None ) 830 831 832 833 # 834 # -- Typ des Protokolleintrages ------------------------------------------ 835 # 836 elif( self.ComboBox__Aspekt.wxObjekt.gibDbId() == 5 ) : 837 838 self.__dbVerbindung__.selektiere__prtTyp__Sprache( 839 TreeCtrlErg_ComboBoxErg = self.TreeCtrlErg__FilterkritVerf.wxObjekt 840 , prtTypAspekt = "PE" 841 , hatAlle = True ) 842 843 844 845 846 847 848 # 849 # -- Verfügbare Protokolleinträge auslesen ---------------------------------- 850 # 851 elif( self.ComboBox__Aspekt.wxObjekt.gibDbId() == 6 ) : 852 853 self.__dbVerbindung__.selektiere__prtProtokoll__Sprache__Projekt( 854 TreeCtrlErg = self.TreeCtrlErg__FilterkritVerf.wxObjekt 855 , istGefProt = True 856 , prtTypId = detailAspektId 857 , prtProtokollId = None ) 858 859 860 861 # 862 # -- Typ des Dokumentes ------------------------------------------ 863 # 864 elif( self.ComboBox__Aspekt.wxObjekt.gibDbId() == 7 ) : 865 866 self.__dbVerbindung__.selektiere__dokTyp( TreeCtrlErg_ComboBoxErg = self.TreeCtrlErg__FilterkritVerf.wxObjekt ) 867 868 869 870 # 871 # -- Verfügbare Dokumente auslesen ------------------------------------------ 872 # 873 elif( self.ComboBox__Aspekt.wxObjekt.gibDbId() == 8 ) : 874 875 self.__dbVerbindung__.selektiere__dokDoku__Sprache__Projekt( 876 TreeCtrlErg_ListBoxErg = self.TreeCtrlErg__FilterkritVerf.wxObjekt 877 , dokTypId = detailAspektId ) 878 879 880 881 # 882 # -- Baum anzeigen ---------------------------------------------------------- 883 # 884 self.TreeCtrlErg__FilterkritVerf.wxObjekt.erzeugeBaum() 885 self.TreeCtrlErg__FilterkritVerf.wxObjekt.markiereWert() 886 887 888 889 # 890 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 891 # -- ausgewertet werden kann -------------------------- 892 # 893 if( ereignis != None ) : ereignis.Skip( skip = True )
894 895 896 897 898 899 # 900 # ------------------------------------------------------------------------------------ 901 # -- Filterkriterium entfernen ------------------------------------------ 902 # ------------------------------------------------------------------------------------ 903 #
904 - def __ereignisFilterkriteriumEntfernen__( self, ereignis = None ):
905 """ 906 Methode die aufgerufen wird, um das aktelle Filterkriterium zu entfernen. 907 908 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 909 @type ereignis: C{wx - Ereignisobjekt} 910 """ 911 912 # 913 # -- Hauptknoten dürfen nicht ausgewählt werden -------------------------- 914 # 915 if( ereignis.GetEventObject().istHauptknoten() ) : 916 917 # 918 # -- Das Ereignis weiterreichen, damit es weiter ------------------ 919 # -- ausgewertet werden kann ------------------ 920 # 921 if( ereignis != None ) : ereignis.Skip( skip = True ) 922 return 923 924 925 926 # 927 # -- aktuelles Filterkriterium entfernen ---------------------------------- 928 # 929 del self.__dbVerbindung__.filter__zusKrit[ereignis.GetEventObject().gibDbId()] 930 931 932 933 # 934 # -- Baum der Filterkriterien aktualisieren ---------------------------------- 935 # 936 self.__filterkriterienDarstellen__() 937 938 939 940 # 941 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 942 # -- ausgewertet werden kann -------------------------- 943 # 944 if( ereignis != None ) : ereignis.Skip( skip = True )
945 946 947 948 949 950 # 951 # ------------------------------------------------------------------------------------ 952 # -- Filterkriterium setzen ------------------------------------------ 953 # ------------------------------------------------------------------------------------ 954 #
955 - def __ereignisFilterkriteriumSetzen__( self, ereignis = None ):
956 """ 957 Methode die aufgerufen wird, um das aktelle Filterkriterium zu setzen. 958 959 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 960 @type ereignis: C{wx - Ereignisobjekt} 961 """ 962 963 # 964 # -- Hauptknoten dürfen nicht ausgewählt werden -------------------------- 965 # 966 if( ereignis.GetEventObject().istHauptknoten() ) : 967 968 # 969 # -- Das Ereignis weiterreichen, damit es weiter ------------------ 970 # -- ausgewertet werden kann ------------------ 971 # 972 if( ereignis != None ) : ereignis.Skip( skip = True ) 973 return 974 975 976 977 # 978 # -- Filterkriterium bilden -------------------------------------------------- 979 # 980 tmp = ereignis.GetEventObject().gibBezeichnungHauptknoten() + '|' 981 982 if( ereignis.GetEventObject().gibBezeichnungHauptknoten() == HK_STR ) : 983 984 lfdNr = zk.gibListeTeilmenge( liste = self.__dbVerbindung__.daten__strStrkt__Sprache__Projekt 985 , spalte = 1 ).index( ereignis.GetEventObject().gibDbId() ) 986 987 tmp += self.__dbVerbindung__.daten__strStrkt__Sprache__Projekt[lfdNr][3] + ': ' 988 989 tmp += ereignis.GetEventObject().GetItemText( item = ereignis.GetEventObject().GetSelection() ) 990 991 992 # 993 # -- Filterkriterium nicht mehrfach übernehmen -------------------------- 994 # 995 if( tmp in self.__dbVerbindung__.filter__zusKrit ) : 996 997 998 # 999 # -- Das Ereignis weiterreichen, damit es weiter ------------------ 1000 # -- ausgewertet werden kann ------------------ 1001 # 1002 if( ereignis != None ) : ereignis.Skip( skip = True ) 1003 return 1004 1005 1006 1007 # 1008 # -- Filterkriterium übernehmen ------------------------------------------ 1009 # 1010 self.__dbVerbindung__.filter__zusKrit[ tmp ] = ereignis.GetEventObject().gibDbId() 1011 1012 1013 1014 # 1015 # -- Filterkriterien als Baum darstellen ---------------------------------- 1016 # 1017 self.__filterkriterienDarstellen__() 1018 1019 1020 1021 # 1022 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 1023 # -- ausgewertet werden kann -------------------------- 1024 # 1025 if( ereignis != None ) : ereignis.Skip( skip = True )
1026 1027 1028 1029 1030 # 1031 # ------------------------------------------------------------------------------------ 1032 # -- Projekt / Sprache wurde gewählt ---------------------------------- 1033 # ------------------------------------------------------------------------------------ 1034 #
1035 - def __ereignisProjekteSprache__( self, ereignis = None ):
1036 """ 1037 Methode die aufgerufen wird, wenn ein Projekt / Sprache ausgewählt wurde. 1038 1039 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 1040 @type ereignis: C{wx - Ereignisobjekt} 1041 """ 1042 1043 # 1044 # -- gewähltes Projekt übernehmen ------------------------------------------ 1045 # 1046 if( ereignis.GetId() == self.ComboBox__Projekt.wxObjekt.GetId() ) : 1047 1048 self.__dbVerbindung__.filter__prj_projekte_id = self.ComboBox__Projekt.wxObjekt.gibDbId() 1049 1050 1051 1052 # 1053 # -- gewählte Sprache auswählen ------------------------------------------ 1054 # 1055 elif( ereignis.GetId() == self.ComboBox__Sprache.wxObjekt.GetId() ) : 1056 1057 self.__dbVerbindung__.filter__spr_sprachen_id = self.ComboBox__Sprache.wxObjekt.gibDbId() 1058 1059 1060 # 1061 # -- Aspekt zurücksetzen -------------------------------------------------- 1062 # 1063 self.ComboBox__Aspekt.wxObjekt.selektiereWert( 0 ) 1064 self.ComboBox__AspektDetail.wxObjekt.selektiereWert( 0 ) 1065 self.TreeCtrlErg__FilterkritVerf.wxObjekt.loescheAlles() 1066 self.ComboBox__AspektDetail.Enable( False ) 1067 self.TreeCtrlErg__FilterkritVerf.Enable( False ) 1068 self.ComboBox__AspektDetail.wxText.SetLabel( label = "---" ) 1069 self.TreeCtrlErg__FilterkritVerf.wxText.SetLabel( label = "---" ) 1070 1071 1072 # 1073 # -- Filterkriterien zurücksetzen ------------------------------------------ 1074 # 1075 self.__dbVerbindung__.filter__zusKrit = dict() 1076 self.__filterkriterienDarstellen__() 1077 1078 1079 1080 # 1081 # -- Permanente Datenstrukturen in >Datenbank()< aktualisieren ---------- 1082 # 1083 self.__dbVerbindung__.aktualisierePermanenteDatenstrukturen( Fortschritt = self.__Fortschritt__ ) 1084 1085 1086 # 1087 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 1088 # -- ausgewertet werden kann -------------------------- 1089 # 1090 if( ereignis != None ) : ereignis.Skip( skip = True )
1091 1092 1093 1094 1095 1096 # 1097 # ------------------------------------------------------------------------------------ 1098 # -- Filterkriterien als Baum darstellen ---------------------------------- 1099 # ------------------------------------------------------------------------------------ 1100 #
1101 - def __filterkriterienDarstellen__( self ):
1102 """ 1103 Methode die aufgerufen wird, um die Filterkriterien als Baum darzustellen. 1104 """ 1105 1106 # 1107 # -- Filterkriterien sortieren ------------------------------------------ 1108 # 1109 listeFilterkriterien = self.__dbVerbindung__.filter__zusKrit.keys() 1110 listeFilterkriterien.sort() 1111 1112 1113 1114 # 1115 # -- alten Baum löschen -------------------------------------------------- 1116 # 1117 self.TreeCtrlErg__Filterkrit.wxObjekt.loescheAlles() 1118 1119 1120 1121 # 1122 # -- Einträge übernehmen -------------------------------------------------- 1123 # 1124 aktFKrit = None 1125 for i in range( len( listeFilterkriterien ) ): 1126 1127 tmp = listeFilterkriterien[i].partition('|')[0] 1128 1129 # 1130 # -- Hauptknoten -------------------------------------------------- 1131 # 1132 if( tmp != aktFKrit ) : 1133 1134 self.TreeCtrlErg__Filterkrit.wxObjekt.nimmHauptknoten( wert = tmp, bezHK = tmp ) 1135 aktFKrit = tmp 1136 1137 # 1138 # -- Einträge -------------------------------------------------- 1139 # 1140 self.TreeCtrlErg__Filterkrit.wxObjekt.nimmWert( wert = listeFilterkriterien[i].partition('|')[2] 1141 , wertId = listeFilterkriterien[i] 1142 , dbId = listeFilterkriterien[i] ) 1143 1144 1145 1146 # 1147 # -- Baum anzeigen ---------------------------------------------------------- 1148 # 1149 self.TreeCtrlErg__Filterkrit.wxObjekt.erzeugeBaum() 1150 self.TreeCtrlErg__Filterkrit.wxObjekt.markiereWert()
1151