py::gui::album::cover Class Reference

List of all members.

Public Member Functions

def __init__
def setup_ui
def build_image
def show_wait
def hide_wait
def save_image
def do_delete
def do_fetch
def do_scan
def do_open
def content_changed
def reload
def show_cover
def paintEvent
def show_actions
def hide_actions
def enterEvent
def leaveEvent

Public Attributes

 filename
 image
 name
 job
 action

Private Member Functions

def _run_job
def _job_done

Private Attributes

 __height


Member Function Documentation

def py::gui::album::cover::__init__ (   self,
  parent,
  width,
  height 
)

00047                                                     :
00048                 QWidget.__init__(self, parent)
00049                 self.__width, self.__height = width, height
00050                 self.setup_ui()
00051                 self.filename = None
00052                 self.image = None
00053                 self.name = None
00054                 self.job = None
00055         
        def setup_ui( self ) :

def py::gui::album::cover::setup_ui (   self  ) 

00056                              :
00057                 self.resize(self.parentWidget().size())
00058                 self.action = {}
00059                 i = 0
00060                 for a, label, icon in [
00061                         ("delete",_("Delete"),"stop"),
00062                         ("fetch",_("Download"),"network"),
00063                         ("scan",_("Scan"),"scanner"),
00064                         ("open",_("Open"),"fileopen")
00065                 ] :
00066                         b = self.action[a] = QPushButton(self)
00067                         b.setIcon(QIcon(":/16/%s.png"%icon))
00068 #                       b.setFlat(True)
00069                         b.setToolTip(label)
00070                         b.hide()
00071                         b.resize(20,20)
00072                         b.move(5+25*i, self.height() - 27)
00073                         QObject.connect(b, SIGNAL("clicked()"), getattr(self, "do_%s"%a))
00074                         i += 1
00075 
        def build_image( self, filename ) :

def py::gui::album::cover::build_image (   self,
  filename 
)

00076                                           :
00077                 image = QImage(filename)
00078                 if not image.isNull() :
00079                         return image.scaled(self.__width, self.__height, Qt.KeepAspectRatio, Qt.SmoothTransformation)
00080         
        def show_wait( self ) :

def py::gui::album::cover::show_wait (   self  ) 

00081                               :
00082                 self.setCursor(Qt.WaitCursor)
00083         
        def hide_wait( self ) :

def py::gui::album::cover::hide_wait (   self  ) 

00084                               :
00085                 self.setCursor(Qt.ArrowCursor)
00086 
        def save_image( self, image, filename=None ) :

def py::gui::album::cover::save_image (   self,
  image,
  filename = None 
)

00087                                                      :
00088                 if image :
00089                         image.save(filename or qocfg.get_cover_overlay(self.name), "JPEG", 80)
00090         
        def do_delete( self ) :

def py::gui::album::cover::do_delete (   self  ) 

00091                               :
00092                 if self.filename :
00093                         qo.sh.rmf(self.filename)
00094                         self.content_changed()
00095         
        def _run_job( self, worker ) :

def py::gui::album::cover::_run_job (   self,
  worker 
) [private]

00096                                      :
00097                 self.show_wait()
00098                 if self.job :
00099                         return
00100                 self.job = gui.work.job(worker)
00101                 QObject.connect(self.job, SIGNAL("finished()"), self._job_done)
00102                 self.job.start()
00103 
        def _job_done( self ) :

def py::gui::album::cover::_job_done (   self  )  [private]

00104                               :
00105                 self.job = None
00106                 self.content_changed()
00107                 self.hide_wait()
00108 
        def do_fetch( self ) :

def py::gui::album::cover::do_fetch (   self  ) 

00109                              :
00110                 if self.name :
00111                         self._run_job(lambda: qo.catalog.fetch_cover(self.name))
00112 
        def do_scan( self ) :

def py::gui::album::cover::do_scan (   self  ) 

