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

Source Code for Module bearbeiteanmerkung

  1  # -*- coding: utf-8 -*- 
  2  # 
  3  # 
  4  #    filename:  bearbeiteanmerkung.py 
  5  # 
  6  #    version:   see wxvf.py 
  7  # 
  8  # 
  9  # ---------------------------------------------------------------------------------------- 
 10  # 
 11  # 
 12  #    Copyright (C) 2010  Michael Bellair 
 13  # 
 14  #    This file is part of wxvf. 
 15  # 
 16  #    wxvf is free software: you can redistribute it and/or modify 
 17  #    it under the terms of the GNU General Public License as published by 
 18  #    the Free Software Foundation, either version 3 of the License, or 
 19  #    (at your option) any later version. 
 20  # 
 21  #    wxvf is distributed in the hope that it will be useful, 
 22  #    but WITHOUT ANY WARRANTY; without even the implied warranty of 
 23  #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 24  #    GNU General Public License for more details. 
 25  # 
 26  #    You should have received a copy of the GNU General Public License 
 27  #    along with wxvf.  If not, see <http://www.gnu.org/licenses/>. 
 28  # 
 29  #    Michael Bellair 
 30  #    Sportplatzstrasse 11 
 31  #    01259 Dresden 
 32  # 
 33  #    E-Mail:    bellair@freenet.de 
 34  #    homepage:  http://www.michaelbellair.de/vf/index.html 
 35  # 
 36  # 
 37  # ---------------------------------------------------------------------------------------- 
 38  # 
 39  import wx 
 40   
 41  from bearbeiteuebersetzung import BearbeiteUebersetzung # Eingabeformular für Übersetzungen 
 42   
 43  from wxuniversal import FlexGridSizerWxObjTitel                 # wxObjekt mit Titel 
 44  from wxuniversal import CheckBoxErg                             # wx.CheckBox mit Ergänzungen 
 45  from wxuniversal import DialogErg                               # wx.Dialog mit Ergänzungen 
 46  from wxuniversal import farbeAuswahlListe                       # Farbe der Objekte, die Vorgabewerte enthalten 
 47  from wxuniversal import farbeBearbeiten                         # Farbe der Objekte, die  bearbeitet werden können 
 48  from wxuniversal import ListBoxErg                              # wx.ListBox mit Ergänzungen 
 49  from wxuniversal import TreeCtrlErg                             # TreeCtrl mit Ergänzungen 
 50   
 51   
 52  # 
 53  # 
 54  # 
 55  # ---------------------------------------------------------------------------------------- 
 56  # ---------------------------------------------------------------------------------------- 
 57  # --                                    -------------------------------------------------- 
 58  # --    Offene Punkte / Aufgaben        -------------------------------------------------- 
 59  # --                                    -------------------------------------------------- 
 60  # ---------------------------------------------------------------------------------------- 
 61  # ---------------------------------------------------------------------------------------- 
 62  # 
 63  #  
 64  #       -- siehe TODO 'bearbeiteanmerkung.py' -- 
 65  # 
 66  # 
 67  # ---------------------------------------------------------------------------------------- 
 68  # 
 69   
 70   
 71   
 72   
 73   
 74  # 
 75  # ---------------------------------------------------------------------------------------- 
 76  # ---------------------------------------------------------------------------------------- 
 77  # --                                                    ---------------------------------- 
 78  # --    Eingabeformular 'Anmerkungen bearbeiten'        ---------------------------------- 
 79  # --                                                    ---------------------------------- 
 80  # ---------------------------------------------------------------------------------------- 
 81  # ---------------------------------------------------------------------------------------- 
 82  # 
