Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
尘离序散
obs-studio
提交
51e97043
O
obs-studio
项目概览
尘离序散
/
obs-studio
与 Fork 源项目一致
从无法访问的项目Fork
通知
30
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
obs-studio
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
51e97043
编写于
6月 27, 2014
作者:
J
jp9000
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Implement 'path' property in to properties view
上级
4812a613
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
59 addition
and
18 deletion
+59
-18
obs/properties-view.cpp
obs/properties-view.cpp
+56
-16
obs/properties-view.hpp
obs/properties-view.hpp
+3
-2
未找到文件。
obs/properties-view.cpp
浏览文件 @
51e97043
...
...
@@ -7,6 +7,7 @@
#include <QComboBox>
#include <QPushButton>
#include <QStandardItem>
#include <QFileDialog>
#include "qt-wrappers.hpp"
#include "properties-view.hpp"
#include "obs-app.hpp"
...
...
@@ -101,12 +102,27 @@ QWidget *OBSPropertiesView::AddText(obs_property_t prop)
return
NewWidget
(
prop
,
edit
,
SIGNAL
(
textEdited
(
const
QString
&
)));
}
QWidget
*
OBSPropertiesView
::
AddPath
(
obs_property_t
prop
,
QFormLayout
*
layout
)
void
OBSPropertiesView
::
AddPath
(
obs_property_t
prop
,
QFormLayout
*
layout
,
QLabel
**
label
)
{
/* TODO */
UNUSED_PARAMETER
(
prop
);
UNUSED_PARAMETER
(
layout
);
return
nullptr
;
const
char
*
name
=
obs_property_name
(
prop
);
const
char
*
val
=
obs_data_getstring
(
settings
,
name
);
QLayout
*
subLayout
=
new
QHBoxLayout
();
QLineEdit
*
edit
=
new
QLineEdit
();
QPushButton
*
button
=
new
QPushButton
(
QTStr
(
"Browse"
));
edit
->
setText
(
QT_UTF8
(
val
));
edit
->
setReadOnly
(
true
);
subLayout
->
addWidget
(
edit
);
subLayout
->
addWidget
(
button
);
WidgetInfo
*
info
=
new
WidgetInfo
(
this
,
prop
,
edit
);
connect
(
button
,
SIGNAL
(
clicked
()),
info
,
SLOT
(
ControlChanged
()));
children
.
push_back
(
std
::
move
(
unique_ptr
<
WidgetInfo
>
(
info
)));
*
label
=
new
QLabel
(
QT_UTF8
(
obs_property_description
(
prop
)));
layout
->
addRow
(
*
label
,
subLayout
);
}
QWidget
*
OBSPropertiesView
::
AddInt
(
obs_property_t
prop
)
...
...
@@ -286,6 +302,7 @@ void OBSPropertiesView::AddProperty(obs_property_t property,
if
(
!
obs_property_visible
(
property
))
return
;
QLabel
*
label
=
nullptr
;
QWidget
*
widget
=
nullptr
;
bool
warning
=
false
;
...
...
@@ -305,7 +322,7 @@ void OBSPropertiesView::AddProperty(obs_property_t property,
widget
=
AddText
(
property
);
break
;
case
OBS_PROPERTY_PATH
:
AddPath
(
property
,
layout
);
AddPath
(
property
,
layout
,
&
label
);
break
;
case
OBS_PROPERTY_LIST
:
widget
=
AddList
(
property
,
warning
);
...
...
@@ -318,14 +335,11 @@ void OBSPropertiesView::AddProperty(obs_property_t property,
break
;
}
if
(
!
widget
)
return
;
if
(
!
obs_property_enabled
(
property
))
if
(
widget
&&
!
obs_property_enabled
(
property
))
widget
->
setEnabled
(
false
);
QLabel
*
label
=
nullptr
;
if
(
type
!=
OBS_PROPERTY_BOOL
&&
if
(
!
label
&&
type
!=
OBS_PROPERTY_BOOL
&&
type
!=
OBS_PROPERTY_BUTTON
)
label
=
new
QLabel
(
QT_UTF8
(
obs_property_description
(
property
)));
...
...
@@ -337,6 +351,9 @@ void OBSPropertiesView::AddProperty(obs_property_t property,
label
->
setAlignment
(
Qt
::
AlignRight
|
Qt
::
AlignVCenter
);
}
if
(
!
widget
)
return
;
layout
->
addRow
(
label
,
widget
);
if
(
!
lastFocused
.
empty
())
...
...
@@ -369,10 +386,31 @@ void WidgetInfo::TextChanged(const char *setting)
obs_data_setstring
(
view
->
settings
,
setting
,
QT_TO_UTF8
(
edit
->
text
()));
}
void
WidgetInfo
::
PathChanged
(
const
char
*
setting
)
bool
WidgetInfo
::
PathChanged
(
const
char
*
setting
)
{
/* TODO */
UNUSED_PARAMETER
(
setting
);
const
char
*
desc
=
obs_property_description
(
property
);
obs_path_type
type
=
obs_property_path_type
(
property
);
const
char
*
filter
=
obs_property_path_filter
(
property
);
const
char
*
default_path
=
obs_property_path_default_path
(
property
);
QString
path
;
if
(
type
==
OBS_PATH_DIRECTORY
)
path
=
QFileDialog
::
getExistingDirectory
(
view
,
QT_UTF8
(
desc
),
QT_UTF8
(
default_path
),
QFileDialog
::
ShowDirsOnly
|
QFileDialog
::
DontResolveSymlinks
);
else
if
(
type
==
OBS_PATH_FILE
)
path
=
QFileDialog
::
getOpenFileName
(
view
,
QT_UTF8
(
desc
),
QT_UTF8
(
default_path
),
QT_UTF8
(
filter
));
if
(
path
.
isEmpty
())
return
false
;
QLineEdit
*
edit
=
static_cast
<
QLineEdit
*>
(
widget
);
edit
->
setText
(
path
);
obs_data_setstring
(
view
->
settings
,
setting
,
QT_TO_UTF8
(
path
));
return
true
;
}
void
WidgetInfo
::
ListChanged
(
const
char
*
setting
)
...
...
@@ -432,10 +470,12 @@ void WidgetInfo::ControlChanged()
case
OBS_PROPERTY_INT
:
IntChanged
(
setting
);
break
;
case
OBS_PROPERTY_FLOAT
:
FloatChanged
(
setting
);
break
;
case
OBS_PROPERTY_TEXT
:
TextChanged
(
setting
);
break
;
case
OBS_PROPERTY_PATH
:
PathChanged
(
setting
);
break
;
case
OBS_PROPERTY_LIST
:
ListChanged
(
setting
);
break
;
case
OBS_PROPERTY_COLOR
:
ColorChanged
(
setting
);
break
;
case
OBS_PROPERTY_BUTTON
:
ButtonClicked
();
return
;
case
OBS_PROPERTY_PATH
:
if
(
!
PathChanged
(
setting
))
return
;
}
view
->
callback
(
view
->
obj
,
view
->
settings
);
...
...
obs/properties-view.hpp
浏览文件 @
51e97043
...
...
@@ -7,6 +7,7 @@
class
QFormLayout
;
class
OBSPropertiesView
;
class
QLabel
;
typedef
void
(
*
PropertiesUpdateCallback
)(
void
*
obj
,
obs_data_t
settings
);
...
...
@@ -24,7 +25,7 @@ private:
void
IntChanged
(
const
char
*
setting
);
void
FloatChanged
(
const
char
*
setting
);
void
TextChanged
(
const
char
*
setting
);
void
PathChanged
(
const
char
*
setting
);
bool
PathChanged
(
const
char
*
setting
);
void
ListChanged
(
const
char
*
setting
);
void
ColorChanged
(
const
char
*
setting
);
void
ButtonClicked
();
...
...
@@ -62,7 +63,7 @@ private:
QWidget
*
AddCheckbox
(
obs_property_t
prop
);
QWidget
*
AddText
(
obs_property_t
prop
);
QWidget
*
AddPath
(
obs_property_t
prop
,
QFormLayout
*
layout
);
void
AddPath
(
obs_property_t
prop
,
QFormLayout
*
layout
,
QLabel
**
label
);
QWidget
*
AddInt
(
obs_property_t
prop
);
QWidget
*
AddFloat
(
obs_property_t
prop
);
QWidget
*
AddList
(
obs_property_t
prop
,
bool
&
warning
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录