Theme code refactoring
- Move GDScript-exposed function definitions from header to source file - Add null check to functions taking list pointers as parameters - Call clear() in copy_theme() if null is passed
This commit is contained in:
parent
72dfa67dd3
commit
fa59defb53
@ -37,6 +37,97 @@ void Theme::_emit_theme_changed() {
|
|||||||
emit_changed();
|
emit_changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PoolVector<String> Theme::_get_icon_list(const String &p_type) const {
|
||||||
|
|
||||||
|
PoolVector<String> ilret;
|
||||||
|
List<StringName> il;
|
||||||
|
|
||||||
|
get_icon_list(p_type, &il);
|
||||||
|
ilret.resize(il.size());
|
||||||
|
for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
|
||||||
|
ilret.push_back(E->get());
|
||||||
|
}
|
||||||
|
return ilret;
|
||||||
|
}
|
||||||
|
|
||||||
|
PoolVector<String> Theme::_get_stylebox_list(const String &p_type) const {
|
||||||
|
|
||||||
|
PoolVector<String> ilret;
|
||||||
|
List<StringName> il;
|
||||||
|
|
||||||
|
get_stylebox_list(p_type, &il);
|
||||||
|
ilret.resize(il.size());
|
||||||
|
for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
|
||||||
|
ilret.push_back(E->get());
|
||||||
|
}
|
||||||
|
return ilret;
|
||||||
|
}
|
||||||
|
|
||||||
|
PoolVector<String> Theme::_get_stylebox_types(void) const {
|
||||||
|
|
||||||
|
PoolVector<String> ilret;
|
||||||
|
List<StringName> il;
|
||||||
|
|
||||||
|
get_stylebox_types(&il);
|
||||||
|
ilret.resize(il.size());
|
||||||
|
for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
|
||||||
|
ilret.push_back(E->get());
|
||||||
|
}
|
||||||
|
return ilret;
|
||||||
|
}
|
||||||
|
|
||||||
|
PoolVector<String> Theme::_get_font_list(const String &p_type) const {
|
||||||
|
|
||||||
|
PoolVector<String> ilret;
|
||||||
|
List<StringName> il;
|
||||||
|
|
||||||
|
get_font_list(p_type, &il);
|
||||||
|
ilret.resize(il.size());
|
||||||
|
for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
|
||||||
|
ilret.push_back(E->get());
|
||||||
|
}
|
||||||
|
return ilret;
|
||||||
|
}
|
||||||
|
|
||||||
|
PoolVector<String> Theme::_get_color_list(const String &p_type) const {
|
||||||
|
|
||||||
|
PoolVector<String> ilret;
|
||||||
|
List<StringName> il;
|
||||||
|
|
||||||
|
get_color_list(p_type, &il);
|
||||||
|
ilret.resize(il.size());
|
||||||
|
for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
|
||||||
|
ilret.push_back(E->get());
|
||||||
|
}
|
||||||
|
return ilret;
|
||||||
|
}
|
||||||
|
|
||||||
|
PoolVector<String> Theme::_get_constant_list(const String &p_type) const {
|
||||||
|
|
||||||
|
PoolVector<String> ilret;
|
||||||
|
List<StringName> il;
|
||||||
|
|
||||||
|
get_constant_list(p_type, &il);
|
||||||
|
ilret.resize(il.size());
|
||||||
|
for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
|
||||||
|
ilret.push_back(E->get());
|
||||||
|
}
|
||||||
|
return ilret;
|
||||||
|
}
|
||||||
|
|
||||||
|
PoolVector<String> Theme::_get_type_list(const String &p_type) const {
|
||||||
|
|
||||||
|
PoolVector<String> ilret;
|
||||||
|
List<StringName> il;
|
||||||
|
|
||||||
|
get_type_list(&il);
|
||||||
|
ilret.resize(il.size());
|
||||||
|
for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
|
||||||
|
ilret.push_back(E->get());
|
||||||
|
}
|
||||||
|
return ilret;
|
||||||
|
}
|
||||||
|
|
||||||
bool Theme::_set(const StringName &p_name, const Variant &p_value) {
|
bool Theme::_set(const StringName &p_name, const Variant &p_value) {
|
||||||
|
|
||||||
String sname = p_name;
|
String sname = p_name;
|
||||||
@ -300,6 +391,8 @@ void Theme::clear_icon(const StringName &p_name, const StringName &p_type) {
|
|||||||
|
|
||||||
void Theme::get_icon_list(StringName p_type, List<StringName> *p_list) const {
|
void Theme::get_icon_list(StringName p_type, List<StringName> *p_list) const {
|
||||||
|
|
||||||
|
ERR_FAIL_NULL(p_list);
|
||||||
|
|
||||||
if (!icon_map.has(p_type))
|
if (!icon_map.has(p_type))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -344,6 +437,9 @@ void Theme::clear_shader(const StringName &p_name, const StringName &p_type) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Theme::get_shader_list(const StringName &p_type, List<StringName> *p_list) const {
|
void Theme::get_shader_list(const StringName &p_type, List<StringName> *p_list) const {
|
||||||
|
|
||||||
|
ERR_FAIL_NULL(p_list);
|
||||||
|
|
||||||
if (!shader_map.has(p_type))
|
if (!shader_map.has(p_type))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -408,6 +504,8 @@ void Theme::clear_stylebox(const StringName &p_name, const StringName &p_type) {
|
|||||||
|
|
||||||
void Theme::get_stylebox_list(StringName p_type, List<StringName> *p_list) const {
|
void Theme::get_stylebox_list(StringName p_type, List<StringName> *p_list) const {
|
||||||
|
|
||||||
|
ERR_FAIL_NULL(p_list);
|
||||||
|
|
||||||
if (!style_map.has(p_type))
|
if (!style_map.has(p_type))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -420,6 +518,8 @@ void Theme::get_stylebox_list(StringName p_type, List<StringName> *p_list) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Theme::get_stylebox_types(List<StringName> *p_list) const {
|
void Theme::get_stylebox_types(List<StringName> *p_list) const {
|
||||||
|
ERR_FAIL_NULL(p_list);
|
||||||
|
|
||||||
const StringName *key = NULL;
|
const StringName *key = NULL;
|
||||||
while ((key = style_map.next(key))) {
|
while ((key = style_map.next(key))) {
|
||||||
p_list->push_back(*key);
|
p_list->push_back(*key);
|
||||||
@ -478,6 +578,8 @@ void Theme::clear_font(const StringName &p_name, const StringName &p_type) {
|
|||||||
|
|
||||||
void Theme::get_font_list(StringName p_type, List<StringName> *p_list) const {
|
void Theme::get_font_list(StringName p_type, List<StringName> *p_list) const {
|
||||||
|
|
||||||
|
ERR_FAIL_NULL(p_list);
|
||||||
|
|
||||||
if (!font_map.has(p_type))
|
if (!font_map.has(p_type))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -526,6 +628,8 @@ void Theme::clear_color(const StringName &p_name, const StringName &p_type) {
|
|||||||
|
|
||||||
void Theme::get_color_list(StringName p_type, List<StringName> *p_list) const {
|
void Theme::get_color_list(StringName p_type, List<StringName> *p_list) const {
|
||||||
|
|
||||||
|
ERR_FAIL_NULL(p_list);
|
||||||
|
|
||||||
if (!color_map.has(p_type))
|
if (!color_map.has(p_type))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -574,6 +678,8 @@ void Theme::clear_constant(const StringName &p_name, const StringName &p_type) {
|
|||||||
|
|
||||||
void Theme::get_constant_list(StringName p_type, List<StringName> *p_list) const {
|
void Theme::get_constant_list(StringName p_type, List<StringName> *p_list) const {
|
||||||
|
|
||||||
|
ERR_FAIL_NULL(p_list);
|
||||||
|
|
||||||
if (!constant_map.has(p_type))
|
if (!constant_map.has(p_type))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -637,6 +743,12 @@ void Theme::copy_default_theme() {
|
|||||||
|
|
||||||
void Theme::copy_theme(const Ref<Theme> &p_other) {
|
void Theme::copy_theme(const Ref<Theme> &p_other) {
|
||||||
|
|
||||||
|
if (p_other.is_null()) {
|
||||||
|
clear();
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
//these need reconnecting, so add normally
|
//these need reconnecting, so add normally
|
||||||
{
|
{
|
||||||
const StringName *K = NULL;
|
const StringName *K = NULL;
|
||||||
@ -680,8 +792,9 @@ void Theme::copy_theme(const Ref<Theme> &p_other) {
|
|||||||
|
|
||||||
void Theme::get_type_list(List<StringName> *p_list) const {
|
void Theme::get_type_list(List<StringName> *p_list) const {
|
||||||
|
|
||||||
Set<StringName> types;
|
ERR_FAIL_NULL(p_list);
|
||||||
|
|
||||||
|
Set<StringName> types;
|
||||||
const StringName *key = NULL;
|
const StringName *key = NULL;
|
||||||
|
|
||||||
while ((key = icon_map.next(key))) {
|
while ((key = icon_map.next(key))) {
|
||||||
|
@ -52,6 +52,14 @@ class Theme : public Resource {
|
|||||||
HashMap<StringName, HashMap<StringName, Color> > color_map;
|
HashMap<StringName, HashMap<StringName, Color> > color_map;
|
||||||
HashMap<StringName, HashMap<StringName, int> > constant_map;
|
HashMap<StringName, HashMap<StringName, int> > constant_map;
|
||||||
|
|
||||||
|
PoolVector<String> _get_icon_list(const String &p_type) const;
|
||||||
|
PoolVector<String> _get_stylebox_list(const String &p_type) const;
|
||||||
|
PoolVector<String> _get_stylebox_types(void) const;
|
||||||
|
PoolVector<String> _get_font_list(const String &p_type) const;
|
||||||
|
PoolVector<String> _get_color_list(const String &p_type) const;
|
||||||
|
PoolVector<String> _get_constant_list(const String &p_type) const;
|
||||||
|
PoolVector<String> _get_type_list(const String &p_type) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool _set(const StringName &p_name, const Variant &p_value);
|
bool _set(const StringName &p_name, const Variant &p_value);
|
||||||
bool _get(const StringName &p_name, Variant &r_ret) const;
|
bool _get(const StringName &p_name, Variant &r_ret) const;
|
||||||
@ -65,70 +73,6 @@ protected:
|
|||||||
|
|
||||||
Ref<Font> default_theme_font;
|
Ref<Font> default_theme_font;
|
||||||
|
|
||||||
PoolVector<String> _get_icon_list(const String &p_type) const {
|
|
||||||
PoolVector<String> ilret;
|
|
||||||
List<StringName> il;
|
|
||||||
get_icon_list(p_type, &il);
|
|
||||||
for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
|
|
||||||
ilret.push_back(E->get());
|
|
||||||
}
|
|
||||||
return ilret;
|
|
||||||
}
|
|
||||||
PoolVector<String> _get_stylebox_list(const String &p_type) const {
|
|
||||||
PoolVector<String> ilret;
|
|
||||||
List<StringName> il;
|
|
||||||
get_stylebox_list(p_type, &il);
|
|
||||||
for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
|
|
||||||
ilret.push_back(E->get());
|
|
||||||
}
|
|
||||||
return ilret;
|
|
||||||
}
|
|
||||||
PoolVector<String> _get_stylebox_types(void) const {
|
|
||||||
PoolVector<String> ilret;
|
|
||||||
List<StringName> il;
|
|
||||||
get_stylebox_types(&il);
|
|
||||||
for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
|
|
||||||
ilret.push_back(E->get());
|
|
||||||
}
|
|
||||||
return ilret;
|
|
||||||
}
|
|
||||||
PoolVector<String> _get_font_list(const String &p_type) const {
|
|
||||||
PoolVector<String> ilret;
|
|
||||||
List<StringName> il;
|
|
||||||
get_font_list(p_type, &il);
|
|
||||||
for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
|
|
||||||
ilret.push_back(E->get());
|
|
||||||
}
|
|
||||||
return ilret;
|
|
||||||
}
|
|
||||||
PoolVector<String> _get_color_list(const String &p_type) const {
|
|
||||||
PoolVector<String> ilret;
|
|
||||||
List<StringName> il;
|
|
||||||
get_color_list(p_type, &il);
|
|
||||||
for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
|
|
||||||
ilret.push_back(E->get());
|
|
||||||
}
|
|
||||||
return ilret;
|
|
||||||
}
|
|
||||||
PoolVector<String> _get_constant_list(const String &p_type) const {
|
|
||||||
PoolVector<String> ilret;
|
|
||||||
List<StringName> il;
|
|
||||||
get_constant_list(p_type, &il);
|
|
||||||
for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
|
|
||||||
ilret.push_back(E->get());
|
|
||||||
}
|
|
||||||
return ilret;
|
|
||||||
}
|
|
||||||
PoolVector<String> _get_type_list(const String &p_type) const {
|
|
||||||
PoolVector<String> ilret;
|
|
||||||
List<StringName> il;
|
|
||||||
get_type_list(&il);
|
|
||||||
for (List<StringName>::Element *E = il.front(); E; E = E->next()) {
|
|
||||||
ilret.push_back(E->get());
|
|
||||||
}
|
|
||||||
return ilret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void _bind_methods();
|
static void _bind_methods();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
Loading…
Reference in New Issue
Block a user