py::gui::dialog::import_csv Class Reference

Inheritance diagram for py::gui::dialog::import_csv:

Inheritance graph
[legend]

List of all members.

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


Member Function Documentation

def py::gui::dialog::import_csv::__init__ (   self,
  parent,
  importer,
  model 
)

00312                                                       :
00313                 Ui_import_csv.__init__(self)
00314                 worker_dialog.__init__(self)
00315                 QDialog.__init__(self, parent)
00316                 self.model = model
00317                 self.importer = importer
00318                 self.job = None
00319                 self.setup_ui()
00320 
        def setup_ui( self ) :

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  ) 

00340                          :
00341                 self.setup_page[self.pages.currentIndex()+1]()
        def back( self ) :

def py::gui::dialog::import_csv::back (   self  ) 

00342                          :
00343                 self.setup_page[self.pages.currentIndex()-1]()
00344 
00345         @show_failure
        def setup_source_configuration( 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 
)

00433                                     :
00434                 self.import_progress.error()
00435                 self.import_traceback.setVisible(True)
00436                 self.import_traceback.set_exc_info(exc)
00437                 self.setCursor(Qt.ArrowCursor)
00438                 self.button_back.setEnabled(True)
00439                 self.button_cancel.setVisible(True)
00440 
        def set_filename( self, parent=None ) :

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 ) :


Member Data Documentation

py::gui::dialog::import_csv::model

py::gui::dialog::import_csv::importer

py::gui::dialog::import_csv::job

Reimplemented from py::gui::dialog::worker.

py::gui::dialog::import_csv::setup_page

py::gui::dialog::import_csv::matching_mapids

py::gui::dialog::import_csv::fields

py::gui::dialog::import_csv::__stats [private]


The documentation for this class was generated from the following file:
Generated on Tue Oct 9 20:40:26 2007 for Qomics by  doxygen 1.5.3