manager/qubesmanager/multiselectwidget.py

69 lines
2.4 KiB
Python
Raw Normal View History

from PyQt4 import QtCore, QtGui
from . import ui_multiselectwidget
class MultiSelectWidget(
ui_multiselectwidget.Ui_MultiSelectWidget, QtGui.QWidget):
2012-02-20 07:56:38 +01:00
__pyqtSignals__ = ("selected_changed()",)
__pyqtSignals__ = ("items_added(PyQt_PyObject)",)
__pyqtSignals__ = ("items_removed(PyQt_PyObject)",)
2012-02-20 07:56:38 +01:00
def __init__(self, parent=None):
super(MultiSelectWidget, self).__init__(parent)
2014-02-23 00:44:08 +01:00
self.setupUi(self)
self.add_selected_button.clicked.connect(self.add_selected)
self.add_all_button.clicked.connect(self.add_all)
self.remove_selected_button.clicked.connect(self.remove_selected)
self.remove_all_button.clicked.connect(self.remove_all)
self.available_list.setSelectionMode(
QtGui.QAbstractItemView.ExtendedSelection)
self.selected_list.setSelectionMode(
QtGui.QAbstractItemView.ExtendedSelection)
def switch_selected(self, src, dst):
selected = src.selectedItems()
items = []
for selected_item in selected:
row = src.indexFromItem(selected_item).row()
item = src.takeItem(row)
dst.addItem(item)
items.append(item)
dst.sortItems()
self.emit(QtCore.SIGNAL("selected_changed()"))
if src is self.selected_list:
self.emit(QtCore.SIGNAL("items_removed(PyQt_PyObject)"), items)
else:
self.emit(QtCore.SIGNAL("items_added(PyQt_PyObject)"), items)
def add_selected(self):
self.switch_selected(self.available_list, self.selected_list)
def remove_selected(self):
self.switch_selected(self.selected_list, self.available_list)
def move_all(self, src, dst):
items = []
while src.count() > 0:
item = src.takeItem(0)
dst.addItem(item)
items.append(item)
dst.sortItems()
self.emit(QtCore.SIGNAL("selected_changed()"))
if src is self.selected_list:
self.emit(QtCore.SIGNAL("items_removed(PyQt_PyObject)"), items)
else:
self.emit(QtCore.SIGNAL("items_added(PyQt_PyObject)"), items)
def add_all(self):
self.move_all(self.available_list, self.selected_list)
def remove_all(self):
self.move_all(self.selected_list, self.available_list)
def clear(self):
self.available_list.clear()
self.selected_list.clear()