Contenu | Rechercher | Menus

Annonce

Ubuntu-fr vend de superbes t-shirts et de belles clés USB 32Go
Rendez-vous sur la boutique En Vente Libre

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#226 Le 01/10/2010, à 13:17

michcauch

Re : Arte +7 recorder version 5

premier message de ce fil par beubeud

Code:

sudo add-apt-repository ppa:arte+7recorder/ppa
sudo mv /etc/apt/sources.list.d/arte+7recorder-ppa-lucid.list  /etc/apt/sources.list.d/arte7recorder-ppa-lucid.list
sudo apt-get update
sudo apt-get install arte+7recorder-5

ça va marcher ...
Michel


Cordialement
Michel
___
Ubuntu 20.04 sur Clevo N141WU et Xubuntu 16.04 sur Ordinateur de bureau Materiel.net Elite (Processeur Intel Core i3 6100, Intel HD Graphics, SSD 120 Go, 4 Go DDR4)

Hors ligne

#227 Le 01/10/2010, à 13:59

beudbeud

Re : Arte +7 recorder version 5

si des personne sont partante pour m'aider a rendre le code plus propre je suis op car c'est mon 1er script en python


Télécharger les émissions de Arte +7 avec Arte +7 recorder
Theme pour Ubuntu Bisigi Project

Vostro 1510 Ubuntu 10.04

Hors ligne

#228 Le 01/10/2010, à 15:15

YMulleneers

Re : Arte +7 recorder version 5

VinsS a écrit :

Ben justement, c'est pour cela qu'il faudrait voir les vraies erreurs déclarées par python.

Le fichier original incluait toutes les opérations de requête dans un bloc  try:  except: ce qui avait pour effet d'occulter les messages de l'interpréteur python.

Je veux bien m'occuper de stabiliser le code mais, chez moi, tout fonctionne, alors ...

D'abord, j'ai remarqué que ma version téléchargeait de nouveau (mais pas hier, donc je suis désolé...)

Pour simplifier les communication, peux-tu me dire où je dois télécharger la version de développement où les exceptions ne seraient pas captées?


Linux Mint 16

J'aime à utiliser Linux.

Hors ligne

#229 Le 01/10/2010, à 17:08

michcauch

Re : Arte +7 recorder version 5

beudbeud a écrit

car c'est mon 1er script en python

en tout cas c'est une réussite !

Cordialement
Michel

Pour l'aide, ne pas compter sur moi le python, à part dans les émissions animalières sur Arte, connais pas


Cordialement
Michel
___
Ubuntu 20.04 sur Clevo N141WU et Xubuntu 16.04 sur Ordinateur de bureau Materiel.net Elite (Processeur Intel Core i3 6100, Intel HD Graphics, SSD 120 Go, 4 Go DDR4)

Hors ligne

#230 Le 02/10/2010, à 04:34

VinsS

Re : Arte +7 recorder version 5

YMulleneers a écrit :

Pour simplifier les communication, peux-tu me dire où je dois télécharger la version de développement où les exceptions ne seraient pas captées?

Page 8 post #196

Il s'agit du fichier Catalog.py qui se trouve là :

/usr/share/pyshared/arte7recorder/Catalog.py

si tu l'a installé à partir d'un .deb


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#231 Le 02/10/2010, à 10:49

@nne

Re : Arte +7 recorder version 5

beudbeud a écrit :

...

Application > Son et Vidéo > Arte +7 recorder

...

Est-ce que l'application est compatible 64 bits ?

#232 Le 02/10/2010, à 12:42

VinsS

Re : Arte +7 recorder version 5

lhumeurbleue a écrit :

