OSDN Git Service

c8352900c5c1f1b48e5b48b6be22132abd5b06fb
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / dialog / SpellCheck.java
1 /*\r
2  * This file is part of NeverNote \r
3  * Copyright 2009 Randy Baumgarte\r
4  * \r
5  * This file may be licensed under the terms of of the\r
6  * GNU General Public License Version 2 (the ``GPL'').\r
7  *\r
8  * Software distributed under the License is distributed\r
9  * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either\r
10  * express or implied. See the GPL for the specific language\r
11  * governing rights and limitations.\r
12  *\r
13  * You should have received a copy of the GPL along with this\r
14  * program. If not, go to http://www.gnu.org/licenses/gpl.html\r
15  * or write to the Free Software Foundation, Inc.,\r
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\r
17  *\r
18 */\r
19 \r
20 package cx.fbn.nevernote.dialog;\r
21 \r
22 import com.trolltech.qt.gui.QDialog;\r
23 import com.trolltech.qt.gui.QGridLayout;\r
24 import com.trolltech.qt.gui.QLabel;\r
25 import com.trolltech.qt.gui.QLineEdit;\r
26 import com.trolltech.qt.gui.QListWidget;\r
27 import com.trolltech.qt.gui.QPushButton;\r
28 \r
29 public class SpellCheck extends QDialog {\r
30 \r
31         private boolean         replacePressed;\r
32         private boolean         cancelPressed;\r
33         private final QLabel    currentWord;\r
34         private final QLineEdit replacementWord;\r
35         private String misspelledWord;\r
36         private final QPushButton replace;\r
37         private final QPushButton ignore;\r
38         private final QListWidget suggestions;\r
39         \r
40         \r
41         // Constructor\r
42         public SpellCheck() {\r
43                 replacePressed = false;\r
44                 cancelPressed = false;\r
45                 setWindowTitle(tr("Spell Check"));\r
46                 QGridLayout grid = new QGridLayout();\r
47                 setLayout(grid);\r
48                 QGridLayout suggestionGrid = new QGridLayout();\r
49                 QGridLayout buttonGrid = new QGridLayout();\r
50                 \r
51                 currentWord = new QLabel(misspelledWord);\r
52                 replacementWord = new QLineEdit();\r
53                 suggestions = new QListWidget();\r
54                 \r
55                 replacementWord.textChanged.connect(this, "validateInput()");\r
56                 suggestions.itemSelectionChanged.connect(this, "replacementChosen()");\r
57                 \r
58                 suggestionGrid.addWidget(currentWord, 1, 1);\r
59                 suggestionGrid.addWidget(new QLabel(tr("Suggestion")), 2,1);\r
60                 suggestionGrid.addWidget(replacementWord, 3, 1);\r
61                 suggestionGrid.addWidget(suggestions,4,1);\r
62                 suggestionGrid.setContentsMargins(10, 10,  -10, -10);\r
63                 grid.addLayout(suggestionGrid,1,1);\r
64                 \r
65                 replace = new QPushButton(tr("Replace"));\r
66                 ignore = new QPushButton(tr("Ignore"));\r
67                 replace.clicked.connect(this, "replaceButtonPressed()");\r
68                 ignore.clicked.connect(this, "ignoreButtonPressed()");\r
69                 QPushButton cancel = new QPushButton(tr("Cancel"));\r
70                 cancel.clicked.connect(this, "cancelButtonPressed()");\r
71                 suggestionGrid.addWidget(replace, 1, 2);\r
72                 suggestionGrid.addWidget(ignore, 2, 2);\r
73                 buttonGrid.addWidget(new QLabel(), 1,1);\r
74                 buttonGrid.addWidget(cancel, 1,2);\r
75                 buttonGrid.addWidget(new QLabel(), 1,3);\r
76                 buttonGrid.setColumnStretch(1, 10);\r
77                 buttonGrid.setColumnStretch(3, 10);\r
78                 grid.addLayout(buttonGrid,2,1);\r
79         }\r
80         \r
81         // The OK button was pressed\r
82         @SuppressWarnings("unused")\r
83         private void replaceButtonPressed() {\r
84                 replacePressed = true;\r
85                 cancelPressed = false;\r
86                 close();\r
87         }\r
88         \r
89         // The CANCEL button was pressed\r
90         @SuppressWarnings("unused")\r
91         private void cancelButtonPressed() {\r
92                 replacePressed = false;\r
93                 cancelPressed = true;\r
94                 close();\r
95         }\r
96         \r
97         // The ignore button was pressed\r
98         @SuppressWarnings("unused")\r
99         private void ignoreButtonPressed() {\r
100                 replacePressed = false;\r
101                 cancelPressed = false;\r
102                 close();\r
103         }\r
104         \r
105         // Get the userid from the field\r
106         public String getReplacementWord() {\r
107                 return replacementWord.text();\r
108         }\r
109         \r
110         // Set the current misspelled word\r
111         public void setWord(String w) {\r
112                 misspelledWord = w;\r
113                 currentWord.setText(tr("Word: ") +misspelledWord);\r
114         }\r
115         \r
116         // Check if the OK button was pressed\r
117         public boolean replacePressed() {\r
118                 return replacePressed;\r
119         }\r
120         \r
121         // Check if the OK button was pressed\r
122         public boolean cancelPressed() {\r
123                 return cancelPressed;\r
124         }\r
125         \r
126         // Validate user input\r
127         public void validateInput() {\r
128                 replace.setEnabled(true);\r
129                 if (replacementWord.text().trim().equals("")) {\r
130                         replace.setEnabled(false);\r
131                         return;\r
132                 }\r
133         }\r
134         \r
135         private void replacementChosen() {\r
136                 String sel = suggestions.currentItem().text();\r
137                 replacementWord.setText(sel);\r
138         }\r
139         \r
140         \r
141         // Add a suggestion\r
142         public void addSuggestion(String word) {\r
143                 suggestions.addItem(word);\r
144         }\r
145         \r
146         // Set the current suggestion\r
147         public void setCurrentSuggestion(String word) {\r
148                 replacementWord.setText(word);\r
149         }\r
150         \r
151         public void setNoSuggestions(boolean enable) {\r
152                 if (enable) {\r
153                         replacementWord.setEnabled(true);\r
154                         replace.setEnabled(true);\r
155                         suggestions.setEnabled(true);\r
156                 } else {\r
157                         replacementWord.setEnabled(false);\r
158                         replace.setEnabled(false);\r
159                         suggestions.setEnabled(false);\r
160                 }\r
161         }\r
162         \r
163         public void setSelectedSuggestion(int index) {\r
164                 if (index < suggestions.count())\r
165                         suggestions.setCurrentRow(index);\r
166         }\r
167 }\r