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

Source Code for Module vfhauptfenster

  1  # -*- coding: utf-8 -*- 
  2  # 
  3  # 
  4  #    filename:  vfhauptfenster.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  from wx.lib.wordwrap import wordwrap 
 41   
 42  from bearbeitedokumente import BearbeiteDokumente       # Eingabeformular für Dokumente 
 43  from filter import Filter                               # Eingabeformular für den Filter 
 44  from gefahrenanalyse import Gefahrenanalyse             # Eingabeformular 'Gefahrenanalyse' 
 45  from gefahrenprotokoll import Gefahrenprotokoll         # Eingabeformular 'Gefahrenprotokoll' 
 46  from wxuniversal import FlexGridSizerWxObjTitel         # wxObjekt mit Titel 
 47  from wxuniversal import GaugeErg                        # wx.Gauge mit Ergänzungen 
 48  from wxuniversal import ComboBoxErg                     # wx.ComboBox mit Ergänzungen 
 49  from wxuniversal import ListBoxErg                      # wx.ListBox mit Ergänzungen 
 50  from wxuniversal import TextCtrlErg                     # wx.TextCtrl mit Ergänzungen 
 51  from wxuniversal import TextCtrlErgSpW                  # TextCtrlErgSpW mit Ergänzungen 
 52  from progstart import ProgStart                         # Dialog 'Datenbankanmeldung' 
 53  from risikobewertung import Risikobewertung             # Eingabeformular 'Risikobewertung' 
 54  from risikominderung import Sicherheitsanforderungen    # Eingabeformular für PSAnf 
 55   
 56  from datenbank import Datenbank, Fehler                 # Datenbankzugriff, Datenbankvariablen 
 57   
 58  import sys                                              # Programmende >sys.exit()< 
 59  import getpass                                          # Benutzername >getuser()< 
 60   
 61   
 62   
 63   
 64  # 
 65  # 
 66  # 
 67  # ---------------------------------------------------------------------------------------- 
 68  # ---------------------------------------------------------------------------------------- 
 69  # --                                    -------------------------------------------------- 
 70  # --    Offene Punkte / Aufgaben        -------------------------------------------------- 
 71  # --                                    -------------------------------------------------- 
 72  # ---------------------------------------------------------------------------------------- 
 73  # ---------------------------------------------------------------------------------------- 
 74  # 
 75  #  
 76  #       -- siehe TODO 'vfhauptfenster.py' -- 
 77  # 
 78  # 
 79  # ---------------------------------------------------------------------------------------- 
 80  # 
 81   
 82   
 83   
 84   
 85  # 
 86  # 
 87  # 
 88  # ---------------------------------------------------------------------------------------- 
 89  # ---------------------------------------------------------------------------------------- 
 90  # --                    ------------------------------------------------------------------ 
 91  # --    Hauptfenster    ------------------------------------------------------------------ 
 92  # --                    ------------------------------------------------------------------ 
 93  # ---------------------------------------------------------------------------------------- 
 94  # ---------------------------------------------------------------------------------------- 
 95  # 
