From b5d1c47ac2590fe4314d7e96d58443c30463746c Mon Sep 17 00:00:00 2001 From: mkaay Date: Sat, 26 Dec 2009 22:35:20 +0100 Subject: gui contaoner upload, closes #39 --- module/gui/MainWindow.py | 11 +++++++++++ module/gui/connector.py | 13 +++++++++++++ pyLoadCore.py | 15 +++++++++++++-- pyLoadGui.py | 15 +++++++++++++++ 4 files changed, 52 insertions(+), 2 deletions(-) diff --git a/module/gui/MainWindow.py b/module/gui/MainWindow.py index 53de8cd54..744518adb 100644 --- a/module/gui/MainWindow.py +++ b/module/gui/MainWindow.py @@ -122,9 +122,11 @@ class MainWindow(QMainWindow): self.addMenu = QMenu() packageAction = self.addMenu.addAction("Package") linkAction = self.addMenu.addAction("Links") + containerAction = self.addMenu.addAction("Container") self.connect(self.actions["add"], SIGNAL("triggered()"), self.slotAdd) self.connect(packageAction, SIGNAL("triggered()"), self.slotShowAddPackage) self.connect(linkAction, SIGNAL("triggered()"), self.slotShowAddLinks) + self.connect(containerAction, SIGNAL("triggered()"), self.slotShowAddContainer) def init_tabs(self): """ @@ -230,6 +232,15 @@ class MainWindow(QMainWindow): """ self.emit(SIGNAL("addPackage"), name, ids) + def slotShowAddContainer(self): + """ + action from add-menu + show file selector, emit upload + """ + fileNames = QFileDialog.getOpenFileNames(self, "Container Öffnen", "", "All Container Types (*.dlc *.ccf *.rsdf *.txt);;DLC (*.dlc);;CCF (*.ccf);;RSDF (*.rsdf);;Text Files (*.txt)") + for name in fileNames: + self.emit(SIGNAL("addContainer"), str(name)) + def slotPushPackageToQueue(self): """ push collector pack to queue diff --git a/module/gui/connector.py b/module/gui/connector.py index 4ac635200..e52cf42ff 100644 --- a/module/gui/connector.py +++ b/module/gui/connector.py @@ -304,3 +304,16 @@ class connector(QThread): self.emit(SIGNAL("proxy_error"), "removeFile") finally: self.mutex.unlock() + + def uploadContainer(self, filename, type, content): + """ + upload a container + """ + self.mutex.lock() + try: + self.proxy.upload_container(filename, type, content) + except: + self.emit(SIGNAL("proxy_error"), "uploadContainer") + finally: + self.mutex.unlock() + diff --git a/pyLoadCore.py b/pyLoadCore.py index 7cf83389e..9e9da2c4b 100755 --- a/pyLoadCore.py +++ b/pyLoadCore.py @@ -44,7 +44,8 @@ from sys import stdout import thread import time from time import sleep -from shutil import copyfile +from shutil import copyfile +from tempfile import NamedTemporaryFile from module.file_list import File_List from module.network.Request import Request @@ -494,7 +495,17 @@ class ServerMethods(): self.core.file_list.packager.resetFileStatus(id) def restart_file(self, fileid): - self.core.file_list.packager.resetFileStatus(fileid) + self.core.file_list.packager.resetFileStatus(fileid) + + def upload_container(self, filename, type, content): + th = NamedTemporaryFile(mode="w", suffix="."+type, delete=False) + th.write(content) + path = th.name + th.close() + pid = self.core.file_list.packager.addNewPackage(filename) + cid = self.core.file_list.collector.addLink(path) + self.move_file_2_package(cid, pid) + self.core.file_list.save() #def move_urls_up(self, ids): # for id in ids: diff --git a/pyLoadGui.py b/pyLoadGui.py index 5e13dd080..f075db710 100755 --- a/pyLoadGui.py +++ b/pyLoadGui.py @@ -28,6 +28,8 @@ from PyQt4.QtGui import * from uuid import uuid4 as uuid +from os.path import basename + from module.gui.ConnectionManager import * from module.gui.connector import * from module.gui.MainWindow import * @@ -109,6 +111,7 @@ class main(QObject): self.connect(self.mainWindow, SIGNAL("pushPackageToQueue"), self.slotPushPackageToQueue) self.connect(self.mainWindow, SIGNAL("restartDownload"), self.slotRestartDownload) self.connect(self.mainWindow, SIGNAL("removeDownload"), self.slotRemoveDownload) + self.connect(self.mainWindow, SIGNAL("addContainer"), self.slotAddContainer) def slotShowConnector(self): """ @@ -377,6 +380,18 @@ class main(QObject): for fileid in ids: self.connector.addFileToPackage(fileid, packid) + def slotAddContainer(self, path): + """ + emitted from main window + add container + """ + filename = basename(path) + type = "".join(filename.split(".")[-1]) + fh = open(path, "r") + content = fh.read() + fh.close() + self.connector.uploadContainer(filename, type, content) + def slotSaveMainWindow(self, state, geo): """ save the window geometry and toolbar/dock position to config file -- cgit v1.2.3