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://freenet-homepage.de/bellair/vf/index.html 
 35  # 
 36  # 
 37  # ---------------------------------------------------------------------------------------- 
 38  # 
 39  import wx 
 40   
 41  from bearbeiteuebersetzung import BearbeiteUebersetzungNeu      # 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, prjProjekteId, sprSprachenId, psGefszenarioId ):
95 DialogErg.__init__( self 96 , parent = parent 97 , title = u"Anmerkungen bearbeiten." 98 , dbVerbindung = dbVerbindung ) 99 100 # 101 # -- Randbedingungen übernehmen ------------------------------------------ 102 # 103 self.Statusleiste = Statusleiste 104 self.dbVerbindung = dbVerbindung 105 self.prjProjekteId = prjProjekteId 106 self.sprSprachenId = sprSprachenId 107 self.psGefszenarioId = psGefszenarioId 108 109 110 111 # 112 # -------------------------------------------------------------------------------- 113 # -- Eingabeobjekte anlegen -------------------------------------------------- 114 # -------------------------------------------------------------------------------- 115 # 116 117 # 118 # -- Dem Gefahrenszenario zugeordnete Anmerkungen -------------------------- 119 # -- ------------------ 120 # -- !! Notlösung - In der ListBox konnte ich die mittlere ------------------ 121 # -- Maustaste nicht auswerten !! ------------------ 122 # -- ------------------ 123 # -- Objekt-Id = - -------------------------------------------------- 124 # 125 self.TreeCtrlErg__AnmerkungId = FlexGridSizerWxObjTitel( parent = self 126 , wxObj = TreeCtrlErg( self 127 , Statusleiste = self.Statusleiste 128 , dbVerbindung = self.dbVerbindung ) 129 , titel = "Anmerkungen / Interne Notizen" 130 , orient = wx.VERTICAL ) 131 132 self.TreeCtrlErg__AnmerkungId.wxObjekt.SetMinSize( ( 450, 500 ) ) 133 134 self.TreeCtrlErg__AnmerkungId.wxObjekt.statusLeisteDBSpNameErlaeuterung = """Eineindeutige Identifikationsnummer der Anmerkungen zum Gefahrenszenario.""" 135 136 self.TreeCtrlErg__AnmerkungId.wxObjekt.SetToolTip( wx.ToolTip( "Doppelklick:\nAnmerkung bearbeiten.\n\nMittlere Maustaste:\nVerbindung zwischen Anmerkung und Gefahrenszenario aufheben." ) ) 137 138 self.TreeCtrlErg__AnmerkungId.wxObjekt.SetBackgroundColour( wx.NamedColour( farbeBearbeiten ) ) 139 140 141 self.Bind( wx.EVT_TREE_ITEM_ACTIVATED 142 , self.__ereignisAnmerkungBearbeiten__ 143 , self.TreeCtrlErg__AnmerkungId.wxObjekt ) 144 145 self.Bind( wx.EVT_TREE_ITEM_MIDDLE_CLICK 146 , self.__ereignisAnmerkungLoesen__ 147 , self.TreeCtrlErg__AnmerkungId.wxObjekt ) 148 149 150 151 # 152 # -- Zeige alle vorhandenen Anmerkungen ---------------------------------- 153 # -- Objekt-Id = - ---------------------------------------------------------- 154 # 155 self.CheckBox__Alle = FlexGridSizerWxObjTitel( parent = self 156 , wxObj = CheckBoxErg( self 157 , Statusleiste = self.Statusleiste 158 , dbVerbindung = self.dbVerbindung ) 159 , titel = "Zeige alle verfügbaren Anmerkungen:" 160 , orient = wx.VERTICAL ) 161 162 self.CheckBox__Alle.wxObjekt.statusLeisteDBSpNameErlaeuterung = """Es werden alle Anmerkungen angezeigt.""" 163 164 self.Bind( wx.EVT_CHECKBOX 165 , self.__ereignisLiesDBVorhAnm__ 166 , self.CheckBox__Alle.wxObjekt ) 167 168 169 170 171 # 172 # -- Vorhandene Anmerkungen - Id ------------------------------------------ 173 # -- Objekt-Id = - ------------------------------------------ 174 # 175 self.ListBox__VorhAnmerkungId = FlexGridSizerWxObjTitel( parent = self 176 , wxObj = ListBoxErg( self 177 , size = ( -1, -1 ) 178 , style = wx.BORDER_SUNKEN 179 , Statusleiste = self.Statusleiste 180 , dbVerbindung = self.dbVerbindung ) 181 , titel = "Verfügbare Anmerkungen / Interne Notizen" 182 , orient = wx.VERTICAL ) 183 184 self.ListBox__VorhAnmerkungId.wxObjekt.SetMinSize( ( 450, 425 ) ) 185 186 self.ListBox__VorhAnmerkungId.wxObjekt.statusLeisteDBSpNameErlaeuterung = """Eineindeutige Identifikationsnummer der in der Datenbank vorhandenen Anmerkungen zum Gefahrenszenario.""" 187 188 self.ListBox__VorhAnmerkungId.wxObjekt.SetToolTip(wx.ToolTip( "Doppelklick:\nAnmerkung in das Fenster 'Anmerkungen' schieben" )) 189 190 self.ListBox__VorhAnmerkungId.wxObjekt.SetBackgroundColour( wx.NamedColour( farbeAuswahlListe ) ) 191 192 self.Bind( wx.EVT_LISTBOX_DCLICK 193 , self.__ereignisAnmerkungZuordnen__ 194 , self.ListBox__VorhAnmerkungId.wxObjekt ) 195 196 197 198 199 200 201 202 # 203 # -- Layout festlegen ------------------ 204 # -- (Fenster später im >wx.SplitterWindow< darstellen ------------------ 205 # 206 207 # 208 # -- 1.) ------------------------------------------------------------------ 209 # 210 FlexGridSizer = wx.FlexGridSizer( rows = 2, cols = 1, vgap = 0, hgap = 5 ) 211 FlexGridSizer.AddGrowableCol( idx = 0, proportion = 0 ) 212 FlexGridSizer.AddGrowableRow( idx = 0, proportion = 0 ) 213 FlexGridSizer.AddGrowableRow( idx = 1, proportion = 1 ) 214 215 FlexGridSizer.Add( self.CheckBox__Alle 216 , flag = wx.LEFT|wx.TOP|wx.RIGHT|wx.EXPAND 217 , border = 5 ) 218 219 FlexGridSizer.Add( self.ListBox__VorhAnmerkungId 220 , flag = wx.LEFT|wx.EXPAND 221 , border = 5 ) 222 223 Rahmen = wx.StaticBox( parent = self, label = " Verfügbare Anmerkungen " ) 224 225 StaticBoxSizer = wx.StaticBoxSizer( box = Rahmen, orient = wx.VERTICAL ) 226 StaticBoxSizer.Add( FlexGridSizer 227 , flag = wx.ALL|wx.EXPAND 228 , border = 5 ) 229 230 Rand = wx.BoxSizer( wx.HORIZONTAL ) 231 Rand.Add( StaticBoxSizer 232 , flag = wx.EXPAND|wx.LEFT 233 , border = 10 ) 234 235 236 # 237 # -- 2.) ------------------------------------------------------------------ 238 # 239 BoxSizer = wx.BoxSizer( wx.HORIZONTAL ) 240 241 BoxSizer.Add( self.TreeCtrlErg__AnmerkungId, flag = wx.EXPAND ) 242 243 BoxSizer.Add( Rand, flag = wx.EXPAND ) 244 245 # 246 # -- In das Eingabeformular übernehmen ---------------------------------- 247 # 248 self.nimmDialogElemente( BoxSizer ) 249 250 251 # 252 # -- 'Anmerkungen / Interne Notizen' -------------------------- 253 # -- 'Verfügbare Anmerkungen / Interne Notizen' -------------------------- 254 # 255 self.__liesDB__() 256 self.__ereignisLiesDBVorhAnm__() 257 258 259 # 260 # -- Button 'Änderungen verwerfen' / 'Änderungen sichern' deaktivieren -- 261 # 262 self.Button__Verwerfen.Enable( False ) 263 self.Button__Sichern.Enable( False )
264 265 266 267 268 # 269 # ------------------------------------------------------------------------------------ 270 # -- Anmerkung bearbeiten -------------------------------------------------- 271 # ------------------------------------------------------------------------------------ 272 #
273 - def __ereignisAnmerkungBearbeiten__( self, ereignis ):
274 """ 275 Methode die aufgerufen wird, wenn der Text der Sicherheitsanforderung bearbeitet werden soll. 276 277 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 278 @type ereignis: C{wx - Ereignisobjekt} 279 """ 280 281 # 282 # -- Formular zur Bearbeitung der Übersetzungsvariante aufrufen ---------- 283 # 284 dlg = BearbeiteUebersetzungNeu( parent = self 285 , Statusleiste = self.Statusleiste 286 , dbVerbindung = self.dbVerbindung 287 , sprSprachenId = self.sprSprachenId 288 , sprUebvarId = ereignis.GetEventObject().gibClientData()[0] 289 , notizen = ereignis.GetEventObject().gibClientData()[1] ) 290 291 292 # 293 # -- Dialog aufrufen ---------------------------------------------------------- 294 # 295 dlg.ShowModal() 296 dlg.Destroy() 297 298 299 # 300 # -- geänderte >spr.uebvar.id< bzw. >notizen< in -------------------------- 301 # -- >prj.pl_psgefanm< übernehmen -------------------------- 302 # 303 ps_anmerkung_id = ereignis.GetEventObject().gibDbId() 304 if( dlg.gibWerte()[0] 305 and ( dlg.gibWerte()[1] != ereignis.GetEventObject().gibClientData()[0] 306 or dlg.gibWerte()[2] != ereignis.GetEventObject().gibClientData()[1] ) ) : 307 308 self.dbVerbindung.schreibe__PrjPlPsGefAnm( listeWerte = [# -- ps_anmerkung_id ------- 309 ps_anmerkung_id 310 # -- spr_uebvar_id --------- 311 , dlg.gibWerte()[1] 312 # -- notizen --------------- 313 , dlg.gibWerte()[2] ] 314 , prjProjekteId = self.prjProjekteId 315 , psGefszenarioId = self.psGefszenarioId ) 316 317 318 # 319 # -- 'Anmerkungen / Interne Notizen' aktualisieren -- 320 # -- 'Verfügbare Anmerkungen / Interne Notizen' aktualisieren -- 321 # 322 self.__liesDB__() 323 self.__ereignisLiesDBVorhAnm__() 324 325 326 # 327 # -- Buttton 'Änderungen speichern' / 'Änderungen verwerfen' ------------------ 328 # -- aktivieren, wenn eine Benutzeränderung vorliegt ------------------ 329 # 330 if( dlg.gibWerte()[0] ) : 331 self.Button__Verwerfen.Enable( True ) 332 self.Button__Sichern.Enable( True ) 333 334 335 # 336 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 337 # -- ausgewertet werden kann -------------------------- 338 # 339 ereignis.Skip( skip = True )
340 341 342 343 344 # 345 # ------------------------------------------------------------------------------------ 346 # -- Anmerkung entfernen -------------------------------------------------- 347 # ------------------------------------------------------------------------------------ 348 #
349 - def __ereignisAnmerkungLoesen__( self, ereignis = None ):
350 """ 351 Anmerkung vom Gefahrenszenario lösen (entfernen). 352 353 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 354 @type ereignis: C{wx - Ereignisobjekt} 355 """ 356 357 # 358 # -- Anmerkung in der Datenbank 'löschen' ---------------------------------- 359 # 360 self.dbVerbindung.schreibe__PrjPlPsGefAnm( listeWerte = [# -- ps_anmerkung_id ------- 361 ereignis.GetEventObject().gibDbId() 362 # -- spr_uebvar_id --------- 363 , ereignis.GetEventObject().gibClientData()[0] 364 # -- notizen --------------- 365 , ereignis.GetEventObject().gibClientData()[1] ] 366 , prjProjekteId = self.prjProjekteId 367 , psGefszenarioId = self.psGefszenarioId 368 , logentfernt = 'true' ) 369 370 371 # 372 # -- 'Anmerkungen / Interne Notizen' aktualisieren ---------- 373 # -- 'Verfügbare Anmerkungen / Interne Notizen' aktualisieren ---------- 374 # 375 self.__liesDB__() 376 self.__ereignisLiesDBVorhAnm__() 377 378 379 # 380 # -- Button 'Änderungen verwerfen' / 'Änderungen sichern' aktivieren ---------- 381 # 382 self.Button__Verwerfen.Enable( True ) 383 self.Button__Sichern.Enable( True ) 384 385 386 # 387 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 388 # -- ausgewertet werden kann -------------------------- 389 # 390 ereignis.Skip( skip = True )
391 392 393 394 395 396 # 397 # ------------------------------------------------------------------------------------ 398 # -- Anmerkung übernehmen -------------------------------------------------- 399 # ------------------------------------------------------------------------------------ 400 #
401 - def __ereignisAnmerkungZuordnen__( self, ereignis = None ):
402 """ 403 Anmerkung übernehmen 404 405 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 406 @type ereignis: C{wx - Ereignisobjekt} 407 """ 408 409 # 410 # -- Anmerkung in der Datenbank 'löschen' ---------------------------------- 411 # 412 self.dbVerbindung.schreibe__PrjPlPsGefAnm( 413 listeWerte = [# -- ps_anmerkung_id ------- 414 ereignis.GetEventObject().gibClientData( lfdNr = ereignis.GetEventObject().GetSelection() )[2] 415 # -- spr_uebvar_id --------- 416 , ereignis.GetEventObject().gibClientData( lfdNr = ereignis.GetEventObject().GetSelection() )[0] 417 # -- notizen --------------- 418 , ereignis.GetEventObject().gibClientData( lfdNr = ereignis.GetEventObject().GetSelection() )[1] ] 419 , prjProjekteId = self.prjProjekteId 420 , psGefszenarioId = self.psGefszenarioId ) 421 422 423 # 424 # -- 'Anmerkungen / Interne Notizen' aktualisieren ---------- 425 # -- 'Verfügbare Anmerkungen / Interne Notizen' aktualisieren ---------- 426 # 427 self.__liesDB__() 428 self.__ereignisLiesDBVorhAnm__() 429 430 431 # 432 # -- Button 'Änderungen verwerfen' / 'Änderungen sichern' aktivieren ---------- 433 # 434 self.Button__Verwerfen.Enable( True ) 435 self.Button__Sichern.Enable( True ) 436 437 438 # 439 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 440 # -- ausgewertet werden kann -------------------------- 441 # 442 ereignis.Skip( skip = True )
443 444 445 446 447 # 448 # ------------------------------------------------------------------------------------ 449 # -- Datenbank auslesen für 'Anmerkungen/Interne Notizen' ------------------ 450 # ------------------------------------------------------------------------------------ 451 #
452 - def __liesDB__( self ):
453 """ 454 Methode die aufgerufen wird, wenn die dem Gefahrenszenario zugeordneten Anmerkungen-Id ausgelesen werden sollen. 455 """ 456 457 # 458 # -- Datenbank auslesen -------------------------------------------------- 459 # 460 self.dbVerbindung.selektiere__psGefAnm( 461 ListBoxGefAnm = None 462 # , TCSpWTitel = None 463 , TreeCtrlErgAnmId = self.TreeCtrlErg__AnmerkungId.wxObjekt 464 , ListBoxErgVorhAnmId = None 465 # , ListBoxSpWTSVorhAnm = None 466 , liesAlles = None 467 , prjProjekteId = self.prjProjekteId 468 , sprSprachenId = self.sprSprachenId 469 , psGefszenarioId = self.psGefszenarioId 470 , psAnmerkungId = None )
471 472 473 474 475 # 476 # ------------------------------------------------------------------------------------ 477 # -- Datenbank auslesen 'Vorhandene Anmerkungen' -------------------------- 478 # ------------------------------------------------------------------------------------ 479 #
480 - def __ereignisLiesDBVorhAnm__( self, ereignis = None, allesLesen = False ):
481 """ 482 Methode die aufgerufen wird, wenn nach Änderung des Zustandes der C{wx.CheckBox} 'Zeige alle Anmerkungen' die Datenbank ausgelesen werden muß. 483 484 @requires: Erst ist muß C{self.ListBox__AnmerkungId} gefüllt sein. 485 486 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 487 @type ereignis: C{wx - Ereignisobjekt} 488 489 @param allesLesen: Wenn C{True} angegeben wird, werden alle Anmerungen gelesen 490 @type allesLesen: C{wx - Ereignisobjekt} 491 """ 492 493 # 494 # -- Anmerkungen auslesen -------------------------------------------------- 495 # 496 if( ereignis != None ) : liesAlles = ereignis.GetEventObject().gibWert() 497 else : liesAlles = allesLesen 498 499 self.dbVerbindung.selektiere__psGefAnm( 500 ListBoxGefAnm = None 501 # , TCSpWTitel = None 502 , TreeCtrlErgAnmId = None 503 , ListBoxErgVorhAnmId = self.ListBox__VorhAnmerkungId.wxObjekt 504 , liesAlles = liesAlles 505 , prjProjekteId = self.prjProjekteId 506 , sprSprachenId = self.sprSprachenId 507 , psGefszenarioId = self.psGefszenarioId 508 , psAnmerkungId = None ) 509 510 511 # 512 # -- Das Ereignis weiterreichen, damit es weiter -------------------------- 513 # -- ausgewertet werden kann -------------------------- 514 # 515 if( ereignis != None ) : 516 ereignis.Skip( skip = True )
517