96 -class VFHauptfenster( wx.Frame ):
97 """ 98 Klasse, die das Hauptfenster der Benutzeroberfläche repräsentiert. 99 100 @raise IOError: Fehlermeldung und Programmende, wenn die Konfigurationsdatei '.wxvf' nicht geöffnet werden kann. 101 @raise Fehler: Fehlermeldung und Programmende, wenn die Datenbankverbindung nicht hergestellt werden kann. 102 """ 103 104 # 105 # ------------------------------------------------------------------------------------ 106 # -- Hauptfenster initialisieren ------------------------------------------ 107 # ------------------------------------------------------------------------------------ 108 #
109 - def __init__(self, *args, **kwds):
110 kwds["style"] = wx.DEFAULT_FRAME_STYLE 111 wx.Frame.__init__(self, *args, **kwds) 112 113 # 114 # -------------------------------------------------------------------------------- 115 # -- Namen setzen (somit Klasse / Objekt erkennen) -------------------------- 116 # -------------------------------------------------------------------------------- 117 # 118 self.SetName( name = "VFHauptfenster" ) 119 120 121 122 123 self.__dbVerbindung__ = None 124 125 126 127 128 # 129 # -------------------------------------------------------------------------------- 130 # -- Datenbankverbindung herstellen ------------------------------------------ 131 # -------------------------------------------------------------------------------- 132 # 133 134 # 135 # -- Konfigurationsdatei auslesen ------------------------------------------ 136 # 137 try: 138 confDatei=open('.wxvf', 'r') 139 except IOError: 140 dlg = wx.MessageDialog(self, 141 u"Die von 'wxvf' benötigte Konfigurationsdatei ist nicht vorhanden !\n\nBitte lege im Programmverzeichnis eine Textdatei mit dem Namen '.wxvf' an.\nBitte trage in der ersten Zeile im Format 'xxx.xxx.xxx.xxx' die IP-Adresse ein, über die der Datenbankserver (PostgreSQL) angesprochen werden kann (000.000.000.000 entspricht 'localhost').\nBitte trage in der zweiten Zeile den Datenbanknamen ein (maximal 25 Zeichen).\nIn der dritten Zeile kannst Du den Benutzernamen angeben (maximal 25 Zeichen).\n\n\'wxvf\' wird beendet." 142 , u"Fehlermeldung", wx.OK | wx.ICON_ERROR ) 143 dlg.ShowModal() 144 dlg.Destroy() 145 sys.exit() 146 147 148 # 149 # -- Die Zeichenbegrenzung soll vor 'Buffer Overflow' schützen: ---------- 150 # -- IP-Adresse (xxx.xxx.xxx.xxx) ---------- 151 # -- Datenbankname ---------- 152 # -- Datenbankbenutzername ---------- 153 # -- max. Fenstergröße ---------- 154 # -- 'wxvf.log' anlegen ? ---------- 155 # 156 hostaddr = confDatei.readline()[0:15].strip() 157 dbName = confDatei.readline()[0:25].strip() 158 dbBenutzerName = confDatei.readline()[0:25].strip() 159 schreibProtokollDatei = ( confDatei.readline()[0:4].strip() == 'True' ) 160 161 confDatei.close() 162 163 164 165 166 167 # 168 # -- Datenbankbenutzername / -kennwort eingeben -------------------------- 169 # 170 if( len( dbBenutzerName ) == 0 ) : dbBenutzerName = getpass.getuser() 171 172 dlg = ProgStart( self ) 173 dlg.CenterOnScreen() 174 dlg.text_ctrl_dbBenutzerName.ChangeValue( dbBenutzerName ) 175 if ( dlg.ShowModal() != wx.ID_OK ): 176 sys.exit() 177 178 dbBenutzerName = dlg.text_ctrl_dbBenutzerName.GetValue() 179 dbKennwort = dlg.text_ctrl_dbKennwort.GetValue() 180 dlg.Destroy() 181 182 183 184 # 185 # -- Verbindung zu 'vf' herstellen ------------------------------------------ 186 # 187 try: 188 self.__dbVerbindung__ = Datenbank( dbName, dbBenutzerName, dbKennwort, hostaddr ) 189 """ 190 @cvar: Datenbankobjekt, welches die Datenbankverbindung enthält. 191 @type: libpq - PgConnection 192 """ 193 194 except Fehler, msg: 195 dlg = wx.MessageDialog( self, str( msg ), 'Fehlermeldung', wx.OK|wx.ICON_ERROR ) 196 dlg.ShowModal() 197 dlg.Destroy() 198 sys.exit() 199 200 201 202 # 203 # -- Protokolldatei anlegen ------------------------------------------ 204 # 205 self.__dbVerbindung__.ProtokolldateiErzeugen( schreibProtokollDatei = schreibProtokollDatei ) 206 207 208 209 # 210 # -- Eigenschaften des Fensters setzen ---------------------------------- 211 # 212 self.SetTitle(u"wxvf - 'Virtuelles Fahrzeug'") 213 self.Maximize( True ) 214 self.CenterOnScreen() 215 216 217 218 # 219 # -------------------------------------------------------------------------------- 220 # -- Menüleiste ---------------------------------------------------------- 221 # -------------------------------------------------------------------------------- 222 # 223 self.hauptfenster_menubar = wx.MenuBar() 224 225 # 226 # -- Datei ------------------------------------------------------------------ 227 # 228 datei = wx.Menu() 229 datei.Append(102, u"&Speichern\tCtrl+S", u"Änderungen in der Datenbank ablegen", wx.ITEM_NORMAL) 230 datei.AppendSeparator() 231 datei.Append(103, u"&Beenden\tCtrl+B", u"Die Benutzeroberfläche 'wxvf' beenden.", wx.ITEM_NORMAL) 232 self.hauptfenster_menubar.Append(datei, u"&Datei") 233 234 # 235 # -- Filter ---------------------------------------------------------- 236 # 237 filter = wx.Menu() 238 filter.Append( 201, u"&Gefahrenszenarien einschränken\tCtrl+G", u"Filterkriterien zur Einschränkung der Gefahrenszenarien setzen.", wx.ITEM_NORMAL ) 239 self.hauptfenster_menubar.Append( filter, u"&Filter" ) 240 241 # 242 # -- Basisdaten ---------------------------------------------------------- 243 # 244 basisdaten = wx.Menu() 245 basisdaten.Append( 301, u"&Dokumente bearbeiten\tCtrl+D", u"Dokumente bearbeiten", wx.ITEM_NORMAL ) 246 self.hauptfenster_menubar.Append( basisdaten, u"&Basisdaten" ) 247 248 # 249 # -- Hilfe ------------------------------------------------------------------ 250 # 251 hilfe = wx.Menu() 252 hilfe.Append( 401, u"&Info zu wxvf\tCtrl+I", u"Informationen zum Programm", wx.ITEM_NORMAL ) 253 self.hauptfenster_menubar.Append( hilfe, u"&Hilfe" ) 254 255 # 256 # -- Menüleiste übernehmen -------------------------------------------------- 257 # 258 self.SetMenuBar( self.hauptfenster_menubar ) 259 260 # 261 # -- Menüereignisse behandeln 262 # 263 self.Bind( wx.EVT_MENU, self.__ereignisAenderungenSpeichern__, id=102 ) 264 self.Bind( wx.EVT_MENU, self.__ereignisProgrammBeenden__, id=103 ) 265 266 self.Bind( wx.EVT_MENU, self.__ereignisFilter__, id=201 ) 267 268 self.Bind( wx.EVT_MENU, self.__ereignisDokumente__, id=301 ) 269 270 self.Bind( wx.EVT_MENU, self.__ereignisUeberWxvf__, id=401 ) 271 272 273 # 274 # -- Statusleiste ---------------------------------------------------------- 275 # 276 self.TextCtrlErgSpW__Notizen = TextCtrlErgSpW( parent = self 277 , orient = wx.VERTICAL 278 , Notizen = None 279 , styleTCli = wx.BORDER_SUNKEN|wx.TE_MULTILINE|wx.TE_READONLY 280 , styleTCre = wx.BORDER_SUNKEN|wx.TE_MULTILINE|wx.TE_READONLY ) 281 282 self.TextCtrlErgSpW__Notizen.TextCtrlErg__li.SetBackgroundColour( colour = self.GetBackgroundColour() ) 283 self.TextCtrlErgSpW__Notizen.TextCtrlErg__re.SetBackgroundColour( colour = self.GetBackgroundColour() ) 284 285 self.TextCtrlErgSpW__Notizen.SplitterWindow.SetSashPosition( position = 600 ) 286 287 self.TextCtrlErgSpW__Notizen.SetMinSize( ( -1, 40 ) ) 288 289 290 # 291 # -- Id und Status -------------------------------------------------- 292 # 293 self.ListBox__GefIdStatus = FlexGridSizerWxObjTitel( parent = self 294 , wxObj = ListBoxErg( self 295 , style = wx.BORDER_SUNKEN | wx.LB_SORT 296 , Notizen = self.TextCtrlErgSpW__Notizen ) 297 , titel = u"Gef-Id / \nStatus" 298 , orient = wx.VERTICAL ) 299 300 self.ListBox__GefIdStatus.wxObjekt.SetMinSize( ( 70, -1 ) ) 301 302 self.ListBox__GefIdStatus.wxObjekt.nimmWerteStatusleiste( 303 DBSpNameErlaeuterung = u"Eineindeutige Identifikationsnummer des Gefahrenszenarios." 304 , DBSpName = "ps.gefszenario / prj.pp_psgefszenario" ) 305 306 self.ListBox__GefIdStatus.wxObjekt.markiereWertProjUeb = False 307 308 self.ListBox__GefIdStatus.wxObjekt.Bind( wx.EVT_LISTBOX 309 , self.__ereignisNavigation__ ) 310 311 312 # 313 # -- Fortschrittsmeldung / -balken ------------------------------------------ 314 # 315 self.Fortschritt = GaugeErg( parent = self 316 , delta = 1 ) 317 318 self.Fortschritt.SetMaxSize( ( -1, 20 ) ) 319 320 321 322 # 323 # -- Tabulatorbereich (Risikoanalyse, Gefahrenprotokoll, ------------------ 324 # -- Terminplan, ...) ------------------ 325 # 326 self.Notebook__zentralerBereich = wx.Notebook( self ) 327 328 self.Notebook__zentralerBereich.AddPage( Gefahrenanalyse( parent = self.Notebook__zentralerBereich 329 , Notizen = self.TextCtrlErgSpW__Notizen 330 , Fortschritt = self.Fortschritt 331 , dbVerbindung = self.__dbVerbindung__ ) 332 , u"Gefahrenanalyse" ) 333 334 335 self.Notebook__zentralerBereich.AddPage( Sicherheitsanforderungen( parent = self.Notebook__zentralerBereich 336 , Notizen = self.TextCtrlErgSpW__Notizen 337 , Fortschritt = self.Fortschritt 338 , dbVerbindung = self.__dbVerbindung__ ) 339 , u"Risikominderung" ) 340 341 self.Notebook__zentralerBereich.AddPage( Risikobewertung( parent = self.Notebook__zentralerBereich 342 , Notizen = self.TextCtrlErgSpW__Notizen 343 , Fortschritt = self.Fortschritt 344 , dbVerbindung = self.__dbVerbindung__ ) 345 , u"Risikobewertung" ) 346 347 self.Notebook__zentralerBereich.AddPage( Gefahrenprotokoll( parent = self.Notebook__zentralerBereich 348 , Notizen = self.TextCtrlErgSpW__Notizen 349 , Fortschritt = self.Fortschritt 350 , dbVerbindung = self.__dbVerbindung__ ) 351 , u"Gefahrenprotokoll" ) 352 353 self.Notebook__zentralerBereich.SetMinSize( ( 500, 500 ) ) 354 355 356 357 358 # 359 # -- Layout festlegen -------------------------------------------------- 360 # 361 362 # 363 # -- Gef.-Id, Notebook -------------------------------------------------- 364 # 365 FlexGridSizer_Notebook = wx.FlexGridSizer( rows = 1, cols = 2, vgap = 0, hgap = 10 ) 366 367 FlexGridSizer_Notebook.AddGrowableRow( idx = 0, proportion = 1 ) 368 FlexGridSizer_Notebook.AddGrowableCol( idx = 1, proportion = 1 ) 369 370 FlexGridSizer_Notebook.Add( self.ListBox__GefIdStatus 371 , flag = wx.EXPAND ) 372 373 FlexGridSizer_Notebook.Add( self.Notebook__zentralerBereich 374 , flag = wx.EXPAND ) 375 376 377 378 # 379 # -- Alles zusammenfügen -------------------------------------------------- 380 # 381 FlexGridSizer = wx.FlexGridSizer( rows = 1, cols = 1, vgap = 5, hgap = 0 ) 382 383 FlexGridSizer.AddGrowableRow( idx = 1, proportion = 1 ) 384 FlexGridSizer.AddGrowableCol( idx = 0, proportion = 1 ) 385 386 FlexGridSizer.Add( self.TextCtrlErgSpW__Notizen 387 , flag = wx.EXPAND 388 , border = 10 ) 389 390 FlexGridSizer.Add( FlexGridSizer_Notebook 391 , flag = wx.EXPAND 392 , border = 10 ) 393 394 FlexGridSizer.Add( self.Fortschritt 395 , flag = wx.EXPAND|wx.LEFT|wx.RIGHT 396 , border = 5 ) 397 398 self.SetSizerAndFit( FlexGridSizer )
399 400 401 402 403 404 405 # 406 # ------------------------------------------------------------------------------------ 407 # -- Änderungen speichern -------------------------------------------------- 408 # ------------------------------------------------------------------------------------ 409 #
410 - def __ereignisAenderungenSpeichern__( self, ereignisDummy ):
411 """ 412 Methode die aufgerufen wird, um alle Änderungen zu speichern. 413 414 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 415 @type ereignisDummy: C{wx - Ereignisobjekt} 416 """ 417 418 # 419 # -- Änderungen in die Datenbank schreiben ---------------------------------- 420 # -- Risikoanalyse / Gefahrenprotokoll ---------------------------------- 421 # 422 self.Notebook__zentralerBereich.GetPage(0).schreibDB() 423 self.Notebook__zentralerBereich.GetPage(2).schreibDB() 424 self.Notebook__zentralerBereich.GetPage(3).schreibDB() 425 426 427 # 428 # -- Änderungen in der Datenbank endgültig übernehmen ------------------ 429 # -- (Postgres: COMMIT) ------------------ 430 # 431 self.__dbVerbindung__.nimmAenderungen()
432 433 434 435 436 # 437 # ------------------------------------------------------------------------------------ 438 # -- Dokumente bearbeiten -------------------------------------------------- 439 # ------------------------------------------------------------------------------------ 440 #
441 - def __ereignisDokumente__( self, ereignisDummy ):
442 """ 443 Dokumente bearbeiten. 444 445 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 446 @type ereignisDummy: C{wx - Ereignisobjekt} 447 """ 448 449 # 450 # -- Meldung ausgeben -------------------------------------------------- 451 # 452 dlg = BearbeiteDokumente( parent = self 453 , Notizen = self.TextCtrlErgSpW__Notizen 454 , Fortschritt = self.Fortschritt 455 , dbVerbindung = self.__dbVerbindung__ ) 456 457 dlg.ShowModal() 458 dlg.Destroy()
459 460 461 462 463 # 464 # ------------------------------------------------------------------------------------ 465 # -- Filterkriterien setzen -------------------------------------------------- 466 # ------------------------------------------------------------------------------------ 467 #
468 - def __ereignisFilter__( self, ereignisDummy = None ):
469 """ 470 Dokumente bearbeiten. 471 472 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 473 @type ereignisDummy: C{wx - Ereignisobjekt} 474 """ 475 476 # 477 # -- Meldung ausgeben -------------------------------------------------- 478 # 479 dlg = Filter( parent = self 480 , Notizen = self.TextCtrlErgSpW__Notizen 481 , Fortschritt = self.Fortschritt 482 , dbVerbindung = self.__dbVerbindung__ ) 483 484 dlg.CenterOnScreen() 485 dlg.ShowModal() 486 dlg.Destroy() 487 488 489 490 # 491 # -- Den Filterkriterien entsprechende Gefahrenszenarien anzeigen ---------- 492 # 493 self.__dbVerbindung__.selektiere__psGefszenario( self.ListBox__GefIdStatus.wxObjekt ) 494 495 496 497 # 498 # -- Tabulator 'Risikoanalyse', 'Gefahrenprotokoll' -------------------------- 499 # -- mit gültigen Werten füllen -------------------------- 500 # 501 self.__ereignisNavigation__()
502 503 504 505 506 507 # 508 # ------------------------------------------------------------------------------------ 509 # -- Navigationsereignisse behandeln ---------------------------------- 510 # ------------------------------------------------------------------------------------ 511 #
512 - def __ereignisNavigation__( self, ereignisDummy = None ):
513 """ 514 Methode die aufgerufen wird, wenn eine Gefahren-Id ausgewählt wurde. 515 516 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 517 @type ereignisDummy: C{wx - Ereignisobjekt} 518 """ 519 520 # 521 # -- Änderungen in die Datenbank schreiben ---------------------------------- 522 # 523 self.Notebook__zentralerBereich.GetPage(0).schreibDB() 524 self.Notebook__zentralerBereich.GetPage(2).schreibDB() 525 self.Notebook__zentralerBereich.GetPage(3).schreibDB() 526 527 528 # 529 # -- Gefahrenszenario-Id übernehmen ------------------------------------------ 530 # 531 self.__dbVerbindung__.ps_gefszenario_id = self.ListBox__GefIdStatus.wxObjekt.gibDbId() 532 533 534 # 535 # -- Tabulator 'Risikoanalyse' / 'Gefahrenszenario' -------------------------- 536 # -- mit gültigen Werten füllen -------------------------- 537 # 538 if( self.__dbVerbindung__.ps_gefszenario_id is not None ) : 539 540 self.Notebook__zentralerBereich.GetPage(0).liesDB() 541 542 self.Notebook__zentralerBereich.GetPage(1).SiAnf__SiAnf.liesDB() 543 544 self.Notebook__zentralerBereich.GetPage(2).liesDB() 545 546 self.Notebook__zentralerBereich.GetPage(3).liesDB()
547 548 549 550 551 # 552 # ------------------------------------------------------------------------------------ 553 # -- Programm beenden -------------------------------------------------- 554 # ------------------------------------------------------------------------------------ 555 #
556 - def __ereignisProgrammBeenden__( self, ereignisDummy ):
557 """ 558 Methode die aufgerufen wird, um das Programm zu beenden. 559 560 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 561 @type ereignisDummy: C{wx - Ereignisobjekt} 562 """ 563 self.__dbVerbindung__.verwerfeAenderungen() 564 sys.exit()
565 566 567 568 569 570 # 571 # ------------------------------------------------------------------------------------ 572 # -- Infos zum Programm -------------------------------------------------- 573 # ------------------------------------------------------------------------------------ 574 #
575 - def __ereignisUeberWxvf__( self, ereignisDummy ):
576 """ 577 Methode die aufgerufen wird, um Informationen zum Programm auszugeben. 578 579 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 580 @type ereignisDummy: C{wx - Ereignisobjekt} 581 """ 582 583 # First we create and fill the info object 584 info = wx.AboutDialogInfo() 585 info.Name = u"wxvf" 586 info.Version = u"1.0" 587 info.Copyright = u"(C) 2010, 2011 Michael Bellair" 588 info.Description = wordwrap( 589 u"\'wxvf\' ist die Benutzeroberfläche zum Datenbankmodell 'Virtuelles Fahrzeug' \nab Version 1.3. \nDas Datenbankmodell soll die Aspekte der Produktsicherheit abbilden." 590 , 350 591 , wx.ClientDC(self) ) 592 info.WebSite = ("http://vf.michaelbellair.de/index.html", u"Die Homepage.") 593 info.Developers = [ u"Michael Bellair" ] 594 595 info.License = wordwrap(u"\'wxvf\' is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\n\'wxvf\' is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with \'wxvf\'. If not, see <http://www.gnu.org/licenses/>.", 500, wx.ClientDC(self)) 596 597 # Then we call wx.AboutBox giving it that info object 598 wx.AboutBox(info)
599 600 601 602 603 # 604 # ------------------------------------------------------------------------------------ 605 # -- Hauptfenster initialisieren ------------------------------------------ 606 # ------------------------------------------------------------------------------------ 607 #
608 - def init_Hauptfenster( self ):
609 """ 610 Hauptfenster initialisieren. 611 """ 612 613 # 614 # -- Datenbankabfragen ab hier zulassen ---------------------------------- 615 # 616 self.__dbVerbindung__.unterbindeDbAbfrage = False 617 618 619 620 # 621 # -- Permanente Datenstrukturen initialisieren -------------------------- 622 # 623 self.__dbVerbindung__.aktualisierePermanenteDatenstrukturen( Fortschritt = self.Fortschritt 624 , istFilter = False ) 625 626 627 628 # 629 # -- Risikoanalyse aktualisieren ------------------------------------------ 630 # 631 self.Notebook__zentralerBereich.GetPage(0).init_Gefahrenanalyse() 632 self.Notebook__zentralerBereich.GetPage(1).init_Sicherheitsanforderungen() 633 self.Notebook__zentralerBereich.GetPage(2).init_Risikobewertung() 634 self.Notebook__zentralerBereich.GetPage(3).init_Gefahrenprotokoll() 635 636 637 638 # 639 # -- Eingabeformular 'Filter' aufrufen ---------------------------------- 640 # 641 self.__ereignisFilter__()
642