Audio plugin host https://kx.studio/carla
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

166 lines
8.1KB

  1. // SPDX-FileCopyrightText: 2011-2025 Filipe Coelho <falktx@falktx.com>
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include "aboutdialog.hpp"
  4. #ifdef __clang__
  5. # pragma clang diagnostic push
  6. # pragma clang diagnostic ignored "-Wdeprecated-copy-with-user-provided-copy"
  7. # pragma clang diagnostic ignored "-Wdeprecated-register"
  8. #elif defined(__GNUC__) && __GNUC__ >= 8
  9. # pragma GCC diagnostic push
  10. # pragma GCC diagnostic ignored "-Wclass-memaccess"
  11. # pragma GCC diagnostic ignored "-Wdeprecated-copy"
  12. #endif
  13. // #include <QtCore/QFileInfo>
  14. // #include <QtCore/QVector>
  15. // #include <QtWidgets/QPushButton>
  16. #ifdef __clang__
  17. # pragma clang diagnostic pop
  18. #elif defined(__GNUC__) && __GNUC__ >= 8
  19. # pragma GCC diagnostic pop
  20. #endif
  21. #include "CarlaHost.h"
  22. // --------------------------------------------------------------------------------------------------------------------
  23. // About Dialog
  24. AboutDialog::AboutDialog(QWidget* const parent,
  25. const CarlaHostHandle hostHandle,
  26. const bool isControl,
  27. const bool isPlugin)
  28. : QDialog(parent)
  29. {
  30. ui.setupUi(this);
  31. QString extraInfo;
  32. if (isControl)
  33. extraInfo = QString(" - <b>%1</b>").arg(tr("OSC Bridge Version"));
  34. else if (isPlugin)
  35. extraInfo = QString(" - <b>%1</b>").arg(tr("Plugin Version"));
  36. ui.l_about->setText(tr(""
  37. "<br>Version %1"
  38. "<br>Carla is a fully-featured audio plugin host%2.<br>"
  39. "<br>Copyright (C) 2011-2025 falkTX<br>"
  40. "").arg(CARLA_VERSION_STRING).arg(extraInfo));
  41. if (ui.about->palette().color(QPalette::Background).blackF() < 0.5)
  42. {
  43. ui.l_icons->setPixmap(QPixmap(":/bitmaps/carla_about_black.png"));
  44. ui.ico_example_edit->setPixmap(QPixmap(":/bitmaps/button_file-black.png"));
  45. ui.ico_example_file->setPixmap(QPixmap(":/scalable/button_edit-black.svg"));
  46. ui.ico_example_gui->setPixmap(QPixmap(":/bitmaps/button_gui-black.png"));
  47. }
  48. if (isControl || isPlugin)
  49. {
  50. ui.l_extended->hide();
  51. ui.tabWidget->removeTab(3);
  52. ui.tabWidget->removeTab(2);
  53. }
  54. else if (carla_is_engine_running(hostHandle))
  55. {
  56. ui.le_osc_url_tcp->setText(carla_get_host_osc_url_tcp(hostHandle));
  57. ui.le_osc_url_udp->setText(carla_get_host_osc_url_udp(hostHandle));
  58. }
  59. else
  60. {
  61. ui.le_osc_url_tcp->setText(tr("(Engine not running)"));
  62. ui.le_osc_url_udp->setText(tr("(Engine not running)"));
  63. }
  64. ui.l_extended->setText(carla_get_complete_license_text());
  65. ui.l_osc_cmds->setText("<table>"
  66. "<tr><td>" "/set_active" "&nbsp;</td><td>&lt;i-value&gt;</td></tr>"
  67. "<tr><td>" "/set_drywet" "&nbsp;</td><td>&lt;f-value&gt;</td></tr>"
  68. "<tr><td>" "/set_volume" "&nbsp;</td><td>&lt;f-value&gt;</td></tr>"
  69. "<tr><td>" "/set_balance_left" "&nbsp;</td><td>&lt;f-value&gt;</td></tr>"
  70. "<tr><td>" "/set_balance_right" "&nbsp;</td><td>&lt;f-value&gt;</td></tr>"
  71. "<tr><td>" "/set_panning" "&nbsp;</td><td>&lt;f-value&gt;</td></tr>"
  72. "<tr><td>" "/set_parameter_value" "&nbsp;</td><td>&lt;i-index&gt; &lt;f-value&gt;</td></tr>"
  73. "<tr><td>" "/set_parameter_midi_cc" "&nbsp;</td><td>&lt;i-index&gt; &lt;i-cc&gt;</td></tr>"
  74. "<tr><td>" "/set_parameter_midi_channel" "&nbsp;</td><td>&lt;i-index&gt; &lt;i-channel&gt;</td></tr>"
  75. "<tr><td>" "/set_program" "&nbsp;</td><td>&lt;i-index&gt;</td></tr>"
  76. "<tr><td>" "/set_midi_program" "&nbsp;</td><td>&lt;i-index&gt;</td></tr>"
  77. "<tr><td>" "/note_on" "&nbsp;</td><td>&lt;i-channel&gt; &lt;i-note&gt; &lt;i-velo&gt;</td></tr>"
  78. "<tr><td>" "/note_off" "&nbsp;</td><td>&lt;i-channel&gt; &lt;i-note</td></tr>"
  79. "</table>");
  80. ui.l_example->setText("/Carla/2/set_parameter_value 5 1.0");
  81. ui.l_example_help->setText("<i>(as in this example, \"2\" is the plugin number and \"5\" the parameter)</i>");
  82. ui.l_ladspa->setText(tr("Everything! (Including LRDF)"));
  83. ui.l_dssi->setText(tr("Everything! (Including CustomData/Chunks)"));
  84. ui.l_lv2->setText(tr("About 110&#37; complete (using custom extensions)<br/>"
  85. "Implemented Feature/Extensions:"
  86. "<ul>"
  87. "<li>http://lv2plug.in/ns/ext/atom</li>"
  88. "<li>http://lv2plug.in/ns/ext/buf-size</li>"
  89. "<li>http://lv2plug.in/ns/ext/data-access</li>"
  90. // "<li>http://lv2plug.in/ns/ext/dynmanifest</li>"
  91. "<li>http://lv2plug.in/ns/ext/event</li>"
  92. "<li>http://lv2plug.in/ns/ext/instance-access</li>"
  93. "<li>http://lv2plug.in/ns/ext/log</li>"
  94. "<li>http://lv2plug.in/ns/ext/midi</li>"
  95. // "<li>http://lv2plug.in/ns/ext/morph</li>"
  96. "<li>http://lv2plug.in/ns/ext/options</li>"
  97. "<li>http://lv2plug.in/ns/ext/parameters</li>"
  98. // "<li>http://lv2plug.in/ns/ext/patch</li>"
  99. // "<li>http://lv2plug.in/ns/ext/port-groups</li>"
  100. "<li>http://lv2plug.in/ns/ext/port-props</li>"
  101. "<li>http://lv2plug.in/ns/ext/presets</li>"
  102. "<li>http://lv2plug.in/ns/ext/resize-port</li>"
  103. "<li>http://lv2plug.in/ns/ext/state</li>"
  104. "<li>http://lv2plug.in/ns/ext/time</li>"
  105. "<li>http://lv2plug.in/ns/ext/uri-map</li>"
  106. "<li>http://lv2plug.in/ns/ext/urid</li>"
  107. "<li>http://lv2plug.in/ns/ext/worker</li>"
  108. "<li>http://lv2plug.in/ns/extensions/ui</li>"
  109. "<li>http://lv2plug.in/ns/extensions/units</li>"
  110. "<li>http://home.gna.org/lv2dynparam/rtmempool/v1</li>"
  111. "<li>http://kxstudio.sf.net/ns/lv2ext/external-ui</li>"
  112. "<li>http://kxstudio.sf.net/ns/lv2ext/programs</li>"
  113. "<li>http://kxstudio.sf.net/ns/lv2ext/props</li>"
  114. "<li>http://kxstudio.sf.net/ns/lv2ext/rtmempool</li>"
  115. "<li>http://ll-plugins.nongnu.org/lv2/ext/midimap</li>"
  116. "<li>http://ll-plugins.nongnu.org/lv2/ext/miditype</li>"
  117. "</ul>"));
  118. ui.l_vst2->setText(tr("About 85&#37; complete (missing vst bank/presets and some minor stuff)"));
  119. ui.l_vst3->setText(tr("About 66&#37; complete"));
  120. #ifdef CARLA_OS_MAC
  121. ui.l_au->setText(tr("About 20&#37; complete"));
  122. #else
  123. ui.line_vst3->hide();
  124. ui.l_au->hide();
  125. ui.lid_au->hide();
  126. #endif
  127. // 3rd tab is usually longer than the 1st, adjust appropriately
  128. ui.tabWidget->setCurrentIndex(2);
  129. adjustSize();
  130. ui.tabWidget->setCurrentIndex(0);
  131. setFixedSize(size());
  132. Qt::WindowFlags flags = windowFlags();
  133. flags &= ~Qt::WindowContextHelpButtonHint;
  134. #ifdef CARLA_OS_WIN
  135. flags |= ~Qt::MSWindowsFixedSizeDialogHint;
  136. #endif
  137. setWindowFlags(flags);
  138. #ifdef CARLA_OS_MAC
  139. if (parent != nullptr)
  140. setWindowModality(Qt::WindowModal);
  141. #endif
  142. }
  143. // --------------------------------------------------------------------------------------------------------------------