25 #include <tqstringlist.h>
27 #include <tdelibs_export.h>
92 static TQString deref(Iter i) {
return *i; }
103 static TQString deref(Iter i) {
return i.key(); }
116 return index < str.length()
117 && str[index].isLetterOrNumber();
128 template <
class Iter,
class Deref>
132 for (Iter i = begin; i != end; ++i) {
133 TQString item = Deref::deref(i);
134 int user_ampersand = item.find(TQChar(
'&'));
135 if( user_ampersand >= 0 ) {
140 keys.insert(item[user_ampersand+1],
true);
165 template <
class Iter,
class Iter_Deref >
167 generate(Iter begin, Iter end, TQStringList& target)
170 TQMap<TQChar,bool> used_accels;
173 loadPredefined<Iter,Iter_Deref>(begin, end, used_accels);
176 for (Iter i = begin; i != end; ++i) {
177 TQString item = Iter_Deref::deref(i);
181 int user_ampersand = item.find(TQChar(
'&'));
182 if( user_ampersand < 0 || item[user_ampersand+1] ==
'&') {
188 for( j=0; j < item.length(); ++j ) {
190 && !used_accels.contains(item[j])
191 && (0 == j || (j > 0 && item[j-1].isSpace())) ) {
200 for( j=0; j < item.length(); ++j ) {
202 && !used_accels.contains(item[j]) ) {
212 used_accels.insert(item[j].upper(),
true);
213 used_accels.insert(item[j].lower(),
true);
214 item.insert(j,TQChar(
'&'));
218 target.append( item );
230 template <
class Iter>
234 generate< Iter, Deref_Key<Iter> >(begin, end, target);
245 generate(
const TQStringList& source, TQStringList& target)
247 generate<TQStringList::ConstIterator, Deref<TQStringList::ConstIterator> >(source.begin(), source.end(), target);
269 template <
class Data>