
Public Member Functions | |
| def | __init__ |
| def | setup_ui |
| def | next |
| def | back |
| def | setup_source_configuration |
| def | setup_fields |
| def | setup_import |
| def | work_done |
| def | work_error |
| def | set_filename |
| def | exec_ |
Public Attributes | |
| model | |
| importer | |
| job | |
| setup_page | |
| matching_mapids | |
| fields | |
Private Attributes | |
| __stats | |
| def py::gui::dialog::import_csv::__init__ | ( | self, | ||
| parent, | ||||
| importer, | ||||
| model | ||||
| ) |
| def py::gui::dialog::import_csv::setup_ui | ( | self | ) |
00321 : 00322 self.setupUi(self) 00323 if isinstance(self.model, gui.models.flat_library) : 00324 self.option_add_library.setVisible(True) 00325 self.label_add_library.setText(_("Add to '%s'") % qodb.models.Library.objects.get(id=self.model.library_id).name) 00326 else : 00327 self.option_add_library.setVisible(False) 00328 00329 QObject.connect(self.browse, SIGNAL("clicked()"), self.set_filename) 00330 QObject.connect(self.button_next, SIGNAL("clicked()"), self.next) 00331 QObject.connect(self.button_back, SIGNAL("clicked()"), self.back) 00332 self.setup_page = [ 00333 self.setup_source_configuration, 00334 self.setup_fields, 00335 self.setup_import, 00336 self.accept 00337 ] 00338 self.setup_source_configuration() 00339 def next( self ) :
| def py::gui::dialog::import_csv::next | ( | self | ) |
| def py::gui::dialog::import_csv::back | ( | self | ) |
| def py::gui::dialog::import_csv::setup_source_configuration | ( | self | ) |
00346 : 00347 self.pages.setCurrentIndex(0) 00348 self.true_values.setText("X "+_("Y")+" "+_("yes")+" 1") 00349 self.false_values.setText(_("N")+" "+_("no")+" 0") 00350 self.encoding.setText(self.importer.encoding) 00351 self.delimiter.setText(self.importer.dialect.delimiter) 00352 self.quotechar.setText(self.importer.dialect.quotechar) 00353 self.button_back.setVisible(False) 00354 self.button_done.setVisible(False) 00355 self.button_next.setText(_("Next")) 00356 self.button_cancel.setVisible(True) 00357 00358 @show_failure def setup_fields( self ) :
| def py::gui::dialog::import_csv::setup_fields | ( | self | ) |
00359 : 00360 self.importer.encoding = unicode(self.encoding.text()).strip() 00361 self.importer.dialect.delimiter = str(self.delimiter.text()).strip() 00362 self.importer.dialect.quotechar = str(self.quotechar.text()).strip() 00363 self.importer.true_values = unicode(self.true_values.text()).lower().split() 00364 self.importer.false_values = unicode(self.false_values.text()).lower().split() 00365 00366 self.importer.open(str(self.filename.text())) 00367 head_map = self.importer.sniff_header() 00368 00369 self.button_done.setVisible(False) 00370 self.button_back.setVisible(True) 00371 self.button_next.setVisible(True) 00372 self.button_next.setText(_("Import")) 00373 self.button_cancel.setVisible(True) 00374 self.pages.setCurrentIndex(1) 00375 00376 matching_labels = [_("Ignore")] + [label for mapid, label in qo.importer.all_fields] 00377 self.matching_mapids = [None] + [mapid for mapid, label in qo.importer.all_fields] 00378 00379 i, j = 0, 0 00380 gridlayout = self.field_list.layout().itemAt(0).layout() 00381 self.fields = {} 00382 h = (len(head_map) + 1) / 2 00383 for field, mapid in head_map : 00384 w = import_field(self, field, matching_labels, self.matching_mapids.index(mapid)) 00385 self.fields[field] = w 00386 gridlayout.addWidget(w, i, j) 00387 if i == h - 1 : 00388 i = 0 00389 j += 1 00390 else : 00391 i += 1 00392 00393 @show_failure def setup_import( self ) :
| def py::gui::dialog::import_csv::setup_import | ( | self | ) |
00394 : 00395 head_map = [(field, self.matching_mapids[widget.get_value()]) for field, widget in self.fields.iteritems()] 00396 self.importer.add_to_library = {} 00397 if isinstance(self.model, gui.models.flat_library) : 00398 if self.add_to_library.currentIndex() != 0 : 00399 self.importer.add_to_library[self.model.library_id] = self.add_to_library.currentIndex() == 1 00400 self.importer.do_overlay = self.do_overlay.isChecked() 00401 00402 self.import_traceback.setVisible(False) 00403 self.import_stats.setVisible(False) 00404 00405 self.pages.setCurrentIndex(2) 00406 self.button_done.setVisible(True) 00407 self.button_cancel.setVisible(False) 00408 self.button_next.setVisible(False) 00409 00410 self.button_done.setEnabled(False) 00411 self.button_back.setEnabled(False) 00412 self.setCursor(Qt.WaitCursor) 00413 00414 def work() : 00415 self.__stats = self.importer.run(self.import_progress, head_map) 00416 self.set_work(work) 00417 self.start() 00418 def work_done( self ) :
| def py::gui::dialog::import_csv::work_done | ( | self | ) |
00419 : 00420 self.import_stats.setVisible(True) 00421 text = _("<ul><li>%d albums known</li><li>%d new albums</li><li>%d errors</li></ul>") % \ 00422 (len(self.__stats["matched_rows"]), len(self.__stats["notmatched_rows"]), len(self.__stats["error_rows"])) 00423 if len(self.__stats["error_rows"]) : 00424 text += "<h3>Errors</h3><ul>" 00425 for line, exc in self.__stats["error_rows"] : 00426 text += "<li>%d : %s</li>" % (line, repr(exc)) 00427 text += "</ul>" 00428 self.import_stats.setHtml(text) 00429 self.setCursor(Qt.ArrowCursor) 00430 self.button_done.setEnabled(True) 00431 self.button_back.setEnabled(True) 00432 def work_error( self, exc ) :
| def py::gui::dialog::import_csv::work_error | ( | self, | ||
| exc | ||||
| ) |
| def py::gui::dialog::import_csv::set_filename | ( | self, | ||
parent = None | ||||
| ) |
00441 : 00442 filename = str(QFileDialog.getOpenFileName(parent or self, _("Import from CSV"), QString(), _("Comma-separated values (*.csv)"))) 00443 if filename and os.path.exists(filename) : 00444 self.filename.setText(filename) 00445 return True 00446 return False 00447 def exec_( self ) :
| def py::gui::dialog::import_csv::exec_ | ( | self | ) |
Reimplemented from py::gui::dialog::worker_dialog.
00448 : 00449 if self.set_filename(parent=self.parentWidget()) : 00450 ret = QDialog.exec_(self) 00451 gui.main_window.instance.reload_data() 00452 return ret 00453 00454 class firstrun_wizard( Ui_firstrun_wizard, QDialog ) :
Reimplemented from py::gui::dialog::worker.
py::gui::dialog::import_csv::__stats [private] |
1.5.3