~ubuntu-branches/ubuntu/gutsy/openipmi/gutsy

« back to all changes in this revision

Viewing changes to swig/python/openipmigui/gui_list.py

  • Committer: Bazaar Package Importer
  • Author(s): Noèl Köthe
  • Date: 2007-06-21 19:48:32 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20070621194832-nqtxvxn4pu3ha3gh
Tags: 2.0.11-1
* new upstream release from 2007-02-25
  (closes: Bug#392788)
* added patch parts from Philipp Matthias Hahn <pmhahn@debian.org>
  Thank you!

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
 
33
33
import Tix
34
34
import gui_errstr
35
 
 
 
35
import gui
 
36
 
 
37
# A list widget that can be embedded in something else
 
38
class SubList(Tix.ScrolledHList):
 
39
    def __init__(self, parent, columns, options, width, height):
 
40
        Tix.ScrolledHList.__init__(self, parent,
 
41
                                   options=options, width=width, height=height)
 
42
        
 
43
        i = 0
 
44
        for c in columns:
 
45
            self.hlist.header_create(i, text=c[0])
 
46
            self.hlist.column_width(i, c[1])
 
47
            i += 1
 
48
            pass
 
49
        
 
50
        self.list_hash = { }
 
51
        self.currkey = 0
 
52
 
 
53
        self.hlist.bind("<Button-3>", self.ListMenu)
 
54
 
 
55
        self.bind("<Destroy>", self.OnDestroy)
 
56
 
 
57
        self.hlist.bind("<MouseWheel>", self.Wheel)
 
58
        if (gui.winsys == "x11"):
 
59
            self.hlist.bind("<Button-4>", self.ButtonUp)
 
60
            self.hlist.bind("<Button-5>", self.ButtonDown)
 
61
            pass
 
62
 
 
63
        return
 
64
 
 
65
    def Wheel(self, event):
 
66
        self.hlist.yview("scroll", -(event.delta / 20), "units")
 
67
        return
 
68
    
 
69
    def ButtonUp(self, event):
 
70
        event.delta = 120
 
71
        self.Wheel(event);
 
72
        return
 
73
    
 
74
    def ButtonDown(self, event):
 
75
        event.delta = -120
 
76
        self.Wheel(event);
 
77
        return
 
78
    
 
79
    def OnDestroy(self, event):
 
80
        self.list_hash = None
 
81
        return
 
82
 
 
83
    def ListMenu(self, event):
 
84
        w = event.widget
 
85
        key = w.nearest(event.y)
 
86
        data = self.list_hash[key]
 
87
        if (data and hasattr(data, "HandleMenu")):
 
88
            data.HandleMenu(event, key, event)
 
89
            pass
 
90
        return
 
91
 
 
92
    def DelItem(self, key):
 
93
        self.hlist.delete_entry(key)
 
94
        del self.list_hash[key]
 
95
        return
 
96
 
 
97
    def Append(self, name, values, data=None):
 
98
        key = str(self.currkey)
 
99
        self.currkey += 1
 
100
        self.hlist.add(key, text=name)
 
101
        self.list_hash[key] = data
 
102
        i = 1
 
103
        for v in values:
 
104
            if (v != None):
 
105
                self.hlist.item_create(key, i, text=str(v))
 
106
            i += 1
 
107
            pass
 
108
        return key
 
109
 
 
110
    def SetColumn(self, idx, colnum, value):
 
111
        self.hlist.item_configure(idx, colnum, text=value)
 
112
        return
 
113
 
 
114
    def SetColumnStyle(self, node, colnum, style):
 
115
        self.hlist.item_configure(node, colnum, style=style)
 
116
        return
 
117
 
 
118
    def add_data(self, name, values, data=None):
 
119
        idx = self.Append(name, values, data);
 
120
        if (data != None):
 
121
            data.SetItem(idx)
 
122
            pass
 
123
        return idx
 
124
 
 
125
    def DeleteAllItems(self):
 
126
        self.hlist.delete_all()
 
127
        self.list_hash = { }
 
128
        self.currkey = 0
 
129
        return
 
130
    
 
131
    pass
 
132
 
 
133
# A top-level list
36
134
class List(Tix.Toplevel):
37
135
    def __init__(self, name, columns):
38
136
        Tix.Toplevel.__init__(self)
39
137
        self.title(name)
40
138
 
41
 
        slist = Tix.ScrolledHList(self,
42
 
                                  options=("hlist.header 1"
43
 
                                           + " hlist.itemtype text"
44
 
                                           + (" hlist.columns "
45
 
                                              + str(len(columns)))
46
 
                                           + " hlist.selectForeground black"
47
 
                                           + " hlist.selectBackground beige"),
48
 
                                  width=500, height=500)
49
 
        listc = slist.hlist
50
 
        self.listc = listc
 
139
        slist = SubList(self,
 
140
                        columns,
 
141
                        options=("hlist.header 1"
 
142
                                 + " hlist.itemtype text"
 
143
                                 + (" hlist.columns "
 
144
                                    + str(len(columns)))
 
145
                                 + " hlist.selectForeground black"
 
146
                                 + " hlist.selectBackground beige"),
 
147
                        width=500, height=500)
51
148
        slist.pack(side=Tix.TOP, fill=Tix.BOTH, expand=1)
52
 
        
53
 
        i = 0
54
 
        for c in columns:
55
 
            listc.header_create(i, text=c[0])
56
 
            listc.column_width(i, c[1])
57
 
            i += 1
58
 
            pass
 
149
        self.slist = slist
59
150
        
60
151
        self.errstr = gui_errstr.ErrStr(self)
61
152
        self.errstr.pack(side=Tix.TOP, fill=Tix.BOTH, expand=1)
75
166
            pass
76
167
        bbox.pack(side=Tix.TOP, fill=Tix.BOTH, expand=1)
77
168
 
78
 
        listc.bind("<Button-3>", self.ListMenu)
79
 
 
80
169
        self.bind("<Destroy>", self.OnDestroy)
81
170
 
82
 
        self.list_hash = { }
83
 
        self.currkey = 0
84
 
 
85
171
        return
86
172
 
87
173
    def AfterDone(self):
95
181
        if (hasattr(self, "do_on_close")):
96
182
            self.do_on_close()
97
183
            pass
98
 
        self.list_hash = None
99
 
        return
100
 
 
101
 
    def ListMenu(self, event):
102
 
        w = event.widget
103
 
        key = w.nearest(event.y)
104
 
        data = self.list_hash[key]
105
 
        if (data and hasattr(data, "HandleMenu")):
106
 
            data.HandleMenu(event, key, event)
107
 
            pass
108
184
        return
109
185
 
110
186
    def DelItem(self, key):
111
 
        self.listc.delete_entry(key)
112
 
        del self.list_hash[key]
 
187
        self.slist.DelItem(key)
113
188
        return
114
189
 
115
190
    def Append(self, name, values, data=None):
116
 
        key = str(self.currkey)
117
 
        self.currkey += 1
118
 
        self.listc.add(key, text=name)
119
 
        self.list_hash[key] = data
120
 
        i = 1
121
 
        for v in values:
122
 
            if (v != None):
123
 
                self.listc.item_create(key, i, text=str(v))
124
 
            i += 1
125
 
            pass
126
 
        return key
 
191
        return self.slist.Append(name, values, data)
127
192
 
128
193
    def SetColumn(self, idx, colnum, value):
129
 
        self.listc.item_configure(idx, colnum, text=value)
130
 
        return
131
 
 
 
194
        self.slist.SetColumn(idx, colnum, value)
 
195
        return
 
196
 
 
197
    def add_data(self, name, values, data=None):
 
198
        return self.slist.add_data(name, values, data)
 
199
 
 
200
    def DeleteAllItems(self):
 
201
        return self.slist.DeleteAllItems()
 
202
        return
 
203
    
132
204
    def SetError(self, str):
133
205
        self.errstr.SetError(str)
134
206
        return
135
207
 
 
208
    # Pass the rest of the functions on to the base list.
 
209
    def DelItem(self, key):
 
210
        self.slist.DelItem(key)
 
211
        return
 
212
 
 
213
    def Append(self, name, values, data=None):
 
214
        return self.slist.Append(name, values, data)
 
215
 
 
216
    def SetColumn(self, idx, colnum, value):
 
217
        self.slist.SetColumn(idx, colnum, value)
 
218
        return
 
219
 
136
220
    def add_data(self, name, values, data=None):
137
 
        idx = self.Append(name, values, data);
138
 
        if (data != None):
139
 
            data.SetItem(idx)
140
 
            pass
141
 
        return idx
 
221
        return self.slist.add_data(name, values, data)
142
222
 
143
223
    def DeleteAllItems(self):
144
 
        self.listc.delete_all()
145
 
        self.list_hash = { }
146
 
        self.currkey = 0
 
224
        return self.slist.DeleteAllItems()
147
225
        return
148
226
    
149
227
    pass