#226 Le 01/10/2010, à 12: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 24.04.1 sur Clevo N141WU
Hors ligne
#227 Le 01/10/2010, à 12: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, à 14:15
- YMulleneers
Re : Arte +7 recorder version 5
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, à 16: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 24.04.1 sur Clevo N141WU
Hors ligne
#230 Le 02/10/2010, à 03:34
- VinsS
Re : Arte +7 recorder version 5
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
Hors ligne
#231 Le 02/10/2010, à 09:49
- @nne
Re : Arte +7 recorder version 5
...
Application > Son et Vidéo > Arte +7 recorder
...
Est-ce que l'application est compatible 64 bits ?
#232 Le 02/10/2010, à 11:42
- VinsS
Re : Arte +7 recorder version 5
[
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é ...
Hors ligne
#233 Le 03/10/2010, à 12: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.
Hors ligne
#234 Le 03/10/2010, à 12:47
- @nne
Re : Arte +7 recorder version 5
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 !
#235 Le 03/10/2010, à 14: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, à 15: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, à 15:03)
Hors ligne
#237 Le 03/10/2010, à 17: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, à 17: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, à 18:04
- @nne
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
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, à 20: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, à 02:53
- VinsS
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
Ca, c'est bien volontiers, mais il faudrait pour cela savoir sur quelle version travailler.
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.
Hors ligne
#241 Le 04/10/2010, à 06: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, à 06:59
- beudbeud
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.
Tu peux me faire un apt-cache policy arte+7recorder-5
Dernière modification par beudbeud (Le 04/10/2010, à 07: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, à 08: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, à 10:21
- beudbeud
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
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, à 11: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.
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, à 11:51)
Hors ligne
#246 Le 06/10/2010, à 13:06
- beudbeud
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.
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, à 13: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, à 13:12
- @nne
Re : Arte +7 recorder version 5
... 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 !
#248 Le 06/10/2010, à 16: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, à 16:50)
Hors ligne
#249 Le 06/10/2010, à 20: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, à 20: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, à 17: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.
Hors ligne