[
Est-ce que l'application est compatible 64 bits ?

Ben c'est du Python, donc multiplateformes et multiarchitectures.

Mais c'est vrai que chez Python on ne fait de distinguo 32 bits - 64 bits que pour les interpréteurs compilés pour windows.

Je suppose que pour Linux il est compilé au moment de l'installation, et, si c'est le cas, tu devrais avoir un interpréteur 64 bits.

A plus ample informé ...


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#233 Le 03/10/2010, à 13:15

VinsS

Re : Arte +7 recorder version 5

Je me pose une question.

Je vient de voir passer une mise à jour pour arte7recorder (juste quand je cliquait sur le bouton Inataller les mise à jour)

Est-ce-que il y a eu une réelle mise à jour de l'appli ou bien est-ce un mécanisme interne qui détecte une différence entre mes fichiers et ceux du dépôt ?

Comme je suis en train de faire des tests pour améliorer le code mes fichiers sont forcément toujours différent des sources.

Je vais continuer mes tests dans un bac à sable.


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#234 Le 03/10/2010, à 13:47

@nne

Re : Arte +7 recorder version 5

VinsS a écrit :

Je me pose une question. Je viens de voir passer une mise à jour pour arte7recorder (juste quand je cliquais sur le bouton Installer les mises à jour)...

Pas de mise à jour pour Arte+7 recorder de mon côté. Merci pour ta réponse au sujet de la compatibilité 64 bits de l'application ! smile

#235 Le 03/10/2010, à 15:15

okram

Re : Arte +7 recorder version 5

Bonjour,

Pareil pour moi j'ai vu passer 'arte+7recorder' dans mes mises à jour il y a 2 ou 3 jours de ça... Bizarre bizarre.
Pour info j'utilise la version 5.
Je ne retrouve rien dans /var/log mais il n'est pas dit que j'ai regardé au bon endroit...

Bon dimanche aprèm'
Okram

Hors ligne

#236 Le 03/10/2010, à 16:02

VinsS

Re : Arte +7 recorder version 5

@beudbeud

Il y a des différences entre la version installée et la version de développement sur Launchpad

Si tu pouvais trouver le temps de "pousser" une nouvelle révision, ce sera utile.

En attendant, je vais bricoler avec la version qui vient d'être mise à jour.

Merci à toi.

Dernière modification par VinsS (Le 03/10/2010, à 16:03)


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#237 Le 03/10/2010, à 18:50

beudbeud

Re : Arte +7 recorder version 5

Concernant la mise a jour j'ai fait les paquets que pour les version maverick, lucid et karmic.
Cette misea jour permet de corriger le problème d'url car arte a encore changé.

Le seul endroit ou le paquet est mis a jour est launchpad

Dernière modification par beudbeud (Le 03/10/2010, à 18:51)


Télécharger les émissions de Arte +7 avec Arte +7 recorder
Theme pour Ubuntu Bisigi Project

Vostro 1510 Ubuntu 10.04

Hors ligne

#238 Le 03/10/2010, à 19:04

@nne

Re : Arte +7 recorder version 5

beudbeud a écrit :

Concernant la mise a jour j'ai fait les paquets que pour les version maverick, lucid et karmic.
Cette misea jour permet de corriger le problème d'url car arte a encore changé.

Le seul endroit ou le paquet est mis a jour est launchpad

Ma version marche très bien et je n'ai pas installé de mise à jour depuis la dernière, en milieu de semaine. (?)

#239 Le 03/10/2010, à 21:47

JJC19

Re : Arte +7 recorder version 5

J'ai finalement désinstallé arteplus recorder, puis je l'ai réinstallé grâce au script de Beudbeud... et ça marche !!! Merci à lhumeurbleue, à VlnS (Vincent), à Michel Cauchois, à Loy qui m'ont aidé de leurs conseils... merci aussi à ceux qui ont songé à le faire mais n'en ont pas eu probablement le temps...
NB : Cette mésaventure donne envie de mieux maîtriser tout cela... Quelle méthode/démarche utiliser (site, bouquin ?...). Encore merci.

Hors ligne

#240 Le 04/10/2010, à 03:53

VinsS

Re : Arte +7 recorder version 5

beudbeud a écrit :

si des personne sont partante pour m'aider a rendre le code plus propre je suis op car c'est mon 1er script en python

Ca, c'est bien volontiers, mais il faudrait pour cela savoir sur quelle version travailler.

beudbeud a écrit :

Le seul endroit ou le paquet est mis a jour est launchpad

La dernière révision date d'il y a 18 semaines, le 12 mars pour être précis, et je peux t'assurer qu'elle ne fonctionne pas du tout.

C'est toujours un peu frustrant de passer deux heures à essayer de comprendre ce qui ne va pas avec un code pour se rendre compte en finale que l'on est occupé sur une version totalement obsolète.

Si les scripts sont amenés à être modifiés régulièrement, du fait de changements chez Arte, entre autres, Il serait utile d'inscrire le numéro de révision dans l'entête de chaque script.

Mon avis.


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#241 Le 04/10/2010, à 07:56

beudbeud

Re : Arte +7 recorder version 5

La dernière version date de la semaine dernière. Mais elle est disponible que pour maverick, lucid et karmic.


Télécharger les émissions de Arte +7 avec Arte +7 recorder
Theme pour Ubuntu Bisigi Project

Vostro 1510 Ubuntu 10.04

Hors ligne

#242 Le 04/10/2010, à 07:59

beudbeud

Re : Arte +7 recorder version 5

VinsS a écrit :
beudbeud a écrit :

si des personne sont partante pour m'aider a rendre le code plus propre je suis op car c'est mon 1er script en python

Ca, c'est bien volontiers, mais il faudrait pour cela savoir sur quelle version travailler.

beudbeud a écrit :

Le seul endroit ou le paquet est mis a jour est launchpad

La dernière révision date d'il y a 18 semaines, le 12 mars pour être précis, et je peux t'assurer qu'elle ne fonctionne pas du tout.

C'est toujours un peu frustrant de passer deux heures à essayer de comprendre ce qui ne va pas avec un code pour se rendre compte en finale que l'on est occupé sur une version totalement obsolète.

Si les scripts sont amenés à être modifiés régulièrement, du fait de changements chez Arte, entre autres, Il serait utile d'inscrire le numéro de révision dans l'entête de chaque script.

Mon avis.

Tu peux me faire un apt-cache policy arte+7recorder-5

Dernière modification par beudbeud (Le 04/10/2010, à 08:00)


Télécharger les émissions de Arte +7 avec Arte +7 recorder
Theme pour Ubuntu Bisigi Project

Vostro 1510 Ubuntu 10.04

Hors ligne

#243 Le 04/10/2010, à 09:44

Malizor

Re : Arte +7 recorder version 5

@beudbeud : ce qu'il veut dire c'est que tu devrais maintenir le bzr à jour.
https://code.launchpad.net/arte+7recorder


« Prouver que j'ai raison serait accorder que je puis avoir tort. »  -  Beaumarchais  ← Le premier troll ?

Hors ligne

#244 Le 06/10/2010, à 11:21

beudbeud

Re : Arte +7 recorder version 5

Malaria a écrit :

@beudbeud : ce qu'il veut dire c'est que tu devrais maintenir le bzr à jour.
https://code.launchpad.net/arte+7recorder

merci je mets a jour tout de suite le bzr


Télécharger les émissions de Arte +7 avec Arte +7 recorder
Theme pour Ubuntu Bisigi Project

Vostro 1510 Ubuntu 10.04

Hors ligne

#245 Le 06/10/2010, à 12:49

VinsS

Re : Arte +7 recorder version 5

Bonjour,

Ah oui, on ne parlais pas de la même chose, merci pour la mise à jour.

De mon coté, j'ai un peu réexaminé l'interface.

Dis-moi ce que tu penses de ceci, si cela correspond aux développement futur de Arte7Recorder.

arteui.th.png

Bon, pour le moment ce n'est encore qu'une façade vide, ton code n'y est pas encore implémenté, mais le travail ne devrait pas être trop compliqué.

Et puis d'autres que Beudbeud peuvent donner leur avis bien sur.

Cordialement.

Dernière modification par VinsS (Le 06/10/2010, à 12:51)


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#246 Le 06/10/2010, à 14:06

beudbeud

Re : Arte +7 recorder version 5

VinsS a écrit :

Bonjour,

Ah oui, on ne parlais pas de la même chose, merci pour la mise à jour.

De mon coté, j'ai un peu réexaminé l'interface.

Dis-moi ce que tu penses de ceci, si cela correspond aux développement futur de Arte7Recorder.

http://img195.imageshack.us/img195/6676/arteui.th.png

Bon, pour le moment ce n'est encore qu'une façade vide, ton code n'y est pas encore implémenté, mais le travail ne devrait pas être trop compliqué.

Et puis d'autres que Beudbeud peuvent donner leur avis bien sur.

Cordialement.

Très bonne idée d'interface. Je suis preneur après faut voir si le chargement de toutes les images ralenti pas trop le démarrage du programme.

Dernière modification par beudbeud (Le 06/10/2010, à 14:07)


Télécharger les émissions de Arte +7 avec Arte +7 recorder
Theme pour Ubuntu Bisigi Project

Vostro 1510 Ubuntu 10.04

Hors ligne

#247 Le 06/10/2010, à 14:12

@nne

Re : Arte +7 recorder version 5

VinsS a écrit :

... Et puis d'autres que Beudbeud peuvent donner leur avis bien sur.

Oui, les images c'est joli mais ça va effectivement alourdir l'ensemble et ça n'apportera rien. La disposition actuelle est parfaite, enfin, si on excepte que l'application s'ouvre systématiquement plein écran et que les descriptions ne s'affichent pas toujours.

Pourriez-vous, cher Beudbeud, "apprendre" à votre création à conserver en mémoire les dimensions qu'on lui donne en utilisant la fonction "redimensionner" ? Merci ! wink

#248 Le 06/10/2010, à 17:44

VinsS

Re : Arte +7 recorder version 5

Oui, le temps de démarrage était aussi pour moi une inconnue.

J'ai donc attaqué ces tests en premier, et je peux vous faire tester un premier script qui devrait vous rassurer sur la question.

Un point que j'avais oublié de préciser, ce n'est pas du GTK que je ne connait pas du tout c'est du Qt

Donc pour tester le script il faut PyQt. si vous ne l'avez pas encore, dans l'installateur de paquet que vous utilisez, cherchez  python-qt4.

Copier le script ci-dessous dans un blocnote et enregistrez-le de préférence dans un nouveau dossier avec l'extension py.

Exemple  : ~/newFolder/newArte7.py

Ensuite, lancer arte7Recorder, ne le fermez pas, aller dans votre dossier /tmp et copier le fichier database.

Coller-le en compagnie du script, c'est la raison du nouveau dossier.

Fermez arte7recorder, il n'a servit qu'à créer le fichier database.

lancez le script :

python newFolder/newArte7.py

Le script :

# -*- coding: utf-8 -*-

# arteGui
#
# Date: Mon Oct  4 2010     
# Author : Vincent Vande Vyvre <vins@swing.be>
# Version 0.1
#
# Graphical user's interface for Arte7Recorder

import os
import glob
import urllib2
from threading import Thread

from PyQt4 import QtCore, QtGui

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(900, 700)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.gridLayout = QtGui.QGridLayout(self.centralwidget)
        self.splitter = QtGui.QSplitter(self.centralwidget)
        self.splitter.setOrientation(QtCore.Qt.Vertical)
        self.splitter.setChildrenCollapsible(True)
        self.preview = Preview(self.splitter)

        self.editor = QtGui.QPlainTextEdit(self.splitter)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, 
                                    QtGui.QSizePolicy.MinimumExpanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.editor.sizePolicy()
                                    .hasHeightForWidth())
        self.editor.setSizePolicy(sizePolicy)
        self.editor.setMaximumSize(QtCore.QSize(16777215, 150))
        self.editor.setAcceptDrops(False)
        self.editor.setDocumentTitle("None")
        self.editor.setUndoRedoEnabled(False)
        self.editor.setPlainText("None")
        self.editor.setTextInteractionFlags(QtCore.Qt.TextSelectableByKeyboard|
                                    QtCore.Qt.TextSelectableByMouse)
        self.gridLayout.addWidget(self.splitter, 0, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 717, 25))
        self.menu_Options = QtGui.QMenu(self.menubar)
        self.menu_File = QtGui.QMenu(self.menubar)
        self.menu_Help = QtGui.QMenu(self.menubar)
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        MainWindow.setStatusBar(self.statusbar)

        # Tool panel
        self.tool_panel = QtGui.QDockWidget(MainWindow)
        self.tool_panel.setAllowedAreas(QtCore.Qt.LeftDockWidgetArea|
                                    QtCore.Qt.RightDockWidgetArea)
        self.tool_panel.setWindowTitle("None")
        self.dockWidgetContents = QtGui.QWidget()
        self.verticalLayout_2 = QtGui.QVBoxLayout(self.dockWidgetContents)
        self.verticalLayout = QtGui.QVBoxLayout()

        # List of downloadable videos
        self.list_dwnld = ListDwnld(self.dockWidgetContents)
        self.verticalLayout.addWidget(self.list_dwnld)

        self.horizontalLayout = QtGui.QHBoxLayout()
        self.add_btn = QtGui.QToolButton(self.dockWidgetContents)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap("medias/add.png"), QtGui.QIcon.Normal, 
                                    QtGui.QIcon.Off)
        self.add_btn.setIcon(icon)
        self.horizontalLayout.addWidget(self.add_btn)
        self.remove_btn = QtGui.QToolButton(self.dockWidgetContents)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap("medias/remove.png"), QtGui.QIcon.Normal, 
                                    QtGui.QIcon.Off)
        self.remove_btn.setIcon(icon1)
        self.horizontalLayout.addWidget(self.remove_btn)
        self.up_btn = QtGui.QToolButton(self.dockWidgetContents)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap("medias/up.svg"), QtGui.QIcon.Normal, 
                                    QtGui.QIcon.Off)
        self.up_btn.setIcon(icon2)
        self.horizontalLayout.addWidget(self.up_btn)
        self.down_btn = QtGui.QToolButton(self.dockWidgetContents)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap("medias/down.svg"), QtGui.QIcon.Normal, 
                                    QtGui.QIcon.Off)
        self.down_btn.setIcon(icon3)
        self.horizontalLayout.addWidget(self.down_btn)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.Download_btn = QtGui.QToolButton(self.dockWidgetContents)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, 
                                    QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.Download_btn.sizePolicy()
                                    .hasHeightForWidth())
        self.Download_btn.setSizePolicy(sizePolicy)
        self.Download_btn.setText("Download")
        self.verticalLayout.addWidget(self.Download_btn)
        self.prog_bar = QtGui.QProgressBar(self.dockWidgetContents)
        self.prog_bar.setProperty("value", 0)
        self.verticalLayout.addWidget(self.prog_bar)
        self.cancel_btn = QtGui.QToolButton(self.dockWidgetContents)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, 
                                    QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.cancel_btn.sizePolicy()
                                    .hasHeightForWidth())
        self.cancel_btn.setSizePolicy(sizePolicy)
        self.cancel_btn.setText("Cancel")
        self.verticalLayout.addWidget(self.cancel_btn)
        self.save_txt_btn = QtGui.QToolButton(self.dockWidgetContents)
        sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, 
                                    QtGui.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.save_txt_btn.sizePolicy()
                                    .hasHeightForWidth())
        self.save_txt_btn.setSizePolicy(sizePolicy)
        self.save_txt_btn.setText("Save text")
        self.verticalLayout.addWidget(self.save_txt_btn)
        self.verticalLayout_2.addLayout(self.verticalLayout)
        self.tool_panel.setWidget(self.dockWidgetContents)
        MainWindow.addDockWidget(QtCore.Qt.DockWidgetArea(2), self.tool_panel)
        self.action_Folder = QtGui.QAction(MainWindow)
        self.action_Index = QtGui.QAction(MainWindow)
        self.action_Connection = QtGui.QAction(MainWindow)
        self.action_About = QtGui.QAction(MainWindow)
        self.action_Download = QtGui.QAction(MainWindow)
        self.action_Cancel = QtGui.QAction(MainWindow)
        self.action_Quit = QtGui.QAction(MainWindow)
        self.menu_Options.addAction(self.action_Folder)
        self.menu_Options.addAction(self.action_Index)
        self.menu_File.addAction(self.action_Connection)
        self.menu_File.addAction(self.action_Download)
        self.menu_File.addAction(self.action_Cancel)
        self.menu_File.addSeparator()
        self.menu_File.addAction(self.action_Quit)
        self.menu_Help.addAction(self.action_About)
        self.menubar.addAction(self.menu_File.menuAction())
        self.menubar.addAction(self.menu_Options.menuAction())
        self.menubar.addAction(self.menu_Help.menuAction())

        self.editor.clear()


        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
        MainWindow.show()
        QtCore.QCoreApplication.processEvents()
        ui.populate()

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", 
                        "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
        self.menu_Options.setTitle(QtGui.QApplication.translate("MainWindow", 
                        "&Options", None, QtGui.QApplication.UnicodeUTF8))
        self.menu_File.setTitle(QtGui.QApplication.translate("MainWindow", 
                        "&File", None, QtGui.QApplication.UnicodeUTF8))
        self.menu_Help.setTitle(QtGui.QApplication.translate("MainWindow", 
                        "&Help", None, QtGui.QApplication.UnicodeUTF8))
        self.add_btn.setStatusTip(QtGui.QApplication.translate("MainWindow", 
                        "Add the selected video.", None, 
                        QtGui.QApplication.UnicodeUTF8))
        self.remove_btn.setStatusTip(QtGui.QApplication.translate("MainWindow", 
                        "Remove selected video(s) from the list", None, 
                        QtGui.QApplication.UnicodeUTF8))
        self.up_btn.setStatusTip(QtGui.QApplication.translate("MainWindow", 
                        "Move up.", None, QtGui.QApplication.UnicodeUTF8))
        self.down_btn.setStatusTip(QtGui.QApplication.translate("MainWindow", 
                        "move down", None, QtGui.QApplication.UnicodeUTF8))
        self.Download_btn.setStatusTip(QtGui.QApplication.translate(
                        "MainWindow", "Download now", None, 
                        QtGui.QApplication.UnicodeUTF8))
        self.cancel_btn.setStatusTip(QtGui.QApplication.translate("MainWindow", 
                        "Abort download", None, 
                        QtGui.QApplication.UnicodeUTF8))
        self.save_txt_btn.setStatusTip(QtGui.QApplication.translate(
                        "MainWindow", "Save the pitch.", None, 
                        QtGui.QApplication.UnicodeUTF8))
        self.action_Folder.setText(QtGui.QApplication.translate("MainWindow", 
                        "&Folder", None, QtGui.QApplication.UnicodeUTF8))
        self.action_Index.setText(QtGui.QApplication.translate("MainWindow", 
                        "&Index", None, QtGui.QApplication.UnicodeUTF8))
        self.action_Connection.setText(QtGui.QApplication.translate("MainWindow", 
                        "&Connection", None, QtGui.QApplication.UnicodeUTF8))
        self.action_About.setText(QtGui.QApplication.translate("MainWindow", 
                        "&About", None, QtGui.QApplication.UnicodeUTF8))
        self.action_Download.setText(QtGui.QApplication.translate("MainWindow", 
                        "&Download", None, QtGui.QApplication.UnicodeUTF8))
        self.action_Cancel.setText(QtGui.QApplication.translate("MainWindow", 
                        "&Cancel", None, QtGui.QApplication.UnicodeUTF8))
        self.action_Quit.setText(QtGui.QApplication.translate("MainWindow", 
                        "&Quit", None, QtGui.QApplication.UnicodeUTF8))

    def select_item(self, old, new):
        print "Unselected :", old, "Selected :", new


    def move_item(self, item):
        print "Item :", item


    def select_video(self, old, new):
        print "Unselected :", old, "Selected :", new

    def populate(self):
        self.liststore = []
        self.sgl = Signal()
        self.sgl.bind(self)
        f = open ("database", "r")
        for line in f:
            t = line.split(";")
            self.liststore.append([t[0], t[1], t[2], t[3]])
        self.items = []
        self.videos = []
        self.counter = 0
        f = self.liststore[0]
        img_ldr = ImageLoader(f[3])
        img_ldr.start()

    def next_thumbnail(self):
        video_item = VideoItem(self.liststore[self.counter])  
        img = QtGui.QPixmap("image.jpg")
        pix = img.scaled(160, 160, QtCore.Qt.KeepAspectRatio, 
                                QtCore.Qt.FastTransformation)
        video_item.pixmap = pix
        #icon = self.create_icon(pix)
        item = QtGui.QListWidgetItem(self.preview)
        #ic = QtGui.QIcon(icon)
        item.setIcon(QtGui.QIcon(pix))
        item.setText("None")
        item.setTextAlignment(QtCore.Qt.AlignHCenter)
        item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
        QtCore.QCoreApplication.processEvents()
        self.items.append(item)
        self.videos.append(video_item)

        self.counter += 1
        if not self.counter == len(self.liststore):
            f = self.liststore[self.counter]
            video_item = VideoItem(f)
            img_ldr = ImageLoader(f[3])
            img_ldr.start()



    def create_icon(self, img):
        """Create thumbnail.

        Thumbnail is a square background icosize x icosize, color black,
        the image is paste at vertical center and at down edge, and a
        white frame is painted around the image with a space of 2 pixels.
      
        Keyword arguments :
        img -- pixmap 160x160
 
        Return :
        framed thumbnail
        """
        #color = self.color_opt
        #background
        b = 160 + 5

        w = float(QtCore.QSize.width(img.size()))
        h = float(QtCore.QSize.height(img.size()))
        #coordonates top left of thumbnail
        bw, bh = (b/2)-(w/2), b-h-3
        #painting zone
        rect = QtCore.QRect(bw, bh, w, h)
        #painting source (all, of course)
        irect = QtCore.QRect(0.0, 0.0, w, h)
        #border = image size + (2*3)
        cw, ch = w + 3, h + 3
        #black border
        brect = QtCore.QRect(bw-2, bh-2, cw, ch)

        bckgrnd = QtGui.QPixmap(QtCore.QSize(b, b))
        bckgrnd.fill(QtGui.QColor("black"))
        painter = QtGui.QPainter()
        painter.begin(bckgrnd)
        painter.setPen(QtGui.QPen(QtCore.Qt.white, 1,
                                  QtCore.Qt.SolidLine, QtCore.Qt.RoundCap,
                                  QtCore.Qt.MiterJoin))
        painter.drawRect(brect)
        painter.drawPixmap(rect, img, irect)
        painter.end()

        return bckgrnd
        


