From ff7fa4a0d1aa1c09e563d2086704aa7e2acea716 Mon Sep 17 00:00:00 2001
From: mkaay <mkaay@mkaay.de>
Date: Mon, 21 Dec 2009 17:07:16 +0100
Subject: package creation works

---
 module/gui/Collector.py   | 21 +++++++++++++++++++--
 module/gui/MainWindow.py  |  4 ++++
 module/gui/PackageDock.py | 28 +++++++++++++++++++++++++++-
 module/gui/connector.py   | 20 ++++++++++++++++++++
 4 files changed, 70 insertions(+), 3 deletions(-)

(limited to 'module')

diff --git a/module/gui/Collector.py b/module/gui/Collector.py
index 0dbccab1f..28cac097b 100644
--- a/module/gui/Collector.py
+++ b/module/gui/Collector.py
@@ -102,8 +102,8 @@ class PackageCollector(QThread):
             except:
                 self.children.append(newChild)
                 pos = self.children.index(newChild)
-            ppos = self.queue.queue.index(self)
-            parent = self.queue.view.topLevelItem(ppos)
+            ppos = self.collector.collector.index(self)
+            parent = self.collector.view.topLevelItem(ppos)
             item = parent.child(pos)
             if not item:
                 item = QTreeWidgetItem()
@@ -172,6 +172,7 @@ class LinkCollector(QThread):
                 file = self.LinkCollectorFile(self)
             file.setData(data)
             self.addFile(id, file)
+        self.clear(ids)
     
     def addFile(self, pid, newFile):
         pos = None
@@ -192,12 +193,28 @@ class LinkCollector(QThread):
             self.view.insertTopLevelItem(pos, item)
         item.setData(0, Qt.DisplayRole, QVariant(newFile.getData()["filename"]))
         item.setData(0, Qt.UserRole, QVariant(pid))
+        flags = Qt.ItemIsSelectable | Qt.ItemIsDragEnabled | Qt.ItemIsEnabled
+        item.setFlags(flags)
     
     def getFile(self, pid):
         for k, file in enumerate(self.collector):
             if file.getData()["id"] == pid:
                 return file
         return None
+    
+    def clear(self, ids):
+        toremove = []
+        for k, file in enumerate(self.collector):
+            id = file.getData()["id"]
+            if not id in ids:
+                toremove.append(k)
+        if not toremove:
+            return
+        toremove.sort()
+        toremove.reverse()
+        for pos in toremove:
+            del self.collector[k]
+            self.view.takeTopLevelItem(k)
 
     class LinkCollectorFile():
         def __init__(self, collector):
diff --git a/module/gui/MainWindow.py b/module/gui/MainWindow.py
index 6d68f4d7a..63ffb86a0 100644
--- a/module/gui/MainWindow.py
+++ b/module/gui/MainWindow.py
@@ -39,6 +39,7 @@ class MainWindow(QMainWindow):
         self.newLinkDock = NewLinkDock()
         self.addDockWidget(Qt.RightDockWidgetArea, self.newLinkDock)
         self.connect(self.newLinkDock, SIGNAL("done"), self.slotAddLinks)
+        self.connect(self.newPackDock, SIGNAL("done"), self.slotAddPackage)
         
         #central widget, layout
         self.masterlayout = QVBoxLayout()
@@ -156,3 +157,6 @@ class MainWindow(QMainWindow):
     
     def slotAddLinks(self, links):
         self.emit(SIGNAL("addLinks"), links)
+    
+    def slotAddPackage(self, name, ids):
+        self.emit(SIGNAL("addPackage"), name, ids)
diff --git a/module/gui/PackageDock.py b/module/gui/PackageDock.py
index c97e9d645..7367efda4 100644
--- a/module/gui/PackageDock.py
+++ b/module/gui/PackageDock.py
@@ -26,6 +26,18 @@ class NewPackageDock(QDockWidget):
         self.setWidget(self.widget)
         self.setAllowedAreas(Qt.RightDockWidgetArea|Qt.LeftDockWidgetArea)
         self.hide()
+    
+    def slotDone(self):
+        view = self.widget.view
+        count = view.topLevelItemCount()
+        ids = []
+        for i in range(count):
+            item = view.topLevelItem(i)
+            if item:
+                ids.append(item.data(0, Qt.UserRole).toInt()[0])
+        self.emit(SIGNAL("done"), self.widget.nameInput.text(), ids)
+        view.clear()
+        self.hide()
 
 class NewPackageWindow(QWidget):
     def __init__(self, dock):
@@ -38,7 +50,19 @@ class NewPackageWindow(QWidget):
         nameInput = QLineEdit()
         
         linksLabel = QLabel("Links in this Package")
-        linkView = QListWidget()
+        linkView = QTreeWidget()
+        linkView.setSelectionBehavior(QAbstractItemView.SelectRows)
+        linkView.setSelectionMode(QAbstractItemView.SingleSelection)
+        linkView.setColumnCount(1)
+        linkView.setHeaderLabels(["Name"])
+        linkView.setDragEnabled(True)
+        linkView.setDragDropMode(QAbstractItemView.DragDrop)
+        linkView.setDropIndicatorShown(True)
+        linkView.setAcceptDrops(True)
+        linkView.setDragDropOverwriteMode(True)
+        
+        self.view = linkView
+        self.nameInput = nameInput
         
         save = QPushButton("Create")
         
@@ -47,3 +71,5 @@ class NewPackageWindow(QWidget):
         layout.addWidget(linksLabel, 1, 0, 1, 2)
         layout.addWidget(linkView, 2, 0, 1, 2)
         layout.addWidget(save, 3, 0, 1, 2)
