2
2
begin : Fri Aug 1 2003
3
3
copyright : (C) 2003 by Jeroen Wijnhout (Jeroen.Wijnhout@kdemail.net)
4
4
2006 - 2009 by Thomas Braun
5
2012 by Michel Ludwig (michel.ludwig@kdemail.net)
5
6
****************************************************************************************/
7
8
/***************************************************************************
53
57
namespace KileWidget {
55
SymbolView::SymbolView(QWidget *parent, int type, const char *name)
59
SymbolView::SymbolView(KileInfo *kileInfo, QWidget *parent, int type, const char *name)
60
: QListWidget(parent), m_ki(kileInfo)
58
62
setObjectName(name);
59
63
setViewMode(IconMode);
87
91
void SymbolView::extract(const QString& key, int& refCnt)
90
refCnt = key.section('%', 0, 0).toInt();
94
refCnt = key.section('%', 0, 0).toInt();
94
void SymbolView::extractPackageString(const QString&string, QList<Package> &packages){
96
QRegExp rePkgs("(?:\\[(.*)\\])?\\{(.*)\\}");
97
QStringList args,pkgs;
100
if(string.isEmpty()){
106
if ( rePkgs.exactMatch(string) ){
107
args = rePkgs.cap(1).split(',');
108
pkgs = rePkgs.cap(2).split(',');
114
for(int i = 0 ; i < pkgs.count() && i < args.count() ; i++){
115
pkg.name = pkgs.at(i);
116
pkg.arguments = args.at(i);
117
packages.append(pkg);
98
void SymbolView::extractPackageString(const QString&string, QList<Package> &packages)
100
QRegExp rePkgs("(?:\\[(.*)\\])?\\{(.*)\\}");
101
QStringList args,pkgs;
104
if(string.isEmpty()) {
110
if(rePkgs.exactMatch(string)) {
111
args = rePkgs.cap(1).split(',');
112
pkgs = rePkgs.cap(2).split(',');
118
for(int i = 0 ; i < pkgs.count() && i < args.count() ; i++) {
119
const QString packageName = pkgs.at(i);
120
if(packageName.isEmpty()) {
123
pkg.name = packageName;
124
pkg.arguments = args.at(i);
125
packages.append(pkg);
132
139
cmd.latexCommand = contents.at(1);
133
140
cmd.unicodeCommand = contents.at(2);
135
extractPackageString(contents.at(3),cmd.unicodePackages);
136
extractPackageString(contents.at(4),cmd.packages);
142
extractPackageString(contents.at(3), cmd.unicodePackages);
143
extractPackageString(contents.at(4), cmd.packages);
137
144
cmd.comment = contents.at(5);
138
145
cmd.path = contents.at(6);
194
201
QString SymbolView::getToolTip(const QString &key)
197
QStringList pkgs, args;
201
204
extract(key, cmd);
203
label = "<b>" + i18n("Command: ") + cmd.latexCommand + "</b><br>";
204
if(!cmd.unicodeCommand.isEmpty()) {
205
label += i18n("Unicode command: ") + cmd.unicodeCommand + "<br>";
206
QString label = "<p style='white-space:pre'>";
207
label += "<b>" + i18n("Command: %1", Qt::escape(cmd.latexCommand)) + "</b>";
208
if(!cmd.unicodeCommand.isEmpty()) {
209
label += i18n("<br/>Unicode: %1", Qt::escape(cmd.unicodeCommand));
208
212
if(cmd.packages.count() > 0) {
209
if(cmd.packages.count() == 1) {
210
label += i18n("Package: ");
213
QString packageString;
215
if(cmd.packages.count() == 1) {
216
Package pkg = cmd.packages.at(0);
217
if(!pkg.arguments.isEmpty()) {
218
packageString += '[' + pkg.arguments + ']' + pkg.name;
221
packageString += pkg.name;
213
label += i18n("Packages: ");
216
for (int i = 0; i < cmd.packages.count() ; i++) {
217
pkg = cmd.packages.at(i);
218
if(!pkg.arguments.isEmpty()) {
219
label += '[' + pkg.arguments + ']' + pkg.name;
224
if( i != ( cmd.packages.count() - 1 ) ){
225
packageString = "<ul>";
226
for (int i = 0; i < cmd.packages.count() ; ++i) {
227
Package pkg = cmd.packages.at(i);
228
if(!pkg.arguments.isEmpty()) {
229
packageString += "<li>[" + pkg.arguments + ']' + pkg.name + "</li>";
232
packageString += "<li>" + pkg.name + "</li>";
235
packageString += "</ul>";
237
label += "<br/>" + i18np("Required Package: %2", "Required Packages: %2", cmd.packages.count(), packageString);
230
240
if(!cmd.comment.isEmpty()) {
231
label += "<i>" + i18n("Comment: ") + cmd.comment + "</i>";
241
label += "<br/><i>" + i18n("Comment: %1", Qt::escape(cmd.comment)) + "</i>";
247
258
math = event->modifiers() & Qt::ShiftModifier;
249
260
extract(item->data(Qt::UserRole).toString(), cmd);
250
if(KileConfig::symbolViewUTF8()){
251
code_symbol = cmd.unicodeCommand;
252
packages = cmd.unicodePackages;
261
if(KileConfig::symbolViewUTF8()) {
262
code_symbol = cmd.unicodeCommand;
263
if(code_symbol.isEmpty()) {
264
code_symbol = cmd.latexCommand;
266
packages = cmd.unicodePackages;
255
code_symbol = cmd.latexCommand;
256
packages = cmd.packages;
269
code_symbol = cmd.latexCommand;
270
packages = cmd.packages;
259
273
if(math != bracket) {
263
277
else if(bracket) {
264
278
code_symbol = '{' + code_symbol + '}';
267
281
emit(insertText(code_symbol, packages));
268
282
emit(addToList(item));
271
286
KILE_DEBUG() << "math is " << math << ", bracket is " << bracket << " and item->data(Qt::UserRole).toString() is " << (item ? item->data(Qt::UserRole).toString() : "");
274
QString convertLatin1StringtoUTF8(const QString &string ){
276
if(string.isEmpty()){
280
QVector<uint> stringAsIntVector;
281
QStringList stringList = string.split(',', QString::SkipEmptyParts);
283
QStringList::const_iterator it;
287
for(it = stringList.constBegin(); it != stringList.constEnd(); it++) {
290
stringAsInt = str.toInt(&ok);
294
stringAsIntVector.append(stringAsInt);
296
return QString::fromUcs4(stringAsIntVector.data(),stringAsIntVector.count());
289
QString convertLatin1StringtoUTF8(const QString &string)
291
if(string.isEmpty()){
295
QVector<uint> stringAsIntVector;
296
QStringList stringList = string.split(',', QString::SkipEmptyParts);
298
QStringList::const_iterator it;
302
for(it = stringList.constBegin(); it != stringList.constEnd(); it++) {
305
stringAsInt = str.toInt(&ok);
309
stringAsIntVector.append(stringAsInt);
312
return QString::fromUcs4(stringAsIntVector.data(),stringAsIntVector.count());
300
315
void SymbolView::fillWidget(const QString& prefix)