class Preview(QtGui.QListWidget):
    def __init__(self, parent=None):
        super(Preview, self).__init__(parent)
        self.setMinimumSize(QtCore.QSize(0, 0))
        self.setStyleSheet("QWidget {color: white; background: black}")
        self.setFrameShape(QtGui.QFrame.Box)
        self.setFrameShadow(QtGui.QFrame.Sunken)
        self.setDragEnabled(True)
        self.setDragDropMode(QtGui.QAbstractItemView.DragDrop)
        self.setDefaultDropAction(QtCore.Qt.MoveAction)
        self.setSelectionMode(QtGui.QAbstractItemView.SingleSelection)
        self.setIconSize(QtCore.QSize(160, 160))
        self.setFlow(QtGui.QListView.LeftToRight)
        self.setViewMode(QtGui.QListView.IconMode)

        self.currentItemChanged.connect(ui.select_item)
        self.itemDoubleClicked.connect(ui.move_item)
    

    def startDrag(self, event):
        #print "Mouse press event"
        it = self.itemAt(event.pos())
        print "Item :", it
        idx = ui.items.index(it)
        #index = int(self.indexAt(event.pos()))
        if not it:
            return
        print "Drag item :", idx
        mimeData = QtCore.QMimeData()
        mimeData.setText(str(idx))

        drag = QtGui.QDrag(self)
        drag.setMimeData(mimeData)
        #print "Text :", t, "Source :", drag.source(), "Index :", index

        pixmap = QtGui.QPixmap(ui.videos[idx].pixmap)

        drag.setPixmap(pixmap)

        drag.setHotSpot(QtCore.QPoint(pixmap.width()/2, pixmap.height()))
        drag.setPixmap(pixmap)
        result = drag.start(QtCore.Qt.MoveAction)


    def mouseMoveEvent(self, event):
        self.startDrag(event)


    def keyPressEvent(self, event):
        print "Key :", event.key()


    def resizeEvent(self, event):
        #print "event1"
        #Window is resized
        if event.type() == 14:
            #print "resize"
            self.setSpacing(10)
            self.updateGeometries() 
            event.accept()



