branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider - A delete button is added to right click menu

Beyza Ermiş uludag-commits at pardus.org.tr
2 Mar 2011 Çar 16:45:17 EET


Author: beyza.ermis
Date: Wed Mar  2 16:45:17 2011
New Revision: 36338

Added:
   branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/icons/edit-delete.png
      - copied unchanged from r36221, trunk/playground/gsoc/pardusman-yali-live/gui/ui/pics/edit-delete.png
Modified:
   branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/computer.py
   branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/data.qrc
   branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/formmain.py
   branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/helpers/directory.py
Log:
A delete button is added to right click menu

---
 computer.py          |    1 +
 data.qrc             |    1 +
 formmain.py          |   32 ++++++++++++++++++++++++++++++++
 helpers/directory.py |    9 +++++++++
 4 files changed, 43 insertions(+)

Modified: branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/computer.py
=================================================================
--- branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/computer.py	(original)
+++ branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/computer.py	Wed Mar  2 16:45:17 2011
@@ -35,6 +35,7 @@
 
         # Attach generated UI
         self.setupUi(self)
+
         # Signals for password matching control
         self.connect(self.editPassword, QtCore.SIGNAL("textChanged(QString)"), self.__slotPasswordTextChanged)
         self.connect(self.editConfirmPassword, QtCore.SIGNAL("textChanged(QString)"), self.__slotPasswordTextChanged)

Modified: branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/data.qrc
=================================================================
--- branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/data.qrc	(original)
+++ branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/data.qrc	Wed Mar  2 16:45:17 2011
@@ -31,5 +31,6 @@
     <file>icons/folder16.png</file>
     <file>icons/network48.png</file>
     <file>icons/help48.png</file>
+    <file>icons/edit-delete.png</file>
   </qresource>
 </RCC>

Modified: branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/formmain.py
=================================================================
--- branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/formmain.py	(original)
+++ branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/formmain.py	Wed Mar  2 16:45:17 2011
@@ -70,6 +70,7 @@
         self.menu.newAction("New Folder", wrappers.Icon("folder48"), self.__slot_new_folder)
         self.menu.newAction("New Computer", wrappers.Icon("computer48"), self.__slot_new_computer)
         self.menu.newAction("New User", wrappers.Icon("user48"), self.__slot_new_user)
+        self.menu.newAction("Delete", wrappers.Icon("edit-delete"), self.__slot_delete)
 
         # Backends
         self.talk = talk.Talk()
@@ -502,6 +503,36 @@
         if self.item:
             self.menu.exec_(self.treeComputers.mapToGlobal(pos))
 
+    def __slot_delete(self):
+        """
+            Triggered when user wants to delete an item
+        """
+        dn = self.item.dn
+        results = self.directory.search(dn, scope="sub")
+        length = len(results)
+
+        if dn[0:2] != 'dc' or length == 1:
+            msg = str("This is not undoable. Are you sure you want to remove?")
+            reply = QtGui.QMessageBox.question(self, str('Warning'), msg,  QtGui.QMessageBox.Yes, QtGui.QMessageBox.No )
+            if reply == QtGui.QMessageBox.Yes:
+                try:
+                    self.directory.delete_item(dn)
+                    index = self.item.parent().indexOfChild(self.treeComputers.currentItem())
+                    self.item.parent().takeChild(index)
+
+                except directory.DirectoryConnectionError:
+                    self.__update_status("directory", "error")
+                    # TODO: Disconnect
+                    QtGui.QMessageBox.warning(self, "Connection Error", "Connection lost. Please re-connect.")
+                    return
+                except directory.DirectoryError:
+                    QtGui.QMessageBox.warning(self, "Connection Error", "Unable to delete item.")
+                    return
+            else:
+                pass
+        else:
+            message = QtGui.QMessageBox.warning(self, "Warning", "The selected item is a non-empty directory. It cannot be deleted.")
+
     def __slot_new_computer(self):
         """
             Triggered when user wants to add a new computer.
@@ -603,6 +634,7 @@
             self.treeComputers.scrollToItem(item)
             self.treeComputers.setCurrentItem(item)
 
+
     def __slot_widget_stack(self, toggled):
         """
             Triggered when users activates a policy plugin.

Modified: branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/helpers/directory.py
=================================================================
--- branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/helpers/directory.py	(original)
+++ branches/ahenk/2.0/beyza.ermis/ahenk/lider/lider/helpers/directory.py	Wed Mar  2 16:45:17 2011
@@ -117,6 +117,15 @@
         ldif = ldap.modlist.addModlist(attributes)
         self.conn.add_s(dn, ldif)
 
+    def delete_item(self, dn):
+        """
+            Deletes selected item
+
+            Arguments:
+                dn: Distinguished name
+        """
+        self.conn.delete_s(dn)
+
     def search(self, directory=None, fields=None, scope="one"):
         """
             Searches for all Folder and Computer objects in given directory.


Uludag-commits mesaj listesiyle ilgili daha fazla bilgi