Commit 9b32a462c95f70d80aa05e6c49572075deaf7b81
Committed by
David Gräff
1 parent
57f55429
Remove icons and use an icon font instead. Advantage: Color theme applicable, wo…
…rks in high dpi mode.
Showing
20 changed files
with
2107 additions
and
110 deletions
openhantek/res/application.qrc
| @@ -2,16 +2,9 @@ | @@ -2,16 +2,9 @@ | ||
| 2 | <qresource prefix="/"> | 2 | <qresource prefix="/"> |
| 3 | <file alias="openhantek.png">images/openhantek.png</file> | 3 | <file alias="openhantek.png">images/openhantek.png</file> |
| 4 | <file alias="switch.png">images/switch.png</file> | 4 | <file alias="switch.png">images/switch.png</file> |
| 5 | + <file>images/fontawesome-4.7.0.ttf</file> | ||
| 6 | + <file>images/openhantek.svg</file> | ||
| 7 | + <file>images/digitalphosphor.svg</file> | ||
| 5 | </qresource> | 8 | </qresource> |
| 6 | - <qresource prefix="/actions"> | ||
| 7 | - <file alias="open.png">images/actions/open.png</file> | ||
| 8 | - <file alias="save.png">images/actions/save.png</file> | ||
| 9 | - <file alias="save-as.png">images/actions/save-as.png</file> | ||
| 10 | - <file alias="print.png">images/actions/print.png</file> | ||
| 11 | - <file alias="export-as.png">images/actions/export-as.png</file> | ||
| 12 | - <file alias="start.png">images/actions/start.png</file> | ||
| 13 | - <file alias="stop.png">images/actions/stop.png</file> | ||
| 14 | - <file alias="digitalphosphor.png">images/actions/digitalphosphor.png</file> | ||
| 15 | - <file alias="zoom.png">images/actions/zoom.png</file> | ||
| 16 | - </qresource> | 9 | + <qresource prefix="/actions"/> |
| 17 | </RCC> | 10 | </RCC> |
openhantek/res/images/actions/cursors.png deleted
545 Bytes
openhantek/res/images/actions/export-as.png deleted
1.26 KB
openhantek/res/images/actions/open.png deleted
1.06 KB
openhantek/res/images/actions/print.png deleted
1.23 KB
openhantek/res/images/actions/save-as.png deleted
2.1 KB
openhantek/res/images/actions/save.png deleted
1.23 KB
openhantek/res/images/actions/start.png deleted
1.15 KB
openhantek/res/images/actions/stop.png deleted
1.14 KB
openhantek/res/images/actions/zoom.png deleted
4.74 KB
openhantek/res/images/actions/digitalphosphor.png renamed to openhantek/res/images/digitalphosphor.png
379 Bytes
openhantek/res/images/actions/digitalphosphor.svg renamed to openhantek/res/images/digitalphosphor.svg
openhantek/res/images/fontawesome-4.7.0.ttf
0 → 100644
No preview for this file type
openhantek/src/iconfont/QtAwesome.cpp
0 → 100644
| 1 | +/** | ||
| 2 | + * QtAwesome - use font-awesome (or other font icons) in your c++ / Qt Application | ||
| 3 | + * | ||
| 4 | + * MIT Licensed | ||
| 5 | + * | ||
| 6 | + * Copyright 2013-2016 - Reliable Bits Software by Blommers IT. All Rights Reserved. | ||
| 7 | + * Author Rick Blommers | ||
| 8 | + */ | ||
| 9 | + | ||
| 10 | +#include "QtAwesome.h" | ||
| 11 | +#include "QtAwesomeAnim.h" | ||
| 12 | + | ||
| 13 | +#include <QDebug> | ||
| 14 | +#include <QFile> | ||
| 15 | +#include <QFontDatabase> | ||
| 16 | + | ||
| 17 | +QtAwesome *iconFont = new QtAwesome(); | ||
| 18 | + | ||
| 19 | +/// The font-awesome icon painter | ||
| 20 | +class QtAwesomeCharIconPainter : public QtAwesomeIconPainter { | ||
| 21 | + | ||
| 22 | + protected: | ||
| 23 | + QStringList optionKeysForModeAndState(const QString &key, QIcon::Mode mode, QIcon::State state) { | ||
| 24 | + QString modePostfix; | ||
| 25 | + switch (mode) { | ||
| 26 | + case QIcon::Disabled: | ||
| 27 | + modePostfix = "-disabled"; | ||
| 28 | + break; | ||
| 29 | + case QIcon::Active: | ||
| 30 | + modePostfix = "-active"; | ||
| 31 | + break; | ||
| 32 | + case QIcon::Selected: | ||
| 33 | + modePostfix = "-selected"; | ||
| 34 | + break; | ||
| 35 | + case QIcon::Normal: | ||
| 36 | + break; | ||
| 37 | + } | ||
| 38 | + | ||
| 39 | + QString statePostfix; | ||
| 40 | + if (state == QIcon::Off) { statePostfix = "-off"; } | ||
| 41 | + | ||
| 42 | + // the keys that need to bet tested: key-mode-state | key-mode | key-state | key | ||
| 43 | + QStringList result; | ||
| 44 | + if (!modePostfix.isEmpty()) { | ||
| 45 | + if (!statePostfix.isEmpty()) { result.push_back(key + modePostfix + statePostfix); } | ||
| 46 | + result.push_back(key + modePostfix); | ||
| 47 | + } | ||
| 48 | + if (!statePostfix.isEmpty()) { result.push_back(key + statePostfix); } | ||
| 49 | + | ||
| 50 | + return result; | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | + QVariant optionValueForModeAndState(const QString &baseKey, QIcon::Mode mode, QIcon::State state, | ||
| 54 | + const QVariantMap &options) { | ||
| 55 | + foreach (QString key, optionKeysForModeAndState(baseKey, mode, state)) { | ||
| 56 | + if (options.contains(key)) return options.value(key); | ||
| 57 | + } | ||
| 58 | + return options.value(baseKey); | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + public: | ||
| 62 | + virtual void paint(QtAwesome *awesome, QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state, | ||
| 63 | + const QVariantMap &options) { | ||
| 64 | + Q_UNUSED(mode); | ||
| 65 | + Q_UNUSED(state); | ||
| 66 | + Q_UNUSED(options); | ||
| 67 | + | ||
| 68 | + painter->save(); | ||
| 69 | + | ||
| 70 | + // set the default options | ||
| 71 | + QColor color = optionValueForModeAndState("color", mode, state, options).value<QColor>(); | ||
| 72 | + QString text = optionValueForModeAndState("text", mode, state, options).toString(); | ||
| 73 | + | ||
| 74 | + if (text.isEmpty() || color.red()==0) { | ||
| 75 | + qWarning() << "empty for" << mode << state << options; | ||
| 76 | + } | ||
| 77 | + | ||
| 78 | + painter->setPen(color); | ||
| 79 | + | ||
| 80 | + // add some 'padding' around the icon | ||
| 81 | + int drawSize = qRound(rect.height() * options.value("scale-factor").toFloat()); | ||
| 82 | + | ||
| 83 | + painter->setFont(awesome->font(drawSize)); | ||
| 84 | + painter->drawText(rect, text, QTextOption(Qt::AlignCenter | Qt::AlignVCenter)); | ||
| 85 | + | ||
| 86 | + painter->restore(); | ||
| 87 | + | ||
| 88 | + QVariant var = options.value("anim"); | ||
| 89 | + QtAwesomeAnimation *anim = var.value<QtAwesomeAnimation *>(); | ||
| 90 | + if (anim) { anim->setup(*painter, rect); } | ||
| 91 | + | ||
| 92 | + } | ||
| 93 | +}; | ||
| 94 | + | ||
| 95 | +//--------------------------------------------------------------------------------------- | ||
| 96 | + | ||
| 97 | +/// The painter icon engine. | ||
| 98 | +class QtAwesomeIconPainterIconEngine : public QIconEngine { | ||
| 99 | + | ||
| 100 | + public: | ||
| 101 | + QtAwesomeIconPainterIconEngine(QtAwesome *awesome, QtAwesomeIconPainter *painter, const QVariantMap &options) | ||
| 102 | + : awesomeRef_(awesome), iconPainterRef_(painter), options_(options) {} | ||
| 103 | + | ||
| 104 | + virtual ~QtAwesomeIconPainterIconEngine() {} | ||
| 105 | + | ||
| 106 | + QtAwesomeIconPainterIconEngine *clone() const override { | ||
| 107 | + return new QtAwesomeIconPainterIconEngine(awesomeRef_, iconPainterRef_, options_); | ||
| 108 | + } | ||
| 109 | + | ||
| 110 | + virtual void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) override { | ||
| 111 | + Q_UNUSED(mode); | ||
| 112 | + Q_UNUSED(state); | ||
| 113 | + iconPainterRef_->paint(awesomeRef_, painter, rect, mode, state, options_); | ||
| 114 | + } | ||
| 115 | + | ||
| 116 | + virtual QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) override { | ||
| 117 | + QPixmap pm(size); | ||
| 118 | + pm.fill(Qt::transparent); // we need transparency | ||
| 119 | + { | ||
| 120 | + QPainter p(&pm); | ||
| 121 | + paint(&p, QRect(QPoint(0, 0), size), mode, state); | ||
| 122 | + } | ||
| 123 | + return pm; | ||
| 124 | + } | ||
| 125 | + //#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) | ||
| 126 | + // virtual QList<QSize> availableSizes(QIcon::Mode mode, QIcon::State state) const override { | ||
| 127 | + // Q_UNUSED(mode); | ||
| 128 | + // Q_UNUSED(state); | ||
| 129 | + // QList<QSize> sizes = {QSize(16, 16), QSize(32, 32), QSize(64, 64), | ||
| 130 | + // QSize(128, 128), QSize(256, 256), QSize(512, 512)}; | ||
| 131 | + // return sizes; | ||
| 132 | + // } | ||
| 133 | + //#endif | ||
| 134 | + private: | ||
| 135 | + QtAwesome *awesomeRef_; ///< a reference to the QtAwesome instance | ||
| 136 | + QtAwesomeIconPainter *iconPainterRef_; ///< a reference to the icon painter | ||
| 137 | + QVariantMap options_; ///< the options for this icon painter | ||
| 138 | +}; | ||
| 139 | + | ||
| 140 | +//--------------------------------------------------------------------------------------- | ||
| 141 | + | ||
| 142 | +/// The default icon colors | ||
| 143 | +QtAwesome::QtAwesome(QObject *parent) : QObject(parent), namedCodepoints_() { | ||
| 144 | + // initialize the default options | ||
| 145 | + setDefaultOption("color", QColor(50, 50, 50)); | ||
| 146 | + setDefaultOption("color-off", QColor(50, 50, 50)); | ||
| 147 | + setDefaultOption("color-disabled", QColor(70, 70, 70, 60)); | ||
| 148 | + setDefaultOption("color-active", QColor(10, 10, 10)); | ||
| 149 | + setDefaultOption("color-selected", QColor(10, 10, 10)); | ||
| 150 | + setDefaultOption("scale-factor", 1.0); | ||
| 151 | + | ||
| 152 | + fontIconPainter_ = new QtAwesomeCharIconPainter(); | ||
| 153 | +} | ||
| 154 | + | ||
| 155 | +QtAwesome::~QtAwesome() { | ||
| 156 | + delete fontIconPainter_; | ||
| 157 | + // delete errorIconPainter_; | ||
| 158 | + qDeleteAll(painterMap_); | ||
| 159 | +} | ||
| 160 | + | ||
| 161 | +/// initializes the QtAwesome icon factory with the given fontname | ||
| 162 | +void QtAwesome::init(const QString &fontname) { fontName_ = fontname; } | ||
| 163 | + | ||
| 164 | +struct FANameIcon { | ||
| 165 | + const char *name; | ||
| 166 | + fa::icon icon; | ||
| 167 | +}; | ||
| 168 | + | ||
| 169 | +static const FANameIcon faNameIconArray[] = {{"fa_500px", fa::fa_500px}, | ||
| 170 | + {"addressbook", fa::addressbook}, | ||
| 171 | + {"addressbooko", fa::addressbooko}, | ||
| 172 | + {"addresscard", fa::addresscard}, | ||
| 173 | + {"addresscardo", fa::addresscardo}, | ||
| 174 | + {"adjust", fa::adjust}, | ||
| 175 | + {"adn", fa::adn}, | ||
| 176 | + {"aligncenter", fa::aligncenter}, | ||
| 177 | + {"alignjustify", fa::alignjustify}, | ||
| 178 | + {"alignleft", fa::alignleft}, | ||
| 179 | + {"alignright", fa::alignright}, | ||
| 180 | + {"amazon", fa::amazon}, | ||
| 181 | + {"ambulance", fa::ambulance}, | ||
| 182 | + {"americansignlanguageinterpreting", fa::americansignlanguageinterpreting}, | ||
| 183 | + {"anchor", fa::anchor}, | ||
| 184 | + {"android", fa::android}, | ||
| 185 | + {"angellist", fa::angellist}, | ||
| 186 | + {"angledoubledown", fa::angledoubledown}, | ||
| 187 | + {"angledoubleleft", fa::angledoubleleft}, | ||
| 188 | + {"angledoubleright", fa::angledoubleright}, | ||
| 189 | + {"angledoubleup", fa::angledoubleup}, | ||
| 190 | + {"angledown", fa::angledown}, | ||
| 191 | + {"angleleft", fa::angleleft}, | ||
| 192 | + {"angleright", fa::angleright}, | ||
| 193 | + {"angleup", fa::angleup}, | ||
| 194 | + {"apple", fa::apple}, | ||
| 195 | + {"archive", fa::archive}, | ||
| 196 | + {"areachart", fa::areachart}, | ||
| 197 | + {"arrowcircledown", fa::arrowcircledown}, | ||
| 198 | + {"arrowcircleleft", fa::arrowcircleleft}, | ||
| 199 | + {"arrowcircleodown", fa::arrowcircleodown}, | ||
| 200 | + {"arrowcircleoleft", fa::arrowcircleoleft}, | ||
| 201 | + {"arrowcircleoright", fa::arrowcircleoright}, | ||
| 202 | + {"arrowcircleoup", fa::arrowcircleoup}, | ||
| 203 | + {"arrowcircleright", fa::arrowcircleright}, | ||
| 204 | + {"arrowcircleup", fa::arrowcircleup}, | ||
| 205 | + {"arrowdown", fa::arrowdown}, | ||
| 206 | + {"arrowleft", fa::arrowleft}, | ||
| 207 | + {"arrowright", fa::arrowright}, | ||
| 208 | + {"arrowup", fa::arrowup}, | ||
| 209 | + {"arrows", fa::arrows}, | ||
| 210 | + {"arrowsalt", fa::arrowsalt}, | ||
| 211 | + {"arrowsh", fa::arrowsh}, | ||
| 212 | + {"arrowsv", fa::arrowsv}, | ||
| 213 | + {"aslinterpreting", fa::aslinterpreting}, | ||
| 214 | + {"assistivelisteningsystems", fa::assistivelisteningsystems}, | ||
| 215 | + {"asterisk", fa::asterisk}, | ||
| 216 | + {"at", fa::at}, | ||
| 217 | + {"audiodescription", fa::audiodescription}, | ||
| 218 | + {"automobile", fa::automobile}, | ||
| 219 | + {"backward", fa::backward}, | ||
| 220 | + {"balancescale", fa::balancescale}, | ||
| 221 | + {"ban", fa::ban}, | ||
| 222 | + {"bandcamp", fa::bandcamp}, | ||
| 223 | + {"bank", fa::bank}, | ||
| 224 | + {"barchart", fa::barchart}, | ||
| 225 | + {"barcharto", fa::barcharto}, | ||
| 226 | + {"barcode", fa::barcode}, | ||
| 227 | + {"bars", fa::bars}, | ||
| 228 | + {"bath", fa::bath}, | ||
| 229 | + {"bathtub", fa::bathtub}, | ||
| 230 | + {"battery", fa::battery}, | ||
| 231 | + {"battery0", fa::battery0}, | ||
| 232 | + {"battery1", fa::battery1}, | ||
| 233 | + {"battery2", fa::battery2}, | ||
| 234 | + {"battery3", fa::battery3}, | ||
| 235 | + {"battery4", fa::battery4}, | ||
| 236 | + {"batteryempty", fa::batteryempty}, | ||
| 237 | + {"batteryfull", fa::batteryfull}, | ||
| 238 | + {"batteryhalf", fa::batteryhalf}, | ||
| 239 | + {"batteryquarter", fa::batteryquarter}, | ||
| 240 | + {"batterythreequarters", fa::batterythreequarters}, | ||
| 241 | + {"bed", fa::bed}, | ||
| 242 | + {"beer", fa::beer}, | ||
| 243 | + {"behance", fa::behance}, | ||
| 244 | + {"behancesquare", fa::behancesquare}, | ||
| 245 | + {"bell", fa::bell}, | ||
| 246 | + {"bello", fa::bello}, | ||
| 247 | + {"bellslash", fa::bellslash}, | ||
| 248 | + {"bellslasho", fa::bellslasho}, | ||
| 249 | + {"bicycle", fa::bicycle}, | ||
| 250 | + {"binoculars", fa::binoculars}, | ||
| 251 | + {"birthdaycake", fa::birthdaycake}, | ||
| 252 | + {"bitbucket", fa::bitbucket}, | ||
| 253 | + {"bitbucketsquare", fa::bitbucketsquare}, | ||
| 254 | + {"bitcoin", fa::bitcoin}, | ||
| 255 | + {"blacktie", fa::blacktie}, | ||
| 256 | + {"blind", fa::blind}, | ||
| 257 | + {"bluetooth", fa::bluetooth}, | ||
| 258 | + {"bluetoothb", fa::bluetoothb}, | ||
| 259 | + {"bold", fa::bold}, | ||
| 260 | + {"bolt", fa::bolt}, | ||
| 261 | + {"bomb", fa::bomb}, | ||
| 262 | + {"book", fa::book}, | ||
| 263 | + {"bookmark", fa::bookmark}, | ||
| 264 | + {"bookmarko", fa::bookmarko}, | ||
| 265 | + {"braille", fa::braille}, | ||
| 266 | + {"briefcase", fa::briefcase}, | ||
| 267 | + {"btc", fa::btc}, | ||
| 268 | + {"bug", fa::bug}, | ||
| 269 | + {"building", fa::building}, | ||
| 270 | + {"buildingo", fa::buildingo}, | ||
| 271 | + {"bullhorn", fa::bullhorn}, | ||
| 272 | + {"bullseye", fa::bullseye}, | ||
| 273 | + {"bus", fa::bus}, | ||
| 274 | + {"buysellads", fa::buysellads}, | ||
| 275 | + {"cab", fa::cab}, | ||
| 276 | + {"calculator", fa::calculator}, | ||
| 277 | + {"calendar", fa::calendar}, | ||
| 278 | + {"calendarchecko", fa::calendarchecko}, | ||
| 279 | + {"calendarminuso", fa::calendarminuso}, | ||
| 280 | + {"calendaro", fa::calendaro}, | ||
| 281 | + {"calendarpluso", fa::calendarpluso}, | ||
| 282 | + {"calendartimeso", fa::calendartimeso}, | ||
| 283 | + {"camera", fa::camera}, | ||
| 284 | + {"cameraretro", fa::cameraretro}, | ||
| 285 | + {"car", fa::car}, | ||
| 286 | + {"caretdown", fa::caretdown}, | ||
| 287 | + {"caretleft", fa::caretleft}, | ||
| 288 | + {"caretright", fa::caretright}, | ||
| 289 | + {"caretsquareodown", fa::caretsquareodown}, | ||
| 290 | + {"caretsquareoleft", fa::caretsquareoleft}, | ||
| 291 | + {"caretsquareoright", fa::caretsquareoright}, | ||
| 292 | + {"caretsquareoup", fa::caretsquareoup}, | ||
| 293 | + {"caretup", fa::caretup}, | ||
| 294 | + {"cartarrowdown", fa::cartarrowdown}, | ||
| 295 | + {"cartplus", fa::cartplus}, | ||
| 296 | + {"cc", fa::cc}, | ||
| 297 | + {"ccamex", fa::ccamex}, | ||
| 298 | + {"ccdinersclub", fa::ccdinersclub}, | ||
| 299 | + {"ccdiscover", fa::ccdiscover}, | ||
| 300 | + {"ccjcb", fa::ccjcb}, | ||
| 301 | + {"ccmastercard", fa::ccmastercard}, | ||
| 302 | + {"ccpaypal", fa::ccpaypal}, | ||
| 303 | + {"ccstripe", fa::ccstripe}, | ||
| 304 | + {"ccvisa", fa::ccvisa}, | ||
| 305 | + {"certificate", fa::certificate}, | ||
| 306 | + {"chain", fa::chain}, | ||
| 307 | + {"chainbroken", fa::chainbroken}, | ||
| 308 | + {"check", fa::check}, | ||
| 309 | + {"checkcircle", fa::checkcircle}, | ||
| 310 | + {"checkcircleo", fa::checkcircleo}, | ||
| 311 | + {"checksquare", fa::checksquare}, | ||
| 312 | + {"checksquareo", fa::checksquareo}, | ||
| 313 | + {"chevroncircledown", fa::chevroncircledown}, | ||
| 314 | + {"chevroncircleleft", fa::chevroncircleleft}, | ||
| 315 | + {"chevroncircleright", fa::chevroncircleright}, | ||
| 316 | + {"chevroncircleup", fa::chevroncircleup}, | ||
| 317 | + {"chevrondown", fa::chevrondown}, | ||
| 318 | + {"chevronleft", fa::chevronleft}, | ||
| 319 | + {"chevronright", fa::chevronright}, | ||
| 320 | + {"chevronup", fa::chevronup}, | ||
| 321 | + {"child", fa::child}, | ||
| 322 | + {"chrome", fa::chrome}, | ||
| 323 | + {"circle", fa::circle}, | ||
| 324 | + {"circleo", fa::circleo}, | ||
| 325 | + {"circleonotch", fa::circleonotch}, | ||
| 326 | + {"circlethin", fa::circlethin}, | ||
| 327 | + {"clipboard", fa::clipboard}, | ||
| 328 | + {"clocko", fa::clocko}, | ||
| 329 | + {"clone", fa::clone}, | ||
| 330 | + {"close", fa::close}, | ||
| 331 | + {"cloud", fa::cloud}, | ||
| 332 | + {"clouddownload", fa::clouddownload}, | ||
| 333 | + {"cloudupload", fa::cloudupload}, | ||
| 334 | + {"cny", fa::cny}, | ||
| 335 | + {"code", fa::code}, | ||
| 336 | + {"codefork", fa::codefork}, | ||
| 337 | + {"codepen", fa::codepen}, | ||
| 338 | + {"codiepie", fa::codiepie}, | ||
| 339 | + {"coffee", fa::coffee}, | ||
| 340 | + {"cog", fa::cog}, | ||
| 341 | + {"cogs", fa::cogs}, | ||
| 342 | + {"columns", fa::columns}, | ||
| 343 | + {"comment", fa::comment}, | ||
| 344 | + {"commento", fa::commento}, | ||
| 345 | + {"commenting", fa::commenting}, | ||
| 346 | + {"commentingo", fa::commentingo}, | ||
| 347 | + {"comments", fa::comments}, | ||
| 348 | + {"commentso", fa::commentso}, | ||
| 349 | + {"compass", fa::compass}, | ||
| 350 | + {"compress", fa::compress}, | ||
| 351 | + {"connectdevelop", fa::connectdevelop}, | ||
| 352 | + {"contao", fa::contao}, | ||
| 353 | + {"copy", fa::copy}, | ||
| 354 | + {"copyright", fa::copyright}, | ||
| 355 | + {"creativecommons", fa::creativecommons}, | ||
| 356 | + {"creditcard", fa::creditcard}, | ||
| 357 | + {"creditcardalt", fa::creditcardalt}, | ||
| 358 | + {"crop", fa::crop}, | ||
| 359 | + {"crosshairs", fa::crosshairs}, | ||
| 360 | + {"css3", fa::css3}, | ||
| 361 | + {"cube", fa::cube}, | ||
| 362 | + {"cubes", fa::cubes}, | ||
| 363 | + {"cut", fa::cut}, | ||
| 364 | + {"cutlery", fa::cutlery}, | ||
| 365 | + {"dashboard", fa::dashboard}, | ||
| 366 | + {"dashcube", fa::dashcube}, | ||
| 367 | + {"database", fa::database}, | ||
| 368 | + {"deaf", fa::deaf}, | ||
| 369 | + {"deafness", fa::deafness}, | ||
| 370 | + {"dedent", fa::dedent}, | ||
| 371 | + {"delicious", fa::delicious}, | ||
| 372 | + {"desktop", fa::desktop}, | ||
| 373 | + {"deviantart", fa::deviantart}, | ||
| 374 | + {"diamond", fa::diamond}, | ||
| 375 | + {"digg", fa::digg}, | ||
| 376 | + {"dollar", fa::dollar}, | ||
| 377 | + {"dotcircleo", fa::dotcircleo}, | ||
| 378 | + {"download", fa::download}, | ||
| 379 | + {"dribbble", fa::dribbble}, | ||
| 380 | + {"driverslicense", fa::driverslicense}, | ||
| 381 | + {"driverslicenseo", fa::driverslicenseo}, | ||
| 382 | + {"dropbox", fa::dropbox}, | ||
| 383 | + {"drupal", fa::drupal}, | ||
| 384 | + {"edge", fa::edge}, | ||
| 385 | + {"edit", fa::edit}, | ||
| 386 | + {"eercast", fa::eercast}, | ||
| 387 | + {"eject", fa::eject}, | ||
| 388 | + {"ellipsish", fa::ellipsish}, | ||
| 389 | + {"ellipsisv", fa::ellipsisv}, | ||
| 390 | + {"empire", fa::empire}, | ||
| 391 | + {"envelope", fa::envelope}, | ||
| 392 | + {"envelopeo", fa::envelopeo}, | ||
| 393 | + {"envelopeopen", fa::envelopeopen}, | ||
| 394 | + {"envelopeopeno", fa::envelopeopeno}, | ||
| 395 | + {"envelopesquare", fa::envelopesquare}, | ||
| 396 | + {"envira", fa::envira}, | ||
| 397 | + {"eraser", fa::eraser}, | ||
| 398 | + {"etsy", fa::etsy}, | ||
| 399 | + {"eur", fa::eur}, | ||
| 400 | + {"euro", fa::euro}, | ||
| 401 | + {"exchange", fa::exchange}, | ||
| 402 | + {"exclamation", fa::exclamation}, | ||
| 403 | + {"exclamationcircle", fa::exclamationcircle}, | ||
| 404 | + {"exclamationtriangle", fa::exclamationtriangle}, | ||
| 405 | + {"expand", fa::expand}, | ||
| 406 | + {"expeditedssl", fa::expeditedssl}, | ||
| 407 | + {"externallink", fa::externallink}, | ||
| 408 | + {"externallinksquare", fa::externallinksquare}, | ||
| 409 | + {"eye", fa::eye}, | ||
| 410 | + {"eyeslash", fa::eyeslash}, | ||
| 411 | + {"eyedropper", fa::eyedropper}, | ||
| 412 | + {"fa", fa::fa}, | ||
| 413 | + {"facebook", fa::facebook}, | ||
| 414 | + {"facebookf", fa::facebookf}, | ||
| 415 | + {"facebookofficial", fa::facebookofficial}, | ||
| 416 | + {"facebooksquare", fa::facebooksquare}, | ||
| 417 | + {"fastbackward", fa::fastbackward}, | ||
| 418 | + {"fastforward", fa::fastforward}, | ||
| 419 | + {"fax", fa::fax}, | ||
| 420 | + {"feed", fa::feed}, | ||
| 421 | + {"female", fa::female}, | ||
| 422 | + {"fighterjet", fa::fighterjet}, | ||
| 423 | + {"file", fa::file}, | ||
| 424 | + {"filearchiveo", fa::filearchiveo}, | ||
| 425 | + {"fileaudioo", fa::fileaudioo}, | ||
| 426 | + {"filecodeo", fa::filecodeo}, | ||
| 427 | + {"fileexcelo", fa::fileexcelo}, | ||
| 428 | + {"fileimageo", fa::fileimageo}, | ||
| 429 | + {"filemovieo", fa::filemovieo}, | ||
| 430 | + {"fileo", fa::fileo}, | ||
| 431 | + {"filepdfo", fa::filepdfo}, | ||
| 432 | + {"filephotoo", fa::filephotoo}, | ||
| 433 | + {"filepictureo", fa::filepictureo}, | ||
| 434 | + {"filepowerpointo", fa::filepowerpointo}, | ||
| 435 | + {"filesoundo", fa::filesoundo}, | ||
| 436 | + {"filetext", fa::filetext}, | ||
| 437 | + {"filetexto", fa::filetexto}, | ||
| 438 | + {"filevideoo", fa::filevideoo}, | ||
| 439 | + {"filewordo", fa::filewordo}, | ||
| 440 | + {"filezipo", fa::filezipo}, | ||
| 441 | + {"fileso", fa::fileso}, | ||
| 442 | + {"film", fa::film}, | ||
| 443 | + {"filter", fa::filter}, | ||
| 444 | + {"fire", fa::fire}, | ||
| 445 | + {"fireextinguisher", fa::fireextinguisher}, | ||
| 446 | + {"firefox", fa::firefox}, | ||
| 447 | + {"firstorder", fa::firstorder}, | ||
| 448 | + {"flag", fa::flag}, | ||
| 449 | + {"flagcheckered", fa::flagcheckered}, | ||
| 450 | + {"flago", fa::flago}, | ||
| 451 | + {"flash", fa::flash}, | ||
| 452 | + {"flask", fa::flask}, | ||
| 453 | + {"flickr", fa::flickr}, | ||
| 454 | + {"floppyo", fa::floppyo}, | ||
| 455 | + {"folder", fa::folder}, | ||
| 456 | + {"foldero", fa::foldero}, | ||
| 457 | + {"folderopen", fa::folderopen}, | ||
| 458 | + {"folderopeno", fa::folderopeno}, | ||
| 459 | + {"font", fa::font}, | ||
| 460 | + {"fontawesome", fa::fontawesome}, | ||
| 461 | + {"fonticons", fa::fonticons}, | ||
| 462 | + {"fortawesome", fa::fortawesome}, | ||
| 463 | + {"forumbee", fa::forumbee}, | ||
| 464 | + {"forward", fa::forward}, | ||
| 465 | + {"foursquare", fa::foursquare}, | ||
| 466 | + {"freecodecamp", fa::freecodecamp}, | ||
| 467 | + {"frowno", fa::frowno}, | ||
| 468 | + {"futbolo", fa::futbolo}, | ||
| 469 | + {"gamepad", fa::gamepad}, | ||
| 470 | + {"gavel", fa::gavel}, | ||
| 471 | + {"gbp", fa::gbp}, | ||
| 472 | + {"ge", fa::ge}, | ||
| 473 | + {"gear", fa::gear}, | ||
| 474 | + {"gears", fa::gears}, | ||
| 475 | + {"genderless", fa::genderless}, | ||
| 476 | + {"getpocket", fa::getpocket}, | ||
| 477 | + {"gg", fa::gg}, | ||
| 478 | + {"ggcircle", fa::ggcircle}, | ||
| 479 | + {"gift", fa::gift}, | ||
| 480 | + {"git", fa::git}, | ||
| 481 | + {"gitsquare", fa::gitsquare}, | ||
| 482 | + {"github", fa::github}, | ||
| 483 | + {"githubalt", fa::githubalt}, | ||
| 484 | + {"githubsquare", fa::githubsquare}, | ||
| 485 | + {"gitlab", fa::gitlab}, | ||
| 486 | + {"gittip", fa::gittip}, | ||
| 487 | + {"glass", fa::glass}, | ||
| 488 | + {"glide", fa::glide}, | ||
| 489 | + {"glideg", fa::glideg}, | ||
| 490 | + {"globe", fa::globe}, | ||
| 491 | + {"google", fa::google}, | ||
| 492 | + {"googleplus", fa::googleplus}, | ||
| 493 | + {"googlepluscircle", fa::googlepluscircle}, | ||
| 494 | + {"googleplusofficial", fa::googleplusofficial}, | ||
| 495 | + {"googleplussquare", fa::googleplussquare}, | ||
| 496 | + {"googlewallet", fa::googlewallet}, | ||
| 497 | + {"graduationcap", fa::graduationcap}, | ||
| 498 | + {"gratipay", fa::gratipay}, | ||
| 499 | + {"grav", fa::grav}, | ||
| 500 | + {"group", fa::group}, | ||
| 501 | + {"hsquare", fa::hsquare}, | ||
| 502 | + {"hackernews", fa::hackernews}, | ||
| 503 | + {"handgrabo", fa::handgrabo}, | ||
| 504 | + {"handlizardo", fa::handlizardo}, | ||
| 505 | + {"handodown", fa::handodown}, | ||
| 506 | + {"handoleft", fa::handoleft}, | ||
| 507 | + {"handoright", fa::handoright}, | ||
| 508 | + {"handoup", fa::handoup}, | ||
| 509 | + {"handpapero", fa::handpapero}, | ||
| 510 | + {"handpeaceo", fa::handpeaceo}, | ||
| 511 | + {"handpointero", fa::handpointero}, | ||
| 512 | + {"handrocko", fa::handrocko}, | ||
| 513 | + {"handscissorso", fa::handscissorso}, | ||
| 514 | + {"handspocko", fa::handspocko}, | ||
| 515 | + {"handstopo", fa::handstopo}, | ||
| 516 | + {"handshakeo", fa::handshakeo}, | ||
| 517 | + {"hardofhearing", fa::hardofhearing}, | ||
| 518 | + {"hashtag", fa::hashtag}, | ||
| 519 | + {"hddo", fa::hddo}, | ||
| 520 | + {"header", fa::header}, | ||
| 521 | + {"headphones", fa::headphones}, | ||
| 522 | + {"heart", fa::heart}, | ||
| 523 | + {"hearto", fa::hearto}, | ||
| 524 | + {"heartbeat", fa::heartbeat}, | ||
| 525 | + {"history", fa::history}, | ||
| 526 | + {"home", fa::home}, | ||
| 527 | + {"hospitalo", fa::hospitalo}, | ||
| 528 | + {"hotel", fa::hotel}, | ||
| 529 | + {"hourglass", fa::hourglass}, | ||
| 530 | + {"hourglass1", fa::hourglass1}, | ||
| 531 | + {"hourglass2", fa::hourglass2}, | ||
| 532 | + {"hourglass3", fa::hourglass3}, | ||
| 533 | + {"hourglassend", fa::hourglassend}, | ||
| 534 | + {"hourglasshalf", fa::hourglasshalf}, | ||
| 535 | + {"hourglasso", fa::hourglasso}, | ||
| 536 | + {"hourglassstart", fa::hourglassstart}, | ||
| 537 | + {"houzz", fa::houzz}, | ||
| 538 | + {"html5", fa::html5}, | ||
| 539 | + {"icursor", fa::icursor}, | ||
| 540 | + {"idbadge", fa::idbadge}, | ||
| 541 | + {"idcard", fa::idcard}, | ||
| 542 | + {"idcardo", fa::idcardo}, | ||
| 543 | + {"ils", fa::ils}, | ||
| 544 | + {"image", fa::image}, | ||
| 545 | + {"imdb", fa::imdb}, | ||
| 546 | + {"inbox", fa::inbox}, | ||
| 547 | + {"indent", fa::indent}, | ||
| 548 | + {"industry", fa::industry}, | ||
| 549 | + {"info", fa::info}, | ||
| 550 | + {"infocircle", fa::infocircle}, | ||
| 551 | + {"inr", fa::inr}, | ||
| 552 | + {"instagram", fa::instagram}, | ||
| 553 | + {"institution", fa::institution}, | ||
| 554 | + {"internetexplorer", fa::internetexplorer}, | ||
| 555 | + {"intersex", fa::intersex}, | ||
| 556 | + {"ioxhost", fa::ioxhost}, | ||
| 557 | + {"italic", fa::italic}, | ||
| 558 | + {"joomla", fa::joomla}, | ||
| 559 | + {"jpy", fa::jpy}, | ||
| 560 | + {"jsfiddle", fa::jsfiddle}, | ||
| 561 | + {"key", fa::key}, | ||
| 562 | + {"keyboardo", fa::keyboardo}, | ||
| 563 | + {"krw", fa::krw}, | ||
| 564 | + {"language", fa::language}, | ||
| 565 | + {"laptop", fa::laptop}, | ||
| 566 | + {"lastfm", fa::lastfm}, | ||
| 567 | + {"lastfmsquare", fa::lastfmsquare}, | ||
| 568 | + {"leaf", fa::leaf}, | ||
| 569 | + {"leanpub", fa::leanpub}, | ||
| 570 | + {"legal", fa::legal}, | ||
| 571 | + {"lemono", fa::lemono}, | ||
| 572 | + {"leveldown", fa::leveldown}, | ||
| 573 | + {"levelup", fa::levelup}, | ||
| 574 | + {"lifebouy", fa::lifebouy}, | ||
| 575 | + {"lifebuoy", fa::lifebuoy}, | ||
| 576 | + {"lifering", fa::lifering}, | ||
| 577 | + {"lifesaver", fa::lifesaver}, | ||
| 578 | + {"lightbulbo", fa::lightbulbo}, | ||
| 579 | + {"linechart", fa::linechart}, | ||
| 580 | + {"link", fa::link}, | ||
| 581 | + {"linkedin", fa::linkedin}, | ||
| 582 | + {"linkedinsquare", fa::linkedinsquare}, | ||
| 583 | + {"linode", fa::linode}, | ||
| 584 | + {"fa_linux", fa::fa_linux}, | ||
| 585 | + {"list", fa::list}, | ||
| 586 | + {"listalt", fa::listalt}, | ||
| 587 | + {"listol", fa::listol}, | ||
| 588 | + {"listul", fa::listul}, | ||
| 589 | + {"locationarrow", fa::locationarrow}, | ||
| 590 | + {"lock", fa::lock}, | ||
| 591 | + {"longarrowdown", fa::longarrowdown}, | ||
| 592 | + {"longarrowleft", fa::longarrowleft}, | ||
| 593 | + {"longarrowright", fa::longarrowright}, | ||
| 594 | + {"longarrowup", fa::longarrowup}, | ||
| 595 | + {"lowvision", fa::lowvision}, | ||
| 596 | + {"magic", fa::magic}, | ||
| 597 | + {"magnet", fa::magnet}, | ||
| 598 | + {"mailforward", fa::mailforward}, | ||
| 599 | + {"mailreply", fa::mailreply}, | ||
| 600 | + {"mailreplyall", fa::mailreplyall}, | ||
| 601 | + {"male", fa::male}, | ||
| 602 | + {"map", fa::map}, | ||
| 603 | + {"mapmarker", fa::mapmarker}, | ||
| 604 | + {"mapo", fa::mapo}, | ||
| 605 | + {"mappin", fa::mappin}, | ||
| 606 | + {"mapsigns", fa::mapsigns}, | ||
| 607 | + {"mars", fa::mars}, | ||
| 608 | + {"marsdouble", fa::marsdouble}, | ||
| 609 | + {"marsstroke", fa::marsstroke}, | ||
| 610 | + {"marsstrokeh", fa::marsstrokeh}, | ||
| 611 | + {"marsstrokev", fa::marsstrokev}, | ||
| 612 | + {"maxcdn", fa::maxcdn}, | ||
| 613 | + {"meanpath", fa::meanpath}, | ||
| 614 | + {"medium", fa::medium}, | ||
| 615 | + {"medkit", fa::medkit}, | ||
| 616 | + {"meetup", fa::meetup}, | ||
| 617 | + {"meho", fa::meho}, | ||
| 618 | + {"mercury", fa::mercury}, | ||
| 619 | + {"microchip", fa::microchip}, | ||
| 620 | + {"microphone", fa::microphone}, | ||
| 621 | + {"microphoneslash", fa::microphoneslash}, | ||
| 622 | + {"minus", fa::minus}, | ||
| 623 | + {"minuscircle", fa::minuscircle}, | ||
| 624 | + {"minussquare", fa::minussquare}, | ||
| 625 | + {"minussquareo", fa::minussquareo}, | ||
| 626 | + {"mixcloud", fa::mixcloud}, | ||
| 627 | + {"mobile", fa::mobile}, | ||
| 628 | + {"mobilephone", fa::mobilephone}, | ||
| 629 | + {"modx", fa::modx}, | ||
| 630 | + {"money", fa::money}, | ||
| 631 | + {"moono", fa::moono}, | ||
| 632 | + {"mortarboard", fa::mortarboard}, | ||
| 633 | + {"motorcycle", fa::motorcycle}, | ||
| 634 | + {"mousepointer", fa::mousepointer}, | ||
| 635 | + {"music", fa::music}, | ||
| 636 | + {"navicon", fa::navicon}, | ||
| 637 | + {"neuter", fa::neuter}, | ||
| 638 | + {"newspapero", fa::newspapero}, | ||
| 639 | + {"objectgroup", fa::objectgroup}, | ||
| 640 | + {"objectungroup", fa::objectungroup}, | ||
| 641 | + {"odnoklassniki", fa::odnoklassniki}, | ||
| 642 | + {"odnoklassnikisquare", fa::odnoklassnikisquare}, | ||
| 643 | + {"opencart", fa::opencart}, | ||
| 644 | + {"openid", fa::openid}, | ||
| 645 | + {"opera", fa::opera}, | ||
| 646 | + {"optinmonster", fa::optinmonster}, | ||
| 647 | + {"outdent", fa::outdent}, | ||
| 648 | + {"pagelines", fa::pagelines}, | ||
| 649 | + {"paintbrush", fa::paintbrush}, | ||
| 650 | + {"paperplane", fa::paperplane}, | ||
| 651 | + {"paperplaneo", fa::paperplaneo}, | ||
| 652 | + {"paperclip", fa::paperclip}, | ||
| 653 | + {"paragraph", fa::paragraph}, | ||
| 654 | + {"paste", fa::paste}, | ||
| 655 | + {"pause", fa::pause}, | ||
| 656 | + {"pausecircle", fa::pausecircle}, | ||
| 657 | + {"pausecircleo", fa::pausecircleo}, | ||
| 658 | + {"paw", fa::paw}, | ||
| 659 | + {"paypal", fa::paypal}, | ||
| 660 | + {"pencil", fa::pencil}, | ||
| 661 | + {"pencilsquare", fa::pencilsquare}, | ||
| 662 | + {"pencilsquareo", fa::pencilsquareo}, | ||
| 663 | + {"percent", fa::percent}, | ||
| 664 | + {"phone", fa::phone}, | ||
| 665 | + {"phonesquare", fa::phonesquare}, | ||
| 666 | + {"photo", fa::photo}, | ||
| 667 | + {"pictureo", fa::pictureo}, | ||
| 668 | + {"piechart", fa::piechart}, | ||
| 669 | + {"piedpiper", fa::piedpiper}, | ||
| 670 | + {"piedpiperalt", fa::piedpiperalt}, | ||
| 671 | + {"piedpiperpp", fa::piedpiperpp}, | ||
| 672 | + {"pinterest", fa::pinterest}, | ||
| 673 | + {"pinterestp", fa::pinterestp}, | ||
| 674 | + {"pinterestsquare", fa::pinterestsquare}, | ||
| 675 | + {"plane", fa::plane}, | ||
| 676 | + {"play", fa::play}, | ||
| 677 | + {"playcircle", fa::playcircle}, | ||
| 678 | + {"playcircleo", fa::playcircleo}, | ||
| 679 | + {"plug", fa::plug}, | ||
| 680 | + {"plus", fa::plus}, | ||
| 681 | + {"pluscircle", fa::pluscircle}, | ||
| 682 | + {"plussquare", fa::plussquare}, | ||
| 683 | + {"plussquareo", fa::plussquareo}, | ||
| 684 | + {"podcast", fa::podcast}, | ||
| 685 | + {"poweroff", fa::poweroff}, | ||
| 686 | + {"print", fa::print}, | ||
| 687 | + {"producthunt", fa::producthunt}, | ||
| 688 | + {"puzzlepiece", fa::puzzlepiece}, | ||
| 689 | + {"qq", fa::qq}, | ||
| 690 | + {"qrcode", fa::qrcode}, | ||
| 691 | + {"question", fa::question}, | ||
| 692 | + {"questioncircle", fa::questioncircle}, | ||
| 693 | + {"questioncircleo", fa::questioncircleo}, | ||
| 694 | + {"quora", fa::quora}, | ||
| 695 | + {"quoteleft", fa::quoteleft}, | ||
| 696 | + {"quoteright", fa::quoteright}, | ||
| 697 | + {"ra", fa::ra}, | ||
| 698 | + {"random", fa::random}, | ||
| 699 | + {"ravelry", fa::ravelry}, | ||
| 700 | + {"rebel", fa::rebel}, | ||
| 701 | + {"recycle", fa::recycle}, | ||
| 702 | + {"reddit", fa::reddit}, | ||
| 703 | + {"redditalien", fa::redditalien}, | ||
| 704 | + {"redditsquare", fa::redditsquare}, | ||
| 705 | + {"refresh", fa::refresh}, | ||
| 706 | + {"registered", fa::registered}, | ||
| 707 | + {"remove", fa::remove}, | ||
| 708 | + {"renren", fa::renren}, | ||
| 709 | + {"reorder", fa::reorder}, | ||
| 710 | + {"repeat", fa::repeat}, | ||
| 711 | + {"reply", fa::reply}, | ||
| 712 | + {"replyall", fa::replyall}, | ||
| 713 | + {"resistance", fa::resistance}, | ||
| 714 | + {"retweet", fa::retweet}, | ||
| 715 | + {"rmb", fa::rmb}, | ||
| 716 | + {"road", fa::road}, | ||
| 717 | + {"rocket", fa::rocket}, | ||
| 718 | + {"rotateleft", fa::rotateleft}, | ||
| 719 | + {"rotateright", fa::rotateright}, | ||
| 720 | + {"rouble", fa::rouble}, | ||
| 721 | + {"rss", fa::rss}, | ||
| 722 | + {"rsssquare", fa::rsssquare}, | ||
| 723 | + {"rub", fa::rub}, | ||
| 724 | + {"ruble", fa::ruble}, | ||
| 725 | + {"rupee", fa::rupee}, | ||
| 726 | + {"s15", fa::s15}, | ||
| 727 | + {"safari", fa::safari}, | ||
| 728 | + {"save", fa::save}, | ||
| 729 | + {"scissors", fa::scissors}, | ||
| 730 | + {"scribd", fa::scribd}, | ||
| 731 | + {"search", fa::search}, | ||
| 732 | + {"searchminus", fa::searchminus}, | ||
| 733 | + {"searchplus", fa::searchplus}, | ||
| 734 | + {"sellsy", fa::sellsy}, | ||
| 735 | + {"send", fa::send}, | ||
| 736 | + {"sendo", fa::sendo}, | ||
| 737 | + {"server", fa::server}, | ||
| 738 | + {"share", fa::share}, | ||
| 739 | + {"sharealt", fa::sharealt}, | ||
| 740 | + {"sharealtsquare", fa::sharealtsquare}, | ||
| 741 | + {"sharesquare", fa::sharesquare}, | ||
| 742 | + {"sharesquareo", fa::sharesquareo}, | ||
| 743 | + {"shekel", fa::shekel}, | ||
| 744 | + {"sheqel", fa::sheqel}, | ||
| 745 | + {"shield", fa::shield}, | ||
| 746 | + {"ship", fa::ship}, | ||
| 747 | + {"shirtsinbulk", fa::shirtsinbulk}, | ||
| 748 | + {"shoppingbag", fa::shoppingbag}, | ||
| 749 | + {"shoppingbasket", fa::shoppingbasket}, | ||
| 750 | + {"shoppingcart", fa::shoppingcart}, | ||
| 751 | + {"shower", fa::shower}, | ||
| 752 | + {"signin", fa::signin}, | ||
| 753 | + {"signlanguage", fa::signlanguage}, | ||
| 754 | + {"signout", fa::signout}, | ||
| 755 | + {"signal", fa::signal}, | ||
| 756 | + {"signing", fa::signing}, | ||
| 757 | + {"simplybuilt", fa::simplybuilt}, | ||
| 758 | + {"sitemap", fa::sitemap}, | ||
| 759 | + {"skyatlas", fa::skyatlas}, | ||
| 760 | + {"skype", fa::skype}, | ||
| 761 | + {"slack", fa::slack}, | ||
| 762 | + {"sliders", fa::sliders}, | ||
| 763 | + {"slideshare", fa::slideshare}, | ||
| 764 | + {"smileo", fa::smileo}, | ||
| 765 | + {"snapchat", fa::snapchat}, | ||
| 766 | + {"snapchatghost", fa::snapchatghost}, | ||
| 767 | + {"snapchatsquare", fa::snapchatsquare}, | ||
| 768 | + {"snowflakeo", fa::snowflakeo}, | ||
| 769 | + {"soccerballo", fa::soccerballo}, | ||
| 770 | + {"sort", fa::sort}, | ||
| 771 | + {"sortalphaasc", fa::sortalphaasc}, | ||
| 772 | + {"sortalphadesc", fa::sortalphadesc}, | ||
| 773 | + {"sortamountasc", fa::sortamountasc}, | ||
| 774 | + {"sortamountdesc", fa::sortamountdesc}, | ||
| 775 | + {"sortasc", fa::sortasc}, | ||
| 776 | + {"sortdesc", fa::sortdesc}, | ||
| 777 | + {"sortdown", fa::sortdown}, | ||
| 778 | + {"sortnumericasc", fa::sortnumericasc}, | ||
| 779 | + {"sortnumericdesc", fa::sortnumericdesc}, | ||
| 780 | + {"sortup", fa::sortup}, | ||
| 781 | + {"soundcloud", fa::soundcloud}, | ||
| 782 | + {"spaceshuttle", fa::spaceshuttle}, | ||
| 783 | + {"spinner", fa::spinner}, | ||
| 784 | + {"spoon", fa::spoon}, | ||
| 785 | + {"spotify", fa::spotify}, | ||
| 786 | + {"square", fa::square}, | ||
| 787 | + {"squareo", fa::squareo}, | ||
| 788 | + {"stackexchange", fa::stackexchange}, | ||
| 789 | + {"stackoverflow", fa::stackoverflow}, | ||
| 790 | + {"star", fa::star}, | ||
| 791 | + {"starhalf", fa::starhalf}, | ||
| 792 | + {"starhalfempty", fa::starhalfempty}, | ||
| 793 | + {"starhalffull", fa::starhalffull}, | ||
| 794 | + {"starhalfo", fa::starhalfo}, | ||
| 795 | + {"staro", fa::staro}, | ||
| 796 | + {"steam", fa::steam}, | ||
| 797 | + {"steamsquare", fa::steamsquare}, | ||
| 798 | + {"stepbackward", fa::stepbackward}, | ||
| 799 | + {"stepforward", fa::stepforward}, | ||
| 800 | + {"stethoscope", fa::stethoscope}, | ||
| 801 | + {"stickynote", fa::stickynote}, | ||
| 802 | + {"stickynoteo", fa::stickynoteo}, | ||
| 803 | + {"stop", fa::stop}, | ||
| 804 | + {"stopcircle", fa::stopcircle}, | ||
| 805 | + {"stopcircleo", fa::stopcircleo}, | ||
| 806 | + {"streetview", fa::streetview}, | ||
| 807 | + {"strikethrough", fa::strikethrough}, | ||
| 808 | + {"stumbleupon", fa::stumbleupon}, | ||
| 809 | + {"stumbleuponcircle", fa::stumbleuponcircle}, | ||
| 810 | + {"subscript", fa::subscript}, | ||
| 811 | + {"subway", fa::subway}, | ||
| 812 | + {"suitcase", fa::suitcase}, | ||
| 813 | + {"suno", fa::suno}, | ||
| 814 | + {"superpowers", fa::superpowers}, | ||
| 815 | + {"superscript", fa::superscript}, | ||
| 816 | + {"support", fa::support}, | ||
| 817 | + {"table", fa::table}, | ||
| 818 | + {"tablet", fa::tablet}, | ||
| 819 | + {"tachometer", fa::tachometer}, | ||
| 820 | + {"tag", fa::tag}, | ||
| 821 | + {"tags", fa::tags}, | ||
| 822 | + {"tasks", fa::tasks}, | ||
| 823 | + {"taxi", fa::taxi}, | ||
| 824 | + {"telegram", fa::telegram}, | ||
| 825 | + {"television", fa::television}, | ||
| 826 | + {"tencentweibo", fa::tencentweibo}, | ||
| 827 | + {"terminal", fa::terminal}, | ||
| 828 | + {"textheight", fa::textheight}, | ||
| 829 | + {"textwidth", fa::textwidth}, | ||
| 830 | + {"th", fa::th}, | ||
| 831 | + {"thlarge", fa::thlarge}, | ||
| 832 | + {"thlist", fa::thlist}, | ||
| 833 | + {"themeisle", fa::themeisle}, | ||
| 834 | + {"thermometer", fa::thermometer}, | ||
| 835 | + {"thermometer0", fa::thermometer0}, | ||
| 836 | + {"thermometer1", fa::thermometer1}, | ||
| 837 | + {"thermometer2", fa::thermometer2}, | ||
| 838 | + {"thermometer3", fa::thermometer3}, | ||
| 839 | + {"thermometer4", fa::thermometer4}, | ||
| 840 | + {"thermometerempty", fa::thermometerempty}, | ||
| 841 | + {"thermometerfull", fa::thermometerfull}, | ||
| 842 | + {"thermometerhalf", fa::thermometerhalf}, | ||
| 843 | + {"thermometerquarter", fa::thermometerquarter}, | ||
| 844 | + {"thermometerthreequarters", fa::thermometerthreequarters}, | ||
| 845 | + {"thumbtack", fa::thumbtack}, | ||
| 846 | + {"thumbsdown", fa::thumbsdown}, | ||
| 847 | + {"thumbsodown", fa::thumbsodown}, | ||
| 848 | + {"thumbsoup", fa::thumbsoup}, | ||
| 849 | + {"thumbsup", fa::thumbsup}, | ||
| 850 | + {"ticket", fa::ticket}, | ||
| 851 | + {"times", fa::times}, | ||
| 852 | + {"timescircle", fa::timescircle}, | ||
| 853 | + {"timescircleo", fa::timescircleo}, | ||
| 854 | + {"timesrectangle", fa::timesrectangle}, | ||
| 855 | + {"timesrectangleo", fa::timesrectangleo}, | ||
| 856 | + {"tint", fa::tint}, | ||
| 857 | + {"toggledown", fa::toggledown}, | ||
| 858 | + {"toggleleft", fa::toggleleft}, | ||
| 859 | + {"toggleoff", fa::toggleoff}, | ||
| 860 | + {"toggleon", fa::toggleon}, | ||
| 861 | + {"toggleright", fa::toggleright}, | ||
| 862 | + {"toggleup", fa::toggleup}, | ||
| 863 | + {"trademark", fa::trademark}, | ||
| 864 | + {"train", fa::train}, | ||
| 865 | + {"transgender", fa::transgender}, | ||
| 866 | + {"transgenderalt", fa::transgenderalt}, | ||
| 867 | + {"trash", fa::trash}, | ||
| 868 | + {"trasho", fa::trasho}, | ||
| 869 | + {"tree", fa::tree}, | ||
| 870 | + {"trello", fa::trello}, | ||
| 871 | + {"tripadvisor", fa::tripadvisor}, | ||
| 872 | + {"trophy", fa::trophy}, | ||
| 873 | + {"truck", fa::truck}, | ||
| 874 | + {"fa_try", fa::fa_try}, | ||
| 875 | + {"tty", fa::tty}, | ||
| 876 | + {"tumblr", fa::tumblr}, | ||
| 877 | + {"tumblrsquare", fa::tumblrsquare}, | ||
| 878 | + {"turkishlira", fa::turkishlira}, | ||
| 879 | + {"tv", fa::tv}, | ||
| 880 | + {"twitch", fa::twitch}, | ||
| 881 | + {"twitter", fa::twitter}, | ||
| 882 | + {"twittersquare", fa::twittersquare}, | ||
| 883 | + {"umbrella", fa::umbrella}, | ||
| 884 | + {"underline", fa::underline}, | ||
| 885 | + {"undo", fa::undo}, | ||
| 886 | + {"universalaccess", fa::universalaccess}, | ||
| 887 | + {"university", fa::university}, | ||
| 888 | + {"unlink", fa::unlink}, | ||
| 889 | + {"unlock", fa::unlock}, | ||
| 890 | + {"unlockalt", fa::unlockalt}, | ||
| 891 | + {"unsorted", fa::unsorted}, | ||
| 892 | + {"upload", fa::upload}, | ||
| 893 | + {"usb", fa::usb}, | ||
| 894 | + {"usd", fa::usd}, | ||
| 895 | + {"user", fa::user}, | ||
| 896 | + {"usercircle", fa::usercircle}, | ||
| 897 | + {"usercircleo", fa::usercircleo}, | ||
| 898 | + {"usermd", fa::usermd}, | ||
| 899 | + {"usero", fa::usero}, | ||
| 900 | + {"userplus", fa::userplus}, | ||
| 901 | + {"usersecret", fa::usersecret}, | ||
| 902 | + {"usertimes", fa::usertimes}, | ||
| 903 | + {"users", fa::users}, | ||
| 904 | + {"vcard", fa::vcard}, | ||
| 905 | + {"vcardo", fa::vcardo}, | ||
| 906 | + {"venus", fa::venus}, | ||
| 907 | + {"venusdouble", fa::venusdouble}, | ||
| 908 | + {"venusmars", fa::venusmars}, | ||
| 909 | + {"viacoin", fa::viacoin}, | ||
| 910 | + {"viadeo", fa::viadeo}, | ||
| 911 | + {"viadeosquare", fa::viadeosquare}, | ||
| 912 | + {"videocamera", fa::videocamera}, | ||
| 913 | + {"vimeo", fa::vimeo}, | ||
| 914 | + {"vimeosquare", fa::vimeosquare}, | ||
| 915 | + {"vine", fa::vine}, | ||
| 916 | + {"vk", fa::vk}, | ||
| 917 | + {"volumecontrolphone", fa::volumecontrolphone}, | ||
| 918 | + {"volumedown", fa::volumedown}, | ||
| 919 | + {"volumeoff", fa::volumeoff}, | ||
| 920 | + {"volumeup", fa::volumeup}, | ||
| 921 | + {"warning", fa::warning}, | ||
| 922 | + {"wechat", fa::wechat}, | ||
| 923 | + {"weibo", fa::weibo}, | ||
| 924 | + {"weixin", fa::weixin}, | ||
| 925 | + {"whatsapp", fa::whatsapp}, | ||
| 926 | + {"wheelchair", fa::wheelchair}, | ||
| 927 | + {"wheelchairalt", fa::wheelchairalt}, | ||
| 928 | + {"wifi", fa::wifi}, | ||
| 929 | + {"wikipediaw", fa::wikipediaw}, | ||
| 930 | + {"windowclose", fa::windowclose}, | ||
| 931 | + {"windowcloseo", fa::windowcloseo}, | ||
| 932 | + {"windowmaximize", fa::windowmaximize}, | ||
| 933 | + {"windowminimize", fa::windowminimize}, | ||
| 934 | + {"windowrestore", fa::windowrestore}, | ||
| 935 | + {"windows", fa::windows}, | ||
| 936 | + {"won", fa::won}, | ||
| 937 | + {"wordpress", fa::wordpress}, | ||
| 938 | + {"wpbeginner", fa::wpbeginner}, | ||
| 939 | + {"wpexplorer", fa::wpexplorer}, | ||
| 940 | + {"wpforms", fa::wpforms}, | ||
| 941 | + {"wrench", fa::wrench}, | ||
| 942 | + {"xing", fa::xing}, | ||
| 943 | + {"xingsquare", fa::xingsquare}, | ||
| 944 | + {"ycombinator", fa::ycombinator}, | ||
| 945 | + {"ycombinatorsquare", fa::ycombinatorsquare}, | ||
| 946 | + {"yahoo", fa::yahoo}, | ||
| 947 | + {"yc", fa::yc}, | ||
| 948 | + {"ycsquare", fa::ycsquare}, | ||
| 949 | + {"yelp", fa::yelp}, | ||
| 950 | + {"yen", fa::yen}, | ||
| 951 | + {"yoast", fa::yoast}, | ||
| 952 | + {"youtube", fa::youtube}, | ||
| 953 | + {"youtubeplay", fa::youtubeplay}, | ||
| 954 | + {"youtubesquare", fa::youtubesquare}}; | ||
| 955 | + | ||
| 956 | +/// a specialized init function so font-awesome is loaded and initialized | ||
| 957 | +/// this method return true on success, it will return false if the fnot cannot be initialized | ||
| 958 | +/// To initialize QtAwesome with font-awesome you need to call this method | ||
| 959 | +bool QtAwesome::initFontAwesome() { | ||
| 960 | + static int fontAwesomeFontId = -1; | ||
| 961 | + | ||
| 962 | + // only load font-awesome once | ||
| 963 | + if (fontAwesomeFontId < 0) { | ||
| 964 | + // load the font file | ||
| 965 | + QFile res(":/images/fontawesome-4.7.0.ttf"); | ||
| 966 | + if (!res.open(QIODevice::ReadOnly)) { | ||
| 967 | + qDebug() << "Font awesome font could not be loaded!"; | ||
| 968 | + return false; | ||
| 969 | + } | ||
| 970 | + QByteArray fontData(res.readAll()); | ||
| 971 | + res.close(); | ||
| 972 | + | ||
| 973 | + // fetch the given font | ||
| 974 | + fontAwesomeFontId = QFontDatabase::addApplicationFontFromData(fontData); | ||
| 975 | + } | ||
| 976 | + | ||
| 977 | + QStringList loadedFontFamilies = QFontDatabase::applicationFontFamilies(fontAwesomeFontId); | ||
| 978 | + if (!loadedFontFamilies.empty()) { | ||
| 979 | + fontName_ = loadedFontFamilies.at(0); | ||
| 980 | + } else { | ||
| 981 | + qDebug() << "Font awesome font is empty?!"; | ||
| 982 | + fontAwesomeFontId = -1; // restore the font-awesome id | ||
| 983 | + return false; | ||
| 984 | + } | ||
| 985 | + | ||
| 986 | + // intialize the map | ||
| 987 | + QHash<QString, int> &m = namedCodepoints_; | ||
| 988 | + for (unsigned i = 0; i < sizeof(faNameIconArray) / sizeof(FANameIcon); ++i) { | ||
| 989 | + m.insert(faNameIconArray[i].name, faNameIconArray[i].icon); | ||
| 990 | + } | ||
| 991 | + | ||
| 992 | + return true; | ||
| 993 | +} | ||
| 994 | + | ||
| 995 | +void QtAwesome::addNamedCodepoint(const QString &name, int codePoint) { namedCodepoints_.insert(name, codePoint); } | ||
| 996 | + | ||
| 997 | +/// Sets a default option. These options are passed on to the icon painters | ||
| 998 | +void QtAwesome::setDefaultOption(const QString &name, const QVariant &value) { defaultOptions_.insert(name, value); } | ||
| 999 | + | ||
| 1000 | +/// Returns the default option for the given name | ||
| 1001 | +QVariant QtAwesome::defaultOption(const QString &name) { return defaultOptions_.value(name); } | ||
| 1002 | + | ||
| 1003 | +// internal helper method to merge to option amps | ||
| 1004 | +static QVariantMap mergeOptions(const QVariantMap &defaults, const QVariantMap &override) { | ||
| 1005 | + QVariantMap result = defaults; | ||
| 1006 | + if (!override.isEmpty()) { | ||
| 1007 | + QMapIterator<QString, QVariant> itr(override); | ||
| 1008 | + while (itr.hasNext()) { | ||
| 1009 | + itr.next(); | ||
| 1010 | + result.insert(itr.key(), itr.value()); | ||
| 1011 | + } | ||
| 1012 | + } | ||
| 1013 | + return result; | ||
| 1014 | +} | ||
| 1015 | + | ||
| 1016 | +/// Creates an icon with the given code-point | ||
| 1017 | +/// <code> | ||
| 1018 | +/// awesome->icon( icon_group ) | ||
| 1019 | +/// </code> | ||
| 1020 | +QIcon QtAwesome::icon(int character, const QVariantMap &options) { | ||
| 1021 | + // create a merged QVariantMap to have default options and icon-specific options | ||
| 1022 | + QVariantMap optionMap = mergeOptions(defaultOptions_, options); | ||
| 1023 | + if (!optionMap.contains("text")) optionMap.insert("text", QChar(character)); | ||
| 1024 | + if (!optionMap.contains("text-active")) optionMap.insert("text-active", QChar(character)); | ||
| 1025 | + if (!optionMap.contains("text-selected")) optionMap.insert("text-selected", QChar(character)); | ||
| 1026 | + if (!optionMap.contains("text-disabled")) optionMap.insert("text-disabled", QChar(character)); | ||
| 1027 | + if (!optionMap.contains("text-off")) optionMap.insert("text-off", QChar(character)); | ||
| 1028 | + | ||
| 1029 | + return icon(fontIconPainter_, optionMap); | ||
| 1030 | +} | ||
| 1031 | + | ||
| 1032 | +/// Creates an icon with the given name | ||
| 1033 | +/// | ||
| 1034 | +/// You can use the icon names as defined on http://fortawesome.github.io/Font-Awesome/design.html withour the 'icon-' | ||
| 1035 | +/// prefix | ||
| 1036 | +/// @param name the name of the icon | ||
| 1037 | +/// @param options extra option to pass to the icon renderer | ||
| 1038 | +QIcon QtAwesome::icon(const QString &name, const QVariantMap &options) { | ||
| 1039 | + // when it's a named codepoint | ||
| 1040 | + if (namedCodepoints_.count(name)) { return icon(namedCodepoints_.value(name), options); } | ||
| 1041 | + | ||
| 1042 | + // create a merged QVariantMap to have default options and icon-specific options | ||
| 1043 | + QVariantMap optionMap = mergeOptions(defaultOptions_, options); | ||
| 1044 | + | ||
| 1045 | + // this method first tries to retrieve the icon | ||
| 1046 | + QtAwesomeIconPainter *painter = painterMap_.value(name); | ||
| 1047 | + if (!painter) { return QIcon(); } | ||
| 1048 | + | ||
| 1049 | + return icon(painter, optionMap); | ||
| 1050 | +} | ||
| 1051 | + | ||
| 1052 | +/// Create a dynamic icon by simlpy supplying a painter object | ||
| 1053 | +/// The ownership of the painter is NOT transfered. | ||
| 1054 | +/// @param painter a dynamic painter that is going to paint the icon | ||
| 1055 | +/// @param optionmap the options to pass to the painter | ||
| 1056 | +QIcon QtAwesome::icon(QtAwesomeIconPainter *painter, const QVariantMap &optionMap) { | ||
| 1057 | + // Warning, when you use memoryleak detection. You should turn it of for the next call | ||
| 1058 | + // QIcon's placed in gui items are often cached and not deleted when my memory-leak detection checks for leaks. | ||
| 1059 | + // I'm not sure if it's a Qt bug or something I do wrong | ||
| 1060 | + QtAwesomeIconPainterIconEngine *engine = new QtAwesomeIconPainterIconEngine(this, painter, optionMap); | ||
| 1061 | + return QIcon(engine); | ||
| 1062 | +} | ||
| 1063 | + | ||
| 1064 | +/// Adds a named icon-painter to the QtAwesome icon map | ||
| 1065 | +/// As the name applies the ownership is passed over to QtAwesome | ||
| 1066 | +/// | ||
| 1067 | +/// @param name the name of the icon | ||
| 1068 | +/// @param painter the icon painter to add for this name | ||
| 1069 | +void QtAwesome::give(const QString &name, QtAwesomeIconPainter *painter) { | ||
| 1070 | + delete painterMap_.value(name); // delete the old one | ||
| 1071 | + painterMap_.insert(name, painter); | ||
| 1072 | +} | ||
| 1073 | + | ||
| 1074 | +/// Creates/Gets the icon font with a given size in pixels. This can be usefull to use a label for displaying icons | ||
| 1075 | +/// Example: | ||
| 1076 | +/// | ||
| 1077 | +/// QLabel* label = new QLabel( QChar( icon_group ) ); | ||
| 1078 | +/// label->setFont( awesome->font(16) ) | ||
| 1079 | +QFont QtAwesome::font(int size) { | ||
| 1080 | + QFont font(fontName_); | ||
| 1081 | + font.setPixelSize(size); | ||
| 1082 | + return font; | ||
| 1083 | +} |
openhantek/src/iconfont/QtAwesome.h
0 → 100644
| 1 | +/** | ||
| 2 | + * QtAwesome - use font-awesome (or other font icons) in your c++ / Qt Application | ||
| 3 | + * | ||
| 4 | + * MIT Licensed | ||
| 5 | + * | ||
| 6 | + * Copyright 2013-2015 - Reliable Bits Software by Blommers IT. All Rights Reserved. | ||
| 7 | + * Author Rick Blommers | ||
| 8 | + */ | ||
| 9 | + | ||
| 10 | +#ifndef QTAWESOME_H | ||
| 11 | +#define QTAWESOME_H | ||
| 12 | + | ||
| 13 | +#include "QtAwesomeAnim.h" | ||
| 14 | + | ||
| 15 | +#include <QIcon> | ||
| 16 | +#include <QIconEngine> | ||
| 17 | +#include <QPainter> | ||
| 18 | +#include <QRect> | ||
| 19 | +#include <QVariantMap> | ||
| 20 | + | ||
| 21 | + | ||
| 22 | +/// A list of all icon-names with the codepoint (unicode-value) on the right | ||
| 23 | +/// You can use the names on the page http://fortawesome.github.io/Font-Awesome/design.html | ||
| 24 | +namespace fa { | ||
| 25 | + enum icon { | ||
| 26 | + fa_500px = 0xf26e, | ||
| 27 | + addressbook = 0xf2b9, | ||
| 28 | + addressbooko = 0xf2ba, | ||
| 29 | + addresscard = 0xf2bb, | ||
| 30 | + addresscardo = 0xf2bc, | ||
| 31 | + adjust = 0xf042, | ||
| 32 | + adn = 0xf170, | ||
| 33 | + aligncenter = 0xf037, | ||
| 34 | + alignjustify = 0xf039, | ||
| 35 | + alignleft = 0xf036, | ||
| 36 | + alignright = 0xf038, | ||
| 37 | + amazon = 0xf270, | ||
| 38 | + ambulance = 0xf0f9, | ||
| 39 | + americansignlanguageinterpreting = 0xf2a3, | ||
| 40 | + anchor = 0xf13d, | ||
| 41 | + android = 0xf17b, | ||
| 42 | + angellist = 0xf209, | ||
| 43 | + angledoubledown = 0xf103, | ||
| 44 | + angledoubleleft = 0xf100, | ||
| 45 | + angledoubleright = 0xf101, | ||
| 46 | + angledoubleup = 0xf102, | ||
| 47 | + angledown = 0xf107, | ||
| 48 | + angleleft = 0xf104, | ||
| 49 | + angleright = 0xf105, | ||
| 50 | + angleup = 0xf106, | ||
| 51 | + apple = 0xf179, | ||
| 52 | + archive = 0xf187, | ||
| 53 | + areachart = 0xf1fe, | ||
| 54 | + arrowcircledown = 0xf0ab, | ||
| 55 | + arrowcircleleft = 0xf0a8, | ||
| 56 | + arrowcircleodown = 0xf01a, | ||
| 57 | + arrowcircleoleft = 0xf190, | ||
| 58 | + arrowcircleoright = 0xf18e, | ||
| 59 | + arrowcircleoup = 0xf01b, | ||
| 60 | + arrowcircleright = 0xf0a9, | ||
| 61 | + arrowcircleup = 0xf0aa, | ||
| 62 | + arrowdown = 0xf063, | ||
| 63 | + arrowleft = 0xf060, | ||
| 64 | + arrowright = 0xf061, | ||
| 65 | + arrowup = 0xf062, | ||
| 66 | + arrows = 0xf047, | ||
| 67 | + arrowsalt = 0xf0b2, | ||
| 68 | + arrowsh = 0xf07e, | ||
| 69 | + arrowsv = 0xf07d, | ||
| 70 | + aslinterpreting = 0xf2a3, | ||
| 71 | + assistivelisteningsystems = 0xf2a2, | ||
| 72 | + asterisk = 0xf069, | ||
| 73 | + at = 0xf1fa, | ||
| 74 | + audiodescription = 0xf29e, | ||
| 75 | + automobile = 0xf1b9, | ||
| 76 | + backward = 0xf04a, | ||
| 77 | + balancescale = 0xf24e, | ||
| 78 | + ban = 0xf05e, | ||
| 79 | + bandcamp = 0xf2d5, | ||
| 80 | + bank = 0xf19c, | ||
| 81 | + barchart = 0xf080, | ||
| 82 | + barcharto = 0xf080, | ||
| 83 | + barcode = 0xf02a, | ||
| 84 | + bars = 0xf0c9, | ||
| 85 | + bath = 0xf2cd, | ||
| 86 | + bathtub = 0xf2cd, | ||
| 87 | + battery = 0xf240, | ||
| 88 | + battery0 = 0xf244, | ||
| 89 | + battery1 = 0xf243, | ||
| 90 | + battery2 = 0xf242, | ||
| 91 | + battery3 = 0xf241, | ||
| 92 | + battery4 = 0xf240, | ||
| 93 | + batteryempty = 0xf244, | ||
| 94 | + batteryfull = 0xf240, | ||
| 95 | + batteryhalf = 0xf242, | ||
| 96 | + batteryquarter = 0xf243, | ||
| 97 | + batterythreequarters = 0xf241, | ||
| 98 | + bed = 0xf236, | ||
| 99 | + beer = 0xf0fc, | ||
| 100 | + behance = 0xf1b4, | ||
| 101 | + behancesquare = 0xf1b5, | ||
| 102 | + bell = 0xf0f3, | ||
| 103 | + bello = 0xf0a2, | ||
| 104 | + bellslash = 0xf1f6, | ||
| 105 | + bellslasho = 0xf1f7, | ||
| 106 | + bicycle = 0xf206, | ||
| 107 | + binoculars = 0xf1e5, | ||
| 108 | + birthdaycake = 0xf1fd, | ||
| 109 | + bitbucket = 0xf171, | ||
| 110 | + bitbucketsquare = 0xf172, | ||
| 111 | + bitcoin = 0xf15a, | ||
| 112 | + blacktie = 0xf27e, | ||
| 113 | + blind = 0xf29d, | ||
| 114 | + bluetooth = 0xf293, | ||
| 115 | + bluetoothb = 0xf294, | ||
| 116 | + bold = 0xf032, | ||
| 117 | + bolt = 0xf0e7, | ||
| 118 | + bomb = 0xf1e2, | ||
| 119 | + book = 0xf02d, | ||
| 120 | + bookmark = 0xf02e, | ||
| 121 | + bookmarko = 0xf097, | ||
| 122 | + braille = 0xf2a1, | ||
| 123 | + briefcase = 0xf0b1, | ||
| 124 | + btc = 0xf15a, | ||
| 125 | + bug = 0xf188, | ||
| 126 | + building = 0xf1ad, | ||
| 127 | + buildingo = 0xf0f7, | ||
| 128 | + bullhorn = 0xf0a1, | ||
| 129 | + bullseye = 0xf140, | ||
| 130 | + bus = 0xf207, | ||
| 131 | + buysellads = 0xf20d, | ||
| 132 | + cab = 0xf1ba, | ||
| 133 | + calculator = 0xf1ec, | ||
| 134 | + calendar = 0xf073, | ||
| 135 | + calendarchecko = 0xf274, | ||
| 136 | + calendarminuso = 0xf272, | ||
| 137 | + calendaro = 0xf133, | ||
| 138 | + calendarpluso = 0xf271, | ||
| 139 | + calendartimeso = 0xf273, | ||
| 140 | + camera = 0xf030, | ||
| 141 | + cameraretro = 0xf083, | ||
| 142 | + car = 0xf1b9, | ||
| 143 | + caretdown = 0xf0d7, | ||
| 144 | + caretleft = 0xf0d9, | ||
| 145 | + caretright = 0xf0da, | ||
| 146 | + caretsquareodown = 0xf150, | ||
| 147 | + caretsquareoleft = 0xf191, | ||
| 148 | + caretsquareoright = 0xf152, | ||
| 149 | + caretsquareoup = 0xf151, | ||
| 150 | + caretup = 0xf0d8, | ||
| 151 | + cartarrowdown = 0xf218, | ||
| 152 | + cartplus = 0xf217, | ||
| 153 | + cc = 0xf20a, | ||
| 154 | + ccamex = 0xf1f3, | ||
| 155 | + ccdinersclub = 0xf24c, | ||
| 156 | + ccdiscover = 0xf1f2, | ||
| 157 | + ccjcb = 0xf24b, | ||
| 158 | + ccmastercard = 0xf1f1, | ||
| 159 | + ccpaypal = 0xf1f4, | ||
| 160 | + ccstripe = 0xf1f5, | ||
| 161 | + ccvisa = 0xf1f0, | ||
| 162 | + certificate = 0xf0a3, | ||
| 163 | + chain = 0xf0c1, | ||
| 164 | + chainbroken = 0xf127, | ||
| 165 | + check = 0xf00c, | ||
| 166 | + checkcircle = 0xf058, | ||
| 167 | + checkcircleo = 0xf05d, | ||
| 168 | + checksquare = 0xf14a, | ||
| 169 | + checksquareo = 0xf046, | ||
| 170 | + chevroncircledown = 0xf13a, | ||
| 171 | + chevroncircleleft = 0xf137, | ||
| 172 | + chevroncircleright = 0xf138, | ||
| 173 | + chevroncircleup = 0xf139, | ||
| 174 | + chevrondown = 0xf078, | ||
| 175 | + chevronleft = 0xf053, | ||
| 176 | + chevronright = 0xf054, | ||
| 177 | + chevronup = 0xf077, | ||
| 178 | + child = 0xf1ae, | ||
| 179 | + chrome = 0xf268, | ||
| 180 | + circle = 0xf111, | ||
| 181 | + circleo = 0xf10c, | ||
| 182 | + circleonotch = 0xf1ce, | ||
| 183 | + circlethin = 0xf1db, | ||
| 184 | + clipboard = 0xf0ea, | ||
| 185 | + clocko = 0xf017, | ||
| 186 | + clone = 0xf24d, | ||
| 187 | + close = 0xf00d, | ||
| 188 | + cloud = 0xf0c2, | ||
| 189 | + clouddownload = 0xf0ed, | ||
| 190 | + cloudupload = 0xf0ee, | ||
| 191 | + cny = 0xf157, | ||
| 192 | + code = 0xf121, | ||
| 193 | + codefork = 0xf126, | ||
| 194 | + codepen = 0xf1cb, | ||
| 195 | + codiepie = 0xf284, | ||
| 196 | + coffee = 0xf0f4, | ||
| 197 | + cog = 0xf013, | ||
| 198 | + cogs = 0xf085, | ||
| 199 | + columns = 0xf0db, | ||
| 200 | + comment = 0xf075, | ||
| 201 | + commento = 0xf0e5, | ||
| 202 | + commenting = 0xf27a, | ||
| 203 | + commentingo = 0xf27b, | ||
| 204 | + comments = 0xf086, | ||
| 205 | + commentso = 0xf0e6, | ||
| 206 | + compass = 0xf14e, | ||
| 207 | + compress = 0xf066, | ||
| 208 | + connectdevelop = 0xf20e, | ||
| 209 | + contao = 0xf26d, | ||
| 210 | + copy = 0xf0c5, | ||
| 211 | + copyright = 0xf1f9, | ||
| 212 | + creativecommons = 0xf25e, | ||
| 213 | + creditcard = 0xf09d, | ||
| 214 | + creditcardalt = 0xf283, | ||
| 215 | + crop = 0xf125, | ||
| 216 | + crosshairs = 0xf05b, | ||
| 217 | + css3 = 0xf13c, | ||
| 218 | + cube = 0xf1b2, | ||
| 219 | + cubes = 0xf1b3, | ||
| 220 | + cut = 0xf0c4, | ||
| 221 | + cutlery = 0xf0f5, | ||
| 222 | + dashboard = 0xf0e4, | ||
| 223 | + dashcube = 0xf210, | ||
| 224 | + database = 0xf1c0, | ||
| 225 | + deaf = 0xf2a4, | ||
| 226 | + deafness = 0xf2a4, | ||
| 227 | + dedent = 0xf03b, | ||
| 228 | + delicious = 0xf1a5, | ||
| 229 | + desktop = 0xf108, | ||
| 230 | + deviantart = 0xf1bd, | ||
| 231 | + diamond = 0xf219, | ||
| 232 | + digg = 0xf1a6, | ||
| 233 | + dollar = 0xf155, | ||
| 234 | + dotcircleo = 0xf192, | ||
| 235 | + download = 0xf019, | ||
| 236 | + dribbble = 0xf17d, | ||
| 237 | + driverslicense = 0xf2c2, | ||
| 238 | + driverslicenseo = 0xf2c3, | ||
| 239 | + dropbox = 0xf16b, | ||
| 240 | + drupal = 0xf1a9, | ||
| 241 | + edge = 0xf282, | ||
| 242 | + edit = 0xf044, | ||
| 243 | + eercast = 0xf2da, | ||
| 244 | + eject = 0xf052, | ||
| 245 | + ellipsish = 0xf141, | ||
| 246 | + ellipsisv = 0xf142, | ||
| 247 | + empire = 0xf1d1, | ||
| 248 | + envelope = 0xf0e0, | ||
| 249 | + envelopeo = 0xf003, | ||
| 250 | + envelopeopen = 0xf2b6, | ||
| 251 | + envelopeopeno = 0xf2b7, | ||
| 252 | + envelopesquare = 0xf199, | ||
| 253 | + envira = 0xf299, | ||
| 254 | + eraser = 0xf12d, | ||
| 255 | + etsy = 0xf2d7, | ||
| 256 | + eur = 0xf153, | ||
| 257 | + euro = 0xf153, | ||
| 258 | + exchange = 0xf0ec, | ||
| 259 | + exclamation = 0xf12a, | ||
| 260 | + exclamationcircle = 0xf06a, | ||
| 261 | + exclamationtriangle = 0xf071, | ||
| 262 | + expand = 0xf065, | ||
| 263 | + expeditedssl = 0xf23e, | ||
| 264 | + externallink = 0xf08e, | ||
| 265 | + externallinksquare = 0xf14c, | ||
| 266 | + eye = 0xf06e, | ||
| 267 | + eyeslash = 0xf070, | ||
| 268 | + eyedropper = 0xf1fb, | ||
| 269 | + fa = 0xf2b4, | ||
| 270 | + facebook = 0xf09a, | ||
| 271 | + facebookf = 0xf09a, | ||
| 272 | + facebookofficial = 0xf230, | ||
| 273 | + facebooksquare = 0xf082, | ||
| 274 | + fastbackward = 0xf049, | ||
| 275 | + fastforward = 0xf050, | ||
| 276 | + fax = 0xf1ac, | ||
| 277 | + feed = 0xf09e, | ||
| 278 | + female = 0xf182, | ||
| 279 | + fighterjet = 0xf0fb, | ||
| 280 | + file = 0xf15b, | ||
| 281 | + filearchiveo = 0xf1c6, | ||
| 282 | + fileaudioo = 0xf1c7, | ||
| 283 | + filecodeo = 0xf1c9, | ||
| 284 | + fileexcelo = 0xf1c3, | ||
| 285 | + fileimageo = 0xf1c5, | ||
| 286 | + filemovieo = 0xf1c8, | ||
| 287 | + fileo = 0xf016, | ||
| 288 | + filepdfo = 0xf1c1, | ||
| 289 | + filephotoo = 0xf1c5, | ||
| 290 | + filepictureo = 0xf1c5, | ||
| 291 | + filepowerpointo = 0xf1c4, | ||
| 292 | + filesoundo = 0xf1c7, | ||
| 293 | + filetext = 0xf15c, | ||
| 294 | + filetexto = 0xf0f6, | ||
| 295 | + filevideoo = 0xf1c8, | ||
| 296 | + filewordo = 0xf1c2, | ||
| 297 | + filezipo = 0xf1c6, | ||
| 298 | + fileso = 0xf0c5, | ||
| 299 | + film = 0xf008, | ||
| 300 | + filter = 0xf0b0, | ||
| 301 | + fire = 0xf06d, | ||
| 302 | + fireextinguisher = 0xf134, | ||
| 303 | + firefox = 0xf269, | ||
| 304 | + firstorder = 0xf2b0, | ||
| 305 | + flag = 0xf024, | ||
| 306 | + flagcheckered = 0xf11e, | ||
| 307 | + flago = 0xf11d, | ||
| 308 | + flash = 0xf0e7, | ||
| 309 | + flask = 0xf0c3, | ||
| 310 | + flickr = 0xf16e, | ||
| 311 | + floppyo = 0xf0c7, | ||
| 312 | + folder = 0xf07b, | ||
| 313 | + foldero = 0xf114, | ||
| 314 | + folderopen = 0xf07c, | ||
| 315 | + folderopeno = 0xf115, | ||
| 316 | + font = 0xf031, | ||
| 317 | + fontawesome = 0xf2b4, | ||
| 318 | + fonticons = 0xf280, | ||
| 319 | + fortawesome = 0xf286, | ||
| 320 | + forumbee = 0xf211, | ||
| 321 | + forward = 0xf04e, | ||
| 322 | + foursquare = 0xf180, | ||
| 323 | + freecodecamp = 0xf2c5, | ||
| 324 | + frowno = 0xf119, | ||
| 325 | + futbolo = 0xf1e3, | ||
| 326 | + gamepad = 0xf11b, | ||
| 327 | + gavel = 0xf0e3, | ||
| 328 | + gbp = 0xf154, | ||
| 329 | + ge = 0xf1d1, | ||
| 330 | + gear = 0xf013, | ||
| 331 | + gears = 0xf085, | ||
| 332 | + genderless = 0xf22d, | ||
| 333 | + getpocket = 0xf265, | ||
| 334 | + gg = 0xf260, | ||
| 335 | + ggcircle = 0xf261, | ||
| 336 | + gift = 0xf06b, | ||
| 337 | + git = 0xf1d3, | ||
| 338 | + gitsquare = 0xf1d2, | ||
| 339 | + github = 0xf09b, | ||
| 340 | + githubalt = 0xf113, | ||
| 341 | + githubsquare = 0xf092, | ||
| 342 | + gitlab = 0xf296, | ||
| 343 | + gittip = 0xf184, | ||
| 344 | + glass = 0xf000, | ||
| 345 | + glide = 0xf2a5, | ||
| 346 | + glideg = 0xf2a6, | ||
| 347 | + globe = 0xf0ac, | ||
| 348 | + google = 0xf1a0, | ||
| 349 | + googleplus = 0xf0d5, | ||
| 350 | + googlepluscircle = 0xf2b3, | ||
| 351 | + googleplusofficial = 0xf2b3, | ||
| 352 | + googleplussquare = 0xf0d4, | ||
| 353 | + googlewallet = 0xf1ee, | ||
| 354 | + graduationcap = 0xf19d, | ||
| 355 | + gratipay = 0xf184, | ||
| 356 | + grav = 0xf2d6, | ||
| 357 | + group = 0xf0c0, | ||
| 358 | + hsquare = 0xf0fd, | ||
| 359 | + hackernews = 0xf1d4, | ||
| 360 | + handgrabo = 0xf255, | ||
| 361 | + handlizardo = 0xf258, | ||
| 362 | + handodown = 0xf0a7, | ||
| 363 | + handoleft = 0xf0a5, | ||
| 364 | + handoright = 0xf0a4, | ||
| 365 | + handoup = 0xf0a6, | ||
| 366 | + handpapero = 0xf256, | ||
| 367 | + handpeaceo = 0xf25b, | ||
| 368 | + handpointero = 0xf25a, | ||
| 369 | + handrocko = 0xf255, | ||
| 370 | + handscissorso = 0xf257, | ||
| 371 | + handspocko = 0xf259, | ||
| 372 | + handstopo = 0xf256, | ||
| 373 | + handshakeo = 0xf2b5, | ||
| 374 | + hardofhearing = 0xf2a4, | ||
| 375 | + hashtag = 0xf292, | ||
| 376 | + hddo = 0xf0a0, | ||
| 377 | + header = 0xf1dc, | ||
| 378 | + headphones = 0xf025, | ||
| 379 | + heart = 0xf004, | ||
| 380 | + hearto = 0xf08a, | ||
| 381 | + heartbeat = 0xf21e, | ||
| 382 | + history = 0xf1da, | ||
| 383 | + home = 0xf015, | ||
| 384 | + hospitalo = 0xf0f8, | ||
| 385 | + hotel = 0xf236, | ||
| 386 | + hourglass = 0xf254, | ||
| 387 | + hourglass1 = 0xf251, | ||
| 388 | + hourglass2 = 0xf252, | ||
| 389 | + hourglass3 = 0xf253, | ||
| 390 | + hourglassend = 0xf253, | ||
| 391 | + hourglasshalf = 0xf252, | ||
| 392 | + hourglasso = 0xf250, | ||
| 393 | + hourglassstart = 0xf251, | ||
| 394 | + houzz = 0xf27c, | ||
| 395 | + html5 = 0xf13b, | ||
| 396 | + icursor = 0xf246, | ||
| 397 | + idbadge = 0xf2c1, | ||
| 398 | + idcard = 0xf2c2, | ||
| 399 | + idcardo = 0xf2c3, | ||
| 400 | + ils = 0xf20b, | ||
| 401 | + image = 0xf03e, | ||
| 402 | + imdb = 0xf2d8, | ||
| 403 | + inbox = 0xf01c, | ||
| 404 | + indent = 0xf03c, | ||
| 405 | + industry = 0xf275, | ||
| 406 | + info = 0xf129, | ||
| 407 | + infocircle = 0xf05a, | ||
| 408 | + inr = 0xf156, | ||
| 409 | + instagram = 0xf16d, | ||
| 410 | + institution = 0xf19c, | ||
| 411 | + internetexplorer = 0xf26b, | ||
| 412 | + intersex = 0xf224, | ||
| 413 | + ioxhost = 0xf208, | ||
| 414 | + italic = 0xf033, | ||
| 415 | + joomla = 0xf1aa, | ||
| 416 | + jpy = 0xf157, | ||
| 417 | + jsfiddle = 0xf1cc, | ||
| 418 | + key = 0xf084, | ||
| 419 | + keyboardo = 0xf11c, | ||
| 420 | + krw = 0xf159, | ||
| 421 | + language = 0xf1ab, | ||
| 422 | + laptop = 0xf109, | ||
| 423 | + lastfm = 0xf202, | ||
| 424 | + lastfmsquare = 0xf203, | ||
| 425 | + leaf = 0xf06c, | ||
| 426 | + leanpub = 0xf212, | ||
| 427 | + legal = 0xf0e3, | ||
| 428 | + lemono = 0xf094, | ||
| 429 | + leveldown = 0xf149, | ||
| 430 | + levelup = 0xf148, | ||
| 431 | + lifebouy = 0xf1cd, | ||
| 432 | + lifebuoy = 0xf1cd, | ||
| 433 | + lifering = 0xf1cd, | ||
| 434 | + lifesaver = 0xf1cd, | ||
| 435 | + lightbulbo = 0xf0eb, | ||
| 436 | + linechart = 0xf201, | ||
| 437 | + link = 0xf0c1, | ||
| 438 | + linkedin = 0xf0e1, | ||
| 439 | + linkedinsquare = 0xf08c, | ||
| 440 | + linode = 0xf2b8, | ||
| 441 | + fa_linux = 0xf17c, | ||
| 442 | + list = 0xf03a, | ||
| 443 | + listalt = 0xf022, | ||
| 444 | + listol = 0xf0cb, | ||
| 445 | + listul = 0xf0ca, | ||
| 446 | + locationarrow = 0xf124, | ||
| 447 | + lock = 0xf023, | ||
| 448 | + longarrowdown = 0xf175, | ||
| 449 | + longarrowleft = 0xf177, | ||
| 450 | + longarrowright = 0xf178, | ||
| 451 | + longarrowup = 0xf176, | ||
| 452 | + lowvision = 0xf2a8, | ||
| 453 | + magic = 0xf0d0, | ||
| 454 | + magnet = 0xf076, | ||
| 455 | + mailforward = 0xf064, | ||
| 456 | + mailreply = 0xf112, | ||
| 457 | + mailreplyall = 0xf122, | ||
| 458 | + male = 0xf183, | ||
| 459 | + map = 0xf279, | ||
| 460 | + mapmarker = 0xf041, | ||
| 461 | + mapo = 0xf278, | ||
| 462 | + mappin = 0xf276, | ||
| 463 | + mapsigns = 0xf277, | ||
| 464 | + mars = 0xf222, | ||
| 465 | + marsdouble = 0xf227, | ||
| 466 | + marsstroke = 0xf229, | ||
| 467 | + marsstrokeh = 0xf22b, | ||
| 468 | + marsstrokev = 0xf22a, | ||
| 469 | + maxcdn = 0xf136, | ||
| 470 | + meanpath = 0xf20c, | ||
| 471 | + medium = 0xf23a, | ||
| 472 | + medkit = 0xf0fa, | ||
| 473 | + meetup = 0xf2e0, | ||
| 474 | + meho = 0xf11a, | ||
| 475 | + mercury = 0xf223, | ||
| 476 | + microchip = 0xf2db, | ||
| 477 | + microphone = 0xf130, | ||
| 478 | + microphoneslash = 0xf131, | ||
| 479 | + minus = 0xf068, | ||
| 480 | + minuscircle = 0xf056, | ||
| 481 | + minussquare = 0xf146, | ||
| 482 | + minussquareo = 0xf147, | ||
| 483 | + mixcloud = 0xf289, | ||
| 484 | + mobile = 0xf10b, | ||
| 485 | + mobilephone = 0xf10b, | ||
| 486 | + modx = 0xf285, | ||
| 487 | + money = 0xf0d6, | ||
| 488 | + moono = 0xf186, | ||
| 489 | + mortarboard = 0xf19d, | ||
| 490 | + motorcycle = 0xf21c, | ||
| 491 | + mousepointer = 0xf245, | ||
| 492 | + music = 0xf001, | ||
| 493 | + navicon = 0xf0c9, | ||
| 494 | + neuter = 0xf22c, | ||
| 495 | + newspapero = 0xf1ea, | ||
| 496 | + objectgroup = 0xf247, | ||
| 497 | + objectungroup = 0xf248, | ||
| 498 | + odnoklassniki = 0xf263, | ||
| 499 | + odnoklassnikisquare = 0xf264, | ||
| 500 | + opencart = 0xf23d, | ||
| 501 | + openid = 0xf19b, | ||
| 502 | + opera = 0xf26a, | ||
| 503 | + optinmonster = 0xf23c, | ||
| 504 | + outdent = 0xf03b, | ||
| 505 | + pagelines = 0xf18c, | ||
| 506 | + paintbrush = 0xf1fc, | ||
| 507 | + paperplane = 0xf1d8, | ||
| 508 | + paperplaneo = 0xf1d9, | ||
| 509 | + paperclip = 0xf0c6, | ||
| 510 | + paragraph = 0xf1dd, | ||
| 511 | + paste = 0xf0ea, | ||
| 512 | + pause = 0xf04c, | ||
| 513 | + pausecircle = 0xf28b, | ||
| 514 | + pausecircleo = 0xf28c, | ||
| 515 | + paw = 0xf1b0, | ||
| 516 | + paypal = 0xf1ed, | ||
| 517 | + pencil = 0xf040, | ||
| 518 | + pencilsquare = 0xf14b, | ||
| 519 | + pencilsquareo = 0xf044, | ||
| 520 | + percent = 0xf295, | ||
| 521 | + phone = 0xf095, | ||
| 522 | + phonesquare = 0xf098, | ||
| 523 | + photo = 0xf03e, | ||
| 524 | + pictureo = 0xf03e, | ||
| 525 | + piechart = 0xf200, | ||
| 526 | + piedpiper = 0xf2ae, | ||
| 527 | + piedpiperalt = 0xf1a8, | ||
| 528 | + piedpiperpp = 0xf1a7, | ||
| 529 | + pinterest = 0xf0d2, | ||
| 530 | + pinterestp = 0xf231, | ||
| 531 | + pinterestsquare = 0xf0d3, | ||
| 532 | + plane = 0xf072, | ||
| 533 | + play = 0xf04b, | ||
| 534 | + playcircle = 0xf144, | ||
| 535 | + playcircleo = 0xf01d, | ||
| 536 | + plug = 0xf1e6, | ||
| 537 | + plus = 0xf067, | ||
| 538 | + pluscircle = 0xf055, | ||
| 539 | + plussquare = 0xf0fe, | ||
| 540 | + plussquareo = 0xf196, | ||
| 541 | + podcast = 0xf2ce, | ||
| 542 | + poweroff = 0xf011, | ||
| 543 | + print = 0xf02f, | ||
| 544 | + producthunt = 0xf288, | ||
| 545 | + puzzlepiece = 0xf12e, | ||
| 546 | + qq = 0xf1d6, | ||
| 547 | + qrcode = 0xf029, | ||
| 548 | + question = 0xf128, | ||
| 549 | + questioncircle = 0xf059, | ||
| 550 | + questioncircleo = 0xf29c, | ||
| 551 | + quora = 0xf2c4, | ||
| 552 | + quoteleft = 0xf10d, | ||
| 553 | + quoteright = 0xf10e, | ||
| 554 | + ra = 0xf1d0, | ||
| 555 | + random = 0xf074, | ||
| 556 | + ravelry = 0xf2d9, | ||
| 557 | + rebel = 0xf1d0, | ||
| 558 | + recycle = 0xf1b8, | ||
| 559 | + reddit = 0xf1a1, | ||
| 560 | + redditalien = 0xf281, | ||
| 561 | + redditsquare = 0xf1a2, | ||
| 562 | + refresh = 0xf021, | ||
| 563 | + registered = 0xf25d, | ||
| 564 | + remove = 0xf00d, | ||
| 565 | + renren = 0xf18b, | ||
| 566 | + reorder = 0xf0c9, | ||
| 567 | + repeat = 0xf01e, | ||
| 568 | + reply = 0xf112, | ||
| 569 | + replyall = 0xf122, | ||
| 570 | + resistance = 0xf1d0, | ||
| 571 | + retweet = 0xf079, | ||
| 572 | + rmb = 0xf157, | ||
| 573 | + road = 0xf018, | ||
| 574 | + rocket = 0xf135, | ||
| 575 | + rotateleft = 0xf0e2, | ||
| 576 | + rotateright = 0xf01e, | ||
| 577 | + rouble = 0xf158, | ||
| 578 | + rss = 0xf09e, | ||
| 579 | + rsssquare = 0xf143, | ||
| 580 | + rub = 0xf158, | ||
| 581 | + ruble = 0xf158, | ||
| 582 | + rupee = 0xf156, | ||
| 583 | + s15 = 0xf2cd, | ||
| 584 | + safari = 0xf267, | ||
| 585 | + save = 0xf0c7, | ||
| 586 | + scissors = 0xf0c4, | ||
| 587 | + scribd = 0xf28a, | ||
| 588 | + search = 0xf002, | ||
| 589 | + searchminus = 0xf010, | ||
| 590 | + searchplus = 0xf00e, | ||
| 591 | + sellsy = 0xf213, | ||
| 592 | + send = 0xf1d8, | ||
| 593 | + sendo = 0xf1d9, | ||
| 594 | + server = 0xf233, | ||
| 595 | + share = 0xf064, | ||
| 596 | + sharealt = 0xf1e0, | ||
| 597 | + sharealtsquare = 0xf1e1, | ||
| 598 | + sharesquare = 0xf14d, | ||
| 599 | + sharesquareo = 0xf045, | ||
| 600 | + shekel = 0xf20b, | ||
| 601 | + sheqel = 0xf20b, | ||
| 602 | + shield = 0xf132, | ||
| 603 | + ship = 0xf21a, | ||
| 604 | + shirtsinbulk = 0xf214, | ||
| 605 | + shoppingbag = 0xf290, | ||
| 606 | + shoppingbasket = 0xf291, | ||
| 607 | + shoppingcart = 0xf07a, | ||
| 608 | + shower = 0xf2cc, | ||
| 609 | + signin = 0xf090, | ||
| 610 | + signlanguage = 0xf2a7, | ||
| 611 | + signout = 0xf08b, | ||
| 612 | + signal = 0xf012, | ||
| 613 | + signing = 0xf2a7, | ||
| 614 | + simplybuilt = 0xf215, | ||
| 615 | + sitemap = 0xf0e8, | ||
| 616 | + skyatlas = 0xf216, | ||
| 617 | + skype = 0xf17e, | ||
| 618 | + slack = 0xf198, | ||
| 619 | + sliders = 0xf1de, | ||
| 620 | + slideshare = 0xf1e7, | ||
| 621 | + smileo = 0xf118, | ||
| 622 | + snapchat = 0xf2ab, | ||
| 623 | + snapchatghost = 0xf2ac, | ||
| 624 | + snapchatsquare = 0xf2ad, | ||
| 625 | + snowflakeo = 0xf2dc, | ||
| 626 | + soccerballo = 0xf1e3, | ||
| 627 | + sort = 0xf0dc, | ||
| 628 | + sortalphaasc = 0xf15d, | ||
| 629 | + sortalphadesc = 0xf15e, | ||
| 630 | + sortamountasc = 0xf160, | ||
| 631 | + sortamountdesc = 0xf161, | ||
| 632 | + sortasc = 0xf0de, | ||
| 633 | + sortdesc = 0xf0dd, | ||
| 634 | + sortdown = 0xf0dd, | ||
| 635 | + sortnumericasc = 0xf162, | ||
| 636 | + sortnumericdesc = 0xf163, | ||
| 637 | + sortup = 0xf0de, | ||
| 638 | + soundcloud = 0xf1be, | ||
| 639 | + spaceshuttle = 0xf197, | ||
| 640 | + spinner = 0xf110, | ||
| 641 | + spoon = 0xf1b1, | ||
| 642 | + spotify = 0xf1bc, | ||
| 643 | + square = 0xf0c8, | ||
| 644 | + squareo = 0xf096, | ||
| 645 | + stackexchange = 0xf18d, | ||
| 646 | + stackoverflow = 0xf16c, | ||
| 647 | + star = 0xf005, | ||
| 648 | + starhalf = 0xf089, | ||
| 649 | + starhalfempty = 0xf123, | ||
| 650 | + starhalffull = 0xf123, | ||
| 651 | + starhalfo = 0xf123, | ||
| 652 | + staro = 0xf006, | ||
| 653 | + steam = 0xf1b6, | ||
| 654 | + steamsquare = 0xf1b7, | ||
| 655 | + stepbackward = 0xf048, | ||
| 656 | + stepforward = 0xf051, | ||
| 657 | + stethoscope = 0xf0f1, | ||
| 658 | + stickynote = 0xf249, | ||
| 659 | + stickynoteo = 0xf24a, | ||
| 660 | + stop = 0xf04d, | ||
| 661 | + stopcircle = 0xf28d, | ||
| 662 | + stopcircleo = 0xf28e, | ||
| 663 | + streetview = 0xf21d, | ||
| 664 | + strikethrough = 0xf0cc, | ||
| 665 | + stumbleupon = 0xf1a4, | ||
| 666 | + stumbleuponcircle = 0xf1a3, | ||
| 667 | + subscript = 0xf12c, | ||
| 668 | + subway = 0xf239, | ||
| 669 | + suitcase = 0xf0f2, | ||
| 670 | + suno = 0xf185, | ||
| 671 | + superpowers = 0xf2dd, | ||
| 672 | + superscript = 0xf12b, | ||
| 673 | + support = 0xf1cd, | ||
| 674 | + table = 0xf0ce, | ||
| 675 | + tablet = 0xf10a, | ||
| 676 | + tachometer = 0xf0e4, | ||
| 677 | + tag = 0xf02b, | ||
| 678 | + tags = 0xf02c, | ||
| 679 | + tasks = 0xf0ae, | ||
| 680 | + taxi = 0xf1ba, | ||
| 681 | + telegram = 0xf2c6, | ||
| 682 | + television = 0xf26c, | ||
| 683 | + tencentweibo = 0xf1d5, | ||
| 684 | + terminal = 0xf120, | ||
| 685 | + textheight = 0xf034, | ||
| 686 | + textwidth = 0xf035, | ||
| 687 | + th = 0xf00a, | ||
| 688 | + thlarge = 0xf009, | ||
| 689 | + thlist = 0xf00b, | ||
| 690 | + themeisle = 0xf2b2, | ||
| 691 | + thermometer = 0xf2c7, | ||
| 692 | + thermometer0 = 0xf2cb, | ||
| 693 | + thermometer1 = 0xf2ca, | ||
| 694 | + thermometer2 = 0xf2c9, | ||
| 695 | + thermometer3 = 0xf2c8, | ||
| 696 | + thermometer4 = 0xf2c7, | ||
| 697 | + thermometerempty = 0xf2cb, | ||
| 698 | + thermometerfull = 0xf2c7, | ||
| 699 | + thermometerhalf = 0xf2c9, | ||
| 700 | + thermometerquarter = 0xf2ca, | ||
| 701 | + thermometerthreequarters = 0xf2c8, | ||
| 702 | + thumbtack = 0xf08d, | ||
| 703 | + thumbsdown = 0xf165, | ||
| 704 | + thumbsodown = 0xf088, | ||
| 705 | + thumbsoup = 0xf087, | ||
| 706 | + thumbsup = 0xf164, | ||
| 707 | + ticket = 0xf145, | ||
| 708 | + times = 0xf00d, | ||
| 709 | + timescircle = 0xf057, | ||
| 710 | + timescircleo = 0xf05c, | ||
| 711 | + timesrectangle = 0xf2d3, | ||
| 712 | + timesrectangleo = 0xf2d4, | ||
| 713 | + tint = 0xf043, | ||
| 714 | + toggledown = 0xf150, | ||
| 715 | + toggleleft = 0xf191, | ||
| 716 | + toggleoff = 0xf204, | ||
| 717 | + toggleon = 0xf205, | ||
| 718 | + toggleright = 0xf152, | ||
| 719 | + toggleup = 0xf151, | ||
| 720 | + trademark = 0xf25c, | ||
| 721 | + train = 0xf238, | ||
| 722 | + transgender = 0xf224, | ||
| 723 | + transgenderalt = 0xf225, | ||
| 724 | + trash = 0xf1f8, | ||
| 725 | + trasho = 0xf014, | ||
| 726 | + tree = 0xf1bb, | ||
| 727 | + trello = 0xf181, | ||
| 728 | + tripadvisor = 0xf262, | ||
| 729 | + trophy = 0xf091, | ||
| 730 | + truck = 0xf0d1, | ||
| 731 | + fa_try = 0xf195, | ||
| 732 | + tty = 0xf1e4, | ||
| 733 | + tumblr = 0xf173, | ||
| 734 | + tumblrsquare = 0xf174, | ||
| 735 | + turkishlira = 0xf195, | ||
| 736 | + tv = 0xf26c, | ||
| 737 | + twitch = 0xf1e8, | ||
| 738 | + twitter = 0xf099, | ||
| 739 | + twittersquare = 0xf081, | ||
| 740 | + umbrella = 0xf0e9, | ||
| 741 | + underline = 0xf0cd, | ||
| 742 | + undo = 0xf0e2, | ||
| 743 | + universalaccess = 0xf29a, | ||
| 744 | + university = 0xf19c, | ||
| 745 | + unlink = 0xf127, | ||
| 746 | + unlock = 0xf09c, | ||
| 747 | + unlockalt = 0xf13e, | ||
| 748 | + unsorted = 0xf0dc, | ||
| 749 | + upload = 0xf093, | ||
| 750 | + usb = 0xf287, | ||
| 751 | + usd = 0xf155, | ||
| 752 | + user = 0xf007, | ||
| 753 | + usercircle = 0xf2bd, | ||
| 754 | + usercircleo = 0xf2be, | ||
| 755 | + usermd = 0xf0f0, | ||
| 756 | + usero = 0xf2c0, | ||
| 757 | + userplus = 0xf234, | ||
| 758 | + usersecret = 0xf21b, | ||
| 759 | + usertimes = 0xf235, | ||
| 760 | + users = 0xf0c0, | ||
| 761 | + vcard = 0xf2bb, | ||
| 762 | + vcardo = 0xf2bc, | ||
| 763 | + venus = 0xf221, | ||
| 764 | + venusdouble = 0xf226, | ||
| 765 | + venusmars = 0xf228, | ||
| 766 | + viacoin = 0xf237, | ||
| 767 | + viadeo = 0xf2a9, | ||
| 768 | + viadeosquare = 0xf2aa, | ||
| 769 | + videocamera = 0xf03d, | ||
| 770 | + vimeo = 0xf27d, | ||
| 771 | + vimeosquare = 0xf194, | ||
| 772 | + vine = 0xf1ca, | ||
| 773 | + vk = 0xf189, | ||
| 774 | + volumecontrolphone = 0xf2a0, | ||
| 775 | + volumedown = 0xf027, | ||
| 776 | + volumeoff = 0xf026, | ||
| 777 | + volumeup = 0xf028, | ||
| 778 | + warning = 0xf071, | ||
| 779 | + wechat = 0xf1d7, | ||
| 780 | + weibo = 0xf18a, | ||
| 781 | + weixin = 0xf1d7, | ||
| 782 | + whatsapp = 0xf232, | ||
| 783 | + wheelchair = 0xf193, | ||
| 784 | + wheelchairalt = 0xf29b, | ||
| 785 | + wifi = 0xf1eb, | ||
| 786 | + wikipediaw = 0xf266, | ||
| 787 | + windowclose = 0xf2d3, | ||
| 788 | + windowcloseo = 0xf2d4, | ||
| 789 | + windowmaximize = 0xf2d0, | ||
| 790 | + windowminimize = 0xf2d1, | ||
| 791 | + windowrestore = 0xf2d2, | ||
| 792 | + windows = 0xf17a, | ||
| 793 | + won = 0xf159, | ||
| 794 | + wordpress = 0xf19a, | ||
| 795 | + wpbeginner = 0xf297, | ||
| 796 | + wpexplorer = 0xf2de, | ||
| 797 | + wpforms = 0xf298, | ||
| 798 | + wrench = 0xf0ad, | ||
| 799 | + xing = 0xf168, | ||
| 800 | + xingsquare = 0xf169, | ||
| 801 | + ycombinator = 0xf23b, | ||
| 802 | + ycombinatorsquare = 0xf1d4, | ||
| 803 | + yahoo = 0xf19e, | ||
| 804 | + yc = 0xf23b, | ||
| 805 | + ycsquare = 0xf1d4, | ||
| 806 | + yelp = 0xf1e9, | ||
| 807 | + yen = 0xf157, | ||
| 808 | + yoast = 0xf2b1, | ||
| 809 | + youtube = 0xf167, | ||
| 810 | + youtubeplay = 0xf16a, | ||
| 811 | + youtubesquare = 0xf166 | ||
| 812 | + }; | ||
| 813 | +} | ||
| 814 | + | ||
| 815 | + | ||
| 816 | + | ||
| 817 | +//--------------------------------------------------------------------------------------- | ||
| 818 | + | ||
| 819 | +class QtAwesomeIconPainter; | ||
| 820 | + | ||
| 821 | +/// The main class for managing icons | ||
| 822 | +/// This class requires a 2-phase construction. You must first create the class and then initialize it via an init* method | ||
| 823 | +class QtAwesome : public QObject | ||
| 824 | +{ | ||
| 825 | +Q_OBJECT | ||
| 826 | + | ||
| 827 | +public: | ||
| 828 | + | ||
| 829 | + explicit QtAwesome(QObject *parent = 0); | ||
| 830 | + virtual ~QtAwesome(); | ||
| 831 | + | ||
| 832 | + void init( const QString& fontname ); | ||
| 833 | + bool initFontAwesome(); | ||
| 834 | + | ||
| 835 | + void addNamedCodepoint( const QString& name, int codePoint ); | ||
| 836 | + QHash<QString,int> namedCodePoints() { return namedCodepoints_; } | ||
| 837 | + | ||
| 838 | + void setDefaultOption( const QString& name, const QVariant& value ); | ||
| 839 | + QVariant defaultOption( const QString& name ); | ||
| 840 | + | ||
| 841 | + QIcon icon( int character, const QVariantMap& options = QVariantMap() ); | ||
| 842 | + QIcon icon( const QString& name, const QVariantMap& options = QVariantMap() ); | ||
| 843 | + QIcon icon(QtAwesomeIconPainter* painter, const QVariantMap& optionMap = QVariantMap() ); | ||
| 844 | + | ||
| 845 | + void give( const QString& name, QtAwesomeIconPainter* painter ); | ||
| 846 | + | ||
| 847 | + QFont font( int size ); | ||
| 848 | + | ||
| 849 | + /// Returns the font-name that is used as icon-map | ||
| 850 | + QString fontName() { return fontName_ ; } | ||
| 851 | + | ||
| 852 | +private: | ||
| 853 | + QString fontName_; ///< The font name used for this map | ||
| 854 | + QHash<QString,int> namedCodepoints_; ///< A map with names mapped to code-points | ||
| 855 | + | ||
| 856 | + QHash<QString, QtAwesomeIconPainter*> painterMap_; ///< A map of custom painters | ||
| 857 | + QVariantMap defaultOptions_; ///< The default icon options | ||
| 858 | + QtAwesomeIconPainter* fontIconPainter_; ///< A special painter fo painting codepoints | ||
| 859 | +}; | ||
| 860 | + | ||
| 861 | + | ||
| 862 | +//--------------------------------------------------------------------------------------- | ||
| 863 | + | ||
| 864 | + | ||
| 865 | +/// The QtAwesomeIconPainter is a specialized painter for painting icons | ||
| 866 | +/// your can implement an iconpainter to create custom font-icon code | ||
| 867 | +class QtAwesomeIconPainter | ||
| 868 | +{ | ||
| 869 | +public: | ||
| 870 | + virtual ~QtAwesomeIconPainter() {} | ||
| 871 | + virtual void paint( QtAwesome* awesome, QPainter* painter, const QRect& rect, QIcon::Mode mode, QIcon::State state, const QVariantMap& options ) = 0; | ||
| 872 | +}; | ||
| 873 | + | ||
| 874 | +Q_DECLARE_METATYPE(QtAwesomeAnimation*) | ||
| 875 | + | ||
| 876 | +extern QtAwesome* iconFont; | ||
| 877 | + | ||
| 878 | +#endif // QTAWESOME_H |
openhantek/src/iconfont/QtAwesomeAnim.cpp
0 → 100644
| 1 | +#include "QtAwesomeAnim.h" | ||
| 2 | + | ||
| 3 | +#include <QPainter> | ||
| 4 | +#include <QRect> | ||
| 5 | +#include <QTimer> | ||
| 6 | +#include <QWidget> | ||
| 7 | +#include <cmath> | ||
| 8 | + | ||
| 9 | +QtAwesomeAnimation::QtAwesomeAnimation(QWidget *parentWidget, int interval, double step) | ||
| 10 | + : parentWidgetRef_(parentWidget), timer_(0), interval_(interval), step_(step), angle_(0.0f) {} | ||
| 11 | + | ||
| 12 | +void QtAwesomeAnimation::setup(QPainter &painter, const QRect &rect) { | ||
| 13 | + // first time set the timer | ||
| 14 | + if (!timer_) { | ||
| 15 | + timer_ = new QTimer(); | ||
| 16 | + connect(timer_, SIGNAL(timeout()), this, SLOT(update())); | ||
| 17 | + timer_->start(interval_); | ||
| 18 | + } else { | ||
| 19 | + QPen pen = painter.pen(); | ||
| 20 | + pen.setWidth(2); | ||
| 21 | + pen.setColor(QColor(Qt::gray)); | ||
| 22 | + painter.setPen(pen); | ||
| 23 | + double val = 1 + sin(angle_) / 2; | ||
| 24 | + if (val >= 0.5) | ||
| 25 | + painter.drawArc(rect, 0 * 16, 16 * (360 - (val - 0.5) * 2 * 360)); | ||
| 26 | + else | ||
| 27 | + painter.drawArc(rect, 0 * 16, 16 * (val * 2) * 360); | ||
| 28 | + } | ||
| 29 | +} | ||
| 30 | + | ||
| 31 | +void QtAwesomeAnimation::update() { | ||
| 32 | + angle_ += step_; | ||
| 33 | + parentWidgetRef_->update(); | ||
| 34 | +} |
openhantek/src/iconfont/QtAwesomeAnim.h
0 → 100644
| 1 | +#ifndef QTAWESOMEANIMATION_H | ||
| 2 | +#define QTAWESOMEANIMATION_H | ||
| 3 | + | ||
| 4 | +#include <QObject> | ||
| 5 | + | ||
| 6 | +class QPainter; | ||
| 7 | +class QRect; | ||
| 8 | +class QTimer; | ||
| 9 | +class QWidget; | ||
| 10 | + | ||
| 11 | +/// | ||
| 12 | +/// Basic Animation Support for QtAwesome (Inspired by https://github.com/spyder-ide/qtawesome) | ||
| 13 | +/// | ||
| 14 | +class QtAwesomeAnimation : public QObject | ||
| 15 | +{ | ||
| 16 | +Q_OBJECT | ||
| 17 | + | ||
| 18 | +public: | ||
| 19 | + QtAwesomeAnimation( QWidget* parentWidget, int interval=20, double step=0.01); | ||
| 20 | + | ||
| 21 | + void setup( QPainter& painter, const QRect& rect ); | ||
| 22 | + | ||
| 23 | +public slots: | ||
| 24 | + void update(); | ||
| 25 | + | ||
| 26 | +private: | ||
| 27 | + QWidget* parentWidgetRef_; | ||
| 28 | + QTimer* timer_; | ||
| 29 | + int interval_; | ||
| 30 | + double step_; | ||
| 31 | + double angle_; | ||
| 32 | + | ||
| 33 | +}; | ||
| 34 | + | ||
| 35 | + | ||
| 36 | +#endif // QTAWESOMEANIMATION_H |
openhantek/src/mainwindow.cpp
| 1 | #include "mainwindow.h" | 1 | #include "mainwindow.h" |
| 2 | +#include "iconfont/QtAwesome.h" | ||
| 2 | #include "ui_mainwindow.h" | 3 | #include "ui_mainwindow.h" |
| 3 | 4 | ||
| 4 | #include "HorizontalDock.h" | 5 | #include "HorizontalDock.h" |
| @@ -11,6 +12,8 @@ | @@ -11,6 +12,8 @@ | ||
| 11 | #include "dockwindows.h" | 12 | #include "dockwindows.h" |
| 12 | #include "dsomodel.h" | 13 | #include "dsomodel.h" |
| 13 | #include "dsowidget.h" | 14 | #include "dsowidget.h" |
| 15 | +#include "exporting/exporterinterface.h" | ||
| 16 | +#include "exporting/exporterregistry.h" | ||
| 14 | #include "hantekdsocontrol.h" | 17 | #include "hantekdsocontrol.h" |
| 15 | #include "usb/usbdevice.h" | 18 | #include "usb/usbdevice.h" |
| 16 | #include "viewconstants.h" | 19 | #include "viewconstants.h" |
| @@ -21,20 +24,43 @@ | @@ -21,20 +24,43 @@ | ||
| 21 | #include <QLineEdit> | 24 | #include <QLineEdit> |
| 22 | #include <QMessageBox> | 25 | #include <QMessageBox> |
| 23 | 26 | ||
| 24 | -MainWindow::MainWindow(HantekDsoControl *dsoControl, DsoSettings *settings, QWidget *parent) | ||
| 25 | - : QMainWindow(parent), ui(new Ui::MainWindow), mSettings(settings) { | 27 | +MainWindow::MainWindow(HantekDsoControl *dsoControl, DsoSettings *settings, ExporterRegistry *exporterRegistry, |
| 28 | + QWidget *parent) | ||
| 29 | + : QMainWindow(parent), ui(new Ui::MainWindow), mSettings(settings), exporterRegistry(exporterRegistry) { | ||
| 26 | ui->setupUi(this); | 30 | ui->setupUi(this); |
| 31 | + ui->actionSave->setIcon(iconFont->icon(fa::save)); | ||
| 32 | + ui->actionAbout->setIcon(iconFont->icon(fa::questioncircle)); | ||
| 33 | + ui->actionOpen->setIcon(iconFont->icon(fa::folderopen)); | ||
| 34 | + ui->actionSampling->setIcon(iconFont->icon(fa::pause, | ||
| 35 | + {std::make_pair("text-selected-off", QChar(fa::play)), | ||
| 36 | + std::make_pair("text-off", QChar(fa::play)), | ||
| 37 | + std::make_pair("text-active-off", QChar(fa::play))})); | ||
| 38 | + ui->actionSettings->setIcon(iconFont->icon(fa::gear)); | ||
| 39 | + ui->actionManualCommand->setIcon(iconFont->icon(fa::edit)); | ||
| 40 | + ui->actionDigital_phosphor->setIcon(QIcon(":/images/digitalphosphor.svg")); | ||
| 41 | + ui->actionZoom->setIcon(iconFont->icon(fa::crop)); | ||
| 27 | 42 | ||
| 28 | // Window title | 43 | // Window title |
| 29 | setWindowIcon(QIcon(":openhantek.png")); | 44 | setWindowIcon(QIcon(":openhantek.png")); |
| 30 | - setWindowTitle(tr("OpenHantek - Device %1 - Renderer %2") | ||
| 31 | - .arg(QString::fromStdString(dsoControl->getDevice()->getModel()->name)) | ||
| 32 | - .arg(QSurfaceFormat::defaultFormat().renderableType()==QSurfaceFormat::OpenGL?"OpenGL":"OpenGL ES")); | 45 | + setWindowTitle( |
| 46 | + tr("OpenHantek - Device %1 - Renderer %2") | ||
| 47 | + .arg(QString::fromStdString(dsoControl->getDevice()->getModel()->name)) | ||
| 48 | + .arg(QSurfaceFormat::defaultFormat().renderableType() == QSurfaceFormat::OpenGL ? "OpenGL" : "OpenGL ES")); | ||
| 33 | 49 | ||
| 34 | #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) | 50 | #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) |
| 35 | setDockOptions(dockOptions() | QMainWindow::GroupedDragging); | 51 | setDockOptions(dockOptions() | QMainWindow::GroupedDragging); |
| 36 | #endif | 52 | #endif |
| 37 | 53 | ||
| 54 | + for (auto *exporter : *exporterRegistry) { | ||
| 55 | + QAction *action = new QAction(exporter->icon(), exporter->name(), this); | ||
| 56 | + action->setCheckable(exporter->type() == ExporterInterface::Type::ContinousExport); | ||
| 57 | + connect(action, &QAction::triggered, [exporter, exporterRegistry](bool checked) { | ||
| 58 | + exporterRegistry->setExporterEnabled( | ||
| 59 | + exporter, exporter->type() == ExporterInterface::Type::ContinousExport ? checked : true); | ||
| 60 | + }); | ||
| 61 | + ui->menuExport->addAction(action); | ||
| 62 | + } | ||
| 63 | + | ||
| 38 | DsoSettingsScope *scope = &(mSettings->scope); | 64 | DsoSettingsScope *scope = &(mSettings->scope); |
| 39 | const Dso::ControlSpecification *spec = dsoControl->getDevice()->getModel()->spec(); | 65 | const Dso::ControlSpecification *spec = dsoControl->getDevice()->getModel()->spec(); |
| 40 | 66 | ||
| @@ -166,22 +192,19 @@ MainWindow::MainWindow(HantekDsoControl *dsoControl, DsoSettings *settings, QWid | @@ -166,22 +192,19 @@ MainWindow::MainWindow(HantekDsoControl *dsoControl, DsoSettings *settings, QWid | ||
| 166 | connect(spectrumDock, &SpectrumDock::magnitudeChanged, dsoWidget, &DsoWidget::updateSpectrumMagnitude); | 192 | connect(spectrumDock, &SpectrumDock::magnitudeChanged, dsoWidget, &DsoWidget::updateSpectrumMagnitude); |
| 167 | 193 | ||
| 168 | // Started/stopped signals from oscilloscope | 194 | // Started/stopped signals from oscilloscope |
| 169 | - connect(dsoControl, &HantekDsoControl::samplingStarted, [this, dsoControl]() { | ||
| 170 | - this->ui->actionSampling->setText(tr("&Stop")); | ||
| 171 | - this->ui->actionSampling->setIcon(QIcon(":actions/stop.png")); | ||
| 172 | - this->ui->actionSampling->setStatusTip(tr("Stop the oscilloscope")); | ||
| 173 | - | ||
| 174 | - disconnect(this->ui->actionSampling, &QAction::triggered, dsoControl, &HantekDsoControl::startSampling); | ||
| 175 | - connect(this->ui->actionSampling, &QAction::triggered, dsoControl, &HantekDsoControl::stopSampling); | ||
| 176 | - }); | ||
| 177 | - connect(dsoControl, &HantekDsoControl::samplingStopped, [this, dsoControl]() { | ||
| 178 | - this->ui->actionSampling->setText(tr("&Start")); | ||
| 179 | - this->ui->actionSampling->setIcon(QIcon(":actions/start.png")); | ||
| 180 | - this->ui->actionSampling->setStatusTip(tr("Start the oscilloscope")); | ||
| 181 | - | ||
| 182 | - disconnect(this->ui->actionSampling, &QAction::triggered, dsoControl, &HantekDsoControl::stopSampling); | ||
| 183 | - connect(this->ui->actionSampling, &QAction::triggered, dsoControl, &HantekDsoControl::startSampling); | 195 | + connect(dsoControl, &HantekDsoControl::samplingStatusChanged, [this, dsoControl](bool enabled) { |
| 196 | + QSignalBlocker blocker(this->ui->actionSampling); | ||
| 197 | + if (enabled) { | ||
| 198 | + this->ui->actionSampling->setText(tr("&Stop")); | ||
| 199 | + this->ui->actionSampling->setStatusTip(tr("Stop the oscilloscope")); | ||
| 200 | + } else { | ||
| 201 | + this->ui->actionSampling->setText(tr("&Start")); | ||
| 202 | + this->ui->actionSampling->setStatusTip(tr("Start the oscilloscope")); | ||
| 203 | + } | ||
| 204 | + this->ui->actionSampling->setChecked(enabled); | ||
| 184 | }); | 205 | }); |
| 206 | + connect(this->ui->actionSampling, &QAction::triggered, dsoControl, &HantekDsoControl::enableSampling); | ||
| 207 | + this->ui->actionSampling->setChecked(dsoControl->isSampling()); | ||
| 185 | 208 | ||
| 186 | connect(dsoControl, &HantekDsoControl::availableRecordLengthsChanged, horizontalDock, | 209 | connect(dsoControl, &HantekDsoControl::availableRecordLengthsChanged, horizontalDock, |
| 187 | &HorizontalDock::setAvailableRecordLengths); | 210 | &HorizontalDock::setAvailableRecordLengths); |
| @@ -211,16 +234,6 @@ MainWindow::MainWindow(HantekDsoControl *dsoControl, DsoSettings *settings, QWid | @@ -211,16 +234,6 @@ MainWindow::MainWindow(HantekDsoControl *dsoControl, DsoSettings *settings, QWid | ||
| 211 | mSettings->save(); | 234 | mSettings->save(); |
| 212 | }); | 235 | }); |
| 213 | 236 | ||
| 214 | - connect(ui->actionPrint, &QAction::triggered, [this, spec]() { | ||
| 215 | - this->dsoWidget->setExporterForNextFrame( | ||
| 216 | - std::unique_ptr<Exporter>(Exporter::createPrintExporter(spec, this->mSettings))); | ||
| 217 | - }); | ||
| 218 | - | ||
| 219 | - connect(ui->actionExport, &QAction::triggered, [this, spec]() { | ||
| 220 | - this->dsoWidget->setExporterForNextFrame( | ||
| 221 | - std::unique_ptr<Exporter>(Exporter::createSaveToFileExporter(spec, this->mSettings))); | ||
| 222 | - }); | ||
| 223 | - | ||
| 224 | connect(ui->actionExit, &QAction::triggered, this, &QWidget::close); | 237 | connect(ui->actionExit, &QAction::triggered, this, &QWidget::close); |
| 225 | 238 | ||
| 226 | connect(ui->actionSettings, &QAction::triggered, [this]() { | 239 | connect(ui->actionSettings, &QAction::triggered, [this]() { |
| @@ -280,6 +293,12 @@ MainWindow::~MainWindow() { delete ui; } | @@ -280,6 +293,12 @@ MainWindow::~MainWindow() { delete ui; } | ||
| 280 | 293 | ||
| 281 | void MainWindow::showNewData(std::shared_ptr<PPresult> data) { dsoWidget->showNew(data); } | 294 | void MainWindow::showNewData(std::shared_ptr<PPresult> data) { dsoWidget->showNew(data); } |
| 282 | 295 | ||
| 296 | +void MainWindow::exporterStatusChanged(const QString &exporterName, const QString &status) { | ||
| 297 | + ui->statusbar->showMessage(tr("%1: %2").arg(exporterName).arg(status)); | ||
| 298 | +} | ||
| 299 | + | ||
| 300 | +void MainWindow::exporterProgressChanged() { exporterRegistry->checkForWaitingExporters(); } | ||
| 301 | + | ||
| 283 | /// \brief Save the settings before exiting. | 302 | /// \brief Save the settings before exiting. |
| 284 | /// \param event The close event that should be handled. | 303 | /// \param event The close event that should be handled. |
| 285 | void MainWindow::closeEvent(QCloseEvent *event) { | 304 | void MainWindow::closeEvent(QCloseEvent *event) { |
openhantek/src/mainwindow.h
| 1 | #pragma once | 1 | #pragma once |
| 2 | +#include "post/ppresult.h" | ||
| 2 | #include <QMainWindow> | 3 | #include <QMainWindow> |
| 3 | #include <memory> | 4 | #include <memory> |
| 4 | -#include "post/ppresult.h" | ||
| 5 | 5 | ||
| 6 | class SpectrumGenerator; | 6 | class SpectrumGenerator; |
| 7 | class HantekDsoControl; | 7 | class HantekDsoControl; |
| 8 | class DsoSettings; | 8 | class DsoSettings; |
| 9 | +class ExporterRegistry; | ||
| 9 | class DsoWidget; | 10 | class DsoWidget; |
| 10 | class HorizontalDock; | 11 | class HorizontalDock; |
| 11 | class TriggerDock; | 12 | class TriggerDock; |
| @@ -19,19 +20,22 @@ class MainWindow; | @@ -19,19 +20,22 @@ class MainWindow; | ||
| 19 | /// \brief The main window of the application. | 20 | /// \brief The main window of the application. |
| 20 | /// The main window contains the classic oszilloscope-screen and the gui | 21 | /// The main window contains the classic oszilloscope-screen and the gui |
| 21 | /// elements used to control the oszilloscope. | 22 | /// elements used to control the oszilloscope. |
| 22 | -class MainWindow : public QMainWindow | ||
| 23 | -{ | 23 | +class MainWindow : public QMainWindow { |
| 24 | Q_OBJECT | 24 | Q_OBJECT |
| 25 | 25 | ||
| 26 | -public: | ||
| 27 | - explicit MainWindow(HantekDsoControl *dsoControl, DsoSettings *mSettings, QWidget *parent = 0); | 26 | + public: |
| 27 | + explicit MainWindow(HantekDsoControl *dsoControl, DsoSettings *mSettings, ExporterRegistry *exporterRegistry, | ||
| 28 | + QWidget *parent = 0); | ||
| 28 | ~MainWindow(); | 29 | ~MainWindow(); |
| 29 | -public slots: | 30 | + public slots: |
| 30 | void showNewData(std::shared_ptr<PPresult> data); | 31 | void showNewData(std::shared_ptr<PPresult> data); |
| 32 | + void exporterStatusChanged(const QString &exporterName, const QString &status); | ||
| 33 | + void exporterProgressChanged(); | ||
| 31 | 34 | ||
| 32 | -protected: | 35 | + protected: |
| 33 | void closeEvent(QCloseEvent *event) override; | 36 | void closeEvent(QCloseEvent *event) override; |
| 34 | -private: | 37 | + |
| 38 | + private: | ||
| 35 | Ui::MainWindow *ui; | 39 | Ui::MainWindow *ui; |
| 36 | 40 | ||
| 37 | // Central widgets | 41 | // Central widgets |
| @@ -39,4 +43,5 @@ private: | @@ -39,4 +43,5 @@ private: | ||
| 39 | 43 | ||
| 40 | // Settings used for the whole program | 44 | // Settings used for the whole program |
| 41 | DsoSettings *mSettings; | 45 | DsoSettings *mSettings; |
| 46 | + ExporterRegistry *exporterRegistry; | ||
| 42 | }; | 47 | }; |
openhantek/src/mainwindow.ui
| @@ -31,9 +31,6 @@ | @@ -31,9 +31,6 @@ | ||
| 31 | <addaction name="actionSave"/> | 31 | <addaction name="actionSave"/> |
| 32 | <addaction name="actionSave_as"/> | 32 | <addaction name="actionSave_as"/> |
| 33 | <addaction name="separator"/> | 33 | <addaction name="separator"/> |
| 34 | - <addaction name="actionPrint"/> | ||
| 35 | - <addaction name="actionExport"/> | ||
| 36 | - <addaction name="separator"/> | ||
| 37 | <addaction name="actionExit"/> | 34 | <addaction name="actionExit"/> |
| 38 | </widget> | 35 | </widget> |
| 39 | <widget class="QMenu" name="menuView"> | 36 | <widget class="QMenu" name="menuView"> |
| @@ -58,7 +55,13 @@ | @@ -58,7 +55,13 @@ | ||
| 58 | </property> | 55 | </property> |
| 59 | <addaction name="actionAbout"/> | 56 | <addaction name="actionAbout"/> |
| 60 | </widget> | 57 | </widget> |
| 58 | + <widget class="QMenu" name="menuExport"> | ||
| 59 | + <property name="title"> | ||
| 60 | + <string>Export</string> | ||
| 61 | + </property> | ||
| 62 | + </widget> | ||
| 61 | <addaction name="menuFile"/> | 63 | <addaction name="menuFile"/> |
| 64 | + <addaction name="menuExport"/> | ||
| 62 | <addaction name="menuView"/> | 65 | <addaction name="menuView"/> |
| 63 | <addaction name="menuOscilloscope"/> | 66 | <addaction name="menuOscilloscope"/> |
| 64 | <addaction name="menuHelp"/> | 67 | <addaction name="menuHelp"/> |
| @@ -76,73 +79,34 @@ | @@ -76,73 +79,34 @@ | ||
| 76 | </attribute> | 79 | </attribute> |
| 77 | <addaction name="actionOpen"/> | 80 | <addaction name="actionOpen"/> |
| 78 | <addaction name="actionSave"/> | 81 | <addaction name="actionSave"/> |
| 79 | - <addaction name="actionSave_as"/> | ||
| 80 | - <addaction name="separator"/> | ||
| 81 | - <addaction name="actionPrint"/> | ||
| 82 | - <addaction name="actionExport"/> | ||
| 83 | <addaction name="separator"/> | 82 | <addaction name="separator"/> |
| 84 | <addaction name="actionSampling"/> | 83 | <addaction name="actionSampling"/> |
| 85 | <addaction name="separator"/> | 84 | <addaction name="separator"/> |
| 86 | <addaction name="actionDigital_phosphor"/> | 85 | <addaction name="actionDigital_phosphor"/> |
| 87 | <addaction name="actionZoom"/> | 86 | <addaction name="actionZoom"/> |
| 87 | + <addaction name="separator"/> | ||
| 88 | </widget> | 88 | </widget> |
| 89 | <action name="actionOpen"> | 89 | <action name="actionOpen"> |
| 90 | - <property name="icon"> | ||
| 91 | - <iconset resource="../res/application.qrc"> | ||
| 92 | - <normaloff>:/actions/open.png</normaloff>:/actions/open.png</iconset> | ||
| 93 | - </property> | ||
| 94 | <property name="text"> | 90 | <property name="text"> |
| 95 | - <string>Open</string> | 91 | + <string>Open layout</string> |
| 96 | </property> | 92 | </property> |
| 97 | <property name="shortcut"> | 93 | <property name="shortcut"> |
| 98 | <string>Ctrl+O</string> | 94 | <string>Ctrl+O</string> |
| 99 | </property> | 95 | </property> |
| 100 | </action> | 96 | </action> |
| 101 | <action name="actionSave"> | 97 | <action name="actionSave"> |
| 102 | - <property name="icon"> | ||
| 103 | - <iconset resource="../res/application.qrc"> | ||
| 104 | - <normaloff>:/actions/save.png</normaloff>:/actions/save.png</iconset> | ||
| 105 | - </property> | ||
| 106 | <property name="text"> | 98 | <property name="text"> |
| 107 | - <string>Save</string> | 99 | + <string>Save layout</string> |
| 108 | </property> | 100 | </property> |
| 109 | <property name="shortcut"> | 101 | <property name="shortcut"> |
| 110 | <string>Ctrl+S</string> | 102 | <string>Ctrl+S</string> |
| 111 | </property> | 103 | </property> |
| 112 | </action> | 104 | </action> |
| 113 | <action name="actionSave_as"> | 105 | <action name="actionSave_as"> |
| 114 | - <property name="icon"> | ||
| 115 | - <iconset resource="../res/application.qrc"> | ||
| 116 | - <normaloff>:/actions/save-as.png</normaloff>:/actions/save-as.png</iconset> | ||
| 117 | - </property> | ||
| 118 | <property name="text"> | 106 | <property name="text"> |
| 119 | <string>Save as ...</string> | 107 | <string>Save as ...</string> |
| 120 | </property> | 108 | </property> |
| 121 | </action> | 109 | </action> |
| 122 | - <action name="actionPrint"> | ||
| 123 | - <property name="icon"> | ||
| 124 | - <iconset resource="../res/application.qrc"> | ||
| 125 | - <normaloff>:/actions/print.png</normaloff>:/actions/print.png</iconset> | ||
| 126 | - </property> | ||
| 127 | - <property name="text"> | ||
| 128 | - <string>Print</string> | ||
| 129 | - </property> | ||
| 130 | - <property name="shortcut"> | ||
| 131 | - <string>Ctrl+P</string> | ||
| 132 | - </property> | ||
| 133 | - </action> | ||
| 134 | - <action name="actionExport"> | ||
| 135 | - <property name="icon"> | ||
| 136 | - <iconset resource="../res/application.qrc"> | ||
| 137 | - <normaloff>:/actions/export-as.png</normaloff>:/actions/export-as.png</iconset> | ||
| 138 | - </property> | ||
| 139 | - <property name="text"> | ||
| 140 | - <string>Export as ...</string> | ||
| 141 | - </property> | ||
| 142 | - <property name="shortcut"> | ||
| 143 | - <string>Ctrl+E</string> | ||
| 144 | - </property> | ||
| 145 | - </action> | ||
| 146 | <action name="actionExit"> | 110 | <action name="actionExit"> |
| 147 | <property name="text"> | 111 | <property name="text"> |
| 148 | <string>Exit</string> | 112 | <string>Exit</string> |
| @@ -152,10 +116,6 @@ | @@ -152,10 +116,6 @@ | ||
| 152 | <property name="checkable"> | 116 | <property name="checkable"> |
| 153 | <bool>true</bool> | 117 | <bool>true</bool> |
| 154 | </property> | 118 | </property> |
| 155 | - <property name="icon"> | ||
| 156 | - <iconset resource="../res/application.qrc"> | ||
| 157 | - <normaloff>:/actions/digitalphosphor.png</normaloff>:/actions/digitalphosphor.png</iconset> | ||
| 158 | - </property> | ||
| 159 | <property name="text"> | 119 | <property name="text"> |
| 160 | <string>Digital phosphor</string> | 120 | <string>Digital phosphor</string> |
| 161 | </property> | 121 | </property> |
| @@ -164,10 +124,6 @@ | @@ -164,10 +124,6 @@ | ||
| 164 | <property name="checkable"> | 124 | <property name="checkable"> |
| 165 | <bool>true</bool> | 125 | <bool>true</bool> |
| 166 | </property> | 126 | </property> |
| 167 | - <property name="icon"> | ||
| 168 | - <iconset resource="../res/application.qrc"> | ||
| 169 | - <normaloff>:/actions/zoom.png</normaloff>:/actions/zoom.png</iconset> | ||
| 170 | - </property> | ||
| 171 | <property name="text"> | 127 | <property name="text"> |
| 172 | <string>Zoom</string> | 128 | <string>Zoom</string> |
| 173 | </property> | 129 | </property> |
| @@ -196,11 +152,6 @@ | @@ -196,11 +152,6 @@ | ||
| 196 | <property name="checkable"> | 152 | <property name="checkable"> |
| 197 | <bool>true</bool> | 153 | <bool>true</bool> |
| 198 | </property> | 154 | </property> |
| 199 | - <property name="icon"> | ||
| 200 | - <iconset resource="../res/application.qrc"> | ||
| 201 | - <normaloff>:/actions/stop.png</normaloff> | ||
| 202 | - <normalon>:/actions/start.png</normalon>:/actions/stop.png</iconset> | ||
| 203 | - </property> | ||
| 204 | <property name="text"> | 155 | <property name="text"> |
| 205 | <string>Sampling</string> | 156 | <string>Sampling</string> |
| 206 | </property> | 157 | </property> |
| @@ -217,8 +168,6 @@ | @@ -217,8 +168,6 @@ | ||
| 217 | </property> | 168 | </property> |
| 218 | </action> | 169 | </action> |
| 219 | </widget> | 170 | </widget> |
| 220 | - <resources> | ||
| 221 | - <include location="../res/application.qrc"/> | ||
| 222 | - </resources> | 171 | + <resources/> |
| 223 | <connections/> | 172 | <connections/> |
| 224 | </ui> | 173 | </ui> |