py::gui::page::page Class Reference

Inheritance diagram for py::gui::page::page:

Inheritance graph
[legend]

List of all members.

Public Member Functions

def __init__
def filter_changed
def apply_filter
def emit_album_count_changed
def prepare_exporter
def prepare_importer
def do_export_ods
def do_export_csv
def do_import_csv
def do_fetch_covers
def setup_actions
def setup_album_file
def show_item
def edit_item
def save

Public Attributes

 view
 model
 save_geometry
 count_albums
 viewport
 vboxlayout
 actions
 view_filter
 filter_timer
 album_file
 menu_export
 menu_import
 album_file_scroll

Private Member Functions

def __setup_filter_timer


Member Function Documentation

def py::gui::page::page::__init__ (   self,
  view,
  show_filter = False 
)

00043                                                         :
00044                 QSplitter.__init__(self,Qt.Vertical)
00045 
00046                 self.view = view
00047 
00048                 # link attributes and methods
00049                 self.model = view.model
00050                 self.save_geometry = view.save_geometry
00051                 self.count_albums = self.model.count_albums
00052 
00053                 # connect signals
00054                 self.connect(self.view, SIGNAL("itemChanged"), self.show_item)
00055                 self.connect(self.view, SIGNAL("itemEdit"), self.edit_item)
00056                 self.connect(self.view, SIGNAL("album_count_changed"), self.emit_album_count_changed)
00057 
00058                 self.viewport = QWidget()
00059                 self.vboxlayout = QVBoxLayout(self.viewport)
00060                 self.vboxlayout.setMargin(0)
00061                 self.vboxlayout.setSpacing(0)
00062                 self.actions = gui.widget.actions()
00063                 self.actions.make_flat = True
00064                 self.vboxlayout.addWidget(self.actions)
00065                 if show_filter :
00066                         self.view_filter = quick_filter(view)
00067                         self.connect(self.view_filter.filter, SIGNAL("textChanged(const QString&)"), self.filter_changed)
00068                         self.filter_timer = None
00069                         self.__setup_filter_timer()
00070                         self.vboxlayout.addWidget(self.view_filter)
00071                 self.vboxlayout.addWidget(self.view)
00072                 self.addWidget(self.viewport)
00073         
00074                 self.album_file = None
00075 
00076                 self.setup_actions()
00077         
        def __setup_filter_timer( self ) :

def py::gui::page::page::__setup_filter_timer (   self  )  [private]

00078                                          :
00079                 if self.filter_timer :
00080                         self.filter_timer.stop()
00081                         del self.filter_timer
00082                 self.filter_timer = QTimer()
00083                 self.filter_timer.setSingleShot(True)
00084                 self.filter_timer.start(500)
00085                 QObject.connect(self.filter_timer, SIGNAL("timeout()"), self.apply_filter)
00086 
        def filter_changed( self, value ) :

def py::gui::page::page::filter_changed (   self,
  value 
)

00087                                           :
00088                 self.__setup_filter_timer()
00089         
        def apply_filter( self ) :

def py::gui::page::page::apply_filter (   self  ) 

00090                                  :
00091                 value = unicode(self.view_filter.filter.text()).strip() or None
00092                 self.model.apply_filter(value)
00093 
        def emit_album_count_changed( self ) :

def py::gui::page::page::emit_album_count_changed (   self  ) 

00094                                              :
00095                 self.emit(SIGNAL("album_count_changed"))
00096 
        def prepare_exporter( self, exporter ) :

def py::gui::page::page::prepare_exporter (   self,
  exporter 
)

00097                                                :
00098                 if isinstance(self.model, gui.models.flat_library) :
00099                         exporter.fields.remove("in_library1")
00100                         exporter.fields.remove("in_library2")
00101                 return exporter
00102         
        def prepare_importer( self, importer ) :

def py::gui::page::page::prepare_importer (   self,
  importer 
)

00103                                                :
00104                 # TODO: default to add in my library
00105                 return importer
00106 
00107         
00108         @gui.dialog.show_failure
        def do_export_ods( self ) :

def py::gui::page::page::do_export_ods (   self  ) 

00109                                   :
00110                 filename = str(QFileDialog.getSaveFileName(self, _("Export to OpenDocument spreadsheet"), QString(), 
00111                                                                                                                                 _("OpenDocument Spreadsheet (*.ods)")))
00112                 if filename :
00113                         if not filename.lower().endswith(".ods") :
00114                                 filename += ".ods"
00115                         exporter = self.prepare_exporter(qo.exporter.opendocument_spreadsheet())
00116                         exporter.filename = filename
00117 
00118                         def worker() :
00119                                 exporter.run(self.model.queryset())
00120 
00121                         if gui.dialog.progress_busy(self, _("Exporting to %s")%exporter.filename, worker).exec_() :
00122                                 QMessageBox.information(self, _("Successfull export"), _("Exportation to '%s' file succeed.")%exporter.filename)
00123 
00124         @gui.dialog.show_failure
        def do_export_csv( self ) :

