UI: Add OBSSourceLabel

This commit is contained in:
Palana 2015-05-02 03:38:01 +02:00
parent b33be9fca6
commit 369d95dfc3
3 changed files with 96 additions and 0 deletions

View File

@ -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

44
obs/source-label.cpp Normal file
View File

@ -0,0 +1,44 @@
/******************************************************************************
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();
}

50
obs/source-label.hpp Normal file
View File

@ -0,0 +1,50 @@
/******************************************************************************
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();
};