1
0

context-bar-controls.hpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. #pragma once
  2. #include <memory>
  3. #include <obs.hpp>
  4. #include <QWidget>
  5. class Ui_BrowserSourceToolbar;
  6. class Ui_DeviceSelectToolbar;
  7. class Ui_GameCaptureToolbar;
  8. class Ui_ImageSourceToolbar;
  9. class Ui_ColorSourceToolbar;
  10. class Ui_TextSourceToolbar;
  11. class SourceToolbar : public QWidget {
  12. Q_OBJECT
  13. OBSWeakSource weakSource;
  14. protected:
  15. using properties_delete_t = decltype(&obs_properties_destroy);
  16. using properties_t =
  17. std::unique_ptr<obs_properties_t, properties_delete_t>;
  18. properties_t props;
  19. OBSDataAutoRelease oldData;
  20. void SaveOldProperties(obs_source_t *source);
  21. void SetUndoProperties(obs_source_t *source, bool repeatable = false);
  22. public:
  23. SourceToolbar(QWidget *parent, OBSSource source);
  24. OBSSource GetSource() { return OBSGetStrongRef(weakSource); }
  25. public slots:
  26. virtual void Update() {}
  27. };
  28. class BrowserToolbar : public SourceToolbar {
  29. Q_OBJECT
  30. std::unique_ptr<Ui_BrowserSourceToolbar> ui;
  31. public:
  32. BrowserToolbar(QWidget *parent, OBSSource source);
  33. ~BrowserToolbar();
  34. public slots:
  35. void on_refresh_clicked();
  36. };
  37. class ComboSelectToolbar : public SourceToolbar {
  38. Q_OBJECT
  39. protected:
  40. std::unique_ptr<Ui_DeviceSelectToolbar> ui;
  41. const char *prop_name;
  42. bool is_int = false;
  43. public:
  44. ComboSelectToolbar(QWidget *parent, OBSSource source);
  45. ~ComboSelectToolbar();
  46. virtual void Init();
  47. public slots:
  48. void on_device_currentIndexChanged(int idx);
  49. };
  50. class AudioCaptureToolbar : public ComboSelectToolbar {
  51. Q_OBJECT
  52. public:
  53. AudioCaptureToolbar(QWidget *parent, OBSSource source);
  54. void Init() override;
  55. };
  56. class WindowCaptureToolbar : public ComboSelectToolbar {
  57. Q_OBJECT
  58. public:
  59. WindowCaptureToolbar(QWidget *parent, OBSSource source);
  60. void Init() override;
  61. };
  62. class ApplicationAudioCaptureToolbar : public ComboSelectToolbar {
  63. Q_OBJECT
  64. public:
  65. ApplicationAudioCaptureToolbar(QWidget *parent, OBSSource source);
  66. void Init() override;
  67. };
  68. class DisplayCaptureToolbar : public ComboSelectToolbar {
  69. Q_OBJECT
  70. public:
  71. DisplayCaptureToolbar(QWidget *parent, OBSSource source);
  72. void Init() override;
  73. };
  74. class DeviceCaptureToolbar : public QWidget {
  75. Q_OBJECT
  76. OBSWeakSource weakSource;
  77. std::unique_ptr<Ui_DeviceSelectToolbar> ui;
  78. const char *activateText;
  79. const char *deactivateText;
  80. bool active;
  81. public:
  82. DeviceCaptureToolbar(QWidget *parent, OBSSource source);
  83. ~DeviceCaptureToolbar();
  84. public slots:
  85. void on_activateButton_clicked();
  86. };
  87. class GameCaptureToolbar : public SourceToolbar {
  88. Q_OBJECT
  89. std::unique_ptr<Ui_GameCaptureToolbar> ui;
  90. void UpdateWindowVisibility();
  91. public:
  92. GameCaptureToolbar(QWidget *parent, OBSSource source);
  93. ~GameCaptureToolbar();
  94. public slots:
  95. void on_mode_currentIndexChanged(int idx);
  96. void on_window_currentIndexChanged(int idx);
  97. };
  98. class ImageSourceToolbar : public SourceToolbar {
  99. Q_OBJECT
  100. std::unique_ptr<Ui_ImageSourceToolbar> ui;
  101. public:
  102. ImageSourceToolbar(QWidget *parent, OBSSource source);
  103. ~ImageSourceToolbar();
  104. public slots:
  105. void on_browse_clicked();
  106. };
  107. class ColorSourceToolbar : public SourceToolbar {
  108. Q_OBJECT
  109. std::unique_ptr<Ui_ColorSourceToolbar> ui;
  110. QColor color;
  111. void UpdateColor();
  112. public:
  113. ColorSourceToolbar(QWidget *parent, OBSSource source);
  114. ~ColorSourceToolbar();
  115. public slots:
  116. void on_choose_clicked();
  117. };
  118. class TextSourceToolbar : public SourceToolbar {
  119. Q_OBJECT
  120. std::unique_ptr<Ui_TextSourceToolbar> ui;
  121. QFont font;
  122. QColor color;
  123. public:
  124. TextSourceToolbar(QWidget *parent, OBSSource source);
  125. ~TextSourceToolbar();
  126. public slots:
  127. void on_selectFont_clicked();
  128. void on_selectColor_clicked();
  129. void on_text_textChanged();
  130. };