Changeset 73 in main for trunk/plugins
- Timestamp:
- 07/06/10 16:27:06 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/plugins/gedit/openplm.py
r72 r73 283 283 self.instance = instance 284 284 docs = self.instance.get_data("api/docs/") 285 self.types = docs["types"] 285 286 table = gtk.Table(2, 3) 286 287 self.vbox.pack_start(table) … … 289 290 self.type_entry.append_text(t) 290 291 self.type_entry.child.set_text("Document") 292 self.type_entry.connect("changed", self.type_entry_activate_cb) 291 293 self.name_entry = gtk.Entry() 292 294 self.rev_entry = gtk.Entry() 293 self.fields = (("type", self.type_entry),294 ("name", self.name_entry),295 ("revision", self.rev_entry),296 )295 self.fields = [("type", self.type_entry), 296 ("reference", self.name_entry), 297 ("revision", self.rev_entry), 298 ] 297 299 for i, (text, entry) in enumerate(self.fields): 298 300 table.attach(gtk.Label(_(text.capitalize()+":")), 0, 1, i, i+1) 299 301 table.attach(entry, 1, 2, i, i+1) 300 302 303 self.advanced_table = gtk.Table(2, 3) 304 self.advanced_fields = [] 305 self.vbox.pack_start(self.advanced_table) 306 self.display_fields("Document") 307 301 308 search_button = gtk.Button(_("Search")) 302 309 search_button.connect("clicked", self.search) … … 306 313 self.vbox.pack_start(self.results_box) 307 314 self.vbox.show_all() 315 316 def type_entry_activate_cb(self, entry): 317 typename = entry.child.get_text() 318 if typename in self.types: 319 self.display_fields(typename) 320 321 def display_fields(self, typename): 322 fields = self.instance.get_data("api/search_fields/%s/" % typename)["fields"] 323 temp = {} 324 for field, entry in self.advanced_fields: 325 temp[field] = self.get_value(entry) 326 for child in self.advanced_table.get_children(): 327 child.destroy() 328 self.advanced_fields = [] 329 self.advanced_table.resize(2, len(fields)) 330 for i, (text, choices) in enumerate(fields): 331 self.advanced_table.attach(gtk.Label(_(text.capitalize()+":")), 332 0, 1, i, i+1) 333 if choices: 334 model = gtk.ListStore(object, str) 335 if [u'', u'---------'] not in choices: 336 choices = ([u'', u'---------'],) + tuple(choices) 337 for c in choices: 338 model.append(c) 339 widget = gtk.ComboBox(model) 340 cell = gtk.CellRendererText() 341 widget.pack_start(cell, True) 342 widget.add_attribute(cell, 'text', 1) 343 else: 344 widget = gtk.Entry() 345 if text in temp: 346 self.set_value(widget, temp[text]) 347 self.advanced_table.attach(widget, 1, 2, i, i+1) 348 self.advanced_fields.append((text, widget)) 349 self.advanced_table.show_all() 350 351 def get_value(self, entry): 352 if isinstance(entry, gtk.ComboBoxEntry): 353 value = entry.child.get_text() 354 elif isinstance(entry, gtk.ComboBox): 355 model = entry.get_model() 356 active = entry.get_active() 357 if active < 0: 358 value = "" 359 else: 360 value = model[active][0] 361 elif isinstance(entry, gtk.Entry): 362 value = entry.get_text() 363 return value 364 365 def set_value(self, entry, value): 366 if isinstance(entry, gtk.ComboBoxEntry): 367 entry.child.set_text(entry) 368 elif isinstance(entry, gtk.ComboBox): 369 model = entry.get_model() 370 for i, it in enumerate(iter(model)): 371 if value == it[0]: 372 entry.set_active(i) 373 return 374 elif isinstance(entry, gtk.Entry): 375 entry.set_text(value) 376 308 377 309 378 def display_results(self, results): … … 334 403 def search(self, *args): 335 404 data = {} 336 for text, entry in self.fields :337 if hasattr(entry, "child"):338 entry = entry.child339 data[text] = entry.get_text()405 for text, entry in self.fields + self.advanced_fields: 406 value = self.get_value(entry) 407 if value: 408 data[text] = value 340 409 get = urllib.urlencode(data) 341 410 self.display_results(self.instance.get_data("api/search/?%s" % get)["objects"])
Note: See TracChangeset
for help on using the changeset viewer.