#include <driver.h>
Collaboration diagram for Driver:

Definition at line 42 of file driver.h.
| Driver::Driver | ( | ) |
Definition at line 32 of file driver.cpp.
References m_output, and m_stdout.
00033 : m_stdout(stdout, QFile::WriteOnly | QFile::Text) 00034 { 00035 m_output = &m_stdout; 00036 }
| Driver::~Driver | ( | ) | [virtual] |
| bool Driver::printDependencies | ( | const QString & | fileName | ) |
Definition at line 201 of file driver.cpp.
References Option::dependencies, Option::inputFile, m_option, and Uic::printDependencies().
Referenced by main().
00202 { 00203 Q_ASSERT(m_option.dependencies == true); 00204 00205 m_option.inputFile = fileName; 00206 00207 Uic tool(this); 00208 return tool.printDependencies(); 00209 }
Here is the call graph for this function:

| bool Driver::uic | ( | const QString & | fileName, | |
| QTextStream * | output = 0 | |||
| ) |
Definition at line 234 of file driver.cpp.
References QFile::close(), Option::inputFile, QString::isEmpty(), m_option, m_output, QFile::open(), QIODevice::ReadOnly, QFile::setFileName(), QIODevice::Text, Uic::write(), and QIODevice::WriteOnly.
Referenced by main().
00235 { 00236 QFile f; 00237 if (fileName.isEmpty()) 00238 f.open(stdin, QIODevice::ReadOnly); 00239 else { 00240 f.setFileName(fileName); 00241 if (!f.open(QIODevice::ReadOnly)) 00242 return false; 00243 } 00244 00245 m_option.inputFile = fileName; 00246 00247 QTextStream *oldOutput = m_output; 00248 bool deleteOutput = false; 00249 00250 if (out) { 00251 m_output = out; 00252 } else { 00253 m_output = new QTextStream(stdout, QIODevice::WriteOnly | QFile::Text); 00254 deleteOutput = true; 00255 } 00256 00257 Uic tool(this); 00258 bool rtn = tool.write(&f); 00259 f.close(); 00260 00261 if (deleteOutput) 00262 delete m_output; 00263 00264 m_output = oldOutput; 00265 00266 return rtn; 00267 }
Here is the call graph for this function:

