]>
Softwares of Agnibho - ddstorm.git/blob - _symptoms.py
2d7d8d6a176b06220a68a9b5b7b19630a95c0c9d
3 # Copyright (c) 2015 Agnibho Mondal
6 # This file is part of DDStorm.
8 # DDStorm is free software: you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation, either version 3 of the License, or
11 # (at your option) any later version.
13 # DDStorm is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 # GNU General Public License for more details.
18 # You should have received a copy of the GNU General Public License
19 # along with DDStorm. If not, see <http://www.gnu.org/licenses/>.
21 from PyQt4
import QtGui
, QtCore
23 class Symptoms(QtGui
.QFrame
):
25 changed
=QtCore
.pyqtSignal(list)
26 def __init__(self
, auto
):
27 super(Symptoms
, self
).__init
__()
32 self
.label
=QtGui
.QLabel("Symptoms")
33 self
.label
.setStyleSheet("font-size:18px")
35 self
.listWidget
=QtGui
.QListWidget(self
)
36 self
.listWidget
.setStyleSheet("font-size:14px")
37 self
.listWidget
.setSelectionMode(4)
39 self
.rm
=QtGui
.QPushButton("Remove")
40 self
.rm
.clicked
.connect(self
.remove
)
42 self
.cl
=QtGui
.QPushButton("Clear All")
43 self
.cl
.clicked
.connect(self
.removeAll
)
45 self
.browse
=QtGui
.QPushButton("Browse Symptoms")
46 self
.browse
.clicked
.connect(self
.browseSymptoms
)
48 self
.add
=QtGui
.QPushButton("Add")
49 self
.add
.clicked
.connect(self
.addItem
)
51 self
.new
=QtGui
.QLineEdit(self
)
52 self
.new
.returnPressed
.connect(self
.addItem
)
53 self
.completer
=QtGui
.QCompleter(self
.auto
)
54 self
.completer
.setCaseSensitivity(0)
55 self
.completer
.setCompletionMode(2)
56 self
.new
.setCompleter(self
.completer
)
58 self
.browser
=SymptomBrowser(self
.auto
)
59 self
.browser
.added
.connect(self
.addItem
)
61 hboxt
=QtGui
.QHBoxLayout()
62 hboxt
.addWidget(self
.new
)
63 hboxt
.addWidget(self
.add
)
64 hboxb
=QtGui
.QHBoxLayout()
65 hboxb
.addWidget(self
.rm
)
66 hboxb
.addWidget(self
.cl
)
67 hboxb
.addWidget(self
.browse
)
68 vbox
=QtGui
.QVBoxLayout()
69 vbox
.addWidget(self
.label
)
71 vbox
.addWidget(self
.listWidget
)
75 def addItem(self
, text
=""):
79 if(text
in self
.sympList
):
80 QtGui
.QMessageBox
.information(self
, "Duplicate Symptom", "'"+text
+"' has already been added to the symptom list.")
81 elif(text
in self
.auto
):
82 QtGui
.QListWidgetItem(text
, self
.listWidget
)
83 self
.sympList
.append(text
)
85 self
.changed
.emit(list(self
.sympList
))
87 QtGui
.QMessageBox
.warning(self
, "Symptom Unvailable", "'"+text
+"' is not available in the current Library.")
89 def remove(self
, all
=False):
90 if(len(self
.listWidget
.selectedItems())>0):
91 for item
in self
.listWidget
.selectedItems():
92 self
.sympList
.remove(item
.text())
93 self
.listWidget
.takeItem(self
.listWidget
.row(item
))
94 self
.changed
.emit(list(self
.sympList
))
97 self
.listWidget
.clear()
99 self
.changed
.emit(list(self
.sympList
))
101 def browseSymptoms(self
):
107 class SymptomBrowser(QtGui
.QDialog
):
108 added
=QtCore
.pyqtSignal(str)
109 def __init__(self
, items
):
110 super(SymptomBrowser
, self
).__init
__()
111 self
.setWindowTitle("Choose Symptom")
116 self
.search
=QtGui
.QLineEdit()
117 self
.search
.textChanged
.connect(self
.refresh
)
118 self
.listItems
=QtGui
.QListWidget()
119 self
.listItems
.activated
.connect(self
.sendUp
)
121 layout
=QtGui
.QVBoxLayout(self
)
122 layout
.addWidget(self
.search
)
123 layout
.addWidget(self
.listItems
)
125 self
.listItems
.addItems(self
.items
)
126 self
.search
.setFocus()
129 term
=self
.search
.text()
132 if(term
.lower() in i
.lower()):
134 self
.listItems
.clear()
135 self
.listItems
.addItems(buff
)
138 self
.added
.emit(self
.listItems
.currentItem().text())