83 -class BearbeiteAnmerkung( DialogErg ):
84 85 """ 86 Klasse zur Abbildung des Eingabeformulars 'Anmerkungen bearbeiten. 87 """ 88 89 # 90 # ------------------------------------------------------------------------------------ 91 # -- Eingabeformular initialisieren ---------------------------------- 92 # ------------------------------------------------------------------------------------ 93 #
94 - def __init__( self, parent, Statusleiste, dbVerbindung ):
95 DialogErg.__init__( self 96 , parent = parent 97 , title = u"Anmerkungen bearbeiten." 98 , dbVerbindung = dbVerbindung ) 99 100 # 101 # -- Namen setzen (somit Klasse / Objekt erkennen) -------------------------- 102 # 103 self.SetName( name = "BearbeiteAnmerkung" ) 104 105 106 # 107 # -- Randbedingungen übernehmen ------------------------------------------ 108 # 109 self.Statusleiste = Statusleiste 110 self.dbVerbindung = dbVerbindung 111 112 self.titel = u"Dem Gefahrenszenario zugeordnete,\nprojektübergreifend verfügbare Anmerkungen" 113 self.titelProjekt = u"Im Projekt verfügbare Anmerkungen" 114 115 116 117 # 118 # -------------------------------------------------------------------------------- 119 # -- Eingabeobjekte anlegen -------------------------------------------------- 120 # -------------------------------------------------------------------------------- 121 # 122 123 # 124 # -- Dem Gefahrenszenario zugeordnete Anmerkungen -------------------------- 125 # -- ------------------ 126 # -- !! Notlösung - In der ListBox konnte ich die mittlere ------------------ 127 # -- Maustaste nicht auswerten !! ------------------ 128 # -- ------------------ 129 # -- Objekt-Id = - -------------------------------------------------- 130 # 131 self.TreeCtrlErg__AnmerkungId = FlexGridSizerWxObjTitel( parent = self 132 , wxObj = TreeCtrlErg( self 133 , Statusleiste = self.Statusleiste ) 134 , titel = u"Anmerkungen / Interne Notizen" 135 , orient = wx.VERTICAL ) 136 137 self.TreeCtrlErg__AnmerkungId.wxObjekt.SetMinSize( ( 450, 500 ) ) 138 139 self.TreeCtrlErg__AnmerkungId.wxObjekt.nimmWerteStatusleiste( 140 DBSpNameErlaeuterung = u"Eineindeutige Identifikationsnummer der Anmerkungen zum Gefahrenszenario." 141 , DBSpName = "..." ) 142 143 self.TreeCtrlErg__AnmerkungId.wxObjekt.SetToolTip( wx.ToolTip( u"Doppelklick:\nAnmerkung bearbeiten.\n\nMittlere Maustaste:\nVerbindung zwischen Anmerkung und Gefahrenszenario aufheben." ) ) 144 145 self.TreeCtrlErg__AnmerkungId.wxObjekt.SetBackgroundColour( wx.NamedColour( farbeBearbeiten ) ) 146 147 148 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 149 , self.__ereignisAnmerkungBearbeiten__ 150 , self.TreeCtrlErg__AnmerkungId.wxObjekt ) 151 152 self.Bind( wx.EVT_TREE_ITEM_MIDDLE_CLICK 153 , self.__ereignisAnmerkungLoesen__ 154 , self.TreeCtrlErg__AnmerkungId.wxObjekt ) 155 156 157 158 # 159 # -- Zeige alle vorhandenen Anmerkungen ---------------------------------- 160 # -- Objekt-Id = - ---------------------------------------------------------- 161 # 162 self.CheckBox__Alle = FlexGridSizerWxObjTitel( parent = self 163 , wxObj = CheckBoxErg( self 164 , Statusleiste = self.Statusleiste ) 165 , titel = u"Projektbezogene Anmerkungen (ignoriere Gefahrenszenario):" 166 , orient = wx.VERTICAL ) 167 168 self.CheckBox__Alle.wxObjekt.nimmWerteStatusleiste( 169 DBSpNameErlaeuterung = u"Es wird die projektübergreifende Einschränkung auf das aktuelle Gefahrenszenario aufgehoben und alle im Projekt verfügbaren Anmerkungen angezeigt." 170 , DBSpName = "..." ) 171 172 self.Bind( wx.EVT_CHECKBOX 173 , self.__ereignisLiesDBVorhAnm__ 174 , self.CheckBox__Alle.wxObjekt ) 175 176 177 178 179 # 180 # -- Vorhandene Anmerkungen - Id ------------------------------------------ 181 # -- Objekt-Id = - ------------------------------------------ 182 # 183 self.ListBox__VorhAnmerkungId = FlexGridSizerWxObjTitel( parent = self 184 , wxObj = ListBoxErg( self 185 , size = ( -1, -1 ) 186 , style = wx.BORDER_SUNKEN 187 , Statusleiste = self.Statusleiste ) 188 , titel = u"Verfügbare Anmerkungen / Interne Notizen" 189 , orient = wx.VERTICAL ) 190 191 self.ListBox__VorhAnmerkungId.wxObjekt.SetMinSize( ( 450, 425 ) ) 192 193 self.ListBox__VorhAnmerkungId.wxObjekt.nimmWerteStatusleiste( 194 DBSpNameErlaeuterung = u"Eineindeutige Identifikationsnummer der in der Datenbank vorhandenen Anmerkungen zum Gefahrenszenario." 195 , DBSpName = "..." ) 196 197 self.ListBox__VorhAnmerkungId.wxObjekt.SetToolTip(wx.ToolTip( u"Doppelklick:\nAnmerkung in das Fenster 'Anmerkungen' schieben" )) 198 199 self.ListBox__VorhAnmerkungId.wxObjekt.SetBackgroundColour( wx.NamedColour( farbeAuswahlListe ) ) 200 201 self.Bind( wx.EVT_LISTBOX_DCLICK 202 , self.__ereignisAnmerkungZuordnen__ 203 , self.ListBox__VorhAnmerkungId.wxObjekt ) 204 205 206 207 208 209 210 211 # 212 # -- Layout festlegen ------------------ 213 # -- (Fenster später im >wx.SplitterWindow< darstellen ------------------ 214 # 215 216 # 217 # -- 1.) ------------------------------------------------------------------ 218 # 219 FlexGridSizer = wx.FlexGridSizer( rows = 2, cols = 1, vgap = 0, hgap = 5 ) 220 FlexGridSizer.AddGrowableCol( idx = 0, proportion = 0 ) 221 FlexGridSizer.AddGrowableRow( idx = 0, proportion = 0 ) 222 FlexGridSizer.AddGrowableRow( idx = 1, proportion = 1 ) 223 224 FlexGridSizer.Add( self.CheckBox__Alle 225 , flag = wx.LEFT|wx.TOP|wx.RIGHT|wx.EXPAND 226 , border = 5 ) 227 228 FlexGridSizer.Add( self.ListBox__VorhAnmerkungId 229 , flag = wx.LEFT|wx.EXPAND 230 , border = 5 ) 231 232 self.StaticBox_Titel = wx.StaticBox( parent = self, label = self.titel ) 233 234 235 StaticBoxSizer = wx.StaticBoxSizer( box = self.StaticBox_Titel, orient = wx.VERTICAL ) 236 StaticBoxSizer.Add( FlexGridSizer 237 , flag = wx.ALL|wx.EXPAND 238 , border = 15 ) 239 240 Rand = wx.BoxSizer( wx.HORIZONTAL ) 241 Rand.Add( StaticBoxSizer 242 , flag = wx.EXPAND|wx.LEFT 243 , border = 10 ) 244 245 246 # 247 # -- 2.) ------------------------------------------------------------------ 248 # 249 BoxSizer = wx.BoxSizer( wx.HORIZONTAL ) 250 251 BoxSizer.Add( self.TreeCtrlErg__AnmerkungId, flag = wx.EXPAND ) 252 253 BoxSizer.Add( Rand, flag = wx.EXPAND ) 254 255 # 256 # -- In das Eingabeformular übernehmen ---------------------------------- 257 # 258 self.nimmDialogElemente( BoxSizer ) 259 260 261 # 262 # -- 'Anmerkungen / Interne Notizen' -------------------------- 263 # -- 'Verfügbare Anmerkungen / Interne Notizen' -------------------------- 264 # 265 self.__liesDB__() 266 self.__ereignisLiesDBVorhAnm__() 267 268 269 # 270 # -- Button 'Änderungen verwerfen' / 'Änderungen sichern' deaktivieren -- 271 # 272 self.Button__Verwerfen.Enable( False ) 273 self.Button__Sichern.Enable( False )
274 275 276 277 278 # 279 # ------------------------------------------------------------------------------------ 280 # -- Anmerkung bearbeiten -------------------------------------------------- 281 # ------------------------------------------------------------------------------------ 282 #
283 - def __ereignisAnmerkungBearbeiten__( self, ereignis ):
284 """ 285 Methode die aufgerufen wird, wenn der Text der Sicherheitsanforderung bearbeitet werden soll. 286 287 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 288 @type ereignis: C{wx - Ereignisobjekt} 289 """ 290 291 # 292 # -- Formular zur Bearbeitung der Übersetzungsvariante aufrufen ---------- 293 # 294 dlg = BearbeiteUebersetzung( parent = self 295 , Statusleiste = self.Statusleiste 296 , dbVerbindung = self.dbVerbindung 297 , sprUebvarId = ereignis.GetEventObject().gibClientData()[0] 298 , notizen = ereignis.GetEventObject().gibClientData()[1] ) 299 300 301 # 302 # -- Dialog aufrufen ---------------------------------------------------------- 303 # 304 dlg.ShowModal() 305 dlg.Destroy() 306 307 308 # 309 # -- geänderte >spr.uebvar.id< bzw. >notizen< in -------------------------- 310 # -- >prj.pl_psgefanm< übernehmen -------------------------- 311 # 312 ps_anmerkung_id = ereignis.GetEventObject().gibDbId() 313 if( dlg.gibWerte()[0] 314 and ( dlg.gibWerte()[1] != ereignis.GetEventObject().gibClientData()[0] 315 or dlg.gibWerte()[2] != ereignis.GetEventObject().gibClientData()[1] ) ) : 316 317 self.dbVerbindung.schreibe__PrjPlPsGefAnm( listeWerte = [# -- ps_anmerkung_id ------- 318 ps_anmerkung_id 319 # -- spr_uebvar_id --------- 320 , dlg.gibWerte()[1] 321 # -- notizen --------------- 322 , dlg.gibWerte()[2] ] ) 323 324 325 # 326 # -- 'Anmerkungen / Interne Notizen' aktualisieren -- 327 # -- 'Verfügbare Anmerkungen / Interne Notizen' aktualisieren -- 328 # 329 self.__liesDB__() 330 self.__ereignisLiesDBVorhAnm__() 331 332 333 # 334 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 335 # -- aktivieren, wenn eine Benutzeränderung vorliegt ------------------ 336 # 337 if( dlg.gibWerte()[0] ) : 338 self.Button__Verwerfen.Enable( True ) 339 self.Button__Sichern.Enable( True ) 340 341 342 # 343 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 344 # -- ausgewertet werden kann -------------------------- 345 # 346 ereignis.Skip( skip = True )
347 348 349 350 351 # 352 # ------------------------------------------------------------------------------------ 353 # -- Anmerkung entfernen -------------------------------------------------- 354 # ------------------------------------------------------------------------------------ 355 #
356 - def __ereignisAnmerkungLoesen__( self, ereignis = None ):
357 """ 358 Anmerkung vom Gefahrenszenario lösen (entfernen). 359 360 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 361 @type ereignis: C{wx - Ereignisobjekt} 362 """ 363 364 # 365 # -- Anmerkung in der Datenbank 'löschen' ---------------------------------- 366 # 367 self.dbVerbindung.schreibe__PrjPlPsGefAnm( listeWerte = [# -- ps_anmerkung_id ------- 368 ereignis.GetEventObject().gibDbId() 369 # -- spr_uebvar_id --------- 370 , ereignis.GetEventObject().gibClientData()[0] 371 # -- notizen --------------- 372 , ereignis.GetEventObject().gibClientData()[1] ] 373 , logentfernt = 'true' ) 374 375 376 # 377 # -- 'Anmerkungen / Interne Notizen' aktualisieren ---------- 378 # -- 'Verfügbare Anmerkungen / Interne Notizen' aktualisieren ---------- 379 # 380 self.__liesDB__() 381 self.__ereignisLiesDBVorhAnm__() 382 383 384 # 385 # -- Button 'Änderungen verwerfen' / 'Änderungen sichern' aktivieren ---------- 386 # 387 self.Button__Verwerfen.Enable( True ) 388 self.Button__Sichern.Enable( True ) 389 390 391 # 392 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 393 # -- ausgewertet werden kann -------------------------- 394 # 395 ereignis.Skip( skip = True )
396 397 398 399 400 401 # 402 # ------------------------------------------------------------------------------------ 403 # -- Anmerkung übernehmen -------------------------------------------------- 404 # ------------------------------------------------------------------------------------ 405 #
406 - def __ereignisAnmerkungZuordnen__( self, ereignis = None ):
407 """ 408 Anmerkung übernehmen 409 410 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 411 @type ereignis: C{wx - Ereignisobjekt} 412 """ 413 414 # 415 # -- Anmerkung in der Datenbank 'löschen' ---------------------------------- 416 # 417 self.dbVerbindung.schreibe__PrjPlPsGefAnm( 418 listeWerte = [# -- ps_anmerkung_id ------- 419 ereignis.GetEventObject().gibClientData( lfdNr = ereignis.GetEventObject().GetSelection() )[2] 420 # -- spr_uebvar_id --------- 421 , ereignis.GetEventObject().gibClientData( lfdNr = ereignis.GetEventObject().GetSelection() )[0] 422 # -- notizen --------------- 423 , ereignis.GetEventObject().gibClientData( lfdNr = ereignis.GetEventObject().GetSelection() )[1] ] ) 424 425 426 # 427 # -- 'Anmerkungen / Interne Notizen' aktualisieren ---------- 428 # -- 'Verfügbare Anmerkungen / Interne Notizen' aktualisieren ---------- 429 # 430 self.__liesDB__() 431 self.__ereignisLiesDBVorhAnm__() 432 433 434 # 435 # -- Button 'Änderungen verwerfen' / 'Änderungen sichern' aktivieren ---------- 436 # 437 self.Button__Verwerfen.Enable( True ) 438 self.Button__Sichern.Enable( True ) 439 440 441 # 442 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 443 # -- ausgewertet werden kann -------------------------- 444 # 445 ereignis.Skip( skip = True )
446 447 448 449 450 # 451 # ------------------------------------------------------------------------------------ 452 # -- Datenbank auslesen für 'Anmerkungen/Interne Notizen' ------------------ 453 # ------------------------------------------------------------------------------------ 454 #
455 - def __liesDB__( self ):
456 """ 457 Methode die aufgerufen wird, wenn die dem Gefahrenszenario zugeordneten Anmerkungen-Id ausgelesen werden sollen. 458 """ 459 460 # 461 # -- Datenbank auslesen -------------------------------------------------- 462 # 463 self.dbVerbindung.selektiere__GefszenId_AnmId__Projekt__Sprache( 464 TreeCtrlErg_ListBoxErg = self.TreeCtrlErg__AnmerkungId.wxObjekt )
465 466 467 468 469 # 470 # ------------------------------------------------------------------------------------ 471 # -- Datenbank auslesen 'Vorhandene Anmerkungen' -------------------------- 472 # ------------------------------------------------------------------------------------ 473 #
474 - def __ereignisLiesDBVorhAnm__( self, ereignis = None, allesLesen = False ):
475 """ 476 Methode die aufgerufen wird, wenn nach Änderung des Zustandes der C{wx.CheckBox} 'Zeige alle Anmerkungen' die Datenbank ausgelesen werden muß. 477 478 @requires: Erst ist muß C{self.ListBox__AnmerkungId} gefüllt sein. 479 480 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 481 @type ereignis: C{wx - Ereignisobjekt} 482 483 @param allesLesen: Wenn C{True} angegeben wird, werden alle Anmerungen gelesen 484 @type allesLesen: C{wx - Ereignisobjekt} 485 """ 486 487 # 488 # -- Anmerkungen auslesen -------------------------------------------------- 489 # 490 liesAlles = allesLesen 491 if( ereignis != None ) : liesAlles = ereignis.GetEventObject().gibWert() 492 493 494 495 # 496 # -- Verfügbare Anmerkungen auslesen, dabei ---------------------------------- 497 # -- Gefahrenszenario ignorieren ? ---------------------------------- 498 # -- ---------------------------------- 499 # -- True: Gefahrenszenario ignorieren, Projekt berücksichtigen ---------- 500 # 501 if( liesAlles ) : 502 503 self.StaticBox_Titel.SetLabel( self.titelProjekt ) 504 505 self.dbVerbindung.selektiere__GefszenId_AnmId__Projekt__Sprache( 506 TreeCtrlErg_ListBoxErg = self.ListBox__VorhAnmerkungId.wxObjekt 507 , ignorierePsGefszenarioId = True ) 508 509 # 510 # -- False: Gefahrenszenario berücksichtigen, Projekt ignorieren ---------- 511 # 512 else : 513 514 self.StaticBox_Titel.SetLabel( self.titel ) 515 516 self.dbVerbindung.selektiere__GefszenId_AnmId( ListBoxErg = self.ListBox__VorhAnmerkungId.wxObjekt ) 517 518 519 # 520 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 521 # -- ausgewertet werden kann -------------------------- 522 # 523 if( ereignis != None ) : 524 ereignis.Skip( skip = True )
525