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  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 wxuniversal import HK_ANM 
  42  from wxuniversal import HK_DOK 
  43  from wxuniversal import HK_INTERNFIRMA 
  44  from wxuniversal import HK_PE 
  45  from wxuniversal import HK_PETYP 
  46  from wxuniversal import HK_SIANF 
  47  from wxuniversal import HK_SIANFTYP 
  48  from wxuniversal import HK_STR 
  49  from wxuniversal import HK_STRBEZ 
  50   
  51  from wxuniversal import ComboBoxErg                             # wx.ComboBox mit Ergänzungen 
  52  from wxuniversal import DialogErg                               # wx.Dialog mit Ergänzungen 
  53  from wxuniversal import farbeAuswahlListe                       # Farbe der Objekte, die Vorgabewerte enthalten 
  54  from wxuniversal import FlexGridSizerWxObjTitel                 # wxObjekt mit Titel 
  55  from wxuniversal import TreeCtrlErg                             # TreeCtrl mit Ergänzungen 
  56   
  57   
  58   
  59   
  60   
  61   
  62  # 
  63  # 
  64  # 
  65  # ---------------------------------------------------------------------------------------- 
  66  # ---------------------------------------------------------------------------------------- 
  67  # --                                    -------------------------------------------------- 
  68  # --    Offene Punkte / Aufgaben        -------------------------------------------------- 
  69  # --                                    -------------------------------------------------- 
  70  # ---------------------------------------------------------------------------------------- 
  71  # ---------------------------------------------------------------------------------------- 
  72  # 
  73  #  
  74  #       -- siehe TODO 'bearbeitedokumente.py' -- 
  75  # 
  76  # 
  77  # ---------------------------------------------------------------------------------------- 
  78  # 
  79   
  80   
  81   
  82   
  83   
  84  # 
  85  # ---------------------------------------------------------------------------------------- 
  86  # ---------------------------------------------------------------------------------------- 
  87  # --                                    -------------------------------------------------- 
  88  # --    Eingabeformular 'Filter'        -------------------------------------------------- 
  89  # --                                    -------------------------------------------------- 
  90  # ---------------------------------------------------------------------------------------- 
  91  # ---------------------------------------------------------------------------------------- 
  92  # 
