+++ /dev/null
-# DDStorm
-# -------
-# Copyright (c) 2015 Agnibho Mondal
-# All rights reserved
-
-# This file is part of DDStorm.
-
-# DDStorm is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-
-# DDStorm is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with DDStorm. If not, see <http://www.gnu.org/licenses/>.
-
-from PyQt4 import QtGui, QtCore
-
-class Symptoms(QtGui.QFrame):
- sympList=[]
- changed=QtCore.pyqtSignal(list)
- def __init__(self, auto):
- super(Symptoms, self).__init__()
- self.auto=auto
- self.initUI()
-
- def initUI(self):
- self.label=QtGui.QLabel("Symptoms")
- self.label.setStyleSheet("font-size:18px")
-
- self.listWidget=QtGui.QListWidget(self)
- self.listWidget.setStyleSheet("font-size:14px")
- self.listWidget.setSelectionMode(4)
-
- self.rm=QtGui.QPushButton("Remove")
- self.rm.clicked.connect(self.remove)
-
- self.cl=QtGui.QPushButton("Clear All")
- self.cl.clicked.connect(self.removeAll)
-
- self.browse=QtGui.QPushButton("Browse Symptoms")
- self.browse.clicked.connect(self.browseSymptoms)
-
- self.add=QtGui.QPushButton("Add")
- self.add.clicked.connect(self.addItem)
-
- self.new=QtGui.QLineEdit(self)
- self.new.returnPressed.connect(self.addItem)
- self.completer=QtGui.QCompleter(self.auto)
- self.completer.setCaseSensitivity(0)
- self.completer.setCompletionMode(2)
- self.new.setCompleter(self.completer)
-
- self.browser=SymptomBrowser(self.auto)
- self.browser.added.connect(self.addItem)
-
- hboxt=QtGui.QHBoxLayout()
- hboxt.addWidget(self.new)
- hboxt.addWidget(self.add)
- hboxb=QtGui.QHBoxLayout()
- hboxb.addWidget(self.rm)
- hboxb.addWidget(self.cl)
- hboxb.addWidget(self.browse)
- vbox=QtGui.QVBoxLayout()
- vbox.addWidget(self.label)
- vbox.addLayout(hboxt)
- vbox.addWidget(self.listWidget)
- vbox.addLayout(hboxb)
- self.setLayout(vbox)
-
- def addItem(self, text=""):
- if(not text):
- text=self.new.text()
- if(len(text)>0):
- if(text in self.sympList):
- QtGui.QMessageBox.information(self, "Duplicate Symptom", "'"+text+"' has already been added to the symptom list.")
- elif(text in self.auto):
- QtGui.QListWidgetItem(text, self.listWidget)
- self.sympList.append(text)
- self.new.clear()
- self.changed.emit(list(self.sympList))
- else:
- QtGui.QMessageBox.warning(self, "Symptom Unvailable", "'"+text+"' is not available in the current Library.")
-
- def remove(self, all=False):
- if(len(self.listWidget.selectedItems())>0):
- for item in self.listWidget.selectedItems():
- self.sympList.remove(item.text())
- self.listWidget.takeItem(self.listWidget.row(item))
- self.changed.emit(list(self.sympList))
-
- def removeAll(self):
- self.listWidget.clear()
- del self.sympList[:]
- self.changed.emit(list(self.sympList))
-
- def browseSymptoms(self):
- self.browser.exec_()
-
- def getList(self):
- return self.sympList
-
-class SymptomBrowser(QtGui.QDialog):
- added=QtCore.pyqtSignal(str)
- def __init__(self, items):
- super(SymptomBrowser, self).__init__()
- self.setWindowTitle("Choose Symptom")
- self.items=items
- self.initUI()
-
- def initUI(self):
- self.search=QtGui.QLineEdit()
- self.search.textChanged.connect(self.refresh)
- self.listItems=QtGui.QListWidget()
- self.listItems.activated.connect(self.sendUp)
-
- layout=QtGui.QVBoxLayout(self)
- layout.addWidget(self.search)
- layout.addWidget(self.listItems)
-
- self.listItems.addItems(self.items)
- self.search.setFocus()
-
- def refresh(self):
- term=self.search.text()
- buff=[]
- for i in self.items:
- if(term.lower() in i.lower()):
- buff.append(i)
- self.listItems.clear()
- self.listItems.addItems(buff)
-
- def sendUp(self):
- self.added.emit(self.listItems.currentItem().text())
- self.close()