[Uludag-commits] r16292 - trunk/tasma/package-manager/src

uludag-commits at pardus.org.tr uludag-commits at pardus.org.tr
11 Ara 2007 Sal 15:24:01 EET


Author: gokcen.eraslan
Date: Tue Dec 11 15:24:00 2007
New Revision: 16292

Modified:
   trunk/tasma/package-manager/src/CustomEventListener.py
   trunk/tasma/package-manager/src/MainWidget.py
   trunk/tasma/package-manager/src/PackageCache.py
   trunk/tasma/package-manager/src/SpecialList.py
Log:
Reorganization continued...

* Sorting of packages fixed
* Custom event tasks moved to SpecialList module, SpecialList is now more like a normal Qt widget


Modified: trunk/tasma/package-manager/src/CustomEventListener.py
=================================================================
--- trunk/tasma/package-manager/src/CustomEventListener.py	(original)
+++ trunk/tasma/package-manager/src/CustomEventListener.py	Tue Dec 11 15:24:00 2007
@@ -10,39 +10,29 @@
 # Please read the COPYING file.
 
 from khtml import DOM
-from kdecore import i18n, KURL
-from kio import KRun
+from kdecore import i18n
 
 class CustomEventListener(DOM.EventListener):
     def __init__(self, parent):
         DOM.EventListener.__init__(self)
         self.parent = parent
-        self.selectingAll = False
+        #self.selectingAll = False
 
     def handleEvent(self,event):
         target = event.target().nodeName().string()
         #try:
-        #if checkbox is clicked, add/remove package to/from basket
+        #if checkbox is clicked, call SpecialList's slot
         if target == "INPUT":
             inputElement = DOM.HTMLInputElement(event.target())
             name = inputElement.name().string()
             checked = inputElement.checked()
-            if checked:
-                if name not in self.parent.basket.packages:
-                    self.parent.basket.add(name)
-            else:
-                self.parent.basket.remove(name)
 
-            self.parent.updateButtons()
-            if not self.selectingAll:
-                self.parent.updateStatusBar()
+            # call parent to handle click event (in fact, parent emits this as a signal and its parent handles the signal)
+            self.parent.slotCheckboxClicked(name, checked)
 
         elif target == "A":
             link = event.target().attributes().getNamedItem(DOM.DOMString("href")).nodeValue().string()
             if link == "#selectall":
-                document = self.parent.part.document()
-                nodeList = document.getElementsByTagName(DOM.DOMString("input"))
-
                 state = event.target().firstChild().nodeValue().string()
                 reverseSelection = False
                 if state == i18n("Select all packages in this category"):
@@ -51,14 +41,9 @@
                     reverseSelection = True
                     event.target().firstChild().setNodeValue(DOM.DOMString(i18n("Select all packages in this category")))
 
-                self.selectingAll = True
-                for i in range(0,nodeList.length()):
-                    element = DOM.HTMLInputElement(nodeList.item(i))
-                    if reverseSelection or not element.checked():
-                        element.click()
-                self.selectingAll = False
-                self.parent.updateStatusBar()
+                # let the list do the rest
+                self.parent.slotSelectAll(reverseSelection)
             else:
-                KRun.runURL(KURL(link),"text/html",False,False);
+                self.parent.slotHomepageClicked(link)
         #except Exception, e:
-            #print e
+            #print "KHTML Exception: " + str(e)

Modified: trunk/tasma/package-manager/src/MainWidget.py
=================================================================
--- trunk/tasma/package-manager/src/MainWidget.py	(original)
+++ trunk/tasma/package-manager/src/MainWidget.py	Tue Dec 11 15:24:00 2007
@@ -107,6 +107,8 @@
         self.connect(self.basketAction, SIGNAL("clicked()"),self.showBasket)
         self.connect(self.operateAction, SIGNAL("clicked()"),self.takeAction)
 
+        self.connect(self.specialList, PYSIGNAL("checkboxClicked"), self.packageClicked)
+
         self.command = Commander.Commander(self)
 
         self.delayTimer = QTimer(self)
@@ -123,6 +125,16 @@
 
         self.settings = Settings.Settings(Globals.config())
 
