62 #include <common/glew_wrappers.hh>
76 #include <sys/types.h>
77 #include <sys/sysctl.h>
82 #define GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX 0x9048
83 #define GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX 0x9049
93 if ( OpenFlipper::Options::nogui() )
103 QTextEdit* tmp =
new QTextEdit();
104 tmp->insertHtml( it.value() );
114 QFont standardFont =
aboutWidget_->OpenFlipperAbout->currentFont();
115 QFont boldFont = standardFont;
116 boldFont.setBold(
true);
118 aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
119 aboutWidget_->OpenFlipperAbout->append(tr(
"%1 Core Version: %2",
"PRODUCT_NAME Core Version:").arg(
TOSTRING(PRODUCT_NAME)).arg(OpenFlipper::Options::coreVersion()) ) ;
120 aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
126 aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
128 aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
131 QDir tempDir = QDir(OpenFlipper::Options::applicationDir());
132 #ifdef OPENFLIPPER_DATADIR
133 tempDir.cd(OPENFLIPPER_DATADIR);
135 aboutWidget_->OpenFlipperAbout->append(
"Data:\t " + tempDir.absolutePath() );
136 aboutWidget_->OpenFlipperAbout->append(
"Shaders:\t " + OpenFlipper::Options::shaderDirStr() );
137 aboutWidget_->OpenFlipperAbout->append(
"Textures:\t " + OpenFlipper::Options::textureDirStr() );
138 aboutWidget_->OpenFlipperAbout->append(
"Scripts:\t " + OpenFlipper::Options::scriptDirStr() );
139 aboutWidget_->OpenFlipperAbout->append(
"Icons:\t " + OpenFlipper::Options::iconDirStr() );
140 aboutWidget_->OpenFlipperAbout->append(
"Fonts:\t" + OpenFlipper::Options::fontsDirStr() );
141 aboutWidget_->OpenFlipperAbout->append(
"Help:\t" + OpenFlipper::Options::helpDirStr() );
148 aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
149 aboutWidget_->OpenFlipperAbout->append(tr(
"%1 configuration files:").arg(
TOSTRING(PRODUCT_NAME)));
150 aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
152 aboutWidget_->OpenFlipperAbout->append(tr(
"ConfigDir:\t\t\t") + OpenFlipper::Options::configDirStr() );
153 aboutWidget_->OpenFlipperAbout->append(tr(
"Window states:\t\t") + OpenFlipper::Options::configDirStr() + OpenFlipper::Options::dirSeparator() +
"WindowStates.dat");
156 aboutWidget_->OpenFlipperAbout->append(tr(
"Additional option files:"));
157 for (
int i = 0 ; i < OpenFlipper::Options::optionFiles().size() ; ++i)
158 aboutWidget_->OpenFlipperAbout->append(OpenFlipper::Options::optionFiles()[i]);
167 aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
168 aboutWidget_->OpenFlipperAbout->append(tr(
"Memory Information:"));
169 aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
177 ms.dwLength =
sizeof (ms);
180 GlobalMemoryStatusEx(&ms);
183 aboutWidget_->OpenFlipperAbout->append(tr(
"Physical Memory:\t")+ QString::number(ms.ullAvailPhys/1024/1024) +
"MB/"+
184 QString::number(ms.ullTotalPhys/1024/1024) +
"MB free ("+
185 QString::number(ms.dwMemoryLoad) +
"%)");
186 aboutWidget_->OpenFlipperAbout->append(tr(
"Pagefile Memory:\t")+ QString::number(ms.ullAvailPageFile/1024/1024) +
"MB/"
187 + QString::number(ms.ullTotalPageFile/1024/1024) +
"MB free");
190 #elif defined ARCH_DARWIN
192 aboutWidget_->OpenFlipperAbout->append(tr(
"Not available for this platform (MacOS)"));
196 unsigned long memory = 0;
198 struct mallinfo info;
202 memory += info.hblkhd;
205 memory += info.uordblks;
207 double mmapAllocated = double(info.hblkhd ) / 1024 / 1024;
208 double sbrkAllocated = double(info.uordblks) / 1024 / 1024;
209 double totalAllocated = double(memory) / 1024 / 1024;
211 double pageSize = double(getpagesize()) /1024 ;
212 double availablePages = double( sysconf (_SC_AVPHYS_PAGES) );
213 double freeMem = availablePages * pageSize / 1024;
215 aboutWidget_->OpenFlipperAbout->append(tr(
"Total Memory allocated:\t ") + QString::number(totalAllocated,
'f' ,2 ) + tr(
"MB ")
216 + tr(
"( mmap: ") + QString::number(mmapAllocated ,
'f' ,2 ) + tr(
"MB")
217 + tr(
", sbrk: ") + QString::number(sbrkAllocated ,
'f' ,2 ) + tr(
"MB )") );
219 aboutWidget_->OpenFlipperAbout->append(tr(
"Free Memory:\t\t ") + QString::number(freeMem,
'f' ,2 ) + tr(
"MB ")
220 + tr(
"(") + QString::number(availablePages,
'f' ,0 ) + tr(
" pages of ")
221 + QString::number(pageSize,
'f' ,2 ) + tr(
"KB size)"));
229 aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
230 aboutWidget_->OpenFlipperAbout->append(tr(
"CPU Information:"));
231 aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
235 QSettings registryCPU(
"HKEY_LOCAL_MACHINE\\HARDWARE\\DESCRIPTION\\System\\CentralProcessor", QSettings::NativeFormat);
237 QStringList cpus = registryCPU.childGroups();
238 if ( cpus.size() != 0 ) {
240 aboutWidget_->OpenFlipperAbout->append(tr(
"CPU vendor:\t\t ") +
241 registryCPU.value( cpus[0]+
"/VendorIdentifier",
"Unknown" ).toString() );
242 aboutWidget_->OpenFlipperAbout->append(tr(
"CPU model:\t\t ") +
243 registryCPU.value( cpus[0]+
"/ProcessorNameString",
"Unknown" ).toString() );
244 aboutWidget_->OpenFlipperAbout->append(tr(
"CPU identifier:\t\t ") +
245 registryCPU.value( cpus[0]+
"/Identifier",
"Unknown" ).toString() );
246 aboutWidget_->OpenFlipperAbout->append(tr(
"CPU Speed:\t\t ") +
247 registryCPU.value( cpus[0]+
"/~MHz",
"Unknown" ).toString()+
" MHz" );
249 aboutWidget_->OpenFlipperAbout->append(
"CPU Cores:\t\t " + QString::number(cpus.size()));
252 aboutWidget_->OpenFlipperAbout->append(tr(
"Unable to retrieve CPU information"));
255 #elif defined ARCH_DARWIN
262 sysctlbyname(
"machdep.cpu.brand_string", NULL, &lenCPU, NULL, 0);
265 pCPU = (
char * )malloc(lenCPU);
268 sysctlbyname(
"machdep.cpu.brand_string", pCPU, &lenCPU, NULL, 0);
271 aboutWidget_->OpenFlipperAbout->append(tr(
"CPU Brand:\t\t ") + QString(pCPU) );
276 int physicalCPUS = 0;
279 lenCPU =
sizeof(int);
280 sysctlbyname(
"hw.physicalcpu", &physicalCPUS, &lenCPU , NULL, 0);
283 aboutWidget_->OpenFlipperAbout->append(tr(
"Physical Cores:\t\t ") + QString::number(physicalCPUS) );
288 lenCPU =
sizeof(int);
289 sysctlbyname(
"hw.logicalcpu", &logicalCPUS, &lenCPU, NULL, 0);
292 aboutWidget_->OpenFlipperAbout->append(tr(
"LogicalCores:\t\t ") + QString::number(logicalCPUS) );
295 QFile cpuinfo(
"/proc/cpuinfo");
296 if (! cpuinfo.exists() )
297 aboutWidget_->OpenFlipperAbout->append(tr(
"Unable to retrieve CPU information"));
300 cpuinfo.open(QFile::ReadOnly);
301 QTextStream stream(&cpuinfo);
302 QStringList splitted = stream.readAll().split(
"\n",QString::SkipEmptyParts);
304 int position = splitted.indexOf ( QRegExp(
"^vendor_id.*") );
305 if ( position != -1 ){
306 QString cpuVendor = splitted[position].section(
':', -1).simplified();
307 aboutWidget_->OpenFlipperAbout->append(tr(
"CPU vendor:\t\t ") + cpuVendor );
309 aboutWidget_->OpenFlipperAbout->append(tr(
"CPU vendor:\t\t vendor specification not found"));
312 position = splitted.indexOf ( QRegExp(
"^model name.*") );
313 if ( position != -1 ){
314 QString cpuModel = splitted[position].section(
':', -1).simplified();
315 aboutWidget_->OpenFlipperAbout->append(tr(
"CPU model:\t\t ") + cpuModel );
317 aboutWidget_->OpenFlipperAbout->append(tr(
"CPU model:\t\t Model specification not found"));
320 position = splitted.indexOf ( QRegExp(
"^cpu cores.*") );
321 if ( position != -1 ){
322 QString cpuCoresPhysical = splitted[position].section(
':', -1).simplified();
323 aboutWidget_->OpenFlipperAbout->append(tr(
"Physical CPU cores:\t\t ") + cpuCoresPhysical );
325 aboutWidget_->OpenFlipperAbout->append(tr(
"Physical CPU cores:\t\t CPU Core specification not found"));
328 position = splitted.indexOf ( QRegExp(
"^siblings.*") );
329 if ( position != -1 ){
330 QString cpuCoresLogical = splitted[position].section(
':', -1).simplified();
331 aboutWidget_->OpenFlipperAbout->append(tr(
"Logical CPU cores:\t\t ") + cpuCoresLogical );
333 aboutWidget_->OpenFlipperAbout->append(tr(
"Logical CPU cores:\t\t CPU Core specification not found"));
336 position = splitted.indexOf ( QRegExp(
"^flags.*") );
337 if ( position != -1 ){
338 QString cpuFlags = splitted[position].section(
':', -1).simplified();
339 aboutWidget_->OpenFlipperAbout->append( tr(
"CPU capabilities:") );
342 aboutWidget_->OpenFlipperAbout->append(tr(
"CPU capabilities:\t\t CPU flag specification not found"));
345 #if Q_BYTE_ORDER == Q_BIG_ENDIAN
346 aboutWidget_->OpenFlipperAbout->append(tr(
"System is Big Endian"));
349 #if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
350 aboutWidget_->OpenFlipperAbout->append(tr(
"System is Little Endian"));
361 aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
362 aboutWidget_->OpenFlipperAbout->append(tr(
"Operating System Info:"));
363 aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
366 QSettings registryOS(
"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", QSettings::NativeFormat);
367 aboutWidget_->OpenFlipperAbout->append(tr(
"Product Name:\t\t ") +
368 registryOS.value(
"ProductName",
"Unknown" ).toString() );
369 aboutWidget_->OpenFlipperAbout->append(tr(
"Current Version:\t\t ") +
370 registryOS.value(
"CurrentVersion",
"Unknown" ).toString() );
371 #elif defined ARCH_DARWIN
378 mib[1] = KERN_VERSION;
380 sysctl(mib, 2, NULL, &len, NULL, 0);
381 p = (
char * )malloc(len);
382 sysctl(mib, 2, p, &len, NULL, 0);
384 aboutWidget_->OpenFlipperAbout->append(tr(
"OS Version:\t\t ") + QString(p) );
389 QFile versionInfo(
"/proc/version");
390 if (! versionInfo.exists() )
391 aboutWidget_->OpenFlipperAbout->append(tr(
"Unable to retrieve Kernel information"));
393 versionInfo.open(QFile::ReadOnly);
394 QTextStream versionStream(&versionInfo);
395 aboutWidget_->OpenFlipperAbout->append(tr(
"Kernel Version:\t\t ") + versionStream.readAll().simplified());
397 QString program =
"/usr/bin/lsb_release";
400 if ( lsb.exists() ) {
401 QStringList arguments;
405 myProcess.start(program, arguments);
407 if ( myProcess.waitForFinished ( 4000 ) ) {
408 QStringList outputLSB = QString(myProcess.readAllStandardOutput()).split(
'\n');
411 int position = outputLSB.indexOf ( QRegExp(
"^Distributor ID.*") );
412 if ( position != -1 ){
413 QString distributorID = outputLSB[position].section(
':', -1).simplified();
414 aboutWidget_->OpenFlipperAbout->append(tr(
"Distributor ID:\t\t ") + distributorID );
416 aboutWidget_->OpenFlipperAbout->append(tr(
"Distributor ID:\t\t Unknown"));
419 position = outputLSB.indexOf ( QRegExp(
"^Description.*") );
420 if ( position != -1 ){
421 QString description = outputLSB[position].section(
':', -1).simplified();
422 aboutWidget_->OpenFlipperAbout->append(tr(
"Description:\t\t ") + description );
424 aboutWidget_->OpenFlipperAbout->append(tr(
"Description:\t\t Unknown"));
427 position = outputLSB.indexOf ( QRegExp(
"^Release.*") );
428 if ( position != -1 ){
429 QString release = outputLSB[position].section(
':', -1).simplified();
430 aboutWidget_->OpenFlipperAbout->append(tr(
"Release number:\t\t ") + release );
432 aboutWidget_->OpenFlipperAbout->append(tr(
"Release number:\t\t Unknown"));
435 position = outputLSB.indexOf ( QRegExp(
"^Codename.*") );
436 if ( position != -1 ){
437 QString codename = outputLSB[position].section(
':', -1).simplified();
438 aboutWidget_->OpenFlipperAbout->append(tr(
"Codename:\t\t ") + codename );
440 aboutWidget_->OpenFlipperAbout->append(tr(
"Codename:\t\t Unknown"));
444 aboutWidget_->OpenFlipperAbout->append(tr(
"Unable to get LSB info"));
448 aboutWidget_->OpenFlipperAbout->append(tr(
"No additional information. Unable to get info via LSB."));
454 QString systemPathVariable = getenv(
"PATH");
455 aboutWidget_->OpenFlipperAbout->append(tr(
"System Path:\n ") + systemPathVariable);
458 QString systemLibraryPathVariable = getenv(
"LD_LIBRARY_PATH");
459 aboutWidget_->OpenFlipperAbout->append(tr(
"LD_LIBRARY_PATH:\n ") + systemLibraryPathVariable);
468 aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
469 aboutWidget_->OpenFlipperAbout->append(tr(
"OpenGL Specific Info:"));
470 aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
472 QString vendor = QString((
const char*)glGetString(GL_VENDOR));
473 aboutWidget_->OpenFlipperAbout->append(tr(
"Qt reports Vendor:\t\t") + vendor);
474 QString renderer = QString((
const char*)glGetString(GL_RENDERER));
475 aboutWidget_->OpenFlipperAbout->append(tr(
"Qt reports Renderer:\t\t") + renderer);
477 QGLFormat::OpenGLVersionFlags flags = QGLFormat::openGLVersionFlags();
479 QString openGLQtVersion = tr(
"Qt reports Version:\t\t");
481 if ( flags.testFlag(QGLFormat::OpenGL_Version_4_0) )
482 openGLQtVersion += tr(
"4.0 or higher") ;
483 else if (flags.testFlag(QGLFormat::OpenGL_Version_3_3))
484 openGLQtVersion += tr(
"3.3") ;
485 else if (flags.testFlag(QGLFormat::OpenGL_Version_3_2))
486 openGLQtVersion += tr(
"3.2") ;
487 else if (flags.testFlag(QGLFormat::OpenGL_Version_3_1))
488 openGLQtVersion += tr(
"3.1") ;
489 else if (flags.testFlag(QGLFormat::OpenGL_Version_3_0))
490 openGLQtVersion += tr(
"3.0") ;
491 else if (flags.testFlag(QGLFormat::OpenGL_Version_2_1))
492 openGLQtVersion += tr(
"2.1" );
493 else if (flags.testFlag(QGLFormat::OpenGL_Version_2_0))
494 openGLQtVersion += tr(
"2.0" );
495 else if (flags.testFlag(QGLFormat::OpenGL_Version_1_5))
496 openGLQtVersion += tr(
"1.5" );
497 else if (flags.testFlag(QGLFormat::OpenGL_Version_1_4))
498 openGLQtVersion += tr(
"1.4" );
499 else if (flags.testFlag(QGLFormat::OpenGL_Version_1_3))
500 openGLQtVersion += tr(
"1.3" );
501 else if (flags.testFlag(QGLFormat::OpenGL_Version_1_2))
502 openGLQtVersion += tr(
"1.2" );
503 else if (flags.testFlag(QGLFormat::OpenGL_Version_1_1))
504 openGLQtVersion += tr(
"1.1" );
506 openGLQtVersion += tr(
"Version:\tUNKNOWN!" );
508 aboutWidget_->OpenFlipperAbout->append(openGLQtVersion);
512 const QGLContext* context = QGLContext::currentContext();
514 QString openGLprofile = tr(
"Qt reports the OpenGL profile:\t");
515 QGLFormat::OpenGLContextProfile profile = context->format().profile();
516 if (profile == QGLFormat::NoProfile)
517 openGLprofile += tr(
"no profile");
518 else if (profile == QGLFormat::CoreProfile)
519 openGLprofile += tr(
"Core profile");
520 else if (profile == QGLFormat::CompatibilityProfile)
521 openGLprofile += tr(
"Compatibility profile");
523 openGLprofile += tr(
"unknown profile");
530 QString openGLVendor = tr(
"GL reports Vendor:\t\t");
531 openGLVendor += QString((
const char*)glGetString(GL_VENDOR));
534 QString openGLRenderer = tr(
"GL reports Renderer:\t\t");
535 openGLRenderer += QString((
const char*)glGetString(GL_RENDERER));
538 QString openGLGLVersion = tr(
"GL reports Version:\t\t");
539 openGLGLVersion += QString((
const char*)glGetString(GL_VERSION));
540 aboutWidget_->OpenFlipperAbout->append(openGLGLVersion);
542 QString openGLShadingLanguageVersion = tr(
"GL reports Shading Language Version:\t");
543 openGLShadingLanguageVersion += QString((
const char*)glGetString(GL_SHADING_LANGUAGE_VERSION));
544 aboutWidget_->OpenFlipperAbout->append(openGLShadingLanguageVersion);
551 aboutWidget_->OpenFlipperAbout->append(tr(
"Supported Extensions:"));
552 QString glExtensions = QString((
const char*)glGetString(GL_EXTENSIONS));
560 aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
561 aboutWidget_->OpenFlipperAbout->append(tr(
"OpenGL Values:"));
562 aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
564 glGetIntegerv(GL_MAX_VIEWPORT_DIMS, &getBuffer[0] );
565 aboutWidget_->OpenFlipperAbout->append(tr(
"Maximal Viewport size(GL_MAX_VIEWPORT_DIMS):\t\t\t\t ") + QString::number(getBuffer[0]) +
"x" + QString::number(getBuffer[1]) );
567 glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &getBuffer[0] );
568 aboutWidget_->OpenFlipperAbout->append(tr(
"Maximum supported texture image units(GL_MAX_TEXTURE_IMAGE_UNITS):\t") + QString::number(getBuffer[0]) );
571 if ( glExtensions.contains(
"GL_NVX_gpu_memory_info") ) {
573 GLint total_mem_kb = 0;
574 glGetIntegerv(GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX, &total_mem_kb);
576 aboutWidget_->OpenFlipperAbout->append(tr(
"GPU Memory (Total available):\t\t") + QString::number(total_mem_kb /1024) +
" MB" );
579 GLint cur_avail_mem_kb = 0;
580 glGetIntegerv(GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX, &cur_avail_mem_kb);
582 aboutWidget_->OpenFlipperAbout->append(tr(
"GPU Memory (Currently available):\t") + QString::number(cur_avail_mem_kb / 1024) +
" MB" );
587 aboutWidget_->OpenFlipperAbout->moveCursor(QTextCursor::Start);
594 aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
595 aboutWidget_->OpenFlipperAbout->append(tr(
"GLEW Specific Info:"));
596 aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
598 QString glewVersion = QString(getGlewVersion());
599 aboutWidget_->OpenFlipperAbout->append(tr(
"GLEW Version:\t") + glewVersion);
607 aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
608 aboutWidget_->OpenFlipperAbout->append(tr(
"Qt Version Info:"));
609 aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
610 aboutWidget_->OpenFlipperAbout->append(tr(
"Currently used Version:\t") + qVersion() );
611 aboutWidget_->OpenFlipperAbout->append(tr(
"Link time Version:\t\t") + QT_VERSION_STR );
613 QList<QByteArray> imageFormats = QImageReader::supportedImageFormats();
614 QString formatsString =
"";
615 for (
int i = 0 ; i < imageFormats.size() ; ++i) {
616 formatsString += imageFormats[i] +
" ";
618 if ( (i != 0) && (i % 15) == 0 )
619 formatsString+=
"\n";
622 aboutWidget_->OpenFlipperAbout->append(tr(
"Supported image read formats:") );
627 aboutWidget_->OpenFlipperAbout->append(tr(
"Currently used Library paths:") );
628 QStringList libPaths = QCoreApplication::libraryPaths();
629 for(
int i = 0 ; i < libPaths.size() ; ++i)
630 aboutWidget_->OpenFlipperAbout->append(
" " + libPaths[i]);
653 aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
654 aboutWidget_->OpenFlipperAbout->append(tr(
"Compiler Info:"));
655 aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
656 aboutWidget_->OpenFlipperAbout->append( OpenFlipper::Options::compilerInfo() );
662 definitions +=
"WIN32 ";
666 definitions +=
"WIN64 ";
670 definitions +=
"DLL ";
675 definitions +=
"APPLE ";
679 definitions +=
"ARCH_DARWIN ";
682 #ifdef INCLUDE_TEMPLATES
683 definitions +=
"INCLUDE_TEMPLATES ";
687 definitions +=
"DEBUG ";
691 definitions +=
"NDEBUG ";
695 definitions +=
"QT_NO_OPENGL ";
699 definitions +=
"OPENMP ";
703 definitions +=
"USE_OPENMP ";
706 aboutWidget_->OpenFlipperAbout->append( tr(
"Definitions (incomplete):\n") + definitions );
712 aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
713 aboutWidget_->OpenFlipperAbout->append(tr(
"Registered data types:"));
714 aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
722 for ( uint i = 0 ; i <
typeCount() - 2 ; ++i) {
723 types +=
typeName( currentType ) +
"\t\t typeId: " + QString::number(currentType.
value()) +
"\n";
735 aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
736 aboutWidget_->OpenFlipperAbout->append(tr(
"Registered File Plugins:"));
737 aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
739 for ( uint i = 0 ; i < supportedTypes().size() ; ++i ) {
740 aboutWidget_->OpenFlipperAbout->setCurrentFont(boldFont);
741 aboutWidget_->OpenFlipperAbout->append(
"\t" + supportedTypes()[i].name );
742 aboutWidget_->OpenFlipperAbout->setCurrentFont(standardFont);
743 aboutWidget_->OpenFlipperAbout->append(
"\t\t Load: " + supportedTypes()[i].loadFilters );
744 aboutWidget_->OpenFlipperAbout->append(
"\t\t Save: " + supportedTypes()[i].saveFilters );
DLLEXPORT OpenFlipperQSettings & OpenFlipperSettings()
QSettings object containing all program settings of OpenFlipper.
QMap< QString, QString > additionalAboutTabs_
Additional tab information, that could be provided by plugins.
DLLEXPORT size_t typeCount()
Get the number of registered types.
AboutWidget * aboutWidget_
Pointer to the about widget.
void addAboutInfo(QString _text, QString _tabName)
Adds an entry to the about dialog.
DLLEXPORT QString typeName(DataType _id)
Get the name of a type with given id.
#define TOSTRING(x)
QSettings object containing all program settings of OpenFlipper.
void showAboutWidget()
Display the about widget.
unsigned int value() const