93 -class Filter( DialogErg ):
94 95 """ 96 Klasse zur Abbildung des Eingabeformulars 'Filter'. 97 """ 98 99 # 100 # ------------------------------------------------------------------------------------ 101 # -- Eingabeformular initialisieren ---------------------------------- 102 # ------------------------------------------------------------------------------------ 103 #
104 - def __init__( self, parent, Statusleiste, dbVerbindung ):
105 DialogErg.__init__( self 106 , parent = parent 107 , title = u"Filter" 108 , dbVerbindung = dbVerbindung ) 109 110 # 111 # -- Namen setzen (somit Klasse / Objekt erkennen) -------------------------- 112 # 113 self.SetName( name = "Filter" ) 114 115 116 # 117 # -- Randbedingungen übernehmen ------------------------------------------ 118 # 119 self.Statusleiste = Statusleiste 120 self.dbVerbindung = dbVerbindung 121 122 123 # 124 # -------------------------------------------------------------------------------- 125 # -- Eingabeobjekte anlegen -------------------------------------------------- 126 # -------------------------------------------------------------------------------- 127 # 128 129 # 130 # -- Projekt -------------------------------------------------- 131 # -- Objekt-Id = -206 -------------------------------------------------- 132 # 133 self.ComboBox__Projekt = FlexGridSizerWxObjTitel( parent = self 134 , wxObj = ComboBoxErg( self 135 , choices = [] 136 , style = wx.CB_DROPDOWN|wx.CB_READONLY|wx.CB_SORT 137 , Statusleiste = self.Statusleiste ) 138 , orient = wx.VERTICAL 139 , titel = u"Projekt:" ) 140 self.ComboBox__Projekt.wxObjekt.nimmWerteStatusleiste( 141 DBSpNameErlaeuterung = u"Die Datensätze auf das Projekt einschränken." 142 , DBSpName = "prj.projekte.id" ) 143 144 self.dbVerbindung.init__prjProjekte( wxComboBox = self.ComboBox__Projekt.wxObjekt ) 145 146 self.ComboBox__Projekt.wxObjekt.selektiereWert( clientDataId = self.dbVerbindung.filter__prj_projekte_id ) 147 148 self.Bind( wx.EVT_COMBOBOX 149 , self.__ereignisProjekteSprache__ 150 , self.ComboBox__Projekt.wxObjekt ) 151 152 153 154 # 155 # -- Sprache ---------------------------------------------------------- 156 # -- Objekt-Id = - -------------------------------------------------- 157 # 158 self.ComboBox__Sprache = FlexGridSizerWxObjTitel( parent = self 159 , wxObj = ComboBoxErg( self 160 , choices = [] 161 , style = wx.CB_DROPDOWN|wx.CB_READONLY|wx.CB_SORT 162 , Statusleiste = self.Statusleiste ) 163 , orient = wx.VERTICAL 164 , titel = u"Sprache:" ) 165 self.ComboBox__Sprache.wxObjekt.nimmWerteStatusleiste( 166 DBSpNameErlaeuterung = u"Die Werte in der gewählten Sprache ausgeben." 167 , DBSpName = "spr.sprachen.id" ) 168 169 self.dbVerbindung.init__sprSprachen( self.ComboBox__Sprache.wxObjekt ) 170 171 self.ComboBox__Sprache.wxObjekt.selektiereWert( clientDataId = self.dbVerbindung.filter__spr_sprachen_id ) 172 173 self.Bind( wx.EVT_COMBOBOX 174 , self.__ereignisProjekteSprache__ 175 , self.ComboBox__Sprache.wxObjekt ) 176 177 178 179 # 180 # -- Aspekt -------------------------------------------------- 181 # -- Objekt-Id = -------------------------------------------------- 182 # 183 self.ComboBox__Aspekt = FlexGridSizerWxObjTitel( parent = self 184 , wxObj = ComboBoxErg( self 185 , choices = [] 186 , style = wx.CB_DROPDOWN|wx.CB_READONLY|wx.CB_SORT 187 , Statusleiste = self.Statusleiste ) 188 , orient = wx.VERTICAL 189 , titel = u"Aspekt:" ) 190 self.ComboBox__Aspekt.wxObjekt.nimmWerteStatusleiste( 191 DBSpNameErlaeuterung = u"Den Aspekt der weiterführenden Einschränkung wählen." 192 , DBSpName = "..." ) 193 194 for i in range( len( self.dbVerbindung.filter__bezeichnungAspekte ) ): 195 196 self.ComboBox__Aspekt.wxObjekt.nimmWert( wert = self.dbVerbindung.filter__bezeichnungAspekte[i] 197 , clientData = [i] ) 198 199 self.ComboBox__Aspekt.wxObjekt.selektiereWert( clientDataId = 0 ) 200 201 self.Bind( wx.EVT_COMBOBOX 202 , self.__ereignisAspekt__ 203 , self.ComboBox__Aspekt.wxObjekt ) 204 205 206 207 # 208 # -- Filterkriterien -------------------------------------------------- 209 # -- Objekt-Id = - -------------------------------------------------- 210 # 211 self.TreeCtrlErg__Filterkrit = FlexGridSizerWxObjTitel( parent = self 212 , wxObj = TreeCtrlErg( self 213 , Statusleiste = self.Statusleiste ) 214 , titel = "Filterkriterien:" 215 , orient = wx.VERTICAL ) 216 self.TreeCtrlErg__Filterkrit.wxObjekt.nimmWerteStatusleiste( 217 DBSpNameErlaeuterung = u"Die aktuell gesetzten Filterkriterien." 218 , DBSpName = "..." ) 219 220 self.TreeCtrlErg__Filterkrit.wxObjekt.SetToolTip(wx.ToolTip( u"Doppelklick:\nEintrag aus der Liste der Filterkriterien entfernen" )) 221 222 self.TreeCtrlErg__Filterkrit.wxObjekt.SetMinSize( ( 400, 350 ) ) 223 224 self.__filterkriterienDarstellen__() 225 226 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 227 , self.__ereignisFilterkriteriumEntfernen__ 228 , self.TreeCtrlErg__Filterkrit.wxObjekt ) 229 230 231 232 # 233 # -- Aspekt (Detail) ---------------------------------- 234 # -- ---------------------------------- 235 # -- Struktur ---------------------------------- 236 # -- Typ der Sicherheitsanforderung ---------------------------------- 237 # -- Typ des Protokolleintrages ---------------------------------- 238 # -- Ersteller (Firma) ---------------------------------- 239 # -- ---------------------------------- 240 # -- Objekt-Id = - -------------------------------------------------- 241 # 242 self.ComboBox__AspektDetail = FlexGridSizerWxObjTitel( parent = self 243 , wxObj = ComboBoxErg( self 244 , choices = [] 245 , style = wx.CB_DROPDOWN|wx.CB_READONLY|wx.CB_SORT 246 , Statusleiste = self.Statusleiste ) 247 , orient = wx.VERTICAL 248 , titel = u"---:" ) 249 self.ComboBox__AspektDetail.wxObjekt.nimmWerteStatusleiste( 250 DBSpNameErlaeuterung = u"Den Aspekt der weiterführenden Einschränkung wählen." 251 , DBSpName = "..." ) 252 253 self.ComboBox__AspektDetail.Enable( False ) 254 255 self.Bind( wx.EVT_COMBOBOX 256 , self.__ereignisAspektDetail__ 257 , self.ComboBox__AspektDetail.wxObjekt ) 258 259 260 261 # 262 # -- Filterkriterien (verfügbar) ------------------------------------------ 263 # -- ---------------------------------- 264 # -- Im Projekt Verfügbare Strukturpunkte ---------------------------------- 265 # -- ... Sicherheitsanforderungen ---------------------------------- 266 # -- ... Protokolleinträge ---------------------------------- 267 # -- ... Dokumente ---------------------------------- 268 # -- ---------------------------------- 269 # -- Objekt-Id = - -------------------------------------------------- 270 # 271 self.TreeCtrlErg__FilterkritVerf = FlexGridSizerWxObjTitel( parent = self 272 , wxObj = TreeCtrlErg( self 273 , Statusleiste = self.Statusleiste ) 274 , titel = "---:" 275 , orient = wx.VERTICAL ) 276 self.TreeCtrlErg__FilterkritVerf.wxObjekt.nimmWerteStatusleiste( 277 DBSpNameErlaeuterung = u"Die aktuell gesetzten Filterkriterien." 278 , DBSpName = "..." ) 279 280 self.TreeCtrlErg__FilterkritVerf.wxObjekt.SetToolTip(wx.ToolTip( u"Doppelklick:\nEintrag in die Liste der Filterkriterien übernehmen" )) 281 282 self.TreeCtrlErg__FilterkritVerf.wxObjekt.SetBackgroundColour( wx.NamedColour( farbeAuswahlListe ) ) 283 284 self.TreeCtrlErg__FilterkritVerf.wxObjekt.SetMinSize( ( 400, 300 ) ) 285 286 self.TreeCtrlErg__FilterkritVerf.Enable( False ) 287 288 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 289 , self.__ereignisFilterkriteriumSetzen__ 290 , self.TreeCtrlErg__FilterkritVerf.wxObjekt ) 291 292 293 294 295 # 296 # -- Nichtbenötigte Button ausblenden ---------------------------------- 297 # 298 self.Button__Verwerfen.Show( show = False ) 299 self.Button__Sichern.Show( show = False ) 300 301 302 303 304 # 305 # -- Layout festlegen ------------------ 306 # -- (Fenster später im >wx.SplitterWindow< darstellen ------------------ 307 # 308 309 # 310 # -- 1.) ------------------------------------------------------------------ 311 # 312 FlexGridSizerSplit = wx.FlexGridSizer( rows = 1, cols = 2, vgap = 5, hgap = 5 ) 313 FlexGridSizerSplit.AddGrowableCol( idx = 0, proportion = 0 ) 314 FlexGridSizerSplit.AddGrowableCol( idx = 1, proportion = 0 ) 315 316 FlexGridSizerSplit.Add( self.ComboBox__Projekt 317 , flag = wx.EXPAND 318 , border = 5 ) 319 320 FlexGridSizerSplit.Add( self.ComboBox__Sprache 321 , flag = wx.EXPAND 322 , border = 5 ) 323 324 325 326 FlexGridSizer = wx.FlexGridSizer( rows = 3, cols = 1, vgap = 10, hgap = 10 ) 327 FlexGridSizer.AddGrowableCol( idx = 0, proportion = 0 ) 328 FlexGridSizer.AddGrowableRow( idx = 2, proportion = 1 ) 329 330 FlexGridSizer.Add( FlexGridSizerSplit 331 , flag = wx.LEFT|wx.TOP|wx.RIGHT|wx.EXPAND 332 , border = 5 ) 333 334 FlexGridSizer.Add( self.ComboBox__Aspekt 335 , flag = wx.LEFT|wx.RIGHT|wx.EXPAND 336 , border = 5 ) 337 338 339 # 340 # -- 2.) ------------------------------------------------------------------ 341 # 342 FlexGridSizerVerf = wx.FlexGridSizer( rows = 2, cols = 1, vgap = 10, hgap = 10 ) 343 FlexGridSizerVerf.AddGrowableCol( idx = 0, proportion = 0 ) 344 FlexGridSizerVerf.AddGrowableRow( idx = 1, proportion = 0 ) 345 346 FlexGridSizerVerf.Add( self.ComboBox__AspektDetail 347 , flag = wx.EXPAND 348 , border = 5 ) 349 350 FlexGridSizerVerf.Add( self.TreeCtrlErg__FilterkritVerf 351 , flag = wx.EXPAND 352 , border = 5 ) 353 354 355 # 356 # -- 3.) ------------------------------------------------------------------ 357 # 358 FlexGridSizerSplit = wx.FlexGridSizer( rows = 1, cols = 3, vgap = 5, hgap = 5 ) 359 FlexGridSizerSplit.AddGrowableCol( idx = 0, proportion = 0 ) 360 FlexGridSizerSplit.AddGrowableCol( idx = 2, proportion = 0 ) 361 FlexGridSizerSplit.AddGrowableRow( idx = 0, proportion = 1 ) 362 363 FlexGridSizerSplit.Add( self.TreeCtrlErg__Filterkrit 364 , flag = wx.EXPAND 365 , border = 5 ) 366 367 FlexGridSizerSplit.Add( wx.StaticLine( parent = self, style = wx.LI_VERTICAL ) 368 , flag = wx.EXPAND ) 369 370 371 FlexGridSizerSplit.Add( FlexGridSizerVerf 372 , flag = wx.EXPAND 373 , border = 5 ) 374 375 FlexGridSizer.Add( FlexGridSizerSplit 376 , flag = wx.LEFT|wx.BOTTOM|wx.RIGHT|wx.EXPAND 377 , border = 5 ) 378 379 380 381 # 382 # -- In das Eingabeformular übernehmen ---------------------------------- 383 # 384 self.nimmDialogElemente( FlexGridSizer ) 385 386 387 # 388 # -- Button 'Änderungen verwerfen' / 'Änderungen sichern' deaktivieren -- 389 # 390 self.Button__Verwerfen.Enable( False ) 391 self.Button__Sichern.Enable( False )
392 393 394 395 396 397 398 # 399 # ------------------------------------------------------------------------------------ 400 # -- Filterkriterien aktivieren ------------------------------------------ 401 # ------------------------------------------------------------------------------------ 402 #
403 - def __ereignisAspekt__( self, ereignis = None ):
404 """ 405 Methode die aufgerufen wird, um die anderen Eingabefelder freizuschalten. 406 407 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 408 @type ereignis: C{wx - Ereignisobjekt} 409 """ 410 411 # 412 # -- Liste der Detailaspekte leeren (Notlösung) -------------------------- 413 # -- Liste der verfügbaren Filterkriterien leeren -------------------------- 414 # 415 self.ComboBox__AspektDetail.wxObjekt.loescheAlles() 416 self.ComboBox__AspektDetail.wxObjekt.nimmWert( wert = "", clientData = [0] ) 417 self.ComboBox__AspektDetail.wxObjekt.selektiereWert( clientDataId = 0 ) 418 self.ComboBox__AspektDetail.wxObjekt.loescheAlles() 419 420 self.TreeCtrlErg__FilterkritVerf.wxObjekt.loescheAlles() 421 422 423 424 # 425 # -- Filterkriterien (de)aktivieren ---------------------------------- 426 # 427 self.ComboBox__AspektDetail.Enable( False ) 428 self.TreeCtrlErg__FilterkritVerf.Enable( True ) 429 430 431 432 # 433 # -- Titel der Filterkriterien setzen ---------------------------------- 434 # 435 titelAspektDetail = "---:" 436 titelFilterkritVerf = "---:" 437 438 439 440 # 441 # -- Routine verlassen, wenn >-- Kein Aspekt gewählt --< ist ---------- 442 # 443 if( ereignis.GetEventObject().gibClientData() == 0 ) : 444 445 # 446 # -- Titel der Filterkriterien setzen -------------------------- 447 # 448 self.ComboBox__AspektDetail.wxText.SetLabel( label = titelAspektDetail ) 449 self.TreeCtrlErg__FilterkritVerf.wxText.SetLabel( label = titelFilterkritVerf ) 450 451 self.TreeCtrlErg__FilterkritVerf.Enable( False ) 452 453 # 454 # -- Routine verlassen ------------------------------------------ 455 # 456 return 457 458 459 460 # 461 # -- Strukturbezeichnung -------------------------------------------------- 462 # 463 elif( ereignis.GetEventObject().gibClientData() == 1 ) : 464 465 # 466 # -- Titel der Filterkriterien setzen -------------------------- 467 # 468 titelFilterkritVerf = "Verfügbare Strukturbezeichnungen:" 469 470 471 472 # 473 # -- Strukturpunkt ---------------------------------------------------------- 474 # 475 if( ereignis.GetEventObject().gibClientData() == 2 ) : 476 477 # 478 # -- Strukturbezeichnungen auslesen ---------------------------------- 479 # 480 self.dbVerbindung.selektiere__strName( TreeCtrlErg_ComboBoxErg = self.ComboBox__AspektDetail.wxObjekt ) 481 482 483 # 484 # -- Titel der Filterkriterien setzen -------------------------- 485 # 486 titelAspektDetail = "Strukturbezeichnung:" 487 titelFilterkritVerf = "Im Projekt Verfügbare Strukturpunkte:" 488 489 490 # 491 # -- Filterkriterien aktivieren ---------------------------------- 492 # 493 self.ComboBox__AspektDetail.Enable( True ) 494 495 496 497 # 498 # -- Typ der Sicherheitsanforderung ------------------------------------------ 499 # 500 elif( ereignis.GetEventObject().gibClientData() == 3 ) : 501 502 # 503 # -- Titel der Filterkriterien setzen -------------------------- 504 # 505 titelFilterkritVerf = "Typen der Sicherheitsanforderungen" 506 507 508 509 # 510 # -- Sicherheitsanforderung -------------------------------------------------- 511 # 512 elif( ereignis.GetEventObject().gibClientData() == 4 ) : 513 514 # 515 # -- Typen der Sicherheitsanforderungen auslesen ------------------ 516 # 517 self.dbVerbindung.selektiere__prtTyp__Sprache( TreeCtrlErg_ComboBoxErg = self.ComboBox__AspektDetail.wxObjekt 518 , prtTypAspekt = "SF" 519 , hatAlle = True ) 520 521 522 # 523 # -- Titel der Filterkriterien setzen -------------------------- 524 # 525 titelAspektDetail = "Typ der Sicherheitsanforderung:" 526 titelFilterkritVerf = "Im Projekt Verfügbare Sicherheitsanforderungen:" 527 528 529 # 530 # -- Filterkriterien aktivieren ---------------------------------- 531 # 532 self.ComboBox__AspektDetail.Enable( True ) 533 534 535 536 # 537 # -- Typ des Protokolleintrages ------------------------------------------ 538 # 539 elif( ereignis.GetEventObject().gibClientData() == 5 ) : 540 541 # 542 # -- Titel der Filterkriterien setzen -------------------------- 543 # 544 titelFilterkritVerf = "Typ der Protokolleinträge" 545 546 547 548 # 549 # -- Protokolleintrag -------------------------------------------------- 550 # 551 elif( ereignis.GetEventObject().gibClientData() == 6 ) : 552 553 # 554 # -- Typ der Protokolleinträge auselesen -------------------------- 555 # 556 self.dbVerbindung.selektiere__prtTyp__Sprache( TreeCtrlErg_ComboBoxErg = self.ComboBox__AspektDetail.wxObjekt 557 , prtTypAspekt = "PE" 558 , hatAlle = True ) 559 560 561 # 562 # -- Titel der Filterkriterien setzen -------------------------- 563 # 564 titelAspektDetail = "Typ des Protokolleintrages:" 565 titelFilterkritVerf = "Im Projekt Verfügbare Protokolleinträge:" 566 567 568 # 569 # -- Filterkriterien aktivieren ---------------------------------- 570 # 571 self.ComboBox__AspektDetail.Enable( True ) 572 573 574 575 # 576 # -- Dokumentersteller (Firma) ------------------------------------------ 577 # 578 elif( ereignis.GetEventObject().gibClientData() == 7 ) : 579 580 # 581 # -- Titel der Filterkriterien setzen -------------------------- 582 # 583 titelFilterkritVerf = "Dokumentersteller (Firmen)" 584 585 586 587 # 588 # -- Dokument ---------------------------------------------------------- 589 # 590 elif( ereignis.GetEventObject().gibClientData() == 8 ) : 591 592 # 593 # -- Firmen auslesen -------------------------------------------------- 594 # 595 self.dbVerbindung.selektiere__internFirma( TreeCtrlErg_ComboBoxErg = self.ComboBox__AspektDetail.wxObjekt ) 596 597 598 # 599 # -- Titel der Filterkriterien setzen -------------------------- 600 # 601 titelAspektDetail = "Dokumentersteller (Firma):" 602 titelFilterkritVerf = "Dokumente:" 603 604 605 # 606 # -- Filterkriterien aktivieren ---------------------------------- 607 # 608 self.ComboBox__AspektDetail.Enable( True ) 609 610 611 612 # 613 # -- Liste der verfügbaren Filterkriterien füllen -------------------------- 614 # 615 self.__ereignisAspektDetail__() 616 617 618 619 # 620 # -- Titel der Filterkriterien setzen ---------------------------------- 621 # 622 self.ComboBox__AspektDetail.wxText.SetLabel( label = titelAspektDetail ) 623 self.TreeCtrlErg__FilterkritVerf.wxText.SetLabel( label = titelFilterkritVerf )
624 625 626 627 628 629 630 # 631 # ------------------------------------------------------------------------------------ 632 # -- Filterkriterien aktivieren ------------------------------------------ 633 # ------------------------------------------------------------------------------------ 634 #
635 - def __ereignisAspektDetail__( self, ereignis = None ):
636 """ 637 Methode die aufgerufen wird, um die verfügbaren Filterkriterien einzulesen. 638 639 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 640 @type ereignis: C{wx - Ereignisobjekt} 641 """ 642 643 # 644 # -- Liste der verfügbaren Filterkriterien leeren -------------------------- 645 # 646 self.TreeCtrlErg__FilterkritVerf.wxObjekt.loescheAlles() 647 648 649 650 # 651 # -- Ein Detailaspekt wurde gewählt ------------------------------------------ 652 # 653 detailAspektId = None 654 if( ereignis is not None ) : 655 656 if( ereignis.GetEventObject().gibClientData() > 0 ) : 657 658 detailAspektId = [ereignis.GetEventObject().gibClientData()] 659 660 661 662 # 663 # -- Strukturbezeichnung -------------------------------------------------- 664 # 665 elif( self.ComboBox__Aspekt.wxObjekt.gibClientData() == 1 ) : 666 667 self.dbVerbindung.selektiere__strName( TreeCtrlErg_ComboBoxErg = self.TreeCtrlErg__FilterkritVerf.wxObjekt ) 668 669 670 671 # 672 # -- Verfügbare Strukturpunkte auslesen ------------------ 673 # 674 if( self.ComboBox__Aspekt.wxObjekt.gibClientData() == 2 ) : 675 676 self.dbVerbindung.selektiere__strStrkt__Projekt__Sprache( 677 TreeCtrlErg = self.TreeCtrlErg__FilterkritVerf.wxObjekt 678 , strNameId = detailAspektId ) 679 680 681 682 # 683 # -- Typ der Sicherheitsanforderung ------------------------------------------ 684 # 685 elif( self.ComboBox__Aspekt.wxObjekt.gibClientData() == 3 ) : 686 687 self.dbVerbindung.selektiere__prtTyp__Sprache( 688 TreeCtrlErg_ComboBoxErg = self.TreeCtrlErg__FilterkritVerf.wxObjekt 689 , prtTypAspekt = "SF" 690 , hatAlle = True ) 691 692 693 694 695 # 696 # -- Verfügbare Sicherheitsanforderungen auslesen -------------------------- 697 # 698 elif( self.ComboBox__Aspekt.wxObjekt.gibClientData() == 4 ) : 699 700 self.dbVerbindung.selektiere__prtProtokoll__Projekt__Sprache( 701 TreeCtrlErg = self.TreeCtrlErg__FilterkritVerf.wxObjekt 702 , istGefProt = False 703 , prtTypId = detailAspektId 704 , prtProtokollId = None ) 705 706 707 708 # 709 # -- Typ des Protokolleintrages ------------------------------------------ 710 # 711 elif( self.ComboBox__Aspekt.wxObjekt.gibClientData() == 5 ) : 712 713 self.dbVerbindung.selektiere__prtTyp__Sprache( 714 TreeCtrlErg_ComboBoxErg = self.TreeCtrlErg__FilterkritVerf.wxObjekt 715 , prtTypAspekt = "PE" 716 , hatAlle = True ) 717 718 719 720 721 722 723 # 724 # -- Verfügbare Protokolleinträge auslesen ---------------------------------- 725 # 726 elif( self.ComboBox__Aspekt.wxObjekt.gibClientData() == 6 ) : 727 728 self.dbVerbindung.selektiere__prtProtokoll__Projekt__Sprache( 729 TreeCtrlErg = self.TreeCtrlErg__FilterkritVerf.wxObjekt 730 , istGefProt = True 731 , prtTypId = detailAspektId 732 , prtProtokollId = None ) 733 734 735 736 # 737 # -- Dokumentersteller (Firma) ------------------------------------------ 738 # 739 elif( self.ComboBox__Aspekt.wxObjekt.gibClientData() == 7 ) : 740 741 self.dbVerbindung.selektiere__internFirma( TreeCtrlErg_ComboBoxErg = self.TreeCtrlErg__FilterkritVerf.wxObjekt ) 742 743 744 745 # 746 # -- Verfügbare Dokumente auslesen ------------------------------------------ 747 # 748 elif( self.ComboBox__Aspekt.wxObjekt.gibClientData() == 8 ) : 749 750 self.dbVerbindung.init__dokDoku__Projekt__Sprache() 751 752 self.dbVerbindung.selektiere__dokDoku__Projekt__Sprache( 753 TreeCtrlErg_ListBoxErg = self.TreeCtrlErg__FilterkritVerf.wxObjekt 754 , internFirmaId = detailAspektId ) 755 756 757 758 # 759 # -- Baum anzeigen ---------------------------------------------------------- 760 # 761 self.TreeCtrlErg__FilterkritVerf.wxObjekt.erzeugeBaum() 762 self.TreeCtrlErg__FilterkritVerf.wxObjekt.markiereWert() 763 764 765 766 # 767 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 768 # -- ausgewertet werden kann -------------------------- 769 # 770 if( ereignis != None ) : ereignis.Skip( skip = True )
771 772 773 774 775 776 # 777 # ------------------------------------------------------------------------------------ 778 # -- Filterkriterium entfernen ------------------------------------------ 779 # ------------------------------------------------------------------------------------ 780 #
781 - def __ereignisFilterkriteriumEntfernen__( self, ereignis = None ):
782 """ 783 Methode die aufgerufen wird, um das aktelle Filterkriterium zu entfernen. 784 785 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 786 @type ereignis: C{wx - Ereignisobjekt} 787 """ 788 789 # 790 # -- Hauptknoten dürfen nicht ausgewählt werden -------------------------- 791 # 792 if( ereignis.GetEventObject().istHauptknoten() ) : 793 794 # 795 # -- Das Ereignis weiterreichen, damit es weiter ------------------ 796 # -- ausgewertet werden kann ------------------ 797 # 798 if( ereignis != None ) : ereignis.Skip( skip = True ) 799 return 800 801 802 803 # 804 # -- aktuelles Filterkriterium entfernen ---------------------------------- 805 # 806 del self.dbVerbindung.filter__zusKrit[ereignis.GetEventObject().GetPyData( ereignis.GetEventObject().GetSelection() )[0]] 807 808 809 810 # 811 # -- Baum der Filterkriterien aktualisieren ---------------------------------- 812 # 813 self.__filterkriterienDarstellen__() 814 815 816 817 # 818 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 819 # -- ausgewertet werden kann -------------------------- 820 # 821 if( ereignis != None ) : ereignis.Skip( skip = True )
822 823 824 825 826 827 # 828 # ------------------------------------------------------------------------------------ 829 # -- Filterkriterium setzen ------------------------------------------ 830 # ------------------------------------------------------------------------------------ 831 #
832 - def __ereignisFilterkriteriumSetzen__( self, ereignis = None ):
833 """ 834 Methode die aufgerufen wird, um das aktelle Filterkriterium zu setzen. 835 836 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 837 @type ereignis: C{wx - Ereignisobjekt} 838 """ 839 840 # 841 # -- Hauptknoten dürfen nicht ausgewählt werden -------------------------- 842 # 843 if( ereignis.GetEventObject().istHauptknoten() ) : 844 845 # 846 # -- Das Ereignis weiterreichen, damit es weiter ------------------ 847 # -- ausgewertet werden kann ------------------ 848 # 849 if( ereignis != None ) : ereignis.Skip( skip = True ) 850 return 851 852 853 854 # 855 # -- Filterkriterium bilden -------------------------------------------------- 856 # 857 tmp = ereignis.GetEventObject().gibBezeichnungHauptknoten() + '|' 858 859 if( ereignis.GetEventObject().gibBezeichnungHauptknoten() == HK_STR ) : 860 861 tmp += ereignis.GetEventObject().gibClientData()[2] + ': ' 862 863 tmp += ereignis.GetEventObject().GetItemText( item = ereignis.GetEventObject().GetSelection() ) 864 865 866 # 867 # -- Filterkriterium nicht mehrfach übernehmen -------------------------- 868 # 869 if( tmp in self.dbVerbindung.filter__zusKrit ) : 870 871 872 # 873 # -- Das Ereignis weiterreichen, damit es weiter ------------------ 874 # -- ausgewertet werden kann ------------------ 875 # 876 if( ereignis != None ) : ereignis.Skip( skip = True ) 877 return 878 879 880 881 # 882 # -- Filterkriterium übernehmen ------------------------------------------ 883 # 884 self.dbVerbindung.filter__zusKrit[ tmp ] = ereignis.GetEventObject().gibDbId() 885 886 887 888 # 889 # -- Filterkriterien als Baum darstellen ---------------------------------- 890 # 891 self.__filterkriterienDarstellen__() 892 893 894 895 # 896 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 897 # -- ausgewertet werden kann -------------------------- 898 # 899 if( ereignis != None ) : ereignis.Skip( skip = True )
900 901 902 903 904 # 905 # ------------------------------------------------------------------------------------ 906 # -- Projekt / Sprache wurde gewählt ---------------------------------- 907 # ------------------------------------------------------------------------------------ 908 #
909 - def __ereignisProjekteSprache__( self, ereignis = None ):
910 """ 911 Methode die aufgerufen wird, wenn ein Projekt / Sprache ausgewählt wurde. 912 913 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 914 @type ereignis: C{wx - Ereignisobjekt} 915 """ 916 917 # 918 # -- gewähltes Projekt übernehmen ------------------------------------------ 919 # 920 if( ereignis.GetId() == self.ComboBox__Projekt.wxObjekt.GetId() ) : 921 922 self.dbVerbindung.filter__prj_projekte_id = self.ComboBox__Projekt.wxObjekt.gibClientData() 923 924 925 926 # 927 # -- gewählte Sprache auswählen ------------------------------------------ 928 # 929 elif( ereignis.GetId() == self.ComboBox__Sprache.wxObjekt.GetId() ) : 930 931 self.dbVerbindung.filter__spr_sprachen_id = self.ComboBox__Sprache.wxObjekt.gibClientData() 932 933 934 # 935 # -- Aspekt zurücksetzen -------------------------------------------------- 936 # 937 self.ComboBox__Aspekt.wxObjekt.selektiereWert( clientDataId = 0 ) 938 self.ComboBox__AspektDetail.wxObjekt.selektiereWert( clientDataId = 0 ) 939 self.TreeCtrlErg__FilterkritVerf.wxObjekt.loescheAlles() 940 self.ComboBox__AspektDetail.Enable( False ) 941 self.TreeCtrlErg__FilterkritVerf.Enable( False ) 942 self.ComboBox__AspektDetail.wxText.SetLabel( label = "---:" ) 943 self.TreeCtrlErg__FilterkritVerf.wxText.SetLabel( label = "---:" ) 944 945 946 # 947 # -- Filterkriterien zurücksetzen ------------------------------------------ 948 # 949 self.dbVerbindung.filter__zusKrit = dict() 950 self.__filterkriterienDarstellen__() 951 952 953 954 # 955 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 956 # -- ausgewertet werden kann -------------------------- 957 # 958 if( ereignis != None ) : ereignis.Skip( skip = True )
959 960 961 962 963 964 # 965 # ------------------------------------------------------------------------------------ 966 # -- Filterkriterien als Baum darstellen ---------------------------------- 967 # ------------------------------------------------------------------------------------ 968 #
969 - def __filterkriterienDarstellen__( self ):
970 """ 971 Methode die aufgerufen wird, um die Filterkriterien als Baum darzustellen. 972 """ 973 974 # 975 # -- Filterkriterien sortieren ------------------------------------------ 976 # 977 listeFilterkriterien = self.dbVerbindung.filter__zusKrit.keys() 978 listeFilterkriterien.sort() 979 980 981 982 # 983 # -- alten Baum löschen -------------------------------------------------- 984 # 985 self.TreeCtrlErg__Filterkrit.wxObjekt.loescheAlles() 986 987 988 989 # 990 # -- Einträge übernehmen -------------------------------------------------- 991 # 992 aktFKrit = None 993 for i in range( len( listeFilterkriterien ) ): 994 995 tmp = listeFilterkriterien[i].partition('|')[0] 996 997 # 998 # -- Hauptknoten -------------------------------------------------- 999 # 1000 if( tmp != aktFKrit ) : 1001 1002 self.TreeCtrlErg__Filterkrit.wxObjekt.nimmHauptknoten( wert = tmp, bezHK = tmp ) 1003 aktFKrit = tmp 1004 1005 # 1006 # -- Einträge -------------------------------------------------- 1007 # 1008 self.TreeCtrlErg__Filterkrit.wxObjekt.nimmWert( wert = listeFilterkriterien[i].partition('|')[2] 1009 , wertId = listeFilterkriterien[i] 1010 , dbId = 0 ) 1011 1012 1013 1014 # 1015 # -- Baum anzeigen ---------------------------------------------------------- 1016 # 1017 self.TreeCtrlErg__Filterkrit.wxObjekt.erzeugeBaum() 1018 self.TreeCtrlErg__Filterkrit.wxObjekt.markiereWert()
1019