class ListDwnld(QtGui.QListWidget):
    def __init__(self, parent=None):
        super(ListDwnld, self).__init__(parent)
        self.setBaseSize(QtCore.QSize(150, 0))
        self.setDragDropMode(QtGui.QAbstractItemView.DropOnly)
        self.setAlternatingRowColors(True)
        self.setSelectionMode(QtGui.QAbstractItemView
                                    .MultiSelection)
        self.setIconSize(QtCore.QSize(100, 100))
        self.lst_videos = []

        self.currentItemChanged.connect(ui.select_video)


    def dragEnterEvent(self, event):
        if event.mimeData().hasText():
            #print "Enter in table"
            event.accept()
        else:
            event.ignore()


    def dragMoveEvent(self, event):
        if event.mimeData().hasText():
            event.setDropAction(QtCore.Qt.MoveAction)
            event.accept()
        else:
            event.ignore()


    def dragLeaveEvent(self, event):
        #print "Leave event"
        pass


    def dropEvent(self, event):
        data = event.mimeData()
        #print "drop :", data.text()
        self.add_object(data.text())
        event.accept()

    def add_object(self, item):
        print "Item : ", item, type(item)
        idx = eval(str(item))
        img = ui.videos[idx].pixmap
        pix = img.scaled(100, 100, QtCore.Qt.KeepAspectRatio, 
                                QtCore.Qt.FastTransformation)
        item = QtGui.QListWidgetItem(self)
        item.setIcon(QtGui.QIcon(pix))
        item.setText("None")
        item.setTextAlignment(QtCore.Qt.AlignHCenter)
        item.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
        self.lst_videos.append(ui.videos[idx].thumbnail)


