Root/
Source at commit 1406 created 12 years 10 months ago. By meklort, Revert drivers.c so that kexts are only loaded when OSBundleRequired is set and that value is not safe mode. Added some comments about it too. | |
---|---|
1 | /******************************************************************************␊ |
2 | *␊ |
3 | * ␊ |
4 | *␊ |
5 | * Copyright (C) 1997-2011 by Dimitri van Heesch.␊ |
6 | *␊ |
7 | * Permission to use, copy, modify, and distribute this software and its␊ |
8 | * documentation under the terms of the GNU General Public License is hereby ␊ |
9 | * granted. No representations are made about the suitability of this software ␊ |
10 | * for any purpose. It is provided "as is" without express or implied warranty.␊ |
11 | * See the GNU General Public License for more details.␊ |
12 | *␊ |
13 | */␊ |
14 | ␊ |
15 | #include "inputstrlist.h"␊ |
16 | #include "helplabel.h"␊ |
17 | #include "doxywizard.h"␊ |
18 | #include "config.h"␊ |
19 | ␊ |
20 | #include <QtGui>␊ |
21 | ␊ |
22 | InputStrList::InputStrList( QGridLayout *layout,int &row,␊ |
23 | const QString & id, ␊ |
24 | const QStringList &sl, ListMode lm,␊ |
25 | const QString & docs)␊ |
26 | : m_default(sl), m_strList(sl), m_docs(docs), m_id(id)␊ |
27 | {␊ |
28 | m_lab = new HelpLabel( id );␊ |
29 | ␊ |
30 | m_le = new QLineEdit;␊ |
31 | m_le->clear();␊ |
32 | ␊ |
33 | QToolBar *toolBar = new QToolBar;␊ |
34 | toolBar->setIconSize(QSize(24,24));␊ |
35 | m_add = toolBar->addAction(QIcon(QString::fromAscii(":/images/add.png")),QString(),␊ |
36 | this,SLOT(addString()));␊ |
37 | m_add->setToolTip(tr("Add item"));␊ |
38 | m_del = toolBar->addAction(QIcon(QString::fromAscii(":/images/del.png")),QString(),␊ |
39 | this,SLOT(delString()));␊ |
40 | m_del->setToolTip(tr("Delete selected item"));␊ |
41 | m_upd = toolBar->addAction(QIcon(QString::fromAscii(":/images/refresh.png")),QString(),␊ |
42 | this,SLOT(updateString()));␊ |
43 | m_upd->setToolTip(tr("Update selected item"));␊ |
44 | ␊ |
45 | m_lb = new QListWidget;␊ |
46 | //m_lb->setMinimumSize(400,100);␊ |
47 | foreach (QString s, m_strList) m_lb->addItem(s);␊ |
48 | ␊ |
49 | m_brFile=0;␊ |
50 | m_brDir=0;␊ |
51 | if (lm!=ListString)␊ |
52 | {␊ |
53 | if (lm&ListFile)␊ |
54 | {␊ |
55 | m_brFile = toolBar->addAction(QIcon(QString::fromAscii(":/images/file.png")),QString(),␊ |
56 | this,SLOT(browseFiles()));␊ |
57 | m_brFile->setToolTip(tr("Browse to a file"));␊ |
58 | } ␊ |
59 | if (lm&ListDir)␊ |
60 | {␊ |
61 | m_brDir = toolBar->addAction(QIcon(QString::fromAscii(":/images/folder.png")),QString(),␊ |
62 | this,SLOT(browseDir()));␊ |
63 | m_brDir->setToolTip(tr("Browse to a folder"));␊ |
64 | }␊ |
65 | }␊ |
66 | QHBoxLayout *rowLayout = new QHBoxLayout;␊ |
67 | rowLayout->addWidget( m_le );␊ |
68 | rowLayout->addWidget( toolBar );␊ |
69 | layout->addWidget( m_lab, row,0 );␊ |
70 | layout->addLayout( rowLayout, row,1,1,2 );␊ |
71 | layout->addWidget( m_lb, row+1,1,1,2 );␊ |
72 | row+=2;␊ |
73 | ␊ |
74 | m_value = m_strList;␊ |
75 | ␊ |
76 | connect(m_le, SIGNAL(returnPressed()), ␊ |
77 | this, SLOT(addString()) );␊ |
78 | connect(m_lb, SIGNAL(currentTextChanged(const QString &)), ␊ |
79 | this, SLOT(selectText(const QString &)));␊ |
80 | connect( m_lab, SIGNAL(enter()), SLOT(help()) );␊ |
81 | connect( m_lab, SIGNAL(reset()), SLOT(reset()) );␊ |
82 | }␊ |
83 | ␊ |
84 | void InputStrList::help()␊ |
85 | {␊ |
86 | showHelp(this);␊ |
87 | }␊ |
88 | ␊ |
89 | ␊ |
90 | void InputStrList::addString()␊ |
91 | {␊ |
92 | if (!m_le->text().isEmpty())␊ |
93 | {␊ |
94 | m_lb->addItem(m_le->text());␊ |
95 | m_strList.append(m_le->text());␊ |
96 | m_value = m_strList;␊ |
97 | updateDefault();␊ |
98 | emit changed();␊ |
99 | m_le->clear();␊ |
100 | }␊ |
101 | }␊ |
102 | ␊ |
103 | void InputStrList::delString()␊ |
104 | {␊ |
105 | if (m_lb->currentRow()!=-1)␊ |
106 | {␊ |
107 | int itemIndex = m_lb->currentRow();␊ |
108 | delete m_lb->currentItem();␊ |
109 | m_strList.removeAt(itemIndex);␊ |
110 | m_value = m_strList;␊ |
111 | updateDefault();␊ |
112 | emit changed();␊ |
113 | }␊ |
114 | }␊ |
115 | ␊ |
116 | void InputStrList::updateString()␊ |
117 | {␊ |
118 | if (m_lb->currentRow()!=-1 && !m_le->text().isEmpty())␊ |
119 | {␊ |
120 | m_lb->currentItem()->setText(m_le->text());␊ |
121 | m_strList.insert(m_lb->currentRow(),m_le->text());␊ |
122 | m_strList.removeAt(m_lb->currentRow()+1);␊ |
123 | m_value = m_strList;␊ |
124 | updateDefault();␊ |
125 | emit changed();␊ |
126 | }␊ |
127 | }␊ |
128 | ␊ |
129 | void InputStrList::selectText(const QString &s)␊ |
130 | {␊ |
131 | m_le->setText(s);␊ |
132 | }␊ |
133 | ␊ |
134 | void InputStrList::setEnabled(bool state)␊ |
135 | {␊ |
136 | m_lab->setEnabled(state);␊ |
137 | m_le->setEnabled(state);␊ |
138 | m_add->setEnabled(state);␊ |
139 | m_del->setEnabled(state);␊ |
140 | m_upd->setEnabled(state);␊ |
141 | m_lb->setEnabled(state);␊ |
142 | if (m_brFile) m_brFile->setEnabled(state);␊ |
143 | if (m_brDir) m_brDir->setEnabled(state);␊ |
144 | }␊ |
145 | ␊ |
146 | void InputStrList::browseFiles()␊ |
147 | {␊ |
148 | QString path = QFileInfo(MainWindow::instance().configFileName()).path();␊ |
149 | QStringList fileNames = QFileDialog::getOpenFileNames();␉␊ |
150 | ␊ |
151 | if (!fileNames.isEmpty()) ␊ |
152 | {␊ |
153 | QStringList::Iterator it;␊ |
154 | for ( it= fileNames.begin(); it != fileNames.end(); ++it )␊ |
155 | {␊ |
156 | QString fileName;␊ |
157 | QDir dir(path);␊ |
158 | if (!MainWindow::instance().configFileName().isEmpty() && dir.exists())␊ |
159 | {␊ |
160 | fileName = dir.relativeFilePath(*it);␊ |
161 | }␊ |
162 | if (fileName.isEmpty())␊ |
163 | {␊ |
164 | fileName = *it;␊ |
165 | }␊ |
166 | m_lb->addItem(fileName);␊ |
167 | m_strList.append(fileName);␊ |
168 | m_value = m_strList;␊ |
169 | updateDefault();␊ |
170 | emit changed();␊ |
171 | }␊ |
172 | m_le->setText(m_strList[0]);␊ |
173 | }␊ |
174 | }␊ |
175 | ␊ |
176 | void InputStrList::browseDir()␊ |
177 | {␉␊ |
178 | QString path = QFileInfo(MainWindow::instance().configFileName()).path();␊ |
179 | QString dirName = QFileDialog::getExistingDirectory();␉␊ |
180 | ␊ |
181 | if (!dirName.isNull()) ␊ |
182 | {␊ |
183 | QDir dir(path);␊ |
184 | if (!MainWindow::instance().configFileName().isEmpty() && dir.exists())␊ |
185 | {␊ |
186 | dirName = dir.relativeFilePath(dirName);␊ |
187 | }␊ |
188 | if (dirName.isEmpty())␊ |
189 | {␊ |
190 | dirName=QString::fromAscii(".");␊ |
191 | }␊ |
192 | m_lb->addItem(dirName);␊ |
193 | m_strList.append(dirName);␊ |
194 | m_value = m_strList;␊ |
195 | updateDefault();␊ |
196 | emit changed();␊ |
197 | m_le->setText(dirName);␊ |
198 | }␊ |
199 | }␊ |
200 | ␊ |
201 | void InputStrList::setValue(const QStringList &sl)␊ |
202 | {␊ |
203 | m_le->clear();␊ |
204 | m_lb->clear();␊ |
205 | m_strList = sl;␊ |
206 | for (int i=0;i<m_strList.size();i++)␊ |
207 | {␊ |
208 | m_lb->addItem(m_strList[i].trimmed());␊ |
209 | }␊ |
210 | updateDefault();␊ |
211 | }␊ |
212 | ␊ |
213 | QVariant &InputStrList::value()␊ |
214 | {␊ |
215 | return m_value;␊ |
216 | }␊ |
217 | ␊ |
218 | void InputStrList::update()␊ |
219 | {␊ |
220 | setValue(m_value.toStringList());␊ |
221 | }␊ |
222 | ␊ |
223 | void InputStrList::updateDefault()␊ |
224 | {␊ |
225 | if (m_strList==m_default)␊ |
226 | {␊ |
227 | m_lab->setText(QString::fromAscii("<qt>")+m_id+QString::fromAscii("</qt"));␊ |
228 | }␊ |
229 | else␊ |
230 | {␊ |
231 | m_lab->setText(QString::fromAscii("<qt><font color='red'>")+m_id+QString::fromAscii("</font></qt>"));␊ |
232 | }␊ |
233 | }␊ |
234 | ␊ |
235 | void InputStrList::reset()␊ |
236 | {␊ |
237 | setValue(m_default);␊ |
238 | }␊ |
239 | ␊ |
240 | void InputStrList::writeValue(QTextStream &t,QTextCodec *codec)␊ |
241 | {␊ |
242 | bool first=TRUE;␊ |
243 | foreach (QString s, m_strList) ␊ |
244 | {␊ |
245 | if (!first) ␊ |
246 | {␊ |
247 | t << " \\" << endl;␊ |
248 | t << " ";␊ |
249 | }␊ |
250 | first=FALSE;␊ |
251 | writeStringValue(t,codec,s);␊ |
252 | }␊ |
253 | }␊ |
254 | ␊ |
255 |