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