class VideoItem(object):
    def __init__(self, item):
        self.thumbnail = item


class Signal(QtCore.QObject):
    loadFinished = QtCore.pyqtSignal()

    def bind(self, w):
        self.w = w
        self.loadFinished.connect(self.next)

    def emit_signal(self):
        print "Emit"
        self.loadFinished.emit() 

    def next(self):
        print "Recept"
        self.w.next_thumbnail()


class ImageLoader(Thread):
    def __init__(self, url):
        self.url = url
        Thread.__init__(self)

    def run(self):
        local = open("image.jpg", 'wb')
        f = urllib2.urlopen(self.url)
        local.write(f.read())
        local.close()
        print "Image loaded"
        ui.sgl.emit_signal()


if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainWindow = QtGui.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    
    sys.exit(app.exec_())

Il est normal que divers textes apparaissent dans la console, ils me servent à voir ce qui se passe "dans le moteur".

Pendant que les images se chargent testez déjà le drag and drop vers la fenêtre de droite pour vous convaincre que le chargement des image n'amène aucune contrainte de temps.

Les boutons et les menus ne sont pas encore "raccordés", et ne sont évidemment pas définitifs non plus.

@ plus

edit : Vous ne verrez pas les icônes sur les boutons, bien sur.

Dernière modification par VinsS (Le 06/10/2010, à 17:50)


