diff options
| author | Robert Bieber <robby@bieberphoto.com> | 2010-07-30 01:26:10 +0000 |
|---|---|---|
| committer | Robert Bieber <robby@bieberphoto.com> | 2010-07-30 01:26:10 +0000 |
| commit | f8dd370ff8ece4d32589767dc4a9b43398c1cf7e (patch) | |
| tree | 15fe9b11ee498b0e4d9c9ef301ffc15e7cc7d43f /utils/themeeditor/gui/syntaxcompleter.cpp | |
| parent | 5848f5f72464708aa08cb0bb5060349ae7577265 (diff) | |
| download | rockbox-f8dd370ff8ece4d32589767dc4a9b43398c1cf7e.zip rockbox-f8dd370ff8ece4d32589767dc4a9b43398c1cf7e.tar.gz rockbox-f8dd370ff8ece4d32589767dc4a9b43398c1cf7e.tar.bz2 rockbox-f8dd370ff8ece4d32589767dc4a9b43398c1cf7e.tar.xz | |
Theme Editor: Began implementing syntax highlighting. What I've accomplished so far isn't particularly useful for anything other than testing, so at the moment it will only function if activated in the preferences dialog
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27624 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'utils/themeeditor/gui/syntaxcompleter.cpp')
| -rw-r--r-- | utils/themeeditor/gui/syntaxcompleter.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/utils/themeeditor/gui/syntaxcompleter.cpp b/utils/themeeditor/gui/syntaxcompleter.cpp new file mode 100644 index 0000000..0b4f05f --- /dev/null +++ b/utils/themeeditor/gui/syntaxcompleter.cpp @@ -0,0 +1,83 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * $Id$ + * + * Copyright (C) 2010 Robert Bieber + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + +#include <QFile> +#include <QTreeWidgetItem> + +#include "syntaxcompleter.h" + +SyntaxCompleter::SyntaxCompleter(QWidget *parent) : + QTreeWidget(parent) +{ + setHeaderHidden(true); + + setWordWrap(true); + setColumnCount(2); + + QFile fin(":/resources/tagdb"); + fin.open(QFile::ReadOnly | QFile::Text); + + while(!fin.atEnd()) + { + QString line(fin.readLine()); + if(line.trimmed().length() == 0 || line.trimmed()[0] == '#') + continue; + + QStringList split = line.split(":"); + QStringList tag; + tag.append(split[0].trimmed()); + tag.append(split[1].trimmed()); + tags.insert(split[0].trimmed().toLower(), tag); + } + + filter(""); + + resizeColumnToContents(0); + setColumnWidth(0, columnWidth(0) + 10); // Auto-resize is too small + +} + +void SyntaxCompleter::filter(QString text) +{ + clear(); + + for(QMap<QString, QStringList>::iterator i = tags.begin() + ; i != tags.end(); i++) + { + if(text.length() == 1) + { + if(text[0].toLower() != i.key()[0]) + continue; + } + else if(text.length() == 2) + { + if(text[0].toLower() != i.key()[0] || i.key().length() < 2 + || text[1].toLower() != i.key()[1]) + continue; + } + else if(text.length() > 2) + { + hide(); + } + + addTopLevelItem(new QTreeWidgetItem(i.value())); + } +} |