| bool Driver::uic | ( | const QString & | fileName, | |
| DomUI * | ui, | |||
| QTextStream * | output = 0 | |||
| ) |
Definition at line 211 of file driver.cpp.
References Option::inputFile, m_option, m_output, m_stdout, and Uic::write().
00212 { 00213 m_option.inputFile = fileName; 00214 00215 QTextStream *oldOutput = m_output; 00216 00217 m_output = out != 0 ? out : &m_stdout; 00218 00219 Uic tool(this); 00220 bool rtn = false; 00221 #ifdef QT_UIC_CPP_GENERATOR 00222 rtn = tool.write(ui); 00223 #else 00224 Q_UNUSED(ui); 00225 fprintf(stderr, "uic: option to generate cpp code not compiled in [%s:%d]\n", 00226 __FILE__, __LINE__); 00227 #endif 00228 00229 m_output = oldOutput; 00230 00231 return rtn; 00232 }
Here is the call graph for this function:

| QTextStream& Driver::output | ( | ) | const [inline] |
| Option& Driver::option | ( | ) | [inline] |
| void Driver::reset | ( | ) |
Definition at line 269 of file driver.cpp.
References QHash< Key, T >::clear(), QList< T >::clear(), m_actionGroups, m_actions, m_layouts, m_nameRepository, m_option, m_output, m_pixmaps, m_problems, m_spacers, and m_widgets.
00270 { 00271 Q_ASSERT( m_output == 0 ); 00272 00273 m_option = Option(); 00274 m_output = 0; 00275 m_problems.clear(); 00276 00277 QStringList m_problems; 00278 00279 m_widgets.clear(); 00280 m_spacers.clear(); 00281 m_layouts.clear(); 00282 m_actionGroups.clear(); 00283 m_actions.clear(); 00284 m_nameRepository.clear(); 00285 m_pixmaps.clear(); 00286 }
Here is the call graph for this function:

| QStringList Driver::problems | ( | ) | [inline] |
| void Driver::addProblem | ( | const QString & | problem | ) | [inline] |
Definition at line 62 of file driver.h.
References QList< T >::append(), and m_problems.
00062 { m_problems.append(problem); }
Here is the call graph for this function:

Definition at line 179 of file driver.cpp.
References QString::at(), c, headerFileName(), hex(), i, info, isAnsiCCharacter(), QChar::isDigit(), QString::isEmpty(), QString::number(), QString::prepend(), QString::replace(), QString::size(), and QString::toUpper().
Referenced by CPP::WriteInitialization::acceptUI().
00180 { 00181 if (fileName.isEmpty()) 00182 return headerFileName(QLatin1String("noname")); 00183 00184 QFileInfo info(fileName); 00185 QString baseName = info.baseName(); 00186 // Transform into a valid C++ identifier 00187 if (!baseName.isEmpty() && baseName.at(0).isDigit()) 00188 baseName.prepend(QLatin1Char('_')); 00189 for (int i = 0; i < baseName.size(); ++i) { 00190 QChar c = baseName.at(i); 00191 if (!isAnsiCCharacter(c)) { 00192 // Replace character by its unicode value 00193 QString hex = QString::number(c.unicode(), 16); 00194 baseName.replace(i, 1, "_" + hex + "_"); 00195 i += hex.size() + 1; 00196 } 00197 } 00198 return baseName.toUpper() + QLatin1String("_H"); 00199 }
Here is the call graph for this function:

| QString Driver::headerFileName | ( | ) | const |
Definition at line 167 of file driver.cpp.
References Option::inputFile, m_option, name, and Option::outputFile.
Referenced by headerFileName().
00168 { 00169 QString name = m_option.outputFile; 00170 00171 if (name.isEmpty()) { 00172 name = QLatin1String("ui_"); // ### use ui_ as prefix. 00173 name.append(m_option.inputFile); 00174 } 00175 00176 return headerFileName(name); 00177 }
Definition at line 105 of file driver.cpp.
References name, and QString::replace().
Referenced by CPP::WriteInitialization::findDeclaration(), and unique().
00106 { 00107 QString result = name; 00108 result.replace(QRegExp(QLatin1String("[^a-zA-Z_0-9]")), QLatin1String("_")); 00109 return result; 00110 }
Here is the call graph for this function:

Definition at line 141 of file driver.cpp.
References QString::at(), i, QString::length(), QString::mid(), name, and QChar::toLower().
Referenced by unique().
00142 { 00143 QString qname = name; 00144 00145 if (qname.at(0) == QLatin1Char('Q') || qname.at(0) == QLatin1Char('K')) 00146 qname = qname.mid(1); 00147 00148 int i=0; 00149 while (i < qname.length()) { 00150 if (qname.at(i).toLower() != qname.at(i)) 00151 qname[i] = qname.at(i).toLower(); 00152 else 00153 break; 00154 00155 ++i; 00156 } 00157 00158 return qname; 00159 }
Here is the call graph for this function:

| QString Driver::unique | ( | const QString & | instanceName = QString(), |
|
| const QString & | className = QString() | |||
| ) |
Definition at line 112 of file driver.cpp.
References base, QHash< Key, T >::contains(), QHash< Key, T >::insert(), m_nameRepository, name, normalizedName(), QString::number(), qtify(), and QString::size().
Referenced by findOrInsertAction(), findOrInsertActionGroup(), findOrInsertLayout(), findOrInsertName(), findOrInsertSpacer(), findOrInsertWidget(), CPP::WriteInitialization::initializeListWidget(), CPP::WriteInitialization::initializeQ3IconView(), CPP::WriteInitialization::initializeQ3ListViewItems(), CPP::WriteInitialization::initializeTableWidget(), CPP::WriteInitialization::initializeTreeWidgetItems(), CPP::WriteInitialization::writeBrush(), CPP::WriteInitialization::writeColorGroup(), and CPP::WriteInitialization::writeProperties().
00113 { 00114 QString name; 00115 bool alreadyUsed = false; 00116 00117 if (instanceName.size()) { 00118 int id = 1; 00119 name = instanceName; 00120 name = normalizedName(name); 00121 QString base = name; 00122 00123 while (m_nameRepository.contains(name)) { 00124 alreadyUsed = true; 00125 name = base + QString::number(id++); 00126 } 00127 } else if (className.size()) { 00128 name = unique(qtify(className)); 00129 } else { 00130 name = unique(QLatin1String("var")); 00131 } 00132 00133 if (alreadyUsed && className.size()) { 00134 fprintf(stderr, "Warning: name %s is already used\n", qPrintable(instanceName)); 00135 } 00136 00137 m_nameRepository.insert(name, true); 00138 return name; 00139 }
Here is the call graph for this function:

Definition at line 42 of file driver.cpp.
References QHash< Key, T >::contains(), QHash< Key, T >::insert(), m_widgets, unique(), and QHash< Key, T >::value().
Referenced by CPP::WriteInitialization::acceptAction(), CPP::WriteInitialization::acceptActionGroup(), CPP::WriteInitialization::acceptActionRef(), CPP::WriteInitialization::acceptLayout(), CPP::WriteInitialization::acceptUI(), CPP::WriteDeclaration::acceptUI(), CPP::WriteInitialization::acceptWidget(), Validator::acceptWidget(), CPP::WriteDeclaration::acceptWidget(), CPP::WriteInitialization::findDeclaration(), findOrInsertLayoutItem(), CPP::WriteInitialization::initializeComboBox(), CPP::WriteInitialization::initializeListWidget(), CPP::WriteInitialization::initializeMenu(), CPP::WriteInitialization::initializeQ3IconView(), CPP::WriteInitialization::initializeQ3ListBox(), CPP::WriteInitialization::initializeQ3ListView(), CPP::WriteInitialization::initializeQ3SqlDataBrowser(), CPP::WriteInitialization::initializeQ3SqlDataTable(), CPP::WriteInitialization::initializeQ3Table(), CPP::WriteInitialization::initializeTableWidget(), CPP::WriteInitialization::initializeTreeWidget(), and CPP::WriteInitialization::writeProperties().
00043 { 00044 if (!m_widgets.contains(ui_widget)) 00045 m_widgets.insert(ui_widget, unique(ui_widget->attributeName(), ui_widget->attributeClass())); 00046 00047 return m_widgets.value(ui_widget); 00048 }
Here is the call graph for this function:

Definition at line 50 of file driver.cpp.
References QHash< Key, T >::contains(), QHash< Key, T >::insert(), m_spacers, unique(), and QHash< Key, T >::value().
Referenced by CPP::WriteDeclaration::acceptSpacer(), CPP::WriteInitialization::acceptSpacer(), and findOrInsertLayoutItem().
00051 { 00052 if (!m_spacers.contains(ui_spacer)) 00053 m_spacers.insert(ui_spacer, unique(QString(), QLatin1String("QSpacerItem"))); 00054 00055 return m_spacers.value(ui_spacer); 00056 }
Here is the call graph for this function:

Definition at line 58 of file driver.cpp.
References QHash< Key, T >::contains(), QHash< Key, T >::insert(), m_layouts, unique(), and QHash< Key, T >::value().
Referenced by CPP::WriteDeclaration::acceptLayout(), CPP::WriteInitialization::acceptLayout(), Validator::acceptLayout(), CPP::WriteInitialization::acceptLayoutItem(), and findOrInsertLayoutItem().
00059 { 00060 if (!m_layouts.contains(ui_layout)) 00061 m_layouts.insert(ui_layout, unique(QString(), ui_layout->attributeClass())); 00062 00063 return m_layouts.value(ui_layout); 00064 }
Here is the call graph for this function:

| QString Driver::findOrInsertLayoutItem | ( | DomLayoutItem * | ui_layoutItem | ) |
Definition at line 66 of file driver.cpp.
References DomLayoutItem::elementLayout(), DomLayoutItem::elementSpacer(), DomLayoutItem::elementWidget(), findOrInsertLayout(), findOrInsertSpacer(), findOrInsertWidget(), DomLayoutItem::kind(), DomLayoutItem::Layout, DomLayoutItem::Spacer, DomLayoutItem::Unknown, and DomLayoutItem::Widget.
Referenced by Validator::acceptLayoutItem(), and CPP::WriteInitialization::acceptLayoutItem().
00067 { 00068 switch (ui_layoutItem->kind()) { 00069 case DomLayoutItem::Widget: 00070 return findOrInsertWidget(ui_layoutItem->elementWidget()); 00071 case DomLayoutItem::Spacer: 00072 return findOrInsertSpacer(ui_layoutItem->elementSpacer()); 00073 case DomLayoutItem::Layout: 00074 return findOrInsertLayout(ui_layoutItem->elementLayout()); 00075 case DomLayoutItem::Unknown: 00076 break; 00077 } 00078 00079 Q_ASSERT( 0 ); 00080 00081 return QString(); 00082 }
Here is the call graph for this function:

Definition at line 100 of file driver.cpp.
References name, and unique().
Referenced by CPP::WriteInitialization::acceptWidget().
Here is the call graph for this function:

| QString Driver::findOrInsertActionGroup | ( | DomActionGroup * | ui_group | ) |
Definition at line 84 of file driver.cpp.
References QHash< Key, T >::contains(), QHash< Key, T >::insert(), m_actionGroups, unique(), and QHash< Key, T >::value().
Referenced by CPP::WriteInitialization::acceptAction(), CPP::WriteInitialization::acceptActionGroup(), Validator::acceptActionGroup(), and CPP::WriteDeclaration::acceptActionGroup().
00085 { 00086 if (!m_actionGroups.contains(ui_group)) 00087 m_actionGroups.insert(ui_group, unique(ui_group->attributeName(), QLatin1String("QActionGroup"))); 00088 00089 return m_actionGroups.value(ui_group); 00090 }
Here is the call graph for this function:

Definition at line 92 of file driver.cpp.
References QHash< Key, T >::contains(), QHash< Key, T >::insert(), m_actions, unique(), and QHash< Key, T >::value().
Referenced by CPP::WriteDeclaration::acceptAction(), Validator::acceptAction(), CPP::WriteInitialization::acceptAction(), and CPP::WriteInitialization::findDeclaration().
00093 { 00094 if (!m_actions.contains(ui_action)) 00095 m_actions.insert(ui_action, unique(ui_action->attributeName(), QLatin1String("QAction"))); 00096 00097 return m_actions.value(ui_action); 00098 }
Here is the call graph for this function:

| bool Driver::hasName | ( | const QString & | name | ) | const [inline] |
Definition at line 82 of file driver.h.
References QHash< Key, T >::contains(), m_nameRepository, and name.
00083 { return m_nameRepository.contains(name); }
Here is the call graph for this function:

Definition at line 298 of file driver.cpp.
References QHash< Key, T >::key(), m_widgets, and name.
Referenced by CPP::WriteInitialization::acceptActionRef(), and CPP::WriteInitialization::findDeclaration().
Here is the call graph for this function:

Definition at line 303 of file driver.cpp.
References QHash< Key, T >::key(), m_spacers, and name.
Here is the call graph for this function:

Definition at line 308 of file driver.cpp.
References QHash< Key, T >::key(), m_layouts, and name.
Here is the call graph for this function:

| DomActionGroup * Driver::actionGroupByName | ( | const QString & | name | ) | const |
Definition at line 313 of file driver.cpp.
References QHash< Key, T >::key(), m_actionGroups, and name.
Referenced by CPP::WriteInitialization::acceptActionRef().
00314 { 00315 return m_actionGroups.key(name); 00316 }
Here is the call graph for this function:

Definition at line 318 of file driver.cpp.
References QHash< Key, T >::key(), m_actions, and name.
Referenced by CPP::WriteInitialization::acceptActionRef(), CPP::WriteInitialization::findDeclaration(), and CPP::WriteInitialization::initializeMenu().
Here is the call graph for this function:

| void Driver::insertPixmap | ( | const QString & | pixmap | ) |
Definition at line 288 of file driver.cpp.
References QHash< Key, T >::insert(), and m_pixmaps.
Referenced by CPP::WriteIconDeclaration::acceptImage().
Here is the call graph for this function:

| bool Driver::containsPixmap | ( | const QString & | pixmap | ) | const |
Definition at line 293 of file driver.cpp.
References QHash< Key, T >::contains(), and m_pixmaps.
Here is the call graph for this function:

Option Driver::m_option [private] |
Definition at line 96 of file driver.h.
Referenced by headerFileName(), option(), printDependencies(), reset(), and uic().
QTextStream Driver::m_stdout [private] |
QTextStream* Driver::m_output [private] |
QStringList Driver::m_problems [private] |
QHash<DomWidget*, QString> Driver::m_widgets [private] |
Definition at line 103 of file driver.h.
Referenced by findOrInsertWidget(), reset(), and widgetByName().
QHash<DomSpacer*, QString> Driver::m_spacers [private] |
Definition at line 104 of file driver.h.
Referenced by findOrInsertSpacer(), reset(), and spacerByName().
QHash<DomLayout*, QString> Driver::m_layouts [private] |
Definition at line 105 of file driver.h.
Referenced by findOrInsertLayout(), layoutByName(), and reset().
QHash<DomActionGroup*, QString> Driver::m_actionGroups [private] |
Definition at line 106 of file driver.h.
Referenced by actionGroupByName(), findOrInsertActionGroup(), and reset().
QHash<DomAction*, QString> Driver::m_actions [private] |
Definition at line 107 of file driver.h.
Referenced by actionByName(), findOrInsertAction(), and reset().
QHash<QString, bool> Driver::m_nameRepository [private] |
QHash<QString, bool> Driver::m_pixmaps [private] |
Definition at line 109 of file driver.h.
Referenced by containsPixmap(), insertPixmap(), and reset().
1.5.1