context-bar-controls.hpp 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  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. public:
  20. SourceToolbar(QWidget *parent, OBSSource source);
  21. OBSSource GetSource() { return OBSGetStrongRef(weakSource); }
  22. public slots:
  23. virtual void Update() {}
  24. };
  25. class BrowserToolbar : public SourceToolbar {
  26. Q_OBJECT
  27. Ui_BrowserSourceToolbar *ui;
  28. public:
  29. BrowserToolbar(QWidget *parent, OBSSource source);
  30. ~BrowserToolbar();
  31. public slots:
  32. void on_refresh_clicked();
  33. };
  34. class ComboSelectToolbar : public SourceToolbar {
  35. Q_OBJECT
  36. protected:
  37. Ui_DeviceSelectToolbar *ui;
  38. const char *prop_name;
  39. bool is_int = false;
  40. public:
  41. ComboSelectToolbar(QWidget *parent, OBSSource source);
  42. ~ComboSelectToolbar();
  43. virtual void Init();
  44. public slots:
  45. void on_device_currentIndexChanged(int idx);
  46. };
  47. class AudioCaptureToolbar : public ComboSelectToolbar {
  48. Q_OBJECT
  49. public:
  50. AudioCaptureToolbar(QWidget *parent, OBSSource source);
  51. void Init() override;
  52. };
  53. class WindowCaptureToolbar : public ComboSelectToolbar {
  54. Q_OBJECT
  55. public:
  56. WindowCaptureToolbar(QWidget *parent, OBSSource source);
  57. void Init() override;
  58. };
  59. class DisplayCaptureToolbar : public ComboSelectToolbar {
  60. Q_OBJECT
  61. public:
  62. DisplayCaptureToolbar(QWidget *parent, OBSSource source);
  63. void Init() override;
  64. };
  65. class DeviceCaptureToolbar : public QWidget {
  66. Q_OBJECT
  67. OBSWeakSource weakSource;
  68. Ui_DeviceSelectToolbar *ui;
  69. obs_properties_t *props = nullptr;
  70. const char *prop_name;
  71. void UpdateActivateButtonName();
  72. public:
  73. DeviceCaptureToolbar(QWidget *parent, OBSSource source);
  74. ~DeviceCaptureToolbar();
  75. void SetProperties(obs_properties_t *prpos);
  76. public slots:
  77. void on_device_currentIndexChanged(int idx);
  78. void on_activateButton_clicked();
  79. };
  80. class GameCaptureToolbar : public SourceToolbar {
  81. Q_OBJECT
  82. Ui_GameCaptureToolbar *ui;
  83. void UpdateWindowVisibility();
  84. public:
  85. GameCaptureToolbar(QWidget *parent, OBSSource source);
  86. ~GameCaptureToolbar();
  87. public slots:
  88. void on_mode_currentIndexChanged(int idx);
  89. void on_window_currentIndexChanged(int idx);
  90. };
  91. class ImageSourceToolbar : public SourceToolbar {
  92. Q_OBJECT
  93. Ui_ImageSourceToolbar *ui;
  94. public:
  95. ImageSourceToolbar(QWidget *parent, OBSSource source);
  96. ~ImageSourceToolbar();
  97. public slots:
  98. void on_browse_clicked();
  99. };
  100. class ColorSourceToolbar : public SourceToolbar {
  101. Q_OBJECT
  102. Ui_ColorSourceToolbar *ui;
  103. QColor color;
  104. void UpdateColor();
  105. public:
  106. ColorSourceToolbar(QWidget *parent, OBSSource source);
  107. ~ColorSourceToolbar();
  108. public slots:
  109. void on_choose_clicked();
  110. };
  111. class TextSourceToolbar : public SourceToolbar {
  112. Q_OBJECT
  113. Ui_TextSourceToolbar *ui;
  114. QFont font;
  115. QColor color;
  116. public:
  117. TextSourceToolbar(QWidget *parent, OBSSource source);
  118. ~TextSourceToolbar();
  119. public slots:
  120. void on_selectFont_clicked();
  121. void on_selectColor_clicked();
  122. void on_text_textChanged();
  123. };