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

Source Code for Module bearbeitestrukturen

  1  # -*- coding: utf-8 -*- 
  2  # 
  3  # 
  4  #    filrname:  bearbeitestrukturen.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   
 40  import wx 
 41   
 42   
 43  # begin wxGlade: dependencies 
 44  # end wxGlade 
 45   
46 -class BearbeiteStrukturen(wx.Dialog):
47 """ 48 Klasse, die das Fenster zur Strukturbearbeitung repräsentiert. 49 Es wird ein C{PostgreSQL - Safepoint} mit dem Namen 'BearbeiteStrukturen' gesetzt. Mittels dieses C{Safepoint} wird die Funktionalität des Buttons 'Änderungen übernehmen' implementiert. 50 """
51 - def __init__(self, *args, **kwds):
52 # begin wxGlade: BearbeiteStrukturen.__init__ 53 kwds["style"] = wx.RESIZE_BORDER|wx.THICK_FRAME 54 wx.Dialog.__init__(self, *args, **kwds) 55 self.splitter_window_StrPers = wx.SplitterWindow(self, -1, style=wx.SP_3D|wx.SP_BORDER|wx.CLIP_CHILDREN) 56 self.wxPanel_VerantwPersonen = wx.Panel(self.splitter_window_StrPers, -1, style=wx.TAB_TRAVERSAL|wx.CLIP_CHILDREN) 57 self.wxPanel_Strukturpunkte = wx.Panel(self.splitter_window_StrPers, -1, style=wx.TAB_TRAVERSAL|wx.CLIP_CHILDREN) 58 self.label_Projekt = wx.StaticText(self, -1, "Projekt") 59 self.combo_box_Projekt = wx.ComboBox(self, -1, choices=[], style=wx.CB_DROPDOWN|wx.CB_READONLY) 60 self.label_Sprache = wx.StaticText(self, -1, "Sprache") 61 self.combo_box_Sprache = wx.ComboBox(self, -1, choices=[], style=wx.CB_DROPDOWN|wx.CB_READONLY) 62 self.static_line_1 = wx.StaticLine(self, -1) 63 self.label_Strukturbezeichnung_li = wx.StaticText(self, -1, "Strukturbezeichnung") 64 self.combo_box_Strukturbezeichnung_li = wx.ComboBox(self, -1, choices=[], style=wx.CB_DROPDOWN|wx.CB_READONLY) 65 self.label_Strukturpunkte_li = wx.StaticText(self, -1, "Strukturpunkte") 66 self.list_box_Strukturpunkte_li = wx.ListBox(self, -1, choices=[]) 67 self.label_Strukturbezeichnung_re = wx.StaticText(self, -1, "Strukturbezeichnung") 68 self.combo_box_Strukturbezeichnung_re = wx.ComboBox(self, -1, choices=[], style=wx.CB_DROPDOWN|wx.CB_READONLY) 69 self.button_VerbindeStrukturpunkte = wx.Button(self.wxPanel_Strukturpunkte, -1, "Struktur-\npunkte\nverbinden") 70 self.label_Strukturpunkte_re = wx.StaticText(self.wxPanel_Strukturpunkte, -1, "Strukturpunkte") 71 self.list_box_Strukturpunkte_re = wx.ListBox(self.wxPanel_Strukturpunkte, -1, choices=[], style=wx.LB_MULTIPLE|wx.LB_EXTENDED) 72 self.button_PersonenZuordnen = wx.Button(self.wxPanel_VerantwPersonen, -1, "Personen\nzuordnen") 73 self.label_VerantwPersonen = wx.StaticText(self.wxPanel_VerantwPersonen, -1, "Verantwortliche Personen") 74 self.list_box_VerantwPersonen = wx.ListBox(self.wxPanel_VerantwPersonen, -1, choices=[], style=wx.LB_MULTIPLE|wx.LB_EXTENDED) 75 self.static_line_2 = wx.StaticLine(self, -1) 76 self.label_Struktur = wx.StaticText(self, -1, "Struktur (als Baum dargestellt)") 77 self.tree_ctrl_Struktur = wx.TreeCtrl(self, -1, style=wx.TR_HAS_BUTTONS|wx.TR_NO_LINES|wx.TR_DEFAULT_STYLE|wx.SUNKEN_BORDER) 78 self.button_AenderungenSpeichern = wx.Button(self, -1, u"Änderungen übernehmen") 79 self.button_FensterSchliessen = wx.Button(self, -1, u"Fenster schließen (Änderungen verwerfen)") 80 81 self.__set_properties() 82 self.__do_layout()
83 # end wxGlade 84
85 - def __set_properties(self):
86 # begin wxGlade: BearbeiteStrukturen.__set_properties 87 self.SetTitle("Strukturen bearbeiten") 88 self.SetSize((1000, 710)) 89 self.combo_box_Projekt.SetMinSize((300, 21)) 90 self.combo_box_Sprache.SetMinSize((300, 21)) 91 self.combo_box_Strukturbezeichnung_li.SetMinSize((435, 21)) 92 self.list_box_Strukturpunkte_li.SetMinSize((435, 395)) 93 self.combo_box_Strukturbezeichnung_re.SetMinSize((435, 21)) 94 self.button_VerbindeStrukturpunkte.SetMinSize((90, 51)) 95 self.button_VerbindeStrukturpunkte.Enable(False) 96 self.list_box_Strukturpunkte_re.SetMinSize((430, 350)) 97 self.button_PersonenZuordnen.SetMinSize((90, 36)) 98 self.button_PersonenZuordnen.Enable(False) 99 self.list_box_VerantwPersonen.SetMinSize((430, 350)) 100 self.list_box_VerantwPersonen.Enable(False) 101 self.splitter_window_StrPers.SetMinSize((530, 410)) 102 self.label_Struktur.Enable(False) 103 self.tree_ctrl_Struktur.SetMinSize((980, 100)) 104 self.tree_ctrl_Struktur.Enable(False) 105 self.button_AenderungenSpeichern.SetMinSize((200, 27)) 106 self.button_FensterSchliessen.SetMinSize((300, 27))
107 # end wxGlade 108
109 - def __do_layout(self):
110 # begin wxGlade: BearbeiteStrukturen.__do_layout 111 grid_sizer_11 = wx.FlexGridSizer(3, 3, 0, 0) 112 grid_sizer_12 = wx.FlexGridSizer(6, 1, 0, 0) 113 grid_sizer_8 = wx.FlexGridSizer(1, 3, 0, 10) 114 grid_sizer_15 = wx.FlexGridSizer(2, 1, 0, 10) 115 sizer_7 = wx.BoxSizer(wx.VERTICAL) 116 grid_sizer_5 = wx.FlexGridSizer(1, 2, 0, 10) 117 grid_sizer_4 = wx.FlexGridSizer(2, 1, 10, 10) 118 grid_sizer_14 = wx.FlexGridSizer(1, 2, 10, 10) 119 grid_sizer_18 = wx.FlexGridSizer(2, 1, 0, 0) 120 grid_sizer_13 = wx.FlexGridSizer(1, 2, 10, 10) 121 grid_sizer_17 = wx.FlexGridSizer(2, 1, 0, 0) 122 grid_sizer_7 = wx.FlexGridSizer(1, 2, 10, 10) 123 sizer_8 = wx.BoxSizer(wx.VERTICAL) 124 grid_sizer_6 = wx.FlexGridSizer(2, 1, 10, 10) 125 sizer_13 = wx.BoxSizer(wx.VERTICAL) 126 sizer_12 = wx.BoxSizer(wx.VERTICAL) 127 sizer_6 = wx.BoxSizer(wx.VERTICAL) 128 grid_sizer_3 = wx.FlexGridSizer(1, 3, 0, 10) 129 sizer_5 = wx.BoxSizer(wx.VERTICAL) 130 sizer_4 = wx.BoxSizer(wx.VERTICAL) 131 grid_sizer_11.Add((10, 10), 0, 0, 0) 132 grid_sizer_11.Add((10, 10), 0, 0, 0) 133 grid_sizer_11.Add((10, 10), 0, 0, 0) 134 grid_sizer_11.Add((10, 10), 0, 0, 0) 135 sizer_4.Add(self.label_Projekt, 0, 0, 0) 136 sizer_4.Add(self.combo_box_Projekt, 0, 0, 0) 137 grid_sizer_3.Add(sizer_4, 1, wx.EXPAND, 0) 138 sizer_5.Add(self.label_Sprache, 0, 0, 0) 139 sizer_5.Add(self.combo_box_Sprache, 0, 0, 0) 140 grid_sizer_3.Add(sizer_5, 1, wx.EXPAND, 0) 141 grid_sizer_3.Add((20, 20), 0, 0, 0) 142 grid_sizer_12.Add(grid_sizer_3, 1, wx.EXPAND, 0) 143 sizer_6.Add((10, 10), 0, 0, 0) 144 sizer_6.Add(self.static_line_1, 0, wx.EXPAND, 0) 145 sizer_6.Add((10, 10), 0, 0, 0) 146 grid_sizer_12.Add(sizer_6, 1, wx.EXPAND, 0) 147 sizer_12.Add(self.label_Strukturbezeichnung_li, 0, 0, 0) 148 sizer_12.Add(self.combo_box_Strukturbezeichnung_li, 0, 0, 0) 149 grid_sizer_6.Add(sizer_12, 1, wx.EXPAND, 0) 150 sizer_13.Add(self.label_Strukturpunkte_li, 0, 0, 0) 151 sizer_13.Add(self.list_box_Strukturpunkte_li, 0, 0, 0) 152 grid_sizer_6.Add(sizer_13, 1, wx.EXPAND, 0) 153 grid_sizer_5.Add(grid_sizer_6, 1, wx.EXPAND, 0) 154 grid_sizer_7.Add((90, 20), 0, 0, 0) 155 sizer_8.Add(self.label_Strukturbezeichnung_re, 0, 0, 0) 156 sizer_8.Add(self.combo_box_Strukturbezeichnung_re, 0, 0, 0) 157 grid_sizer_7.Add(sizer_8, 1, wx.EXPAND, 0) 158 grid_sizer_4.Add(grid_sizer_7, 1, wx.EXPAND, 0) 159 grid_sizer_13.Add(self.button_VerbindeStrukturpunkte, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0) 160 grid_sizer_17.Add(self.label_Strukturpunkte_re, 0, 0, 0) 161 grid_sizer_17.Add(self.list_box_Strukturpunkte_re, 0, wx.EXPAND, 0) 162 grid_sizer_13.Add(grid_sizer_17, 1, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0) 163 self.wxPanel_Strukturpunkte.SetSizer(grid_sizer_13) 164 grid_sizer_14.Add(self.button_PersonenZuordnen, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0) 165 grid_sizer_18.Add(self.label_VerantwPersonen, 0, 0, 0) 166 grid_sizer_18.Add(self.list_box_VerantwPersonen, 0, wx.EXPAND, 0) 167 grid_sizer_14.Add(grid_sizer_18, 1, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0) 168 self.wxPanel_VerantwPersonen.SetSizer(grid_sizer_14) 169 self.splitter_window_StrPers.SplitHorizontally(self.wxPanel_Strukturpunkte, self.wxPanel_VerantwPersonen) 170 grid_sizer_4.Add(self.splitter_window_StrPers, 1, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0) 171 grid_sizer_5.Add(grid_sizer_4, 1, wx.EXPAND, 0) 172 grid_sizer_12.Add(grid_sizer_5, 1, wx.EXPAND, 0) 173 sizer_7.Add((10, 10), 0, 0, 0) 174 sizer_7.Add(self.static_line_2, 0, wx.EXPAND, 0) 175 sizer_7.Add((10, 10), 0, 0, 0) 176 grid_sizer_12.Add(sizer_7, 1, wx.EXPAND, 0) 177 grid_sizer_15.Add(self.label_Struktur, 0, 0, 0) 178 grid_sizer_15.Add(self.tree_ctrl_Struktur, 1, wx.EXPAND, 0) 179 grid_sizer_12.Add(grid_sizer_15, 1, wx.EXPAND, 0) 180 grid_sizer_8.Add((430, 50), 0, 0, 0) 181 grid_sizer_8.Add(self.button_AenderungenSpeichern, 0, wx.ALIGN_CENTER_VERTICAL, 0) 182 grid_sizer_8.Add(self.button_FensterSchliessen, 0, wx.ALIGN_CENTER_VERTICAL, 0) 183 grid_sizer_12.Add(grid_sizer_8, 1, wx.EXPAND, 0) 184 grid_sizer_11.Add(grid_sizer_12, 1, wx.EXPAND, 0) 185 grid_sizer_11.Add((10, 10), 0, 0, 0) 186 grid_sizer_11.Add((10, 10), 0, 0, 0) 187 grid_sizer_11.Add((10, 10), 0, 0, 0) 188 grid_sizer_11.Add((10, 10), 0, 0, 0) 189 self.SetSizer(grid_sizer_11) 190 self.Layout() 191 self.Centre() 192 # end wxGlade 193 194 195 # 196 # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 197 # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 198 # ++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 199 # ++ Beginn Bellair ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 200 # ++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 201 # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 202 # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 203 # 204 # 205 # -------------------------------------------------------------------------------- 206 # -------------------------------------------------------------------------------- 207 # -- -------------------------------------------------- 208 # -- Initialisierungen -------------------------------------------------- 209 # -- -------------------------------------------------- 210 # -------------------------------------------------------------------------------- 211 # -------------------------------------------------------------------------------- 212 # 213 self.CenterOnScreen() 214 self.NameSafepoint = 'BearbeiteStrukturen' 215 216 217 218 # 219 # -------------------------------------------------------------------------------- 220 # -------------------------------------------------------------------------------- 221 # -- -------------------------------------------------- 222 # -- Kontextmenü erstellen -------------------------------------------------- 223 # -- -------------------------------------------------- 224 # -------------------------------------------------------------------------------- 225 # -------------------------------------------------------------------------------- 226 # 227 228 # 229 # -------------------------------------------------------------------------------- 230 # -- Kontextmenü der Strukturpunkte (links) ---------------------------------- 231 # -------------------------------------------------------------------------------- 232 # 233 self.kMenueStrukturpunkte_li = wx.Menu() 234 self.kMenueStrukturpunkte_li.Append( 101, "Neue Struktur erstellen") 235 self.kMenueStrukturpunkte_li.Append( 102, "Struktur löschen") 236 self.kMenueStrukturpunkte_li.AppendSeparator() 237 self.kMenueStrukturpunkte_li.AppendSeparator() 238 self.kMenueStrukturpunkte_li.Append( 201, "Strukturpunkt hinzufügen") 239 self.kMenueStrukturpunkte_li.Append( 202, "Strukturpunkt umbenennen" ) 240 self.kMenueStrukturpunkte_li.Append( 203, "Strukturpunkt löschen" ) 241 self.kMenueStrukturpunkte_li.AppendSeparator() 242 self.kMenueStrukturpunkte_li.Append( 301, "Strukturpunkt zum Projekt hinzufügen" ) 243 # 244 # momentan deaktiviert 245 # 246 self.kMenueStrukturpunkte_li.Enable( 101, False ) 247 self.kMenueStrukturpunkte_li.Enable( 102, False ) 248 self.kMenueStrukturpunkte_li.Enable( 201, False ) 249 self.kMenueStrukturpunkte_li.Enable( 202, False ) 250 self.kMenueStrukturpunkte_li.Enable( 203, False ) 251 252 253 254 # 255 # -------------------------------------------------------------------------------- 256 # -- Kontextmenü der Strukturpunkte (rechts) ---------------------------------- 257 # -------------------------------------------------------------------------------- 258 # 259 self.kMenueStrukturpunkte_re = wx.Menu() 260 self.kMenueStrukturpunkte_re.Append( 101, "Strukturpunkt(e) zum Projekt hinzufügen" ) 261 self.kMenueStrukturpunkte_re.AppendSeparator() 262 self.kMenueStrukturpunkte_re.Append( 201, "Verbindung(en) aufheben" ) 263 # 264 # momentan deaktiviert 265 # 266 self.kMenueStrukturpunkte_re.Enable( 101, False ) 267 268 269 # 270 # -------------------------------------------------------------------------------- 271 # -- Kontextmenü der verantwortlichen Personen -------------------------- 272 # -------------------------------------------------------------------------------- 273 # 274 self.kMenueVerantwPersonen = wx.Menu() 275 self.kMenueVerantwPersonen.Append( 101, "Zuordnung(en) zum Strukturpunkt aufheben" ) 276 277 278 279 # 280 # -------------------------------------------------------------------------------- 281 # -------------------------------------------------------------------------------- 282 # -- -------------------------------------------------- 283 # -- Ereignisse behandeln -------------------------------------------------- 284 # -- -------------------------------------------------- 285 # -------------------------------------------------------------------------------- 286 # -------------------------------------------------------------------------------- 287 # 288 289 # 290 # -------------------------------------------------------------------------------- 291 # -- Button ---------------------------------------------------------- 292 # -------------------------------------------------------------------------------- 293 # 294 self.button_FensterSchliessen.Bind( wx.EVT_BUTTON, self.__schliesseFenster__ ) 295 self.button_AenderungenSpeichern.Bind( wx.EVT_BUTTON, self.__speichereAenderungen__ ) 296 297 self.button_PersonenZuordnen.Bind( wx.EVT_BUTTON, self.__betaetigtButtonPersonenZuordnen__ ) 298 self.button_VerbindeStrukturpunkte.Bind( wx.EVT_BUTTON, self.__betaetigtButtonVerbindeStrukturpunkte__ ) 299 300 # 301 # -------------------------------------------------------------------------------- 302 # -- ComboBox ---------------------------------------------------------- 303 # -------------------------------------------------------------------------------- 304 # 305 self.combo_box_Projekt.Bind( wx.EVT_COMBOBOX, self.__aktualisiereStruktur__ ) 306 self.combo_box_Sprache.Bind( wx.EVT_COMBOBOX, self.__aktualisiereStruktur__ ) 307 self.combo_box_Strukturbezeichnung_li.Bind( wx.EVT_COMBOBOX, self.__aktualisiereStruktur__ ) 308 self.combo_box_Strukturbezeichnung_re.Bind( wx.EVT_COMBOBOX, self.__aktualisiereStruktur__ ) 309 310 # 311 # -------------------------------------------------------------------------------- 312 # -- ListBox ---------------------------------------------------------- 313 # -------------------------------------------------------------------------------- 314 # 315 self.Bind( wx.EVT_LISTBOX, self.__selektiereStrpktePersonen__, self.list_box_Strukturpunkte_li ) 316 self.Bind( wx.EVT_LISTBOX, self.__aktiviereButtonVerbindeStrukturpunkte__, self.list_box_Strukturpunkte_re ) 317 self.Bind( wx.EVT_LISTBOX, self.__aktiviereButtonPersonenZuordnen__, self.list_box_VerantwPersonen ) 318 319 # 320 # -------------------------------------------------------------------------------- 321 # -- Menü ------------------------------------------------------------------ 322 # -------------------------------------------------------------------------------- 323 # 324 325 # 326 # -- Kontextmenü der Strukturpunkte (links) ---------------------------------- 327 # 328 self.Bind( wx.EVT_CONTEXT_MENU, self.__zeigeKMenueStrukturpunkteLi__, self.list_box_Strukturpunkte_li ) 329 330 self.kMenueStrukturpunkte_li.Bind( wx.EVT_MENU, self.__strPktHinzufuegen__, id=201 ) 331 self.kMenueStrukturpunkte_li.Bind( wx.EVT_MENU, self.__dummy__, id=301 ) 332 333 # 334 # -- Kontextmenü der Strukturpunkte (rechts) ---------------------------------- 335 # 336 self.Bind( wx.EVT_CONTEXT_MENU, self.__zeigeKMenueStrukturpunkteRe__, self.list_box_Strukturpunkte_re ) 337 self.kMenueStrukturpunkte_re.Bind( wx.EVT_MENU, self.__dummy__, id=201 ) 338 339 # 340 # -- Kontextmenü der Strukturpunkte (rechts) ---------------------------------- 341 # 342 self.Bind( wx.EVT_CONTEXT_MENU, self.__zeigeKMenueVerantwPersonen__, self.list_box_VerantwPersonen ) 343 self.kMenueVerantwPersonen.Bind( wx.EVT_MENU, self.__dummy__, id=101 )
344 345 346 # 347 # ------------------------------------------------------------------------------------ 348 # ------------------------------------------------------------------------------------ 349 # -- ---------------------------------------------------------- 350 # -- Funktionen ---------------------------------------------------------- 351 # -- ---------------------------------------------------------- 352 # ------------------------------------------------------------------------------------ 353 # ------------------------------------------------------------------------------------ 354 # 355 356 # 357 # ------------------------------------------------------------------------------------ 358 # -- Button 'Personen zuordnen' aktivieren ---------------------------------- 359 # ------------------------------------------------------------------------------------ 360 #
361 - def __aktiviereButtonPersonenZuordnen__( self, ereignisDummy ):
362 """ 363 Es wird der Taster 'Personen zuordnen' aktiviert, wenn ein linker Strukturpunkt und mindestens eine Person selektiert ist. 364 365 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 366 @type ereignisDummy: C{wx - Ereignisobjekt} 367 """ 368 369 # 370 # wenn kein linker Strukturpunkt selektiert wurde, kann die Methode sofort 371 # verlassen werden 372 # 373 if len( self.list_box_Strukturpunkte_li.GetSelections() ) == 0 : 374 return 375 376 # 377 # Button 'Personen zuordnen' aktivieren 378 # 379 if len( self.list_box_VerantwPersonen.GetSelections() ) > 0 : 380 self.button_PersonenZuordnen.Enable() 381 else : 382 self.button_PersonenZuordnen.Disable()
383 384 385 # 386 # ------------------------------------------------------------------------------------ 387 # -- Button 'Verbinde Strukturpunkte' aktivieren -------------------------- 388 # ------------------------------------------------------------------------------------ 389 #
390 - def __aktiviereButtonVerbindeStrukturpunkte__( self, ereignisDummy ):
391 """ 392 Es wird der Button 'Verbinde Strukturpunkte' aktiviert, wenn ein linker Strukturpunkt und mindestens ein rechter Strukturpunkt selektiert ist. 393 394 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 395 @type ereignisDummy: C{wx - Ereignisobjekt} 396 """ 397 398 # 399 # wenn kein linker Strukturpunkt selektiert wurde, kann die Methode sofort 400 # verlassen werden 401 # 402 if len( self.list_box_Strukturpunkte_li.GetSelections() ) == 0 : 403 return 404 405 # 406 # Button 'Verbinde Strukturpunkte' aktivieren 407 # 408 if len( self.list_box_Strukturpunkte_re.GetSelections() ) > 0 : 409 self.button_VerbindeStrukturpunkte.Enable() 410 else : 411 self.button_VerbindeStrukturpunkte.Disable()
412 413 414 415 # 416 # ------------------------------------------------------------------------------------ 417 # -- Struktur aktualisieren -------------------------------------------------- 418 # ------------------------------------------------------------------------------------ 419 #
420 - def __aktualisiereStruktur__( self, ereignisDummy ):
421 """ 422 Methode die aufgerufen wird, wenn Benutzereingaben die Aktualisierung der Struktur erfordern. 423 424 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 425 @type ereignisDummy: C{wx - Ereignisobjekt} 426 """ 427 428 # 429 # Button 'Strukturpunkte verbinden' und 'Personen zuordnen' können noch nicht benutzt 430 # werden, deshalb deaktivieren 431 # 432 self.button_VerbindeStrukturpunkte.Disable() 433 self.button_PersonenZuordnen.Disable() 434 435 # 436 # Struktur (links) aktualisieren 437 # 438 self.list_box_Strukturpunkte_li.Clear() 439 self.dbVerbindung.init_strStrkt( self.list_box_Strukturpunkte_li 440 # , self.combo_box_Projekt.GetClientData(self.combo_box_Projekt.GetSelection())[0] 441 # , self.combo_box_Sprache.GetClientData(self.combo_box_Sprache.GetSelection())[0] 442 , self.combo_box_Strukturbezeichnung_li.GetClientData(self.combo_box_Strukturbezeichnung_li.GetSelection())[0] ) 443 444 # 445 # Struktur (rechts) aktualisieren 446 # 447 self.list_box_Strukturpunkte_re.Clear() 448 self.dbVerbindung.init_strStrkt( self.list_box_Strukturpunkte_re 449 # , self.combo_box_Projekt.GetClientData(self.combo_box_Projekt.GetSelection())[0] 450 # , self.combo_box_Sprache.GetClientData(self.combo_box_Sprache.GetSelection())[0] 451 , self.combo_box_Strukturbezeichnung_re.GetClientData(self.combo_box_Strukturbezeichnung_re.GetSelection())[0] ) 452 453 # 454 # ListBox 'verantwortliche Personen' aktivieren, wenn Projekt ausgewählt wurde, 455 # sonst deaktivieren (vorher alle Selektionen zurücksetzen) 456 # 457 if self.combo_box_Projekt.GetClientData( self.combo_box_Projekt.GetSelection() )[0] > 0 : 458 self.list_box_VerantwPersonen.Enable() 459 else : 460 self.dbVerbindung.WxListBoxDeselektieren( self.list_box_VerantwPersonen ) 461 self.list_box_VerantwPersonen.Disable()
462 463 464 # 465 # ------------------------------------------------------------------------------------ 466 # -- Button 'Personen zuordnen' wurde betätigt -------------------------- 467 # ------------------------------------------------------------------------------------ 468 #
469 - def __betaetigtButtonPersonenZuordnen__( self, ereignisDummy ):
470 """ 471 Der Button 'Personen zuordnen' wurde betätigt. Die Verbindung zwischen dem selektierten linken Strukturpunkt und den selektierten Personen wird der Datenbank übergeben. 472 473 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 474 @type ereignisDummy: C{wx - Ereignisobjekt} 475 """ 476 477 # 478 # Alle selektierten Personen übergeben 479 # 480 tmp = self.list_box_VerantwPersonen.GetSelections() 481 for i in range( len( tmp ) ) : 482 self.dbVerbindung.schreibe__PrjPpStrstrkt( self.combo_box_Projekt.GetClientData(self.combo_box_Projekt.GetSelection())[0] 483 , self.list_box_Strukturpunkte_li.GetClientData( self.list_box_Strukturpunkte_li.GetSelection() )[0] 484 , self.list_box_VerantwPersonen.GetClientData( tmp[i] )[0] 485 , 0 486 , "" 487 , "" )
488 489 490 # 491 # ------------------------------------------------------------------------------------ 492 # -- Button 'Verbinde Strukturpunkte' wurde betätigt -------------------------- 493 # ------------------------------------------------------------------------------------ 494 #
495 - def __betaetigtButtonVerbindeStrukturpunkte__( self, ereignisDummy ):
496 """ 497 Der Button 'Verbinde Strukturpunkte' wurde betätigt. Die Verbindung zwischen dem selektierten linken Strukturpunkt und den selektierten rechten Strukturpunkten wird der Datenbank übergeben. 498 499 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 500 @type ereignisDummy: C{wx - Ereignisobjekt} 501 """ 502 503 # 504 # Alle selektierten Strukturpunkte (rechts) übergeben 505 # 506 tmp = self.list_box_Strukturpunkte_re.GetSelections() 507 for i in range( len( tmp ) ) : 508 self.dbVerbindung.schreibe__prjPStrverbindung( self.combo_box_Projekt.GetClientData( self.combo_box_Projekt.GetSelection() )[0] 509 , self.list_box_Strukturpunkte_li.GetClientData( self.list_box_Strukturpunkte_li.GetSelection() )[0] 510 , self.list_box_Strukturpunkte_re.GetClientData( tmp[i] )[0] 511 , "" 512 , "" )
513 514 515 # 516 # ------------------------------------------------------------------------------------ 517 # -- Dummy, welcher später gelöscht werden kann -------------------------- 518 # ------------------------------------------------------------------------------------ 519 #
520 - def __dummy__( self, ereignisDummy ):
521 """ 522 Methode die aufgerufen wird, um auf die fehlende Funktionalität hizuweisen 523 524 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 525 @type ereignisDummy: C{wx - Ereignisobjekt} 526 """ 527 528 # 529 # -- Meldung ausgeben -------------------------------------------------- 530 # 531 dlg = wx.MessageDialog( self, "Noch nicht implementiert !", "Hinweis", wx.OK | wx.ICON_INFORMATION ) 532 dlg.ShowModal() 533 dlg.Destroy()
534 535 536 537 538 # 539 # ------------------------------------------------------------------------------------ 540 # -- Fenster schließen (Änderungen verwerfen) ------------------------- 541 # ------------------------------------------------------------------------------------ 542 #
543 - def __schliesseFenster__( self, ereignisDummy ):
544 """ 545 Methode die aufgerufen wird, wenn das Fester geschlossen wird und somit alle Veränderungen verworfen werden sollen. 546 547 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 548 @type ereignisDummy: C{wx - Ereignisobjekt} 549 """ 550 551 # 552 # -- Änderunge bis zum Safepoint verwerfen, Fenster schließen --------- 553 # 554 self.dbVerbindung.verwerfeAenderungenSafepoint( self.NameSafepoint ) 555 self.Destroy()
556 557 558 # 559 # ------------------------------------------------------------------------------------ 560 # -- Änderungen übernehmen -------------------------------------------------- 561 # ------------------------------------------------------------------------------------ 562 #
563 - def __selektiereStrpktePersonen__( self, ereignis ):
564 """ 565 Methode die aufgerufen wird, wenn die Auswahl eines linken Strukturpunktes, die Auswahl mindestens eines zugeordneten rechten Strukturpunktes bzw. einer zugeordneten verantwortlichen Person erfordert. 566 567 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. 568 @type ereignis: C{wx - Ereignisobjekt} 569 """ 570 571 # 572 # Button 'Strukturpunkte verbinden' und 'Personen zuordnen' können noch nicht benutzt 573 # werden, deshalb deaktivieren 574 # 575 self.button_VerbindeStrukturpunkte.Disable() 576 self.button_PersonenZuordnen.Disable() 577 578 # 579 # Bei ungültigen Ereignissen, die Methode verlassen 580 # 581 if ereignis.GetClientData() is None: 582 return 583 584 # 585 # Alle Verbindungen/zugeordneten Personen zum aktuell ausgewählten Strukturpunkt markieren 586 # 587 # >ClentData< des aktuell ausgewählten Strukturpunktes enthält an der ersten Position 588 # die >str.strkt.id< des Strukturpunktes 589 # 590 self.dbVerbindung.selektiere__strStrkt( self.list_box_Strukturpunkte_re 591 # , self.combo_box_Projekt.GetClientData(self.combo_box_Projekt.GetSelection())[0] 592 , ereignis.GetClientData()[0] 593 , self.combo_box_Strukturbezeichnung_re.GetClientData(self.combo_box_Strukturbezeichnung_re.GetSelection())[0] ) 594 595 self.dbVerbindung.selektiere__prjPersonen( self.list_box_VerantwPersonen 596 # , self.combo_box_Projekt.GetClientData(self.combo_box_Projekt.GetSelection())[0] 597 , ereignis.GetClientData()[0] )
598 599 600 # 601 # ------------------------------------------------------------------------------------ 602 # -- Änderungen übernehmen -------------------------------------------------- 603 # ------------------------------------------------------------------------------------ 604 #
605 - def __speichereAenderungen__( self, ereignisDummy ):
606 """ 607 Methode die aufgerufen wird, wenn alle Veränderungen in der Datenbank gesichert werden sollen. 608 609 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 610 @type ereignisDummy: C{wx - Ereignisobjekt} 611 """ 612 613 # 614 # Änderunge bis zum Safepoint speichern, Safepoint neu setzen 615 # 616 self.dbVerbindung.nimmAenderungenSafepoint( self.NameSafepoint ) 617 self.dbVerbindung.setzeSafepoint( self.NameSafepoint )
618 619 620 # 621 # ------------------------------------------------------------------------------------ 622 # -- Strukturpunkt hinzufügen ------------------------------------------ 623 # ------------------------------------------------------------------------------------ 624 #
625 - def __strPktHinzufuegen__( self, ereignisDummy ):
626 """ 627 Methode die aufgerufen wird, wenn ein Strukturpunkt hinzugefügt werden soll. 628 629 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 630 @type ereignisDummy: C{wx - Ereignisobjekt} 631 """ 632 633 print "Strukturpunkt hinzufügen"
634 635 636 # 637 # ------------------------------------------------------------------------------------ 638 # -- Kontextmenü der Strukturpunkte (links) zeigen -------------------------- 639 # ------------------------------------------------------------------------------------ 640 #
641 - def __zeigeKMenueStrukturpunkteLi__( self, ereignisDummy ):
642 """ 643 Methode die aufgerufen wird, wenn das Kontextmenü in der Liste der Strukturpunkte (links) angezeigt werden soll. 644 645 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 646 @type ereignisDummy: C{wx - Ereignisobjekt} 647 """ 648 649 # 650 # -- wenn kein linker Strukturpunkt selektiert ist, sind alle ---------- 651 # -- Menüpunkte zu deaktivieren ---------- 652 # 653 if len( self.list_box_Strukturpunkte_li.GetSelections() ) == 0 : 654 self.kMenueStrukturpunkte_li.Enable( 301, False ) 655 else : 656 self.kMenueStrukturpunkte_li.Enable( 301, True ) 657 658 # 659 # -- Menü anzeigen ---------------------------------------------------------- 660 # 661 self.PopupMenu( self.kMenueStrukturpunkte_li )
662 663 664 # 665 # ------------------------------------------------------------------------------------ 666 # -- Kontextmenü der Strukturpunkte (rechts) zeigen -------------------------- 667 # ------------------------------------------------------------------------------------ 668 #
669 - def __zeigeKMenueStrukturpunkteRe__( self, ereignisDummy ):
670 """ 671 Methode die aufgerufen wird, wenn das Kontextmenü in der Liste der Strukturpunkte (rechts) angezeigt werden soll. 672 673 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 674 @type ereignisDummy: C{wx - Ereignisobjekt} 675 """ 676 677 # 678 # -- wenn kein rechter Strukturpunkt selektiert ist, sind alle ---------- 679 # -- Menüpunkte zu deaktivieren ---------- 680 # 681 if len( self.list_box_Strukturpunkte_re.GetSelections() ) == 0 : 682 self.kMenueStrukturpunkte_re.Enable( 201, False ) 683 else : 684 self.kMenueStrukturpunkte_re.Enable( 201, True ) 685 686 # 687 # -- Menü anzeigen ---------------------------------------------------------- 688 # 689 self.PopupMenu( self.kMenueStrukturpunkte_re )
690 691 692 # 693 # ------------------------------------------------------------------------------------ 694 # -- Kontextmenü der verantwortlichen Personen) zeigen ------------------ 695 # ------------------------------------------------------------------------------------ 696 #
697 - def __zeigeKMenueVerantwPersonen__( self, ereignisDummy ):
698 """ 699 Methode die aufgerufen wird, wenn das Kontextmenü in der Liste der verantwortlichen Personen angezeigt werden soll. 700 701 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet. 702 @type ereignisDummy: C{wx - Ereignisobjekt} 703 """ 704 705 # 706 # -- wenn keine Person selektiert ist, sind alle Menüpunkte zu deaktivieren -- 707 # 708 if len( self.list_box_VerantwPersonen.GetSelections() ) == 0 : 709 self.kMenueVerantwPersonen.Enable( 101, False ) 710 else : 711 self.kMenueVerantwPersonen.Enable( 101, True ) 712 713 # 714 # -- Menü anzeigen ---------------------------------------------------------- 715 # 716 self.PopupMenu( self.kMenueVerantwPersonen )
717 718 719 # 720 # ------------------------------------------------------------------------------------ 721 # -- Datenbank auslesen -------------------------------------------------- 722 # ------------------------------------------------------------------------------------ 723 #
724 - def liesDatenbank( self, dbVerbindung ):
725 """ 726 Methode die aufgerufen wird, um zur Strukturbearbeitung alle benötigten Datenbanktabellen auszulesen. 727 728 @note: Das übergebene C{Datenbank-Objekt} wird verändert ! 729 730 @param dbVerbindung: Es ist ein C{Datenbank-Objekt} zu übergeben, welches eine Datenbankverbindung aufgebaut hat. 731 @type dbVerbindung: C{Datenbank-Objekt} 732 """ 733 734 # 735 # -- Datenbankverbindung übernehmen ------------------------------------------ 736 # 737 self.dbVerbindung = dbVerbindung 738 """ 739 @cvar: Datenbankobjekt, welches die Datenbankverbindung enthält. 740 @type: libpq - PgConnection 741 """ 742 743 # 744 # -- Safepoint setzen -------------------------------------------------- 745 # 746 self.dbVerbindung.setzeSafepoint( self.NameSafepoint ) 747 748 # 749 # -- Projekt, Sprache -------------------------------------------------- 750 # 751 self.dbVerbindung.init_prjProjekte( self.combo_box_Projekt ) 752 self.dbVerbindung.init_sprSprachen( self.combo_box_Sprache ) 753 754 # 755 # -- Strukturbezeichnung, Strukturpunkte (links) -------------------------- 756 # 757 self.dbVerbindung.init_strName( self.combo_box_Strukturbezeichnung_li ) 758 self.dbVerbindung.init_strStrkt( self.list_box_Strukturpunkte_li 759 # , self.combo_box_Projekt.GetClientData(self.combo_box_Projekt.GetSelection())[0] 760 # , self.combo_box_Sprache.GetClientData(self.combo_box_Sprache.GetSelection())[0] 761 , self.combo_box_Strukturbezeichnung_li.GetClientData(self.combo_box_Strukturbezeichnung_li.GetSelection())[0] ) 762 763 # 764 # -- Strukturbezeichnung, Strukturpunkte (rechts) -------------------------- 765 # 766 self.dbVerbindung.init_strName( self.combo_box_Strukturbezeichnung_re ) 767 self.dbVerbindung.init_strStrkt( self.list_box_Strukturpunkte_re 768 # , self.combo_box_Projekt.GetClientData(self.combo_box_Projekt.GetSelection())[0] 769 # , self.combo_box_Sprache.GetClientData(self.combo_box_Sprache.GetSelection())[0] 770 , self.combo_box_Strukturbezeichnung_re.GetClientData(self.combo_box_Strukturbezeichnung_re.GetSelection())[0] ) 771 772 # 773 # -- Personen ---------------------------------------------------------- 774 # 775 self.dbVerbindung.init_prjPersonen( self.list_box_VerantwPersonen )
776 777 778 # 779 # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 780 # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 781 # ++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 782 # ++ Ende Bellair ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 783 # ++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 784 # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 785 # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 786 # 787 788 # end of class BearbeiteStrukturen 789