00113                             :
00114                 if self.filename :
00115                         cmd = qocfg.get_scanner()
00116                         if not cmd :
00117                                 QMessageBox.warning(self, _("No scanning software found"), \
00118                                                 _("No suitable scanning software have been found. Please install XSane."), QMessageBox.Abort, QMessageBox.NoButton)
00119                                 return
00120                         dest = qocfg.get_cover_overlay(self.name)
00121                         def work() :
00122                                 tmp_file = tempfile.mkstemp(".jpg", "qomics_cover_")[1]
00123                                 qo.sh.rmf(tmp_file)
00124                                 cmd = cmd % tmp_file
00125                                 qo_debug("scanning program : %s" % cmd)
00126                                 cmd = cmd.split()
00127                                 ret = os.spawnv(os.P_WAIT, qocfg.get_program(cmd[0]), cmd)
00128                                 if ret != 0 :
00129                                         if QMessageBox.warning(self, _("Bad terminated program"), \
00130                                                 _("The scanning program has returned value '%d' which mean that a problem occured. Do you want to continue ?") % ret, \
00131                                                 QMessageBox.Yes, QMessageBox.No ) == QMessageBox.Yes :
00132                                                 ret = 0
00133                                 if ret == 0 and os.path.exists(tmp_file) :
00134                                         self.save_image(self.build_image(tmp_file), dest)
00135                                 qo.sh.rmf(tmp_file)
00136                         self._run_job(work)
00137 
        def do_open( self ) :

def py::gui::album::cover::do_open (   self  ) 

00138                             :
00139                 if self.name :
00140                         self.show_wait()
00141                         q_src = QFileDialog.getOpenFileName(self, _("Choose a cover"), qocfg.get_home_dir(), _('Images (*.jpg *.gif *.png)'))
00142                         self.save_image(self.build_image(q_src))
00143                         self.hide_wait()
00144                         self.content_changed()
00145 
        def content_changed( self ) :

def py::gui::album::cover::content_changed (   self  ) 

00146                                     :
00147                 self.show_wait()
00148                 self.reload()
00149                 gui.models.manager.reload_covers()
00150                 self.hide_wait()
00151 
        def reload( self ) :

def py::gui::album::cover::reload (   self  ) 

00152                            :
00153                 self.show_cover(self.name, True)
00154 
        def show_cover( self, name, internal=False ) :

def py::gui::album::cover::show_cover (   self,
  name,
  internal = False 
)

00155                                                      :
00156                 self.name = name
00157                 self.filename = qocfg.get_cover_path(name)
00158                 self.image = self.build_image(self.filename)
00159                 if not internal and not self.image and qocfg.get_autofetch_covers() :
00160                         self.do_fetch()
00161                 self.repaint()
00162                 self.hide_wait()
00163 
        def paintEvent( self, event ) :

def py::gui::album::cover::paintEvent (   self,
  event 
)

00164                                       :
00165                 paint = QPainter(self)
00166                 if self.image :
00167                         paint.drawRect(0, 0, self.image.width()+1, self.image.height()+1)
00168                         paint.drawImage(1, 1, self.image)
00169                 else :
00170                         paint.drawRect(0, 0, self.width()-1, self.height()-1)
00171                 paint.end()
00172 
        def show_actions( self ) :

def py::gui::album::cover::show_actions (   self  ) 

00173                                  :
00174                 for x in self.action.values() :
00175                         x.show()
        def hide_actions( self ) :

def py::gui::album::cover::hide_actions (   self  ) 

00176                                  :
00177                 for x in self.action.values() :
00178                         x.hide()
00179 
        def enterEvent( self, event ) :

def py::gui::album::cover::enterEvent (   self,
  event 
)

00180                                       :
00181                 self.show_actions()
        def leaveEvent( self, event ) :

def py::gui::album::cover::leaveEvent (   self,
  event 
)

00182                                       :
00183                 self.hide_actions()
00184 
00185 
00186 
class file( Ui_album_file, QWidget ) :


Member Data Documentation

py::gui::album::cover::__height [private]

py::gui::album::cover::filename

py::gui::album::cover::image

py::gui::album::cover::name

py::gui::album::cover::job

py::gui::album::cover::action


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