+    def packageClicked(self, itemName, checked):
+        if checked:
+            if itemName not in self.basket.packages:
+                self.basket.add(itemName)
+        else:
+            self.basket.remove(itemName)
+
+        self.updateButtons()
+        self.updateStatusBar()
+
     def lazyLoadComponentList(self):
         self.parent.tray.updateTrayIcon()
  

Modified: trunk/tasma/package-manager/src/PackageCache.py
=================================================================
--- trunk/tasma/package-manager/src/PackageCache.py	(original)
+++ trunk/tasma/package-manager/src/PackageCache.py	Tue Dec 11 15:24:00 2007
@@ -24,7 +24,7 @@
         self.size = self._sizer(size)
         self.homepage = homepage
         self.repo = repo
-    
+
     def _sizer(self, size):
         if size:
             tpl = pisi.util.human_readable_size(size)
@@ -32,6 +32,12 @@
         else:
             return i18n("N\A")
 
+    def __str__(self):
+        return self.name
+
+    def lower(self):
+        return self.name.lower()
+
 class PackageCache:
     def __init__(self):
         self.packages = {}

Modified: trunk/tasma/package-manager/src/SpecialList.py
=================================================================
--- trunk/tasma/package-manager/src/SpecialList.py	(original)
+++ trunk/tasma/package-manager/src/SpecialList.py	Tue Dec 11 15:24:00 2007
@@ -8,6 +8,7 @@
 from kdecore import *
 from kdeui import *
 from khtml import *
+from kio import KRun
 
 import pisi
 import re
@@ -17,12 +18,14 @@
 import CustomEventListener
 from Icons import *
 
-class SpecialList:
+class SpecialList(QObject):
     def __init__(self, parent):
+        QObject.__init__(self)
         self.parent = parent
         self.part = KHTMLPart(self.parent)
         self.part.view().setFocus()
-        
+        self.selectingAll = False
+
         # Read javascript
         js = file(str(locate("data","package-manager/animation.js"))).read()
         js = re.sub("#3cBB39", KGlobalSettings.alternateBackgroundColor().name(), js)
@@ -33,13 +36,32 @@
         cssFile = file(str(locate("data","package-manager/layout.css"))).read()
         self.css = cssFile
 
-        QObject.connect(self.part, SIGNAL("completed()"), self.registerEventListener)
-    
+        self.connect(self.part, SIGNAL("completed()"), self.registerEventListener)
+
     def registerEventListener(self):
-        self.eventListener = CustomEventListener.CustomEventListener(self.parent)
+        self.eventListener = CustomEventListener.CustomEventListener(self)
         node = self.part.document().getElementsByTagName(DOM.DOMString("body")).item(0)
         node.addEventListener(DOM.DOMString("click"),self.eventListener,True)
 
+    def slotCheckboxClicked(self, itemName, checked):
+        if not self.selectingAll:
+            self.emit(PYSIGNAL("checkboxClicked"), (itemName, checked))
+
+    def slotHomepageClicked(self, link):
+        KRun.runURL(KURL(link),"text/html",False,False);
+
+    def slotSelectAll(self, reverse):
+        document = self.part.document()
+        nodeList = document.getElementsByTagName(DOM.DOMString("input"))
+
+        self.selectingAll = True
+        for i in range(0,nodeList.length()):
+            element = DOM.HTMLInputElement(nodeList.item(i))
+            if reverse or not element.checked():
+                element.click()
+        self.selectingAll = False
+        #self.parent.updateStatusBar()
+
     def clear(self):
         self.part.view().setContentsPos(0, 0)
         self.part.begin()
@@ -108,8 +130,7 @@
         titleStyle = ""
         style = ""
 
-        #TODO: fix
-        #packages.sort(cmp = lambda x, y: cmp(x.name.lower(), y.name.lower()), key=string.lower)
+        packages.sort(key=string.lower)
 
         alternativeColor = KGlobalSettings.alternateBackgroundColor().name()
         baseColor = KGlobalSettings.baseColor().name()


Uludag-commits mesaj listesiyle ilgili daha fazla bilgi