|
Module BearbeiteStrukturen
|
|
1
2
3
4 import wx
5
6
7
8
9
11 """
12 Klasse, die das Fenster zur Strukturbearbeitung repräsentiert.
13 """
15
16 kwds["style"] = wx.RESIZE_BORDER|wx.THICK_FRAME
17 wx.Dialog.__init__(self, *args, **kwds)
18 self.splitter_window_StrPers = wx.SplitterWindow(self, -1, style=wx.SP_3D|wx.SP_BORDER|wx.CLIP_CHILDREN)
19 self.wxPanel_VerantwPersonen = wx.Panel(self.splitter_window_StrPers, -1, style=wx.TAB_TRAVERSAL|wx.CLIP_CHILDREN)
20 self.wxPanel_Strukturpunkte = wx.Panel(self.splitter_window_StrPers, -1, style=wx.TAB_TRAVERSAL|wx.CLIP_CHILDREN)
21 self.label_Projekt = wx.StaticText(self, -1, "Projekt")
22 self.combo_box_Projekt = wx.ComboBox(self, -1, choices=[], style=wx.CB_DROPDOWN|wx.CB_READONLY)
23 self.label_Sprache = wx.StaticText(self, -1, "Sprache")
24 self.combo_box_Sprache = wx.ComboBox(self, -1, choices=[], style=wx.CB_DROPDOWN|wx.CB_READONLY)
25 self.static_line_1 = wx.StaticLine(self, -1)
26 self.label_Strukturbezeichnung_li = wx.StaticText(self, -1, "Strukturbezeichnung")
27 self.combo_box_Strukturbezeichnung_li = wx.ComboBox(self, -1, choices=[], style=wx.CB_DROPDOWN|wx.CB_READONLY)
28 self.label_Strukturpunkte_li = wx.StaticText(self, -1, "Strukturpunkte")
29 self.list_box_Strukturpunkte_li = wx.ListBox(self, -1, choices=[])
30 self.label_Strukturbezeichnung_re = wx.StaticText(self, -1, "Strukturbezeichnung")
31 self.combo_box_Strukturbezeichnung_re = wx.ComboBox(self, -1, choices=[], style=wx.CB_DROPDOWN|wx.CB_READONLY)
32 self.button_VerbindeStrukturpunkte = wx.Button(self.wxPanel_Strukturpunkte, -1, "Struktur-\npunkte\nverbinden")
33 self.label_Strukturpunkte_re = wx.StaticText(self.wxPanel_Strukturpunkte, -1, "Strukturpunkte")
34 self.list_box_Strukturpunkte_re = wx.ListBox(self.wxPanel_Strukturpunkte, -1, choices=[], style=wx.LB_MULTIPLE|wx.LB_EXTENDED)
35 self.button_PersonenZuordnen = wx.Button(self.wxPanel_VerantwPersonen, -1, "Personen\nzuordnen")
36 self.label_VerantwPersonen = wx.StaticText(self.wxPanel_VerantwPersonen, -1, "Verantwortliche Personen")
37 self.list_box_VerantwPersonen = wx.ListBox(self.wxPanel_VerantwPersonen, -1, choices=[], style=wx.LB_MULTIPLE|wx.LB_EXTENDED)
38 self.static_line_2 = wx.StaticLine(self, -1)
39 self.label_Struktur = wx.StaticText(self, -1, "Struktur (als Baum dargestellt)")
40 self.tree_ctrl_Struktur = wx.TreeCtrl(self, -1, style=wx.TR_HAS_BUTTONS|wx.TR_NO_LINES|wx.TR_DEFAULT_STYLE|wx.SUNKEN_BORDER)
41 self.button_AenderungenSpeichern = wx.Button(self, -1, u"Änderungen übernehmen")
42 self.button_FensterSchliessen = wx.Button(self, -1, u"Fenster schließen (Änderungen verwerfen)")
43
44 self.__set_properties()
45 self.__do_layout()
46
47
49
50 self.SetTitle("Strukturen bearbeiten")
51 self.SetSize((1000, 710))
52 self.combo_box_Projekt.SetMinSize((300, 21))
53 self.combo_box_Sprache.SetMinSize((300, 21))
54 self.combo_box_Strukturbezeichnung_li.SetMinSize((435, 21))
55 self.list_box_Strukturpunkte_li.SetMinSize((435, 395))
56 self.combo_box_Strukturbezeichnung_re.SetMinSize((435, 21))
57 self.button_VerbindeStrukturpunkte.SetMinSize((90, 51))
58 self.button_VerbindeStrukturpunkte.Enable(False)
59 self.list_box_Strukturpunkte_re.SetMinSize((430, 350))
60 self.button_PersonenZuordnen.SetMinSize((90, 36))
61 self.button_PersonenZuordnen.Enable(False)
62 self.list_box_VerantwPersonen.SetMinSize((430, 350))
63 self.list_box_VerantwPersonen.Enable(False)
64 self.splitter_window_StrPers.SetMinSize((530, 410))
65 self.label_Struktur.Enable(False)
66 self.tree_ctrl_Struktur.SetMinSize((980, 100))
67 self.tree_ctrl_Struktur.Enable(False)
68 self.button_AenderungenSpeichern.SetMinSize((200, 27))
69 self.button_FensterSchliessen.SetMinSize((300, 27))
70
71
73
74 grid_sizer_11 = wx.FlexGridSizer(3, 3, 0, 0)
75 grid_sizer_12 = wx.FlexGridSizer(6, 1, 0, 0)
76 grid_sizer_8 = wx.FlexGridSizer(1, 3, 0, 10)
77 grid_sizer_15 = wx.FlexGridSizer(2, 1, 0, 10)
78 sizer_7 = wx.BoxSizer(wx.VERTICAL)
79 grid_sizer_5 = wx.FlexGridSizer(1, 2, 0, 10)
80 grid_sizer_4 = wx.FlexGridSizer(2, 1, 10, 10)
81 grid_sizer_14 = wx.FlexGridSizer(1, 2, 10, 10)
82 grid_sizer_18 = wx.FlexGridSizer(2, 1, 0, 0)
83 grid_sizer_13 = wx.FlexGridSizer(1, 2, 10, 10)
84 grid_sizer_17 = wx.FlexGridSizer(2, 1, 0, 0)
85 grid_sizer_7 = wx.FlexGridSizer(1, 2, 10, 10)
86 sizer_8 = wx.BoxSizer(wx.VERTICAL)
87 grid_sizer_6 = wx.FlexGridSizer(2, 1, 10, 10)
88 sizer_13 = wx.BoxSizer(wx.VERTICAL)
89 sizer_12 = wx.BoxSizer(wx.VERTICAL)
90 sizer_6 = wx.BoxSizer(wx.VERTICAL)
91 grid_sizer_3 = wx.FlexGridSizer(1, 3, 0, 10)
92 sizer_5 = wx.BoxSizer(wx.VERTICAL)
93 sizer_4 = wx.BoxSizer(wx.VERTICAL)
94 grid_sizer_11.Add((10, 10), 0, 0, 0)
95 grid_sizer_11.Add((10, 10), 0, 0, 0)
96 grid_sizer_11.Add((10, 10), 0, 0, 0)
97 grid_sizer_11.Add((10, 10), 0, 0, 0)
98 sizer_4.Add(self.label_Projekt, 0, 0, 0)
99 sizer_4.Add(self.combo_box_Projekt, 0, 0, 0)
100 grid_sizer_3.Add(sizer_4, 1, wx.EXPAND, 0)
101 sizer_5.Add(self.label_Sprache, 0, 0, 0)
102 sizer_5.Add(self.combo_box_Sprache, 0, 0, 0)
103 grid_sizer_3.Add(sizer_5, 1, wx.EXPAND, 0)
104 grid_sizer_3.Add((20, 20), 0, 0, 0)
105 grid_sizer_12.Add(grid_sizer_3, 1, wx.EXPAND, 0)
106 sizer_6.Add((10, 10), 0, 0, 0)
107 sizer_6.Add(self.static_line_1, 0, wx.EXPAND, 0)
108 sizer_6.Add((10, 10), 0, 0, 0)
109 grid_sizer_12.Add(sizer_6, 1, wx.EXPAND, 0)
110 sizer_12.Add(self.label_Strukturbezeichnung_li, 0, 0, 0)
111 sizer_12.Add(self.combo_box_Strukturbezeichnung_li, 0, 0, 0)
112 grid_sizer_6.Add(sizer_12, 1, wx.EXPAND, 0)
113 sizer_13.Add(self.label_Strukturpunkte_li, 0, 0, 0)
114 sizer_13.Add(self.list_box_Strukturpunkte_li, 0, 0, 0)
115 grid_sizer_6.Add(sizer_13, 1, wx.EXPAND, 0)
116 grid_sizer_5.Add(grid_sizer_6, 1, wx.EXPAND, 0)
117 grid_sizer_7.Add((90, 20), 0, 0, 0)
118 sizer_8.Add(self.label_Strukturbezeichnung_re, 0, 0, 0)
119 sizer_8.Add(self.combo_box_Strukturbezeichnung_re, 0, 0, 0)
120 grid_sizer_7.Add(sizer_8, 1, wx.EXPAND, 0)
121 grid_sizer_4.Add(grid_sizer_7, 1, wx.EXPAND, 0)
122 grid_sizer_13.Add(self.button_VerbindeStrukturpunkte, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
123 grid_sizer_17.Add(self.label_Strukturpunkte_re, 0, 0, 0)
124 grid_sizer_17.Add(self.list_box_Strukturpunkte_re, 0, wx.EXPAND, 0)
125 grid_sizer_13.Add(grid_sizer_17, 1, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
126 self.wxPanel_Strukturpunkte.SetSizer(grid_sizer_13)
127 grid_sizer_14.Add(self.button_PersonenZuordnen, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
128 grid_sizer_18.Add(self.label_VerantwPersonen, 0, 0, 0)
129 grid_sizer_18.Add(self.list_box_VerantwPersonen, 0, wx.EXPAND, 0)
130 grid_sizer_14.Add(grid_sizer_18, 1, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
131 self.wxPanel_VerantwPersonen.SetSizer(grid_sizer_14)
132 self.splitter_window_StrPers.SplitHorizontally(self.wxPanel_Strukturpunkte, self.wxPanel_VerantwPersonen)
133 grid_sizer_4.Add(self.splitter_window_StrPers, 1, wx.EXPAND|wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
134 grid_sizer_5.Add(grid_sizer_4, 1, wx.EXPAND, 0)
135 grid_sizer_12.Add(grid_sizer_5, 1, wx.EXPAND, 0)
136 sizer_7.Add((10, 10), 0, 0, 0)
137 sizer_7.Add(self.static_line_2, 0, wx.EXPAND, 0)
138 sizer_7.Add((10, 10), 0, 0, 0)
139 grid_sizer_12.Add(sizer_7, 1, wx.EXPAND, 0)
140 grid_sizer_15.Add(self.label_Struktur, 0, 0, 0)
141 grid_sizer_15.Add(self.tree_ctrl_Struktur, 1, wx.EXPAND, 0)
142 grid_sizer_12.Add(grid_sizer_15, 1, wx.EXPAND, 0)
143 grid_sizer_8.Add((430, 50), 0, 0, 0)
144 grid_sizer_8.Add(self.button_AenderungenSpeichern, 0, wx.ALIGN_CENTER_VERTICAL, 0)
145 grid_sizer_8.Add(self.button_FensterSchliessen, 0, wx.ALIGN_CENTER_VERTICAL, 0)
146 grid_sizer_12.Add(grid_sizer_8, 1, wx.EXPAND, 0)
147 grid_sizer_11.Add(grid_sizer_12, 1, wx.EXPAND, 0)
148 grid_sizer_11.Add((10, 10), 0, 0, 0)
149 grid_sizer_11.Add((10, 10), 0, 0, 0)
150 grid_sizer_11.Add((10, 10), 0, 0, 0)
151 grid_sizer_11.Add((10, 10), 0, 0, 0)
152 self.SetSizer(grid_sizer_11)
153 self.Layout()
154 self.Centre()
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171 self.CenterOnScreen()
172
173
174
175
176
177
178 self.button_FensterSchliessen.Bind( wx.EVT_BUTTON, self.__schliesseFenster__ )
179 self.button_AenderungenSpeichern.Bind( wx.EVT_BUTTON, self.__speichereAenderungen__ )
180
181 self.combo_box_Projekt.Bind( wx.EVT_COMBOBOX, self.__aktualisiereStruktur__ )
182 self.combo_box_Sprache.Bind( wx.EVT_COMBOBOX, self.__aktualisiereStruktur__ )
183 self.combo_box_Strukturbezeichnung_li.Bind( wx.EVT_COMBOBOX, self.__aktualisiereStruktur__ )
184 self.combo_box_Strukturbezeichnung_re.Bind( wx.EVT_COMBOBOX, self.__aktualisiereStruktur__ )
185
186 self.Bind(wx.EVT_LISTBOX, self.__selektiereStrpktePersonen__, self.list_box_Strukturpunkte_li )
187 self.Bind(wx.EVT_LISTBOX, self.__aktiviereButtonVerbindeStrukturpunkte__, self.list_box_Strukturpunkte_re )
188 self.Bind(wx.EVT_LISTBOX, self.__aktiviereButtonPersonenZuordnen__, self.list_box_VerantwPersonen )
189
190 self.button_PersonenZuordnen.Bind( wx.EVT_BUTTON, self.__betaetigtButtonPersonenZuordnen__ )
191 self.button_VerbindeStrukturpunkte.Bind( wx.EVT_BUTTON, self.__betaetigtButtonVerbindeStrukturpunkte__ )
192
193
194
195
196
197
198
199
200
201
202
203
226
227
228
229
230
253
254
255
256
257
258
260 """
261 Methode die aufgerufen wird, wenn Benutzereingaben die Aktualisierung der Struktur erfordern.
262
263 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet.
264 @type ereignisDummy: C{wx - Ereignisobjekt}
265 """
266
267
268
269
270
271 self.button_VerbindeStrukturpunkte.Disable()
272 self.button_PersonenZuordnen.Disable()
273
274
275
276
277 self.list_box_Strukturpunkte_li.Clear()
278 self.dbVerbunden.initWxListBox_strStrkt( self.list_box_Strukturpunkte_li
279 , self.combo_box_Projekt.GetClientData(self.combo_box_Projekt.GetSelection())[0]
280 , self.combo_box_Sprache.GetClientData(self.combo_box_Sprache.GetSelection())[0]
281 , self.combo_box_Strukturbezeichnung_li.GetClientData(self.combo_box_Strukturbezeichnung_li.GetSelection())[0] )
282
283
284
285
286 self.list_box_Strukturpunkte_re.Clear()
287 self.dbVerbunden.initWxListBox_strStrkt( self.list_box_Strukturpunkte_re
288 , self.combo_box_Projekt.GetClientData(self.combo_box_Projekt.GetSelection())[0]
289 , self.combo_box_Sprache.GetClientData(self.combo_box_Sprache.GetSelection())[0]
290 , self.combo_box_Strukturbezeichnung_re.GetClientData(self.combo_box_Strukturbezeichnung_re.GetSelection())[0] )
291
292
293
294
295
296 if self.combo_box_Projekt.GetClientData( self.combo_box_Projekt.GetSelection() )[0] > 0 :
297 self.list_box_VerantwPersonen.Enable()
298 else :
299 self.dbVerbunden.deselektiereWxListBox( self.list_box_VerantwPersonen )
300 self.list_box_VerantwPersonen.Disable()
301
302
303
304
305
325
326
327
328
329
339
340
341
342
343
345 """
346 Methode die aufgerufen wird, wenn die Auswahl eines linken Strukturpunktes, die Auswahl mindestens eines zugeordneten rechten Strukturpunktes bzw. einer zugeordneten verantwortlichen Person erfordert.
347
348 @param ereignis: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben.
349 @type ereignis: C{wx - Ereignisobjekt}
350 """
351
352
353
354
355
356 self.button_VerbindeStrukturpunkte.Disable()
357 self.button_PersonenZuordnen.Disable()
358
359
360
361
362 if ereignis.GetClientData() is None:
363 return
364
365
366
367
368
369
370
371 self.dbVerbunden.selektiereWxListBox_strStrktId( self.list_box_Strukturpunkte_re
372 , self.combo_box_Projekt.GetClientData(self.combo_box_Projekt.GetSelection())[0]
373 , ereignis.GetClientData()[0]
374 , self.combo_box_Strukturbezeichnung_re.GetClientData(self.combo_box_Strukturbezeichnung_re.GetSelection())[0] )
375
376 self.dbVerbunden.selektiereWxListBox_prjPersonenId( self.list_box_VerantwPersonen
377 , self.combo_box_Projekt.GetClientData(self.combo_box_Projekt.GetSelection())[0]
378 , ereignis.GetClientData()[0] )
379
380
381
382
383
385 """
386 Methode die aufgerufen wird, wenn alle Veränderungen in der Datenbank gesichert werden sollen.
387
388 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet.
389 @type ereignisDummy: C{wx - Ereignisobjekt}
390 """
391
392
393
394 print "Änderungen übernehmen"
395 self.dbVerbunden.dbAbfrage( 'ROLLBACK' )
396
397
398
399
400
402 """
403 Methode die aufgerufen wird, wenn das Fester geschlossen wird und somit alle Veränderungen verworfen werden sollen.
404
405 @param ereignisDummy: Es ist das C{wx - Ereignisobjekt} zur Ereignisbehandlung zu übergeben. Es wird jedoch nicht verwendet.
406 @type ereignisDummy: C{wx - Ereignisobjekt}
407 """
408
409
410
411 print "Änderungen verwerfen"
412 self.dbVerbunden.dbAbfrage( 'ROLLBACK' )
413 self.Destroy()
414
415
416
417
418
420 """
421 Methode die aufgerufen wird, um zur Strukturbearbeitung alle benötigten Datenbanktabellen auszulesen.
422
423 @note: Das übergebene C{Datenbank-Objekt} wird verändert !
424
425 @param dbVerbunden: Es ist ein C{Datenbank-Objekt} zu übergeben, welches eine Datenbankverbindung aufgebaut hat.
426 @type dbVerbunden: C{Datenbank-Objekt}
427 """
428
429
430
431
432 self.dbVerbunden = dbVerbunden
433 """
434 @cvar: Datenbankobjekt, welches die Datenbankverbindung enthält.
435 @type: libpq - PgConnection
436 """
437
438
439
440
441 self.dbVerbunden.initWxComboBox_prjProjekte( self.combo_box_Projekt )
442 self.dbVerbunden.initWxComboBox_sprSprachen( self.combo_box_Sprache )
443
444
445
446
447 self.dbVerbunden.initWxComboBox_strName( self.combo_box_Strukturbezeichnung_li )
448 self.dbVerbunden.initWxListBox_strStrkt( self.list_box_Strukturpunkte_li
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_li.GetClientData(self.combo_box_Strukturbezeichnung_li.GetSelection())[0] )
452
453
454
455
456 self.dbVerbunden.initWxComboBox_strName( self.combo_box_Strukturbezeichnung_re )
457 self.dbVerbunden.initWxListBox_strStrkt( self.list_box_Strukturpunkte_re
458 , self.combo_box_Projekt.GetClientData(self.combo_box_Projekt.GetSelection())[0]
459 , self.combo_box_Sprache.GetClientData(self.combo_box_Sprache.GetSelection())[0]
460 , self.combo_box_Strukturbezeichnung_re.GetClientData(self.combo_box_Strukturbezeichnung_re.GetSelection())[0] )
461
462
463
464
465 self.dbVerbunden.initWxListBox_prjPersonen( self.list_box_VerantwPersonen )
466
467
468
469
470
471
472
473
474
475
476
477
478
479