+        
+        self.connect(save, SIGNAL("clicked()"), self.dock.slotDone)
diff --git a/module/gui/connector.py b/module/gui/connector.py
index 32da29bba..e7a151c5e 100644
--- a/module/gui/connector.py
+++ b/module/gui/connector.py
@@ -177,3 +177,23 @@ class connector(QThread):
                 self.proxy.unpause_server()
         finally:
             self.mutex.unlock()
+    
+    def newPackage(self, name):
+        """
+            create a new package and return id
+        """
+        self.mutex.lock()
+        try:
+            return self.proxy.new_package(name)
+        finally:
+            self.mutex.unlock()
+    
+    def addFileToPackage(self, fileid, packid):
+        """
+            add a file from collector to package
+        """
+        self.mutex.lock()
+        try:
+            self.proxy.move_file_2_package(fileid, packid)
+        finally:
+            self.mutex.unlock()
-- 
cgit v1.2.3


From 59eaacc4228707f715be147350adb0a670de6985 Mon Sep 17 00:00:00 2001
From: mkaay <mkaay@mkaay.de>
Date: Mon, 21 Dec 2009 17:57:17 +0100
Subject: save window state

---
 module/config/gui_default.xml |  4 ++++
 module/gui/LinkDock.py        |  1 +
 module/gui/MainWindow.py      | 27 ++++++++++++++++++++++++++-
 module/gui/PackageDock.py     |  1 +
 4 files changed, 32 insertions(+), 1 deletion(-)

(limited to 'module')

diff --git a/module/config/gui_default.xml b/module/config/gui_default.xml
index af38eda4c..9b6d75936 100644
--- a/module/config/gui_default.xml
+++ b/module/config/gui_default.xml
@@ -4,4 +4,8 @@
             <name>Local</name>
         </connection>
     </connections>
+    <mainWindow>
+        <state></state>
+        <geometry></geometry>
+    </mainWindow>
 </root>
diff --git a/module/gui/LinkDock.py b/module/gui/LinkDock.py
index 01a0cc193..99429d04b 100644
--- a/module/gui/LinkDock.py
+++ b/module/gui/LinkDock.py
@@ -22,6 +22,7 @@ from PyQt4.QtGui import *
 class NewLinkDock(QDockWidget):
     def __init__(self):
         QDockWidget.__init__(self, "New Links")
+        self.setObjectName("New Links Dock")
         self.widget = NewLinkWindow(self)
         self.setWidget(self.widget)
         self.setAllowedAreas(Qt.RightDockWidgetArea|Qt.LeftDockWidgetArea)
diff --git a/module/gui/MainWindow.py b/module/gui/MainWindow.py
index 63ffb86a0..4f92f68a9 100644
--- a/module/gui/MainWindow.py
+++ b/module/gui/MainWindow.py
@@ -33,6 +33,9 @@ class MainWindow(QMainWindow):
         self.setWindowIcon(QIcon("icons/logo.png"))
         self.resize(750,500)
         
+        #layout version
+        self.version = 1
+        
         #init docks
         self.newPackDock = NewPackageDock()
         self.addDockWidget(Qt.RightDockWidgetArea, self.newPackDock)
@@ -89,7 +92,8 @@ class MainWindow(QMainWindow):
         self.connect(self.mactions["exit"], SIGNAL("triggered()"), self.close)
     
     def init_toolbar(self):
-        self.toolbar = self.addToolBar("main")
+        self.toolbar = self.addToolBar("Main Toolbar")
+        self.toolbar.setObjectName("Main Toolbar")
         self.toolbar.setIconSize(QSize(40,40))
         self.actions["toggle_status"] = self.toolbar.addAction("Toggle Pause/Resume")
         pricon = QIcon()
@@ -160,3 +164,24 @@ class MainWindow(QMainWindow):
     
     def slotAddPackage(self, name, ids):
         self.emit(SIGNAL("addPackage"), name, ids)
+    
+    def closeEvent(self, event):
+        state_raw = self.saveState(self.version)
+        geo_raw = self.saveGeometry()
+        
+        state = str(state_raw.toBase64())
+        geo = str(geo_raw.toBase64())
+        
+        self.emit(SIGNAL("saveMainWindow"), state, geo)
+        event.accept()
+    
+    def restoreWindow(self, state, geo):
+        state = QByteArray(state)
+        geo = QByteArray(geo)
+        
+        state_raw = QByteArray.fromBase64(state)
+        geo_raw = QByteArray.fromBase64(geo)
+        
+        self.restoreState(state_raw, self.version)
+        self.restoreGeometry(geo_raw)
+
diff --git a/module/gui/PackageDock.py b/module/gui/PackageDock.py
index 7367efda4..b90e3533d 100644
--- a/module/gui/PackageDock.py
+++ b/module/gui/PackageDock.py
@@ -22,6 +22,7 @@ from PyQt4.QtGui import *
 class NewPackageDock(QDockWidget):
     def __init__(self):
         QDockWidget.__init__(self, "New Package")
+        self.setObjectName("New Package Dock")
         self.widget = NewPackageWindow(self)
         self.setWidget(self.widget)
         self.setAllowedAreas(Qt.RightDockWidgetArea|Qt.LeftDockWidgetArea)
-- 
cgit v1.2.3


From 3b51c365eb34c6da317bab588d9567b1695883c8 Mon Sep 17 00:00:00 2001
From: mkaay <mkaay@mkaay.de>
Date: Mon, 21 Dec 2009 18:51:31 +0100
Subject: merged Wugy

---
 module/web/pyload.db | Bin 44032 -> 44032 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

(limited to 'module')

diff --git a/module/web/pyload.db b/module/web/pyload.db
index 013c8607d..e5e224850 100644
Binary files a/module/web/pyload.db and b/module/web/pyload.db differ
-- 
cgit v1.2.3