Vincent
Oqapy      Qarte      PaQager

Hors ligne

#249 Le 06/10/2010, à 21:33

beudbeud

Re : Arte +7 recorder version 5

Très bien si c'est en Qt ça sera la version KDE de arte +7 recorder

si tu veux on peux mettre ta version sur le bzr du projet dans une nouvelle branche ça sera plus simple pour les mise a jour.

Dernière modification par beudbeud (Le 06/10/2010, à 21:34)


Télécharger les émissions de Arte +7 avec Arte +7 recorder
Theme pour Ubuntu Bisigi Project

Vostro 1510 Ubuntu 10.04

Hors ligne

#250 Le 07/10/2010, à 18:11

VinsS

Re : Arte +7 recorder version 5

Hello,

Ce sera effectivement utile de créer une nouvelle branche (6 ?), il faudra que tu m'ajoutes à la liste des développeurs pour que je puisse uploader.

mon compte Launchpad :

    https://launchpad.net/~vincent-vandevyvre

Mais si tu entre VinsS, ça marche aussi.

Normalement, nous aurons une version fonctionnelle de test ce week-end, mais il faudrait que je voie certaines choses de ton code.
Les requêtes, parsing d'html c'est pas ma tasse de thé, (je n'avais pas encore entendu parler de beautifull Soup).

Je n'ai pas vu de mailing list sur le projet, j'utilise ton mail ?

Au sujet de KDE, je resterais prudent, il s'agit de PyQt qui lui n'est pas du tout développé pour une plateforme ou un univers de bureau spécifique, PySide fut créé justement pour créer un binding python orienté KDE, si je peux dire que l'appli est totalement fonctionnelle sous Gnome, que j'utilise, par contre, je ne l'ai pas testée sous KDE.

Attendons d'avoir des retours d'utilisateurs KDE, même si l'on peut se dire que ça devrait fonctionner pareillement.

Cordialement.


Vincent
Oqapy      Qarte      PaQager

Hors ligne