def py::gui::page::page::do_export_csv (   self  ) 

00125                                   :
00126                 gui.dialog.export_csv(self, self.prepare_exporter(qo.exporter.comma_separated_values()), self.model).exec_()
00127 
        def do_import_csv( self ) :

def py::gui::page::page::do_import_csv (   self  ) 

00128                                   :
00129                 gui.dialog.import_csv(self, self.prepare_importer(qo.importer.comma_separated_values()), self.model).exec_()
00130 
        def do_fetch_covers( self ) :

def py::gui::page::page::do_fetch_covers (   self  ) 

00131                                     :
00132                 def work( notifier ) :
00133                         notifier.section_grow(1)
00134                         notifier.step(_("Initializing..."))
00135 
00136                         if 'by-album' in self.model :
00137                                 def without_cover( albumid ) :
00138                                         return not os.path.exists(qocfg.get_cover_path(albumid+"#cover"))
00139                                 albums = filter(without_cover,self.model['by-album'].keys())
00140                                 notifier.section_grow(len(albums))
00141 
00142                                 for album in albums :
00143                                         name = "%s#cover" % album
00144                                         notifier.step(_("Downloading cover '%s'") % name)
00145                                         try :
00146                                                 qo.catalog.fetch_cover(name)
00147                                         except :
00148                                                 traceback.print_exc()
00149 
00150                         notifier.section_end()
00151 
00152                 gui.dialog.step_notifier(self, _("Fetching covers..."), work).exec_()
00153                 gui.models.manager.reload_covers()
00154 
00155 
        def setup_actions( self ) :

def py::gui::page::page::setup_actions (   self  ) 

Reimplemented in py::gui::page::page_series.

00156                                   :
00157                 # covers
00158                 action = self.actions.add(_("Fetch covers"), self.do_fetch_covers)
00159                 action.setToolTip(_("Fetch all available covers"))
00160                 # export
00161                 self.menu_export = QMenu()
00162                 self.menu_export.addAction(_("OpenDocument spreadsheet (ods)"), self.do_export_ods)
00163                 self.menu_export.addAction(_("comma-separated values (csv)"), self.do_export_csv)
00164                 self.actions.add(_("Export to")).setMenu(self.menu_export)
00165                 # import
00166                 self.menu_import = QMenu()
00167                 self.menu_import.addAction(_("comma-separated values (csv)"), self.do_import_csv)
00168                 self.actions.add(_("Import")).setMenu(self.menu_import)
00169 
        def setup_album_file( self ) :

def py::gui::page::page::setup_album_file (   self  ) 

00170                                      :
00171                 if self.album_file is None :
00172                         self.album_file = gui.album.file()
00173                         self.album_file_scroll = QScrollArea()
00174                         self.album_file_scroll.setWidget(self.album_file)
00175                         self.album_file_scroll.setWidgetResizable(True)
00176                         self.addWidget(self.album_file_scroll)
00177                         # initial sizes
00178                         sizes = self.sizes()
00179                         total = sizes[0] + sizes[1]
00180                         sizes[1] = 300
00181                         sizes[0] = total - sizes[1]
00182                         self.setSizes( sizes )
00183                 # show it
00184                 self.album_file.parentWidget().show()
00185                 self.album_file.show()
00186 
        def show_item( self, item ) :

def py::gui::page::page::show_item (   self,
  item 
)

00187                                     :
00188                 self.setup_album_file()
00189                 self.album_file.show_item( item )
00190         
        def edit_item( self, item ) :

def py::gui::page::page::edit_item (   self,
  item 
)

00191                                     :
00192                 self.show_item(item)
00193                 self.album_file.edit_album()
00194 
        def save( self ) :

def py::gui::page::page::save (   self  ) 

00195                          :
00196                 if self.album_file :
00197                         self.album_file.save()
00198 
00199 
class page_series( page ) :


Member Data Documentation

py::gui::page::page::view

py::gui::page::page::model

py::gui::page::page::save_geometry

py::gui::page::page::count_albums

py::gui::page::page::viewport

py::gui::page::page::vboxlayout

py::gui::page::page::actions

py::gui::page::page::view_filter

py::gui::page::page::filter_timer

py::gui::page::page::album_file

py::gui::page::page::menu_export

py::gui::page::page::menu_import

py::gui::page::page::album_file_scroll


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