提交 369d95df 编写于 作者: P Palana

UI: Add OBSSourceLabel

上级 b33be9fc
......@@ -118,6 +118,7 @@ set(obs_SOURCES
source-list-widget.cpp
crash-report.cpp
hotkey-edit.cpp
source-label.cpp
qt-wrappers.cpp)
set(obs_HEADERS
......@@ -155,6 +156,7 @@ set(obs_HEADERS
qt-display.hpp
crash-report.hpp
hotkey-edit.hpp
source-label.hpp
qt-wrappers.hpp)
set(obs_UI
......
/******************************************************************************
Copyright (C) 2015 by Ruwen Hahn <palana@stunned.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
******************************************************************************/
#include "source-label.hpp"
void OBSSourceLabel::SourceRenamed(void *data, calldata_t *params)
{
auto &label = *static_cast<OBSSourceLabel*>(data);
const char *name = calldata_string(params, "new_name");
label.setText(name);
emit label.Renamed(name);
}
void OBSSourceLabel::SourceRemoved(void *data, calldata_t *)
{
auto &label = *static_cast<OBSSourceLabel*>(data);
emit label.Removed();
}
void OBSSourceLabel::SourceDestroyed(void *data, calldata_t *)
{
auto &label = *static_cast<OBSSourceLabel*>(data);
emit label.Destroyed();
label.destroyedSignal.Disconnect();
label.removedSignal.Disconnect();
label.renamedSignal.Disconnect();
}
/******************************************************************************
Copyright (C) 2015 by Ruwen Hahn <palana@stunned.de>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
******************************************************************************/
#include <QLabel>
#include <obs.hpp>
class OBSSourceLabel : public QLabel {
Q_OBJECT;
public:
OBSSignal renamedSignal;
OBSSignal removedSignal;
OBSSignal destroyedSignal;
OBSSourceLabel(const obs_source_t *source, QWidget *parent=nullptr,
Qt::WindowFlags f=0)
: QLabel(obs_source_get_name(source), parent, f),
renamedSignal(obs_source_get_signal_handler(source), "rename",
&OBSSourceLabel::SourceRenamed, this),
removedSignal(obs_source_get_signal_handler(source), "remove",
&OBSSourceLabel::SourceRemoved, this),
destroyedSignal(obs_source_get_signal_handler(source),
"destroy", &OBSSourceLabel::SourceDestroyed,
this)
{}
protected:
static void SourceRenamed(void *data, calldata_t *params);
static void SourceRemoved(void *data, calldata_t *params);
static void SourceDestroyed(void *data, calldata_t *params);
signals:
void Renamed(const char *name);
void Removed();
void Destroyed();
};
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册