WIP visual scripting, not working yet but you can check out stuff
|
@ -232,6 +232,20 @@ Error Dictionary::parse_json(const String& p_json) {
|
|||
return OK;
|
||||
}
|
||||
|
||||
Dictionary Dictionary::copy() const {
|
||||
|
||||
Dictionary n(is_shared());
|
||||
|
||||
List<Variant> keys;
|
||||
get_key_list(&keys);
|
||||
|
||||
for(List<Variant>::Element *E=keys.front();E;E=E->next()) {
|
||||
n[E->get()]=operator[](E->get());
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
String Dictionary::to_json() const {
|
||||
|
||||
return JSON::print(*this);
|
||||
|
|
|
@ -83,6 +83,8 @@ public:
|
|||
Array keys() const;
|
||||
Array values() const;
|
||||
|
||||
Dictionary copy() const;
|
||||
|
||||
Dictionary(const Dictionary& p_from);
|
||||
Dictionary(bool p_shared=false);
|
||||
~Dictionary();
|
||||
|
|
29
core/io/networked_multiplayer_peer.cpp
Normal file
|
@ -0,0 +1,29 @@
|
|||
#include "networked_multiplayer_peer.h"
|
||||
|
||||
|
||||
void NetworkedMultiplayerPeer::_bind_methods() {
|
||||
|
||||
ObjectTypeDB::bind_method(_MD("set_transfer_mode","mode"), &NetworkedMultiplayerPeer::set_transfer_mode );
|
||||
ObjectTypeDB::bind_method(_MD("set_target_peer","id"), &NetworkedMultiplayerPeer::set_target_peer );
|
||||
ObjectTypeDB::bind_method(_MD("set_channel","id"), &NetworkedMultiplayerPeer::set_channel );
|
||||
|
||||
ObjectTypeDB::bind_method(_MD("get_packet_peer"), &NetworkedMultiplayerPeer::get_packet_peer );
|
||||
ObjectTypeDB::bind_method(_MD("get_packet_channel"), &NetworkedMultiplayerPeer::get_packet_channel );
|
||||
|
||||
ObjectTypeDB::bind_method(_MD("poll"), &NetworkedMultiplayerPeer::poll );
|
||||
|
||||
|
||||
BIND_CONSTANT( TARGET_ALL_PEERS );
|
||||
|
||||
BIND_CONSTANT( TRANSFER_MODE_UNRELIABLE );
|
||||
BIND_CONSTANT( TRANSFER_MODE_RELIABLE );
|
||||
BIND_CONSTANT( TRANSFER_MODE_ORDERED );
|
||||
|
||||
ADD_SIGNAL( MethodInfo("peer_connected",PropertyInfo(Variant::INT,"id")));
|
||||
ADD_SIGNAL( MethodInfo("peer_disconnected",PropertyInfo(Variant::INT,"id")));
|
||||
}
|
||||
|
||||
NetworkedMultiplayerPeer::NetworkedMultiplayerPeer() {
|
||||
|
||||
|
||||
}
|
40
core/io/networked_multiplayer_peer.h
Normal file
|
@ -0,0 +1,40 @@
|
|||
#ifndef NETWORKED_MULTIPLAYER_PEER_H
|
||||
#define NETWORKED_MULTIPLAYER_PEER_H
|
||||
|
||||
#include "io/packet_peer.h"
|
||||
|
||||
class NetworkedMultiplayerPeer : public PacketPeer {
|
||||
|
||||
OBJ_TYPE(NetworkedMultiplayerPeer,PacketPeer);
|
||||
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
public:
|
||||
|
||||
enum {
|
||||
TARGET_ALL_PEERS=0xFFFFFF // send to this for all peers
|
||||
};
|
||||
|
||||
enum TransferMode {
|
||||
TRANSFER_MODE_UNRELIABLE,
|
||||
TRANSFER_MODE_RELIABLE,
|
||||
TRANSFER_MODE_ORDERED
|
||||
};
|
||||
|
||||
virtual void set_transfer_mode(TransferMode p_mode)=0;
|
||||
virtual void set_target_peer(int p_peer)=0;
|
||||
virtual void set_channel(int p_channel)=0;
|
||||
|
||||
|
||||
virtual int get_packet_peer() const=0;
|
||||
virtual int get_packet_channel() const=0;
|
||||
|
||||
|
||||
virtual void poll()=0;
|
||||
|
||||
NetworkedMultiplayerPeer();
|
||||
};
|
||||
|
||||
VARIANT_ENUM_CAST( NetworkedMultiplayerPeer::TransferMode )
|
||||
|
||||
#endif // NetworkedMultiplayerPeer_H
|
|
@ -62,6 +62,8 @@ public:
|
|||
#else
|
||||
set_argument_count($argc$);
|
||||
#endif
|
||||
|
||||
$ifret _set_returns(true); $
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -140,6 +142,9 @@ public:
|
|||
#else
|
||||
set_argument_count($argc$);
|
||||
#endif
|
||||
$ifret _set_returns(true); $
|
||||
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -64,6 +64,12 @@ void MethodBind::_set_const(bool p_const) {
|
|||
_const=p_const;
|
||||
}
|
||||
|
||||
void MethodBind::_set_returns(bool p_returns) {
|
||||
|
||||
_returns=p_returns;
|
||||
}
|
||||
|
||||
|
||||
StringName MethodBind::get_name() const {
|
||||
return name;
|
||||
}
|
||||
|
@ -118,6 +124,7 @@ MethodBind::MethodBind() {
|
|||
argument_types=NULL;
|
||||
#endif
|
||||
_const=false;
|
||||
_returns=false;
|
||||
}
|
||||
|
||||
MethodBind::~MethodBind() {
|
||||
|
|
|
@ -154,6 +154,8 @@ VARIANT_ENUM_CAST( wchar_t );
|
|||
VARIANT_ENUM_CAST( Margin );
|
||||
VARIANT_ENUM_CAST( Orientation );
|
||||
VARIANT_ENUM_CAST( HAlign );
|
||||
VARIANT_ENUM_CAST( Variant::Type );
|
||||
VARIANT_ENUM_CAST( Variant::Operator );
|
||||
|
||||
class MethodBind {
|
||||
|
||||
|
@ -170,11 +172,13 @@ class MethodBind {
|
|||
StringName ret_type;
|
||||
#endif
|
||||
bool _const;
|
||||
bool _returns;
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
void _set_const(bool p_const);
|
||||
void _set_returns(bool p_returns);
|
||||
#ifdef DEBUG_METHODS_ENABLED
|
||||
virtual Variant::Type _gen_argument_type(int p_arg) const=0;
|
||||
void _generate_argument_types(int p_count);
|
||||
|
@ -261,6 +265,7 @@ public:
|
|||
void set_name(const StringName& p_name);
|
||||
_FORCE_INLINE_ int get_method_id() const { return method_id; }
|
||||
_FORCE_INLINE_ bool is_const() const { return _const; }
|
||||
_FORCE_INLINE_ bool has_return() const { return _returns; }
|
||||
|
||||
|
||||
void set_default_arguments(const Vector<Variant>& p_defargs);
|
||||
|
@ -321,7 +326,7 @@ public:
|
|||
virtual bool is_const() const { return false; }
|
||||
virtual String get_instance_type() const { return T::get_type_static(); }
|
||||
|
||||
MethodBindNative() { call_method=NULL; }
|
||||
MethodBindNative() { call_method=NULL; _set_returns(true);}
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -68,6 +68,8 @@ enum PropertyHint {
|
|||
PROPERTY_HINT_IMAGE_COMPRESS_LOSSY,
|
||||
PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS,
|
||||
PROPERTY_HINT_OBJECT_ID,
|
||||
PROPERTY_HINT_TYPE_STRING, ///< a type string, the hint is the base type to choose
|
||||
PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE, ///< so something else can provide this (used in scripts)
|
||||
PROPERTY_HINT_MAX,
|
||||
};
|
||||
|
||||
|
|
|
@ -110,6 +110,7 @@ public:
|
|||
virtual bool get_property_default_value(const StringName& p_property,Variant& r_value) const=0;
|
||||
|
||||
virtual void update_exports() {} //editor tool
|
||||
virtual void get_method_list(List<MethodInfo> *p_list) const=0;
|
||||
|
||||
|
||||
Script() {}
|
||||
|
|
|
@ -249,6 +249,23 @@ void GDScript::_update_placeholder(PlaceHolderScriptInstance *p_placeholder) {
|
|||
}*/
|
||||
#endif
|
||||
|
||||
|
||||
void GDScript::get_method_list(List<MethodInfo> *p_list) const {
|
||||
|
||||
for (const Map<StringName,GDFunction*>::Element *E=member_functions.front();E;E=E->next()) {
|
||||
MethodInfo mi;
|
||||
mi.name=E->key();
|
||||
for(int i=0;i<E->get()->get_argument_count();i++) {
|
||||
PropertyInfo arg;
|
||||
arg.type=Variant::NIL; //variant
|
||||
arg.name=E->get()->get_argument_name(i);
|
||||
mi.arguments.push_back(arg);
|
||||
}
|
||||
|
||||
mi.return_val.name="var";
|
||||
p_list->push_back(mi);
|
||||
}
|
||||
}
|
||||
bool GDScript::get_property_default_value(const StringName& p_property, Variant &r_value) const {
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
|
|
|
@ -181,6 +181,8 @@ public:
|
|||
|
||||
bool get_property_default_value(const StringName& p_property,Variant& r_value) const;
|
||||
|
||||
virtual void get_method_list(List<MethodInfo> *p_list) const;
|
||||
|
||||
virtual ScriptLanguage *get_language() const;
|
||||
|
||||
GDScript();
|
||||
|
|
5
modules/visual_script/SCsub
Normal file
|
@ -0,0 +1,5 @@
|
|||
Import('env')
|
||||
|
||||
env.add_source_files(env.modules_sources,"*.cpp")
|
||||
|
||||
Export('env')
|
11
modules/visual_script/config.py
Normal file
|
@ -0,0 +1,11 @@
|
|||
|
||||
|
||||
def can_build(platform):
|
||||
return True
|
||||
|
||||
|
||||
def configure(env):
|
||||
pass
|
||||
|
||||
|
||||
|
96
modules/visual_script/register_types.cpp
Normal file
|
@ -0,0 +1,96 @@
|
|||
/*************************************************************************/
|
||||
/* register_types.cpp */
|
||||
/*************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* http://www.godotengine.org */
|
||||
/*************************************************************************/
|
||||
/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/*************************************************************************/
|
||||
#include "register_types.h"
|
||||
|
||||
#include "visual_script.h"
|
||||
#include "visual_script_editor.h"
|
||||
#include "io/resource_loader.h"
|
||||
#include "visual_script_nodes.h"
|
||||
#include "visual_script_func_nodes.h"
|
||||
#include "visual_script_builtin_funcs.h"
|
||||
#include "visual_script_flow_control.h"
|
||||
|
||||
|
||||
VisualScriptLanguage *visual_script_language=NULL;
|
||||
|
||||
|
||||
void register_visual_script_types() {
|
||||
|
||||
ObjectTypeDB::register_type<VisualScript>();
|
||||
ObjectTypeDB::register_virtual_type<VisualScriptNode>();
|
||||
ObjectTypeDB::register_type<VisualScriptFunction>();
|
||||
ObjectTypeDB::register_type<VisualScriptOperator>();
|
||||
ObjectTypeDB::register_type<VisualScriptVariable>();
|
||||
ObjectTypeDB::register_type<VisualScriptConstant>();
|
||||
ObjectTypeDB::register_type<VisualScriptIndexGet>();
|
||||
ObjectTypeDB::register_type<VisualScriptIndexSet>();
|
||||
ObjectTypeDB::register_type<VisualScriptGlobalConstant>();
|
||||
ObjectTypeDB::register_type<VisualScriptMathConstant>();
|
||||
ObjectTypeDB::register_type<VisualScriptSingleton>();
|
||||
ObjectTypeDB::register_type<VisualScriptSceneNode>();
|
||||
|
||||
ObjectTypeDB::register_type<VisualScriptFunctionCall>();
|
||||
ObjectTypeDB::register_type<VisualScriptPropertySet>();
|
||||
ObjectTypeDB::register_type<VisualScriptPropertyGet>();
|
||||
ObjectTypeDB::register_type<VisualScriptScriptCall>();
|
||||
ObjectTypeDB::register_type<VisualScriptEmitSignal>();
|
||||
|
||||
ObjectTypeDB::register_type<VisualScriptReturn>();
|
||||
ObjectTypeDB::register_type<VisualScriptCondition>();
|
||||
ObjectTypeDB::register_type<VisualScriptWhile>();
|
||||
ObjectTypeDB::register_type<VisualScriptIterator>();
|
||||
ObjectTypeDB::register_type<VisualScriptSequence>();
|
||||
|
||||
ObjectTypeDB::register_type<VisualScriptBuiltinFunc>();
|
||||
|
||||
visual_script_language=memnew( VisualScriptLanguage );
|
||||
//script_language_gd->init();
|
||||
ScriptServer::register_language(visual_script_language);
|
||||
|
||||
register_visual_script_nodes();
|
||||
register_visual_script_func_nodes();
|
||||
register_visual_script_builtin_func_node();
|
||||
register_visual_script_flow_control_nodes();
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
VisualScriptEditor::register_editor();
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
|
||||
void unregister_visual_script_types() {
|
||||
|
||||
|
||||
ScriptServer::unregister_language(visual_script_language);
|
||||
|
||||
if (visual_script_language)
|
||||
memdelete( visual_script_language );
|
||||
|
||||
}
|
30
modules/visual_script/register_types.h
Normal file
|
@ -0,0 +1,30 @@
|
|||
/*************************************************************************/
|
||||
/* register_types.h */
|
||||
/*************************************************************************/
|
||||
/* This file is part of: */
|
||||
/* GODOT ENGINE */
|
||||
/* http://www.godotengine.org */
|
||||
/*************************************************************************/
|
||||
/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */
|
||||
/* */
|
||||
/* Permission is hereby granted, free of charge, to any person obtaining */
|
||||
/* a copy of this software and associated documentation files (the */
|
||||
/* "Software"), to deal in the Software without restriction, including */
|
||||
/* without limitation the rights to use, copy, modify, merge, publish, */
|
||||
/* distribute, sublicense, and/or sell copies of the Software, and to */
|
||||
/* permit persons to whom the Software is furnished to do so, subject to */
|
||||
/* the following conditions: */
|
||||
/* */
|
||||
/* The above copyright notice and this permission notice shall be */
|
||||
/* included in all copies or substantial portions of the Software. */
|
||||
/* */
|
||||
/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
|
||||
/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
|
||||
/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/
|
||||
/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
|
||||
/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
|
||||
/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
|
||||
/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
/*************************************************************************/
|
||||
void register_visual_script_types();
|
||||
void unregister_visual_script_types();
|
1156
modules/visual_script/visual_script.cpp
Normal file
318
modules/visual_script/visual_script.h
Normal file
|
@ -0,0 +1,318 @@
|
|||
#ifndef VSCRIPT_H
|
||||
#define VSCRIPT_H
|
||||
|
||||
#include "script_language.h"
|
||||
|
||||
|
||||
class VScriptInstance;
|
||||
class VisualScriptNodeInstance;
|
||||
class VisualScript;
|
||||
|
||||
class VisualScriptNode : public Resource {
|
||||
OBJ_TYPE(VisualScriptNode,Resource)
|
||||
|
||||
friend class VisualScript;
|
||||
|
||||
Set<VisualScript*> scripts_used;
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
public:
|
||||
|
||||
Ref<VisualScript> get_visual_script() const;
|
||||
|
||||
virtual int get_output_sequence_port_count() const=0;
|
||||
virtual bool has_input_sequence_port() const=0;
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const=0;
|
||||
|
||||
virtual int get_input_value_port_count() const=0;
|
||||
virtual int get_output_value_port_count() const=0;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const=0;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const=0;
|
||||
|
||||
virtual String get_caption() const=0;
|
||||
virtual String get_text() const=0;
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance)=0;
|
||||
|
||||
};
|
||||
|
||||
|
||||
class VisualScriptNodeInstance {
|
||||
public:
|
||||
|
||||
virtual int step()=0; //do a step, return which sequence port to go out
|
||||
|
||||
virtual Variant get_input_value(int p_idx)=0;
|
||||
virtual Variant get_output_value(int p_idx)=0;
|
||||
|
||||
virtual VisualScriptNode* get_node()=0;
|
||||
|
||||
virtual ~VisualScriptNodeInstance();
|
||||
};
|
||||
|
||||
|
||||
class VisualScript : public Script {
|
||||
|
||||
OBJ_TYPE( VisualScript, Script )
|
||||
|
||||
RES_BASE_EXTENSION("vs");
|
||||
|
||||
public:
|
||||
|
||||
struct SequenceConnection {
|
||||
|
||||
union {
|
||||
|
||||
struct {
|
||||
uint64_t from_node : 24;
|
||||
uint64_t from_output : 16;
|
||||
uint64_t to_node : 24;
|
||||
};
|
||||
uint64_t id;
|
||||
};
|
||||
|
||||
bool operator<(const SequenceConnection& p_connection) const {
|
||||
|
||||
return id<p_connection.id;
|
||||
}
|
||||
};
|
||||
|
||||
struct DataConnection {
|
||||
|
||||
union {
|
||||
|
||||
struct {
|
||||
uint64_t from_node : 24;
|
||||
uint64_t from_port : 8;
|
||||
uint64_t to_node : 24;
|
||||
uint64_t to_port : 8;
|
||||
};
|
||||
uint64_t id;
|
||||
};
|
||||
|
||||
bool operator<(const DataConnection& p_connection) const {
|
||||
|
||||
return id<p_connection.id;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
private:
|
||||
|
||||
StringName base_type;
|
||||
struct Argument {
|
||||
String name;
|
||||
Variant::Type type;
|
||||
};
|
||||
|
||||
struct Function {
|
||||
struct NodeData {
|
||||
Point2 pos;
|
||||
Ref<VisualScriptNode> node;
|
||||
};
|
||||
|
||||
Map<int,NodeData> nodes;
|
||||
|
||||
Set<SequenceConnection> sequence_connections;
|
||||
|
||||
Set<DataConnection> data_connections;
|
||||
|
||||
int function_id;
|
||||
|
||||
Function() { function_id=-1; }
|
||||
|
||||
};
|
||||
|
||||
struct Variable {
|
||||
PropertyInfo info;
|
||||
Variant default_value;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Map<StringName,Function> functions;
|
||||
Map<StringName,Variable> variables;
|
||||
Map<StringName,Vector<Argument> > custom_signals;
|
||||
|
||||
void _set_variable_info(const StringName& p_name,const Dictionary& p_info);
|
||||
Dictionary _get_variable_info(const StringName& p_name) const;
|
||||
|
||||
|
||||
void _set_data(const Dictionary& p_data);
|
||||
Dictionary _get_data() const;
|
||||
|
||||
protected:
|
||||
|
||||
void _node_ports_changed(int p_id);
|
||||
static void _bind_methods();
|
||||
public:
|
||||
|
||||
|
||||
void add_function(const StringName& p_name);
|
||||
bool has_function(const StringName& p_name) const;
|
||||
void remove_function(const StringName& p_name);
|
||||
void rename_function(const StringName& p_name,const StringName& p_new_name);
|
||||
void get_function_list(List<StringName> *r_functions) const;
|
||||
int get_function_node_id(const StringName& p_name) const;
|
||||
|
||||
|
||||
void add_node(const StringName& p_func,int p_id,const Ref<VisualScriptNode>& p_node,const Point2& p_pos=Point2());
|
||||
void remove_node(const StringName& p_func,int p_id);
|
||||
Ref<VisualScriptNode> get_node(const StringName& p_func,int p_id) const;
|
||||
void set_node_pos(const StringName& p_func,int p_id,const Point2& p_pos);
|
||||
Point2 get_node_pos(const StringName& p_func,int p_id) const;
|
||||
void get_node_list(const StringName& p_func,List<int> *r_nodes) const;
|
||||
|
||||
void sequence_connect(const StringName& p_func,int p_from_node,int p_from_output,int p_to_node);
|
||||
void sequence_disconnect(const StringName& p_func,int p_from_node,int p_from_output,int p_to_node);
|
||||
bool has_sequence_connection(const StringName& p_func,int p_from_node,int p_from_output,int p_to_node) const;
|
||||
void get_sequence_connection_list(const StringName& p_func,List<SequenceConnection> *r_connection) const;
|
||||
|
||||
void data_connect(const StringName& p_func,int p_from_node,int p_from_port,int p_to_node,int p_to_port);
|
||||
void data_disconnect(const StringName& p_func,int p_from_node,int p_from_port,int p_to_node,int p_to_port);
|
||||
bool has_data_connection(const StringName& p_func,int p_from_node,int p_from_port,int p_to_node,int p_to_port) const;
|
||||
void get_data_connection_list(const StringName& p_func,List<DataConnection> *r_connection) const;
|
||||
|
||||
void add_variable(const StringName& p_name,const Variant& p_default_value=Variant());
|
||||
bool has_variable(const StringName& p_name) const;
|
||||
void remove_variable(const StringName& p_name);
|
||||
void set_variable_default_value(const StringName& p_name,const Variant& p_value);
|
||||
Variant get_variable_default_value(const StringName& p_name) const;
|
||||
void set_variable_info(const StringName& p_name,const PropertyInfo& p_info);
|
||||
PropertyInfo get_variable_info(const StringName& p_name) const;
|
||||
void get_variable_list(List<StringName> *r_variables);
|
||||
void rename_variable(const StringName& p_name,const StringName& p_new_name);
|
||||
|
||||
|
||||
void add_custom_signal(const StringName& p_name);
|
||||
bool has_custom_signal(const StringName& p_name) const;
|
||||
void custom_signal_add_argument(const StringName& p_func,Variant::Type p_type,const String& p_name,int p_index=-1);
|
||||
void custom_signal_set_argument_type(const StringName& p_func,int p_argidx,Variant::Type p_type);
|
||||
Variant::Type custom_signal_get_argument_type(const StringName& p_func,int p_argidx) const;
|
||||
void custom_signal_set_argument_name(const StringName& p_func,int p_argidx,const String& p_name);
|
||||
String custom_signal_get_argument_name(const StringName& p_func,int p_argidx) const;
|
||||
void custom_signal_remove_argument(const StringName& p_func,int p_argidx);
|
||||
int custom_signal_get_argument_count(const StringName& p_func) const;
|
||||
void custom_signal_swap_argument(const StringName& p_func,int p_argidx,int p_with_argidx);
|
||||
void remove_custom_signal(const StringName& p_name);
|
||||
void rename_custom_signal(const StringName& p_name,const StringName& p_new_name);
|
||||
|
||||
void get_custom_signal_list(List<StringName> *r_custom_signals) const;
|
||||
|
||||
int get_available_id() const;
|
||||
|
||||
void set_instance_base_type(const StringName& p_type);
|
||||
|
||||
virtual bool can_instance() const;
|
||||
|
||||
virtual StringName get_instance_base_type() const;
|
||||
virtual ScriptInstance* instance_create(Object *p_this);
|
||||
virtual bool instance_has(const Object *p_this) const;
|
||||
|
||||
|
||||
virtual bool has_source_code() const;
|
||||
virtual String get_source_code() const;
|
||||
virtual void set_source_code(const String& p_code);
|
||||
virtual Error reload(bool p_keep_state=false);
|
||||
|
||||
virtual bool is_tool() const;
|
||||
|
||||
virtual String get_node_type() const;
|
||||
|
||||
virtual ScriptLanguage *get_language() const;
|
||||
|
||||
virtual bool has_script_signal(const StringName& p_signal) const;
|
||||
virtual void get_script_signal_list(List<MethodInfo> *r_signals) const;
|
||||
|
||||
virtual bool get_property_default_value(const StringName& p_property,Variant& r_value) const;
|
||||
virtual void get_method_list(List<MethodInfo> *p_list) const;
|
||||
|
||||
|
||||
VisualScript();
|
||||
~VisualScript();
|
||||
};
|
||||
|
||||
|
||||
typedef Ref<VisualScriptNode> (*VisualScriptNodeRegisterFunc)(const String& p_type);
|
||||
|
||||
class VisualScriptLanguage : public ScriptLanguage {
|
||||
|
||||
Map<String,VisualScriptNodeRegisterFunc> register_funcs;
|
||||
public:
|
||||
|
||||
static VisualScriptLanguage* singleton;
|
||||
|
||||
virtual String get_name() const;
|
||||
|
||||
/* LANGUAGE FUNCTIONS */
|
||||
virtual void init();
|
||||
virtual String get_type() const;
|
||||
virtual String get_extension() const;
|
||||
virtual Error execute_file(const String& p_path) ;
|
||||
virtual void finish();
|
||||
|
||||
/* EDITOR FUNCTIONS */
|
||||
virtual void get_reserved_words(List<String> *p_words) const;
|
||||
virtual void get_comment_delimiters(List<String> *p_delimiters) const;
|
||||
virtual void get_string_delimiters(List<String> *p_delimiters) const;
|
||||
virtual String get_template(const String& p_class_name, const String& p_base_class_name) const;
|
||||
virtual bool validate(const String& p_script, int &r_line_error,int &r_col_error,String& r_test_error, const String& p_path="",List<String> *r_functions=NULL) const;
|
||||
virtual Script *create_script() const;
|
||||
virtual bool has_named_classes() const;
|
||||
virtual int find_function(const String& p_function,const String& p_code) const;
|
||||
virtual String make_function(const String& p_class,const String& p_name,const StringArray& p_args) const;
|
||||
virtual void auto_indent_code(String& p_code,int p_from_line,int p_to_line) const;
|
||||
virtual void add_global_constant(const StringName& p_variable,const Variant& p_value);
|
||||
|
||||
|
||||
/* DEBUGGER FUNCTIONS */
|
||||
|
||||
virtual String debug_get_error() const;
|
||||
virtual int debug_get_stack_level_count() const;
|
||||
virtual int debug_get_stack_level_line(int p_level) const;
|
||||
virtual String debug_get_stack_level_function(int p_level) const;
|
||||
virtual String debug_get_stack_level_source(int p_level) const;
|
||||
virtual void debug_get_stack_level_locals(int p_level,List<String> *p_locals, List<Variant> *p_values, int p_max_subitems=-1,int p_max_depth=-1);
|
||||
virtual void debug_get_stack_level_members(int p_level,List<String> *p_members, List<Variant> *p_values, int p_max_subitems=-1,int p_max_depth=-1);
|
||||
virtual void debug_get_globals(List<String> *p_locals, List<Variant> *p_values, int p_max_subitems=-1,int p_max_depth=-1);
|
||||
virtual String debug_parse_stack_level_expression(int p_level,const String& p_expression,int p_max_subitems=-1,int p_max_depth=-1);
|
||||
|
||||
|
||||
virtual void reload_all_scripts();
|
||||
virtual void reload_tool_script(const Ref<Script>& p_script,bool p_soft_reload);
|
||||
/* LOADER FUNCTIONS */
|
||||
|
||||
virtual void get_recognized_extensions(List<String> *p_extensions) const;
|
||||
virtual void get_public_functions(List<MethodInfo> *p_functions) const;
|
||||
virtual void get_public_constants(List<Pair<String,Variant> > *p_constants) const;
|
||||
|
||||
virtual void profiling_start();
|
||||
virtual void profiling_stop();
|
||||
|
||||
virtual int profiling_get_accumulated_data(ProfilingInfo *p_info_arr,int p_info_max);
|
||||
virtual int profiling_get_frame_data(ProfilingInfo *p_info_arr,int p_info_max);
|
||||
|
||||
void add_register_func(const String& p_name,VisualScriptNodeRegisterFunc p_func);
|
||||
Ref<VisualScriptNode> create_node_from_name(const String& p_name);
|
||||
void get_registered_node_names(List<String> *r_names);
|
||||
|
||||
|
||||
VisualScriptLanguage();
|
||||
|
||||
};
|
||||
|
||||
//aid for registering
|
||||
template<class T>
|
||||
static Ref<VisualScriptNode> create_node_generic(const String& p_name) {
|
||||
|
||||
Ref<T> node;
|
||||
node.instance();
|
||||
return node;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif // VSCRIPT_H
|
641
modules/visual_script/visual_script_builtin_funcs.cpp
Normal file
|
@ -0,0 +1,641 @@
|
|||
#include "visual_script_builtin_funcs.h"
|
||||
|
||||
|
||||
const char* VisualScriptBuiltinFunc::func_name[VisualScriptBuiltinFunc::FUNC_MAX]={
|
||||
"sin",
|
||||
"cos",
|
||||
"tan",
|
||||
"sinh",
|
||||
"cosh",
|
||||
"tanh",
|
||||
"asin",
|
||||
"acos",
|
||||
"atan",
|
||||
"atan2",
|
||||
"sqrt",
|
||||
"fmod",
|
||||
"fposmod",
|
||||
"floor",
|
||||
"ceil",
|
||||
"round",
|
||||
"abs",
|
||||
"sign",
|
||||
"pow",
|
||||
"log",
|
||||
"exp",
|
||||
"is_nan",
|
||||
"is_inf",
|
||||
"ease",
|
||||
"decimals",
|
||||
"stepify",
|
||||
"lerp",
|
||||
"dectime",
|
||||
"randomize",
|
||||
"randi",
|
||||
"randf",
|
||||
"rand_range",
|
||||
"seed",
|
||||
"rand_seed",
|
||||
"deg2rad",
|
||||
"rad2deg",
|
||||
"linear2db",
|
||||
"db2linear",
|
||||
"max",
|
||||
"min",
|
||||
"clamp",
|
||||
"nearest_po2",
|
||||
"weakref",
|
||||
"funcref",
|
||||
"convert",
|
||||
"typeof",
|
||||
"type_exists",
|
||||
"str",
|
||||
"print",
|
||||
"printerr",
|
||||
"printraw",
|
||||
"var2str",
|
||||
"str2var",
|
||||
"var2bytes",
|
||||
"bytes2var",
|
||||
};
|
||||
|
||||
|
||||
|
||||
int VisualScriptBuiltinFunc::get_output_sequence_port_count() const {
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool VisualScriptBuiltinFunc::has_input_sequence_port() const{
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int VisualScriptBuiltinFunc::get_input_value_port_count() const{
|
||||
|
||||
|
||||
switch(func) {
|
||||
|
||||
case MATH_RANDOMIZE:
|
||||
case MATH_RAND:
|
||||
case MATH_RANDF:
|
||||
return 0;
|
||||
case MATH_SIN:
|
||||
case MATH_COS:
|
||||
case MATH_TAN:
|
||||
case MATH_SINH:
|
||||
case MATH_COSH:
|
||||
case MATH_TANH:
|
||||
case MATH_ASIN:
|
||||
case MATH_ACOS:
|
||||
case MATH_ATAN:
|
||||
case MATH_SQRT:
|
||||
case MATH_FLOOR:
|
||||
case MATH_CEIL:
|
||||
case MATH_ROUND:
|
||||
case MATH_ABS:
|
||||
case MATH_SIGN:
|
||||
case MATH_LOG:
|
||||
case MATH_EXP:
|
||||
case MATH_ISNAN:
|
||||
case MATH_ISINF:
|
||||
case MATH_DECIMALS:
|
||||
case MATH_SEED:
|
||||
case MATH_RANDSEED:
|
||||
case MATH_DEG2RAD:
|
||||
case MATH_RAD2DEG:
|
||||
case MATH_LINEAR2DB:
|
||||
case MATH_DB2LINEAR:
|
||||
case LOGIC_NEAREST_PO2:
|
||||
case OBJ_WEAKREF:
|
||||
case TYPE_OF:
|
||||
case TEXT_STR:
|
||||
case TEXT_PRINT:
|
||||
case TEXT_PRINTERR:
|
||||
case TEXT_PRINTRAW:
|
||||
case VAR_TO_STR:
|
||||
case STR_TO_VAR:
|
||||
case VAR_TO_BYTES:
|
||||
case BYTES_TO_VAR:
|
||||
case TYPE_EXISTS:
|
||||
return 1;
|
||||
case MATH_ATAN2:
|
||||
case MATH_FMOD:
|
||||
case MATH_FPOSMOD:
|
||||
case MATH_POW:
|
||||
case MATH_EASE:
|
||||
case MATH_STEPIFY:
|
||||
case MATH_RANDOM:
|
||||
case LOGIC_MAX:
|
||||
case LOGIC_MIN:
|
||||
case FUNC_FUNCREF:
|
||||
case TYPE_CONVERT:
|
||||
return 2;
|
||||
case MATH_LERP:
|
||||
case MATH_DECTIME:
|
||||
case LOGIC_CLAMP:
|
||||
return 3;
|
||||
case FUNC_MAX:{}
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
int VisualScriptBuiltinFunc::get_output_value_port_count() const{
|
||||
|
||||
switch(func) {
|
||||
case MATH_RANDOMIZE:
|
||||
case TEXT_PRINT:
|
||||
case TEXT_PRINTERR:
|
||||
case TEXT_PRINTRAW:
|
||||
case MATH_SEED:
|
||||
return 0;
|
||||
case MATH_RANDSEED:
|
||||
return 2;
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
String VisualScriptBuiltinFunc::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
return String();
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptBuiltinFunc::get_input_value_port_info(int p_idx) const{
|
||||
|
||||
switch(func) {
|
||||
|
||||
case MATH_SIN:
|
||||
case MATH_COS:
|
||||
case MATH_TAN:
|
||||
case MATH_SINH:
|
||||
case MATH_COSH:
|
||||
case MATH_TANH:
|
||||
case MATH_ASIN:
|
||||
case MATH_ACOS:
|
||||
case MATH_ATAN:
|
||||
case MATH_ATAN2:
|
||||
case MATH_SQRT: {
|
||||
return PropertyInfo(Variant::REAL,"num");
|
||||
} break;
|
||||
case MATH_FMOD:
|
||||
case MATH_FPOSMOD: {
|
||||
if (p_idx==0)
|
||||
return PropertyInfo(Variant::REAL,"x");
|
||||
else
|
||||
return PropertyInfo(Variant::REAL,"y");
|
||||
} break;
|
||||
case MATH_FLOOR:
|
||||
case MATH_CEIL:
|
||||
case MATH_ROUND:
|
||||
case MATH_ABS:
|
||||
case MATH_SIGN: {
|
||||
return PropertyInfo(Variant::REAL,"num");
|
||||
|
||||
} break;
|
||||
|
||||
case MATH_POW: {
|
||||
if (p_idx==0)
|
||||
return PropertyInfo(Variant::REAL,"x");
|
||||
else
|
||||
return PropertyInfo(Variant::REAL,"y");
|
||||
} break;
|
||||
case MATH_LOG:
|
||||
case MATH_EXP:
|
||||
case MATH_ISNAN:
|
||||
case MATH_ISINF: {
|
||||
return PropertyInfo(Variant::REAL,"num");
|
||||
} break;
|
||||
case MATH_EASE: {
|
||||
if (p_idx==0)
|
||||
return PropertyInfo(Variant::REAL,"s");
|
||||
else
|
||||
return PropertyInfo(Variant::REAL,"curve");
|
||||
} break;
|
||||
case MATH_DECIMALS: {
|
||||
return PropertyInfo(Variant::REAL,"step");
|
||||
} break;
|
||||
case MATH_STEPIFY: {
|
||||
if (p_idx==0)
|
||||
return PropertyInfo(Variant::REAL,"s");
|
||||
else
|
||||
return PropertyInfo(Variant::REAL,"steps");
|
||||
} break;
|
||||
case MATH_LERP: {
|
||||
if (p_idx==0)
|
||||
return PropertyInfo(Variant::REAL,"from");
|
||||
else if (p_idx==1)
|
||||
return PropertyInfo(Variant::REAL,"to");
|
||||
else
|
||||
return PropertyInfo(Variant::REAL,"weight");
|
||||
|
||||
} break;
|
||||
case MATH_DECTIME: {
|
||||
if (p_idx==0)
|
||||
return PropertyInfo(Variant::REAL,"value");
|
||||
else if (p_idx==1)
|
||||
return PropertyInfo(Variant::REAL,"amount");
|
||||
else
|
||||
return PropertyInfo(Variant::REAL,"step");
|
||||
} break;
|
||||
case MATH_RANDOMIZE: {
|
||||
|
||||
} break;
|
||||
case MATH_RAND: {
|
||||
|
||||
} break;
|
||||
case MATH_RANDF: {
|
||||
|
||||
} break;
|
||||
case MATH_RANDOM: {
|
||||
if (p_idx==0)
|
||||
return PropertyInfo(Variant::REAL,"from");
|
||||
else
|
||||
return PropertyInfo(Variant::REAL,"to");
|
||||
} break;
|
||||
case MATH_SEED: {
|
||||
return PropertyInfo(Variant::INT,"seed");
|
||||
} break;
|
||||
case MATH_RANDSEED: {
|
||||
return PropertyInfo(Variant::INT,"seed");
|
||||
} break;
|
||||
case MATH_DEG2RAD: {
|
||||
return PropertyInfo(Variant::REAL,"deg");
|
||||
} break;
|
||||
case MATH_RAD2DEG: {
|
||||
return PropertyInfo(Variant::REAL,"rad");
|
||||
} break;
|
||||
case MATH_LINEAR2DB: {
|
||||
return PropertyInfo(Variant::REAL,"nrg");
|
||||
} break;
|
||||
case MATH_DB2LINEAR: {
|
||||
return PropertyInfo(Variant::REAL,"db");
|
||||
} break;
|
||||
case LOGIC_MAX: {
|
||||
if (p_idx==0)
|
||||
return PropertyInfo(Variant::REAL,"a");
|
||||
else
|
||||
return PropertyInfo(Variant::REAL,"b");
|
||||
} break;
|
||||
case LOGIC_MIN: {
|
||||
if (p_idx==0)
|
||||
return PropertyInfo(Variant::REAL,"a");
|
||||
else
|
||||
return PropertyInfo(Variant::REAL,"b");
|
||||
} break;
|
||||
case LOGIC_CLAMP: {
|
||||
if (p_idx==0)
|
||||
return PropertyInfo(Variant::REAL,"a");
|
||||
else if (p_idx==0)
|
||||
return PropertyInfo(Variant::REAL,"min");
|
||||
else
|
||||
return PropertyInfo(Variant::REAL,"max");
|
||||
} break;
|
||||
case LOGIC_NEAREST_PO2: {
|
||||
return PropertyInfo(Variant::INT,"num");
|
||||
} break;
|
||||
case OBJ_WEAKREF: {
|
||||
|
||||
return PropertyInfo(Variant::OBJECT,"source");
|
||||
|
||||
} break;
|
||||
case FUNC_FUNCREF: {
|
||||
|
||||
if (p_idx==0)
|
||||
return PropertyInfo(Variant::OBJECT,"instance");
|
||||
else
|
||||
return PropertyInfo(Variant::STRING,"funcname");
|
||||
|
||||
} break;
|
||||
case TYPE_CONVERT: {
|
||||
|
||||
if (p_idx==0)
|
||||
return PropertyInfo(Variant::NIL,"what");
|
||||
else
|
||||
return PropertyInfo(Variant::STRING,"type");
|
||||
} break;
|
||||
case TYPE_OF: {
|
||||
return PropertyInfo(Variant::NIL,"what");
|
||||
|
||||
} break;
|
||||
case TYPE_EXISTS: {
|
||||
|
||||
return PropertyInfo(Variant::STRING,"type");
|
||||
|
||||
} break;
|
||||
case TEXT_STR: {
|
||||
|
||||
return PropertyInfo(Variant::NIL,"value");
|
||||
|
||||
|
||||
} break;
|
||||
case TEXT_PRINT: {
|
||||
|
||||
return PropertyInfo(Variant::NIL,"value");
|
||||
|
||||
} break;
|
||||
case TEXT_PRINTERR: {
|
||||
return PropertyInfo(Variant::NIL,"value");
|
||||
|
||||
} break;
|
||||
case TEXT_PRINTRAW: {
|
||||
|
||||
return PropertyInfo(Variant::NIL,"value");
|
||||
|
||||
} break;
|
||||
case VAR_TO_STR: {
|
||||
return PropertyInfo(Variant::NIL,"var");
|
||||
|
||||
} break;
|
||||
case STR_TO_VAR: {
|
||||
|
||||
return PropertyInfo(Variant::STRING,"string");
|
||||
} break;
|
||||
case VAR_TO_BYTES: {
|
||||
return PropertyInfo(Variant::NIL,"var");
|
||||
|
||||
} break;
|
||||
case BYTES_TO_VAR: {
|
||||
|
||||
return PropertyInfo(Variant::RAW_ARRAY,"bytes");
|
||||
} break;
|
||||
case FUNC_MAX:{}
|
||||
}
|
||||
|
||||
return PropertyInfo();
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptBuiltinFunc::get_output_value_port_info(int p_idx) const{
|
||||
|
||||
Variant::Type t=Variant::NIL;
|
||||
switch(func) {
|
||||
|
||||
case MATH_SIN:
|
||||
case MATH_COS:
|
||||
case MATH_TAN:
|
||||
case MATH_SINH:
|
||||
case MATH_COSH:
|
||||
case MATH_TANH:
|
||||
case MATH_ASIN:
|
||||
case MATH_ACOS:
|
||||
case MATH_ATAN:
|
||||
case MATH_ATAN2:
|
||||
case MATH_SQRT:
|
||||
case MATH_FMOD:
|
||||
case MATH_FPOSMOD:
|
||||
case MATH_FLOOR:
|
||||
case MATH_CEIL:
|
||||
t=Variant::REAL;
|
||||
case MATH_ROUND: {
|
||||
t=Variant::INT;
|
||||
} break;
|
||||
case MATH_ABS: {
|
||||
t=Variant::NIL;
|
||||
} break;
|
||||
case MATH_SIGN: {
|
||||
t=Variant::NIL;
|
||||
} break;
|
||||
case MATH_POW:
|
||||
case MATH_LOG:
|
||||
case MATH_EXP: {
|
||||
t=Variant::REAL;
|
||||
} break;
|
||||
case MATH_ISNAN:
|
||||
case MATH_ISINF: {
|
||||
t=Variant::BOOL;
|
||||
} break;
|
||||
case MATH_EASE: {
|
||||
t=Variant::REAL;
|
||||
} break;
|
||||
case MATH_DECIMALS: {
|
||||
t=Variant::INT;
|
||||
} break;
|
||||
case MATH_STEPIFY:
|
||||
case MATH_LERP:
|
||||
case MATH_DECTIME: {
|
||||
t=Variant::REAL;
|
||||
|
||||
} break;
|
||||
case MATH_RANDOMIZE: {
|
||||
|
||||
} break;
|
||||
case MATH_RAND: {
|
||||
|
||||
t=Variant::INT;
|
||||
} break;
|
||||
case MATH_RANDF:
|
||||
case MATH_RANDOM: {
|
||||
t=Variant::REAL;
|
||||
} break;
|
||||
case MATH_SEED: {
|
||||
|
||||
} break;
|
||||
case MATH_RANDSEED: {
|
||||
|
||||
if (p_idx==0)
|
||||
return PropertyInfo(Variant::INT,"rnd");
|
||||
else
|
||||
return PropertyInfo(Variant::INT,"seed");
|
||||
} break;
|
||||
case MATH_DEG2RAD:
|
||||
case MATH_RAD2DEG:
|
||||
case MATH_LINEAR2DB:
|
||||
case MATH_DB2LINEAR: {
|
||||
t=Variant::REAL;
|
||||
} break;
|
||||
case LOGIC_MAX:
|
||||
case LOGIC_MIN:
|
||||
case LOGIC_CLAMP: {
|
||||
|
||||
|
||||
} break;
|
||||
|
||||
case LOGIC_NEAREST_PO2: {
|
||||
t=Variant::NIL;
|
||||
} break;
|
||||
case OBJ_WEAKREF: {
|
||||
|
||||
t=Variant::OBJECT;
|
||||
|
||||
} break;
|
||||
case FUNC_FUNCREF: {
|
||||
|
||||
t=Variant::OBJECT;
|
||||
|
||||
} break;
|
||||
case TYPE_CONVERT: {
|
||||
|
||||
|
||||
|
||||
} break;
|
||||
case TYPE_OF: {
|
||||
t=Variant::INT;
|
||||
|
||||
} break;
|
||||
case TYPE_EXISTS: {
|
||||
|
||||
t=Variant::BOOL;
|
||||
|
||||
} break;
|
||||
case TEXT_STR: {
|
||||
|
||||
t=Variant::STRING;
|
||||
|
||||
} break;
|
||||
case TEXT_PRINT: {
|
||||
|
||||
|
||||
} break;
|
||||
case TEXT_PRINTERR: {
|
||||
|
||||
} break;
|
||||
case TEXT_PRINTRAW: {
|
||||
|
||||
} break;
|
||||
case VAR_TO_STR: {
|
||||
t=Variant::STRING;
|
||||
} break;
|
||||
case STR_TO_VAR: {
|
||||
|
||||
} break;
|
||||
case VAR_TO_BYTES: {
|
||||
t=Variant::RAW_ARRAY;
|
||||
|
||||
} break;
|
||||
case BYTES_TO_VAR: {
|
||||
|
||||
|
||||
} break;
|
||||
case FUNC_MAX:{}
|
||||
}
|
||||
|
||||
return PropertyInfo(t,"");
|
||||
}
|
||||
|
||||
String VisualScriptBuiltinFunc::get_caption() const {
|
||||
|
||||
return "BuiltinFunc";
|
||||
}
|
||||
|
||||
String VisualScriptBuiltinFunc::get_text() const {
|
||||
|
||||
return func_name[func];
|
||||
}
|
||||
|
||||
void VisualScriptBuiltinFunc::set_func(BuiltinFunc p_which) {
|
||||
|
||||
ERR_FAIL_INDEX(p_which,FUNC_MAX);
|
||||
func=p_which;
|
||||
_change_notify();
|
||||
emit_signal("ports_changed");
|
||||
}
|
||||
|
||||
VisualScriptBuiltinFunc::BuiltinFunc VisualScriptBuiltinFunc::get_func() {
|
||||
return func;
|
||||
}
|
||||
|
||||
|
||||
|
||||
VisualScriptNodeInstance* VisualScriptBuiltinFunc::instance(VScriptInstance* p_instance) {
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void VisualScriptBuiltinFunc::_bind_methods() {
|
||||
|
||||
ObjectTypeDB::bind_method(_MD("set_func","which"),&VisualScriptBuiltinFunc::set_func);
|
||||
ObjectTypeDB::bind_method(_MD("get_func"),&VisualScriptBuiltinFunc::get_func);
|
||||
|
||||
String cc;
|
||||
|
||||
for(int i=0;i<FUNC_MAX;i++) {
|
||||
|
||||
if (i>0)
|
||||
cc+=",";
|
||||
cc+=func_name[i];
|
||||
}
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT,"function",PROPERTY_HINT_ENUM,cc),_SCS("set_func"),_SCS("get_func"));
|
||||
}
|
||||
|
||||
VisualScriptBuiltinFunc::VisualScriptBuiltinFunc() {
|
||||
|
||||
func=MATH_SIN;
|
||||
}
|
||||
|
||||
template<VisualScriptBuiltinFunc::BuiltinFunc func>
|
||||
static Ref<VisualScriptNode> create_builtin_func_node(const String& p_name) {
|
||||
|
||||
Ref<VisualScriptBuiltinFunc> node;
|
||||
node.instance();
|
||||
node->set_func(func);
|
||||
return node;
|
||||
}
|
||||
|
||||
void register_visual_script_builtin_func_node() {
|
||||
|
||||
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/sin",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_SIN>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/cos",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_COS>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/tan",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_TAN>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/sinh",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_SINH>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/cosh",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_COSH>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/tanh",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_TANH>);
|
||||
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/asin",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_ASIN>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/acos",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_ACOS>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/atan",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_ATAN>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/atan2",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_ATAN2>);
|
||||
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/sqrt",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_SQRT>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/fmod",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_FMOD>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/fposmod",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_FPOSMOD>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/floor",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_FLOOR>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/ceil",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_CEIL>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/round",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_ROUND>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/abs",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_ABS>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/sign",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_SIGN>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/pow",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_POW>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/log",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_LOG>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/exp",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_EXP>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/isnan",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_ISNAN>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/isinf",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_ISINF>);
|
||||
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/ease",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_EASE>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/decimals",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_DECIMALS>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/stepify",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_STEPIFY>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/lerp",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_LERP>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/dectime",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_DECTIME>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/randomize",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RANDOMIZE>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/rand",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RAND>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/randf",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RANDF>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/random",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RANDOM>);
|
||||
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/seed",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_SEED>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/randseed",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RANDSEED>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/deg2rad",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_DEG2RAD>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/rad2deg",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_RAD2DEG>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/linear2db",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_LINEAR2DB>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/db2linear",create_builtin_func_node<VisualScriptBuiltinFunc::MATH_DB2LINEAR>);
|
||||
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/max",create_builtin_func_node<VisualScriptBuiltinFunc::LOGIC_MAX>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/min",create_builtin_func_node<VisualScriptBuiltinFunc::LOGIC_MIN>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/clamp",create_builtin_func_node<VisualScriptBuiltinFunc::LOGIC_CLAMP>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/nearest_po2",create_builtin_func_node<VisualScriptBuiltinFunc::LOGIC_NEAREST_PO2>);
|
||||
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/weakref",create_builtin_func_node<VisualScriptBuiltinFunc::OBJ_WEAKREF>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/funcref",create_builtin_func_node<VisualScriptBuiltinFunc::FUNC_FUNCREF>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/convert",create_builtin_func_node<VisualScriptBuiltinFunc::TYPE_CONVERT>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/typeof",create_builtin_func_node<VisualScriptBuiltinFunc::TYPE_OF>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/type_exists",create_builtin_func_node<VisualScriptBuiltinFunc::TYPE_EXISTS>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/str",create_builtin_func_node<VisualScriptBuiltinFunc::TEXT_STR>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/print",create_builtin_func_node<VisualScriptBuiltinFunc::TEXT_PRINT>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/printerr",create_builtin_func_node<VisualScriptBuiltinFunc::TEXT_PRINTERR>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/printraw",create_builtin_func_node<VisualScriptBuiltinFunc::TEXT_PRINTRAW>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/var2str",create_builtin_func_node<VisualScriptBuiltinFunc::VAR_TO_STR>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/str2var",create_builtin_func_node<VisualScriptBuiltinFunc::STR_TO_VAR>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/var2bytes",create_builtin_func_node<VisualScriptBuiltinFunc::VAR_TO_BYTES>);
|
||||
VisualScriptLanguage::singleton->add_register_func("functions/builtin/bytes2var",create_builtin_func_node<VisualScriptBuiltinFunc::BYTES_TO_VAR>);
|
||||
|
||||
}
|
109
modules/visual_script/visual_script_builtin_funcs.h
Normal file
|
@ -0,0 +1,109 @@
|
|||
#ifndef VISUAL_SCRIPT_BUILTIN_FUNCS_H
|
||||
#define VISUAL_SCRIPT_BUILTIN_FUNCS_H
|
||||
|
||||
#include "visual_script.h"
|
||||
|
||||
|
||||
class VisualScriptBuiltinFunc : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptBuiltinFunc,VisualScriptNode)
|
||||
public:
|
||||
|
||||
enum BuiltinFunc {
|
||||
MATH_SIN,
|
||||
MATH_COS,
|
||||
MATH_TAN,
|
||||
MATH_SINH,
|
||||
MATH_COSH,
|
||||
MATH_TANH,
|
||||
MATH_ASIN,
|
||||
MATH_ACOS,
|
||||
MATH_ATAN,
|
||||
MATH_ATAN2,
|
||||
MATH_SQRT,
|
||||
MATH_FMOD,
|
||||
MATH_FPOSMOD,
|
||||
MATH_FLOOR,
|
||||
MATH_CEIL,
|
||||
MATH_ROUND,
|
||||
MATH_ABS,
|
||||
MATH_SIGN,
|
||||
MATH_POW,
|
||||
MATH_LOG,
|
||||
MATH_EXP,
|
||||
MATH_ISNAN,
|
||||
MATH_ISINF,
|
||||
MATH_EASE,
|
||||
MATH_DECIMALS,
|
||||
MATH_STEPIFY,
|
||||
MATH_LERP,
|
||||
MATH_DECTIME,
|
||||
MATH_RANDOMIZE,
|
||||
MATH_RAND,
|
||||
MATH_RANDF,
|
||||
MATH_RANDOM,
|
||||
MATH_SEED,
|
||||
MATH_RANDSEED,
|
||||
MATH_DEG2RAD,
|
||||
MATH_RAD2DEG,
|
||||
MATH_LINEAR2DB,
|
||||
MATH_DB2LINEAR,
|
||||
LOGIC_MAX,
|
||||
LOGIC_MIN,
|
||||
LOGIC_CLAMP,
|
||||
LOGIC_NEAREST_PO2,
|
||||
OBJ_WEAKREF,
|
||||
FUNC_FUNCREF,
|
||||
TYPE_CONVERT,
|
||||
TYPE_OF,
|
||||
TYPE_EXISTS,
|
||||
TEXT_STR,
|
||||
TEXT_PRINT,
|
||||
TEXT_PRINTERR,
|
||||
TEXT_PRINTRAW,
|
||||
VAR_TO_STR,
|
||||
STR_TO_VAR,
|
||||
VAR_TO_BYTES,
|
||||
BYTES_TO_VAR,
|
||||
FUNC_MAX
|
||||
};
|
||||
|
||||
private:
|
||||
static const char* func_name[FUNC_MAX];
|
||||
BuiltinFunc func;
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
void set_func(BuiltinFunc p_which);
|
||||
BuiltinFunc get_func();
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptBuiltinFunc();
|
||||
};
|
||||
|
||||
VARIANT_ENUM_CAST(VisualScriptBuiltinFunc::BuiltinFunc)
|
||||
|
||||
|
||||
void register_visual_script_builtin_func_node();
|
||||
|
||||
|
||||
#endif // VISUAL_SCRIPT_BUILTIN_FUNCS_H
|
1956
modules/visual_script/visual_script_editor.cpp
Normal file
147
modules/visual_script/visual_script_editor.h
Normal file
|
@ -0,0 +1,147 @@
|
|||
#ifndef VisualSCRIPT_EDITOR_H
|
||||
#define VisualSCRIPT_EDITOR_H
|
||||
|
||||
#include "tools/editor/plugins/script_editor_plugin.h"
|
||||
#include "visual_script.h"
|
||||
#include "tools/editor/property_editor.h"
|
||||
#include "scene/gui/graph_edit.h"
|
||||
#include "tools/editor/create_dialog.h"
|
||||
|
||||
class VisualScriptEditorSignalEdit;
|
||||
class VisualScriptEditorVariableEdit;
|
||||
|
||||
|
||||
|
||||
class VisualScriptEditor : public ScriptEditorBase {
|
||||
OBJ_TYPE(VisualScriptEditor,ScriptEditorBase)
|
||||
|
||||
enum {
|
||||
TYPE_SEQUENCE=1000,
|
||||
INDEX_BASE_SEQUENCE=1024
|
||||
|
||||
|
||||
};
|
||||
|
||||
Ref<VisualScript> script;
|
||||
|
||||
Button *base_type_select;
|
||||
|
||||
HSplitContainer *main_hsplit;
|
||||
VSplitContainer *left_vsplit;
|
||||
|
||||
GraphEdit *graph;
|
||||
|
||||
VisualScriptEditorSignalEdit *signal_editor;
|
||||
|
||||
AcceptDialog *edit_signal_dialog;
|
||||
PropertyEditor *edit_signal_edit;
|
||||
|
||||
|
||||
VisualScriptEditorVariableEdit *variable_editor;
|
||||
|
||||
AcceptDialog *edit_variable_dialog;
|
||||
PropertyEditor *edit_variable_edit;
|
||||
|
||||
UndoRedo *undo_redo;
|
||||
|
||||
Tree *members;
|
||||
Tree *nodes;
|
||||
|
||||
CreateDialog *select_base_type;
|
||||
|
||||
struct VirtualInMenu {
|
||||
String name;
|
||||
Variant::Type ret;
|
||||
bool ret_variant;
|
||||
Vector< Pair<Variant::Type,String> > args;
|
||||
};
|
||||
|
||||
Map<int,VirtualInMenu> virtuals_in_menu;
|
||||
|
||||
PopupMenu *new_function_menu;
|
||||
|
||||
|
||||
StringName edited_func;
|
||||
|
||||
void _update_graph_connections();
|
||||
void _update_graph(int p_only_id=-1);
|
||||
|
||||
bool updating_members;
|
||||
|
||||
void _update_members();
|
||||
|
||||
StringName selected;
|
||||
|
||||
String _validate_name(const String& p_name) const;
|
||||
|
||||
|
||||
void _node_selected(Node* p_node);
|
||||
|
||||
void _change_base_type_callback();
|
||||
void _change_base_type();
|
||||
void _member_selected();
|
||||
void _member_edited();
|
||||
void _override_pressed(int p_id);
|
||||
|
||||
void _begin_node_move();
|
||||
void _end_node_move();
|
||||
void _move_node(String func,int p_id,const Vector2& p_to);
|
||||
|
||||
void _node_moved(Vector2 p_from,Vector2 p_to, int p_id);
|
||||
void _remove_node(int p_id);
|
||||
void _graph_connected(const String& p_from,int p_from_slot,const String& p_to,int p_to_slot);
|
||||
void _graph_disconnected(const String& p_from,int p_from_slot,const String& p_to,int p_to_slot);
|
||||
void _node_ports_changed(const String& p_func,int p_id);
|
||||
void _available_node_doubleclicked();
|
||||
|
||||
void _update_available_nodes();
|
||||
|
||||
void _member_button(Object *p_item, int p_column, int p_button);
|
||||
|
||||
|
||||
String revert_on_drag;
|
||||
|
||||
void _input(const InputEvent& p_event);
|
||||
void _on_nodes_delete();
|
||||
void _on_nodes_duplicate();
|
||||
|
||||
Variant get_drag_data_fw(const Point2& p_point,Control* p_from);
|
||||
bool can_drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from) const;
|
||||
void drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from);
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
static void _bind_methods();
|
||||
public:
|
||||
|
||||
virtual void apply_code();
|
||||
virtual Ref<Script> get_edited_script() const;
|
||||
virtual Vector<String> get_functions();
|
||||
virtual void set_edited_script(const Ref<Script>& p_script);
|
||||
virtual void reload_text();
|
||||
virtual String get_name();
|
||||
virtual Ref<Texture> get_icon();
|
||||
virtual bool is_unsaved();
|
||||
virtual Variant get_edit_state();
|
||||
virtual void set_edit_state(const Variant& p_state);
|
||||
virtual void goto_line(int p_line);
|
||||
virtual void trim_trailing_whitespace();
|
||||
virtual void ensure_focus();
|
||||
virtual void tag_saved_version();
|
||||
virtual void reload(bool p_soft);
|
||||
virtual void get_breakpoints(List<int> *p_breakpoints);
|
||||
virtual bool goto_method(const String& p_method);
|
||||
virtual void add_callback(const String& p_function,StringArray p_args);
|
||||
virtual void update_settings();
|
||||
|
||||
virtual void set_tooltip_request_func(String p_method,Object* p_obj);
|
||||
virtual Control *get_edit_menu();
|
||||
|
||||
static void register_editor();
|
||||
|
||||
VisualScriptEditor();
|
||||
~VisualScriptEditor();
|
||||
};
|
||||
|
||||
#endif // VisualSCRIPT_EDITOR_H
|
418
modules/visual_script/visual_script_flow_control.cpp
Normal file
|
@ -0,0 +1,418 @@
|
|||
#include "visual_script_flow_control.h"
|
||||
|
||||
//////////////////////////////////////////
|
||||
////////////////RETURN////////////////////
|
||||
//////////////////////////////////////////
|
||||
|
||||
int VisualScriptReturn::get_output_sequence_port_count() const {
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool VisualScriptReturn::has_input_sequence_port() const{
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int VisualScriptReturn::get_input_value_port_count() const{
|
||||
|
||||
return with_value?1:0;
|
||||
}
|
||||
int VisualScriptReturn::get_output_value_port_count() const{
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
String VisualScriptReturn::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
return String();
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptReturn::get_input_value_port_info(int p_idx) const{
|
||||
|
||||
PropertyInfo pinfo;
|
||||
pinfo.name="result";
|
||||
pinfo.type=type;
|
||||
return pinfo;
|
||||
}
|
||||
PropertyInfo VisualScriptReturn::get_output_value_port_info(int p_idx) const{
|
||||
return PropertyInfo();
|
||||
}
|
||||
|
||||
String VisualScriptReturn::get_caption() const {
|
||||
|
||||
return "Return";
|
||||
}
|
||||
|
||||
String VisualScriptReturn::get_text() const {
|
||||
|
||||
return get_name();
|
||||
}
|
||||
|
||||
void VisualScriptReturn::set_return_type(Variant::Type p_type) {
|
||||
|
||||
if (type==p_type)
|
||||
return;
|
||||
type=p_type;
|
||||
emit_signal("ports_changed");
|
||||
|
||||
}
|
||||
|
||||
Variant::Type VisualScriptReturn::get_return_type() const{
|
||||
|
||||
return type;
|
||||
}
|
||||
|
||||
void VisualScriptReturn::set_enable_return_value(bool p_enable) {
|
||||
if (with_value==p_enable)
|
||||
return;
|
||||
|
||||
with_value=p_enable;
|
||||
emit_signal("ports_changed");
|
||||
}
|
||||
|
||||
bool VisualScriptReturn::is_return_value_enabled() const {
|
||||
|
||||
return with_value;
|
||||
}
|
||||
|
||||
void VisualScriptReturn::_bind_methods() {
|
||||
|
||||
ObjectTypeDB::bind_method(_MD("set_return_type","type"),&VisualScriptReturn::set_return_type);
|
||||
ObjectTypeDB::bind_method(_MD("get_return_type"),&VisualScriptReturn::get_return_type);
|
||||
ObjectTypeDB::bind_method(_MD("set_enable_return_value","enable"),&VisualScriptReturn::set_enable_return_value);
|
||||
ObjectTypeDB::bind_method(_MD("is_return_value_enabled"),&VisualScriptReturn::is_return_value_enabled);
|
||||
|
||||
String argt="Variant";
|
||||
for(int i=1;i<Variant::VARIANT_MAX;i++) {
|
||||
argt+=","+Variant::get_type_name(Variant::Type(i));
|
||||
}
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL,"return_value/enabled"),_SCS("set_enable_return_value"),_SCS("is_return_value_enabled"));
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT,"return_value/type",PROPERTY_HINT_ENUM,argt),_SCS("set_return_type"),_SCS("get_return_type"));
|
||||
|
||||
}
|
||||
|
||||
VisualScriptNodeInstance* VisualScriptReturn::instance(VScriptInstance* p_instance) {
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
VisualScriptReturn::VisualScriptReturn() {
|
||||
|
||||
with_value=false;
|
||||
type=Variant::NIL;
|
||||
}
|
||||
|
||||
template<bool with_value>
|
||||
static Ref<VisualScriptNode> create_return_node(const String& p_name) {
|
||||
|
||||
Ref<VisualScriptReturn> node;
|
||||
node.instance();
|
||||
node->set_enable_return_value(with_value);
|
||||
return node;
|
||||
}
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////
|
||||
////////////////CONDITION/////////////////
|
||||
//////////////////////////////////////////
|
||||
|
||||
int VisualScriptCondition::get_output_sequence_port_count() const {
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
bool VisualScriptCondition::has_input_sequence_port() const{
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int VisualScriptCondition::get_input_value_port_count() const{
|
||||
|
||||
return 1;
|
||||
}
|
||||
int VisualScriptCondition::get_output_value_port_count() const{
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
String VisualScriptCondition::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
if (p_port==0)
|
||||
return "true";
|
||||
else
|
||||
return "false";
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptCondition::get_input_value_port_info(int p_idx) const{
|
||||
|
||||
PropertyInfo pinfo;
|
||||
pinfo.name="cond";
|
||||
pinfo.type=Variant::BOOL;
|
||||
return pinfo;
|
||||
}
|
||||
PropertyInfo VisualScriptCondition::get_output_value_port_info(int p_idx) const{
|
||||
return PropertyInfo();
|
||||
}
|
||||
|
||||
String VisualScriptCondition::get_caption() const {
|
||||
|
||||
return "Condition";
|
||||
}
|
||||
|
||||
String VisualScriptCondition::get_text() const {
|
||||
|
||||
return "if (cond) is: ";
|
||||
}
|
||||
|
||||
|
||||
void VisualScriptCondition::_bind_methods() {
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
VisualScriptNodeInstance* VisualScriptCondition::instance(VScriptInstance* p_instance) {
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
VisualScriptCondition::VisualScriptCondition() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////
|
||||
////////////////WHILE/////////////////
|
||||
//////////////////////////////////////////
|
||||
|
||||
int VisualScriptWhile::get_output_sequence_port_count() const {
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
bool VisualScriptWhile::has_input_sequence_port() const{
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int VisualScriptWhile::get_input_value_port_count() const{
|
||||
|
||||
return 1;
|
||||
}
|
||||
int VisualScriptWhile::get_output_value_port_count() const{
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
String VisualScriptWhile::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
if (p_port==0)
|
||||
return "repeat";
|
||||
else
|
||||
return "exit";
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptWhile::get_input_value_port_info(int p_idx) const{
|
||||
|
||||
PropertyInfo pinfo;
|
||||
pinfo.name="cond";
|
||||
pinfo.type=Variant::BOOL;
|
||||
return pinfo;
|
||||
}
|
||||
PropertyInfo VisualScriptWhile::get_output_value_port_info(int p_idx) const{
|
||||
return PropertyInfo();
|
||||
}
|
||||
|
||||
String VisualScriptWhile::get_caption() const {
|
||||
|
||||
return "While";
|
||||
}
|
||||
|
||||
String VisualScriptWhile::get_text() const {
|
||||
|
||||
return "while (cond): ";
|
||||
}
|
||||
|
||||
|
||||
void VisualScriptWhile::_bind_methods() {
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
VisualScriptNodeInstance* VisualScriptWhile::instance(VScriptInstance* p_instance) {
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
VisualScriptWhile::VisualScriptWhile() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////
|
||||
////////////////ITERATOR/////////////////
|
||||
//////////////////////////////////////////
|
||||
|
||||
int VisualScriptIterator::get_output_sequence_port_count() const {
|
||||
|
||||
return 2;
|
||||
}
|
||||
|
||||
bool VisualScriptIterator::has_input_sequence_port() const{
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int VisualScriptIterator::get_input_value_port_count() const{
|
||||
|
||||
return 1;
|
||||
}
|
||||
int VisualScriptIterator::get_output_value_port_count() const{
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
String VisualScriptIterator::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
if (p_port==0)
|
||||
return "each";
|
||||
else
|
||||
return "exit";
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptIterator::get_input_value_port_info(int p_idx) const{
|
||||
|
||||
PropertyInfo pinfo;
|
||||
pinfo.name="input";
|
||||
pinfo.type=Variant::NIL;
|
||||
return pinfo;
|
||||
}
|
||||
PropertyInfo VisualScriptIterator::get_output_value_port_info(int p_idx) const{
|
||||
PropertyInfo pinfo;
|
||||
pinfo.name="elem";
|
||||
pinfo.type=Variant::NIL;
|
||||
return pinfo;
|
||||
}
|
||||
String VisualScriptIterator::get_caption() const {
|
||||
|
||||
return "Iterator";
|
||||
}
|
||||
|
||||
String VisualScriptIterator::get_text() const {
|
||||
|
||||
return "for (elem) in (input): ";
|
||||
}
|
||||
|
||||
|
||||
void VisualScriptIterator::_bind_methods() {
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
VisualScriptNodeInstance* VisualScriptIterator::instance(VScriptInstance* p_instance) {
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
VisualScriptIterator::VisualScriptIterator() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////
|
||||
////////////////SEQUENCE/////////////////
|
||||
//////////////////////////////////////////
|
||||
|
||||
int VisualScriptSequence::get_output_sequence_port_count() const {
|
||||
|
||||
return steps;
|
||||
}
|
||||
|
||||
bool VisualScriptSequence::has_input_sequence_port() const{
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int VisualScriptSequence::get_input_value_port_count() const{
|
||||
|
||||
return 0;
|
||||
}
|
||||
int VisualScriptSequence::get_output_value_port_count() const{
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
String VisualScriptSequence::get_output_sequence_port_text(int p_port) const {
|
||||
|
||||
return itos(p_port+1);
|
||||
}
|
||||
|
||||
PropertyInfo VisualScriptSequence::get_input_value_port_info(int p_idx) const{
|
||||
return PropertyInfo();
|
||||
}
|
||||
PropertyInfo VisualScriptSequence::get_output_value_port_info(int p_idx) const{
|
||||
return PropertyInfo(Variant::INT,"current");
|
||||
}
|
||||
String VisualScriptSequence::get_caption() const {
|
||||
|
||||
return "Sequence";
|
||||
}
|
||||
|
||||
String VisualScriptSequence::get_text() const {
|
||||
|
||||
return "in order: ";
|
||||
}
|
||||
|
||||
void VisualScriptSequence::set_steps(int p_steps) {
|
||||
|
||||
ERR_FAIL_COND(p_steps<1);
|
||||
if (steps==p_steps)
|
||||
return;
|
||||
|
||||
steps=p_steps;
|
||||
emit_signal("ports_changed");
|
||||
|
||||
}
|
||||
|
||||
int VisualScriptSequence::get_steps() const {
|
||||
|
||||
return steps;
|
||||
}
|
||||
|
||||
void VisualScriptSequence::_bind_methods() {
|
||||
|
||||
ObjectTypeDB::bind_method(_MD("set_steps","steps"),&VisualScriptSequence::set_steps);
|
||||
ObjectTypeDB::bind_method(_MD("get_steps"),&VisualScriptSequence::get_steps);
|
||||
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT,"steps",PROPERTY_HINT_RANGE,"1,64,1"),_SCS("set_steps"),_SCS("get_steps"));
|
||||
|
||||
}
|
||||
|
||||
VisualScriptNodeInstance* VisualScriptSequence::instance(VScriptInstance* p_instance) {
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
VisualScriptSequence::VisualScriptSequence() {
|
||||
|
||||
steps=1;
|
||||
}
|
||||
|
||||
void register_visual_script_flow_control_nodes() {
|
||||
|
||||
VisualScriptLanguage::singleton->add_register_func("flow_control/return",create_return_node<false>);
|
||||
VisualScriptLanguage::singleton->add_register_func("flow_control/return_with_value",create_return_node<true>);
|
||||
VisualScriptLanguage::singleton->add_register_func("flow_control/condition",create_node_generic<VisualScriptCondition>);
|
||||
VisualScriptLanguage::singleton->add_register_func("flow_control/while",create_node_generic<VisualScriptWhile>);
|
||||
VisualScriptLanguage::singleton->add_register_func("flow_control/iterator",create_node_generic<VisualScriptIterator>);
|
||||
VisualScriptLanguage::singleton->add_register_func("flow_control/sequence",create_node_generic<VisualScriptSequence>);
|
||||
|
||||
}
|
196
modules/visual_script/visual_script_flow_control.h
Normal file
|
@ -0,0 +1,196 @@
|
|||
#ifndef VISUAL_SCRIPT_FLOW_CONTROL_H
|
||||
#define VISUAL_SCRIPT_FLOW_CONTROL_H
|
||||
|
||||
#include "visual_script.h"
|
||||
|
||||
class VisualScriptReturn : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptReturn,VisualScriptNode)
|
||||
|
||||
|
||||
Variant::Type type;
|
||||
bool with_value;
|
||||
protected:
|
||||
|
||||
static void _bind_methods();
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
void set_return_type(Variant::Type);
|
||||
Variant::Type get_return_type() const;
|
||||
|
||||
void set_enable_return_value(bool p_enable);
|
||||
bool is_return_value_enabled() const;
|
||||
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptReturn();
|
||||
};
|
||||
|
||||
|
||||
class VisualScriptCondition : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptCondition,VisualScriptNode)
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
static void _bind_methods();
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptCondition();
|
||||
};
|
||||
|
||||
|
||||
class VisualScriptWhile : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptWhile,VisualScriptNode)
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
static void _bind_methods();
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptWhile();
|
||||
};
|
||||
|
||||
|
||||
|
||||
class VisualScriptIterator : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptIterator,VisualScriptNode)
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
static void _bind_methods();
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptIterator();
|
||||
};
|
||||
|
||||
|
||||
|
||||
class VisualScriptSequence : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptSequence,VisualScriptNode)
|
||||
|
||||
|
||||
int steps;
|
||||
|
||||
protected:
|
||||
|
||||
static void _bind_methods();
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
void set_steps(int p_steps);
|
||||
int get_steps() const;
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptSequence();
|
||||
};
|
||||
|
||||
void register_visual_script_flow_control_nodes();
|
||||
|
||||
|
||||
|
||||
#endif // VISUAL_SCRIPT_FLOW_CONTROL_H
|
1584
modules/visual_script/visual_script_func_nodes.cpp
Normal file
325
modules/visual_script/visual_script_func_nodes.h
Normal file
|
@ -0,0 +1,325 @@
|
|||
#ifndef VISUAL_SCRIPT_FUNC_NODES_H
|
||||
#define VISUAL_SCRIPT_FUNC_NODES_H
|
||||
|
||||
#include "visual_script.h"
|
||||
|
||||
|
||||
class VisualScriptFunctionCall : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptFunctionCall,VisualScriptNode)
|
||||
public:
|
||||
enum CallMode {
|
||||
CALL_MODE_SELF,
|
||||
CALL_MODE_NODE_PATH,
|
||||
CALL_MODE_INSTANCE,
|
||||
};
|
||||
private:
|
||||
|
||||
CallMode call_mode;
|
||||
StringName base_type;
|
||||
NodePath base_path;
|
||||
StringName function;
|
||||
int use_default_args;
|
||||
|
||||
Node *_get_base_node() const;
|
||||
StringName _get_base_type() const;
|
||||
|
||||
void _update_defargs();
|
||||
protected:
|
||||
virtual void _validate_property(PropertyInfo& property) const;
|
||||
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
void set_base_type(const StringName& p_type);
|
||||
StringName get_base_type() const;
|
||||
|
||||
void set_function(const StringName& p_type);
|
||||
StringName get_function() const;
|
||||
|
||||
void set_base_path(const NodePath& p_type);
|
||||
NodePath get_base_path() const;
|
||||
|
||||
void set_call_mode(CallMode p_mode);
|
||||
CallMode get_call_mode() const;
|
||||
|
||||
void set_use_default_args(int p_amount);
|
||||
int get_use_default_args() const;
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptFunctionCall();
|
||||
};
|
||||
|
||||
VARIANT_ENUM_CAST(VisualScriptFunctionCall::CallMode );
|
||||
|
||||
|
||||
class VisualScriptPropertySet : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptPropertySet,VisualScriptNode)
|
||||
public:
|
||||
enum CallMode {
|
||||
CALL_MODE_SELF,
|
||||
CALL_MODE_NODE_PATH,
|
||||
CALL_MODE_INSTANCE,
|
||||
};
|
||||
private:
|
||||
|
||||
CallMode call_mode;
|
||||
StringName base_type;
|
||||
NodePath base_path;
|
||||
StringName property;
|
||||
bool use_builtin_value;
|
||||
Variant builtin_value;
|
||||
|
||||
Node *_get_base_node() const;
|
||||
StringName _get_base_type() const;
|
||||
|
||||
|
||||
protected:
|
||||
virtual void _validate_property(PropertyInfo& property) const;
|
||||
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
void set_base_type(const StringName& p_type);
|
||||
StringName get_base_type() const;
|
||||
|
||||
void set_property(const StringName& p_type);
|
||||
StringName get_property() const;
|
||||
|
||||
void set_base_path(const NodePath& p_type);
|
||||
NodePath get_base_path() const;
|
||||
|
||||
void set_call_mode(CallMode p_mode);
|
||||
CallMode get_call_mode() const;
|
||||
|
||||
void set_use_builtin_value(bool p_use);
|
||||
bool is_using_builtin_value() const;
|
||||
|
||||
void set_builtin_value(const Variant &p_value);
|
||||
Variant get_builtin_value() const;
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptPropertySet();
|
||||
};
|
||||
|
||||
VARIANT_ENUM_CAST(VisualScriptPropertySet::CallMode );
|
||||
|
||||
|
||||
class VisualScriptPropertyGet : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptPropertyGet,VisualScriptNode)
|
||||
public:
|
||||
enum CallMode {
|
||||
CALL_MODE_SELF,
|
||||
CALL_MODE_NODE_PATH,
|
||||
CALL_MODE_INSTANCE,
|
||||
};
|
||||
private:
|
||||
|
||||
CallMode call_mode;
|
||||
StringName base_type;
|
||||
NodePath base_path;
|
||||
StringName property;
|
||||
|
||||
|
||||
Node *_get_base_node() const;
|
||||
StringName _get_base_type() const;
|
||||
|
||||
|
||||
protected:
|
||||
virtual void _validate_property(PropertyInfo& property) const;
|
||||
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
void set_base_type(const StringName& p_type);
|
||||
StringName get_base_type() const;
|
||||
|
||||
void set_property(const StringName& p_type);
|
||||
StringName get_property() const;
|
||||
|
||||
void set_base_path(const NodePath& p_type);
|
||||
NodePath get_base_path() const;
|
||||
|
||||
void set_call_mode(CallMode p_mode);
|
||||
CallMode get_call_mode() const;
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptPropertyGet();
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
VARIANT_ENUM_CAST(VisualScriptPropertyGet::CallMode );
|
||||
|
||||
|
||||
|
||||
class VisualScriptScriptCall : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptScriptCall,VisualScriptNode)
|
||||
public:
|
||||
enum CallMode {
|
||||
CALL_MODE_SELF,
|
||||
CALL_MODE_NODE_PATH,
|
||||
};
|
||||
private:
|
||||
|
||||
CallMode call_mode;
|
||||
NodePath base_path;
|
||||
StringName function;
|
||||
|
||||
|
||||
Node *_get_base_node() const;
|
||||
|
||||
|
||||
protected:
|
||||
virtual void _validate_property(PropertyInfo& property) const;
|
||||
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
void set_function(const StringName& p_type);
|
||||
StringName get_function() const;
|
||||
|
||||
void set_base_path(const NodePath& p_type);
|
||||
NodePath get_base_path() const;
|
||||
|
||||
void set_call_mode(CallMode p_mode);
|
||||
CallMode get_call_mode() const;
|
||||
|
||||
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptScriptCall();
|
||||
};
|
||||
|
||||
VARIANT_ENUM_CAST(VisualScriptScriptCall::CallMode );
|
||||
|
||||
|
||||
|
||||
|
||||
class VisualScriptEmitSignal : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptEmitSignal,VisualScriptNode)
|
||||
|
||||
private:
|
||||
|
||||
StringName name;
|
||||
|
||||
|
||||
protected:
|
||||
virtual void _validate_property(PropertyInfo& property) const;
|
||||
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
void set_signal(const StringName& p_type);
|
||||
StringName get_signal() const;
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptEmitSignal();
|
||||
};
|
||||
|
||||
|
||||
|
||||
void register_visual_script_func_nodes();
|
||||
|
||||
#endif // VISUAL_SCRIPT_FUNC_NODES_H
|
1297
modules/visual_script/visual_script_nodes.cpp
Normal file
394
modules/visual_script/visual_script_nodes.h
Normal file
|
@ -0,0 +1,394 @@
|
|||
#ifndef VISUAL_SCRIPT_NODES_H
|
||||
#define VISUAL_SCRIPT_NODES_H
|
||||
|
||||
#include "visual_script.h"
|
||||
|
||||
class VisualScriptFunction : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptFunction,VisualScriptNode)
|
||||
|
||||
|
||||
struct Argument {
|
||||
String name;
|
||||
Variant::Type type;
|
||||
};
|
||||
|
||||
Vector<Argument> arguments;
|
||||
protected:
|
||||
|
||||
bool _set(const StringName& p_name, const Variant& p_value);
|
||||
bool _get(const StringName& p_name,Variant &r_ret) const;
|
||||
void _get_property_list( List<PropertyInfo> *p_list) const;
|
||||
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
void add_argument(Variant::Type p_type,const String& p_name,int p_index=-1);
|
||||
void set_argument_type(int p_argidx,Variant::Type p_type);
|
||||
Variant::Type get_argument_type(int p_argidx) const;
|
||||
void set_argument_name(int p_argidx,const String& p_name);
|
||||
String get_argument_name(int p_argidx) const;
|
||||
void remove_argument(int p_argidx);
|
||||
int get_argument_count() const;
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptFunction();
|
||||
};
|
||||
|
||||
|
||||
class VisualScriptOperator : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptOperator,VisualScriptNode)
|
||||
|
||||
|
||||
Variant::Operator op;
|
||||
protected:
|
||||
|
||||
static void _bind_methods();
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
void set_operator(Variant::Operator p_op);
|
||||
Variant::Operator get_operator() const;
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptOperator();
|
||||
};
|
||||
|
||||
|
||||
class VisualScriptVariable : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptVariable,VisualScriptNode)
|
||||
|
||||
|
||||
StringName variable;
|
||||
protected:
|
||||
|
||||
virtual void _validate_property(PropertyInfo& property) const;
|
||||
static void _bind_methods();
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
void set_variable(StringName p_var);
|
||||
StringName get_variable() const;
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptVariable();
|
||||
};
|
||||
|
||||
class VisualScriptConstant : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptConstant,VisualScriptNode)
|
||||
|
||||
|
||||
Variant::Type type;
|
||||
Variant value;
|
||||
protected:
|
||||
virtual void _validate_property(PropertyInfo& property) const;
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
void set_constant_type(Variant::Type p_type);
|
||||
Variant::Type get_constant_type() const;
|
||||
|
||||
void set_constant_value(Variant p_value);
|
||||
Variant get_constant_value() const;
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptConstant();
|
||||
};
|
||||
|
||||
|
||||
class VisualScriptIndexGet : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptIndexGet,VisualScriptNode)
|
||||
|
||||
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptIndexGet();
|
||||
};
|
||||
|
||||
|
||||
class VisualScriptIndexSet : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptIndexSet,VisualScriptNode)
|
||||
|
||||
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptIndexSet();
|
||||
};
|
||||
|
||||
|
||||
|
||||
class VisualScriptGlobalConstant : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptGlobalConstant,VisualScriptNode)
|
||||
|
||||
int index;
|
||||
|
||||
static void _bind_methods();
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
void set_global_constant(int p_which);
|
||||
int get_global_constant();
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptGlobalConstant();
|
||||
};
|
||||
|
||||
|
||||
|
||||
class VisualScriptMathConstant : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptMathConstant,VisualScriptNode)
|
||||
public:
|
||||
|
||||
enum MathConstant {
|
||||
MATH_CONSTANT_ONE,
|
||||
MATH_CONSTANT_PI,
|
||||
MATH_CONSTANT_2PI,
|
||||
MATH_CONSTANT_HALF_PI,
|
||||
MATH_CONSTANT_E,
|
||||
MATH_CONSTANT_SQRT2,
|
||||
MATH_CONSTANT_MAX,
|
||||
};
|
||||
|
||||
private:
|
||||
static const char* const_name[MATH_CONSTANT_MAX];
|
||||
MathConstant constant;
|
||||
protected:
|
||||
static void _bind_methods();
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
void set_math_constant(MathConstant p_which);
|
||||
MathConstant get_math_constant();
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptMathConstant();
|
||||
};
|
||||
|
||||
VARIANT_ENUM_CAST( VisualScriptMathConstant::MathConstant )
|
||||
|
||||
class VisualScriptSingleton : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptSingleton,VisualScriptNode)
|
||||
|
||||
String singleton;
|
||||
|
||||
static void _bind_methods();
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
void set_singleton(const String &p_string);
|
||||
String get_singleton();
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptSingleton();
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
class VisualScriptSceneNode : public VisualScriptNode {
|
||||
|
||||
OBJ_TYPE(VisualScriptSceneNode,VisualScriptNode)
|
||||
|
||||
NodePath path;
|
||||
protected:
|
||||
virtual void _validate_property(PropertyInfo& property) const;
|
||||
static void _bind_methods();
|
||||
public:
|
||||
|
||||
virtual int get_output_sequence_port_count() const;
|
||||
virtual bool has_input_sequence_port() const;
|
||||
|
||||
|
||||
virtual String get_output_sequence_port_text(int p_port) const;
|
||||
|
||||
|
||||
virtual int get_input_value_port_count() const;
|
||||
virtual int get_output_value_port_count() const;
|
||||
|
||||
|
||||
virtual PropertyInfo get_input_value_port_info(int p_idx) const;
|
||||
virtual PropertyInfo get_output_value_port_info(int p_idx) const;
|
||||
|
||||
virtual String get_caption() const;
|
||||
virtual String get_text() const;
|
||||
|
||||
void set_node_path(const NodePath &p_path);
|
||||
NodePath get_node_path();
|
||||
|
||||
virtual VisualScriptNodeInstance* instance(VScriptInstance* p_instance);
|
||||
|
||||
VisualScriptSceneNode();
|
||||
};
|
||||
|
||||
|
||||
|
||||
void register_visual_script_nodes();
|
||||
|
||||
#endif // VISUAL_SCRIPT_NODES_H
|
|
@ -178,6 +178,7 @@ void GraphEdit::_graph_node_raised(Node* p_gn) {
|
|||
ERR_FAIL_COND(!gn);
|
||||
gn->raise();
|
||||
top_layer->raise();
|
||||
emit_signal("node_selected",p_gn);
|
||||
|
||||
}
|
||||
|
||||
|
@ -295,6 +296,36 @@ void GraphEdit::_top_layer_input(const InputEvent& p_ev) {
|
|||
Vector2 pos = gn->get_connection_output_pos(j)+gn->get_pos();
|
||||
if (pos.distance_to(mpos)<grab_r) {
|
||||
|
||||
|
||||
if (valid_left_disconnect_types.has(gn->get_connection_output_type(j))) {
|
||||
//check disconnect
|
||||
for (List<Connection>::Element*E=connections.front();E;E=E->next()) {
|
||||
|
||||
if (E->get().from==gn->get_name() && E->get().from_port==j) {
|
||||
|
||||
Node*to = get_node(String(E->get().to));
|
||||
if (to && to->cast_to<GraphNode>()) {
|
||||
|
||||
connecting_from=E->get().to;
|
||||
connecting_index=E->get().to_port;
|
||||
connecting_out=false;
|
||||
connecting_type=to->cast_to<GraphNode>()->get_connection_input_type(E->get().to_port);
|
||||
connecting_color=to->cast_to<GraphNode>()->get_connection_input_color(E->get().to_port);
|
||||
connecting_target=false;
|
||||
connecting_to=pos;
|
||||
|
||||
emit_signal("disconnection_request",E->get().from,E->get().from_port,E->get().to,E->get().to_port);
|
||||
to = get_node(String(connecting_from)); //maybe it was erased
|
||||
if (to && to->cast_to<GraphNode>()) {
|
||||
connecting=true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
connecting=true;
|
||||
connecting_from=gn->get_name();
|
||||
connecting_index=j;
|
||||
|
@ -315,7 +346,7 @@ void GraphEdit::_top_layer_input(const InputEvent& p_ev) {
|
|||
|
||||
if (pos.distance_to(mpos)<grab_r) {
|
||||
|
||||
if (right_disconnects) {
|
||||
if (right_disconnects || valid_right_disconnect_types.has(gn->get_connection_input_type(j))) {
|
||||
//check disconnect
|
||||
for (List<Connection>::Element*E=connections.front();E;E=E->next()) {
|
||||
|
||||
|
@ -381,7 +412,7 @@ void GraphEdit::_top_layer_input(const InputEvent& p_ev) {
|
|||
|
||||
Vector2 pos = gn->get_connection_output_pos(j)+gn->get_pos();
|
||||
int type =gn->get_connection_output_type(j);
|
||||
if (type==connecting_type && pos.distance_to(mpos)<grab_r) {
|
||||
if ((type==connecting_type ||valid_connection_types.has(ConnType(type,connecting_type))) && pos.distance_to(mpos)<grab_r) {
|
||||
|
||||
connecting_target=true;
|
||||
connecting_to=pos;
|
||||
|
@ -398,7 +429,7 @@ void GraphEdit::_top_layer_input(const InputEvent& p_ev) {
|
|||
|
||||
Vector2 pos = gn->get_connection_input_pos(j)+gn->get_pos();
|
||||
int type =gn->get_connection_input_type(j);
|
||||
if (type==connecting_type && pos.distance_to(mpos)<grab_r) {
|
||||
if ((type==connecting_type ||valid_connection_types.has(ConnType(type,connecting_type))) && pos.distance_to(mpos)<grab_r) {
|
||||
connecting_target=true;
|
||||
connecting_to=pos;
|
||||
connecting_target_to=gn->get_name();
|
||||
|
@ -433,7 +464,7 @@ void GraphEdit::_top_layer_input(const InputEvent& p_ev) {
|
|||
|
||||
}
|
||||
|
||||
void GraphEdit::_draw_cos_line(const Vector2& p_from, const Vector2& p_to,const Color& p_color) {
|
||||
void GraphEdit::_draw_cos_line(const Vector2& p_from, const Vector2& p_to,const Color& p_color,const Color& p_to_color) {
|
||||
|
||||
static const int steps = 20;
|
||||
|
||||
|
@ -454,7 +485,7 @@ void GraphEdit::_draw_cos_line(const Vector2& p_from, const Vector2& p_to,const
|
|||
|
||||
if (i>0) {
|
||||
|
||||
top_layer->draw_line(prev,p,p_color,2);
|
||||
top_layer->draw_line(prev,p,p_color.linear_interpolate(p_to_color,d),2);
|
||||
}
|
||||
|
||||
prev=p;
|
||||
|
@ -488,7 +519,7 @@ void GraphEdit::_top_layer_draw() {
|
|||
col.g+=0.4;
|
||||
col.b+=0.4;
|
||||
}
|
||||
_draw_cos_line(pos,topos,col);
|
||||
_draw_cos_line(pos,topos,col,col);
|
||||
}
|
||||
|
||||
List<List<Connection>::Element* > to_erase;
|
||||
|
@ -526,7 +557,8 @@ void GraphEdit::_top_layer_draw() {
|
|||
Vector2 frompos=gfrom->get_connection_output_pos(E->get().from_port)+gfrom->get_pos();
|
||||
Color color = gfrom->get_connection_output_color(E->get().from_port);
|
||||
Vector2 topos=gto->get_connection_input_pos(E->get().to_port)+gto->get_pos();
|
||||
_draw_cos_line(frompos,topos,color);
|
||||
Color tocolor = gto->get_connection_input_color(E->get().to_port);
|
||||
_draw_cos_line(frompos,topos,color,tocolor);
|
||||
|
||||
}
|
||||
|
||||
|
@ -538,6 +570,18 @@ void GraphEdit::_top_layer_draw() {
|
|||
top_layer->draw_rect(box_selecting_rect,Color(0.7,0.7,1.0,0.3));
|
||||
}
|
||||
|
||||
void GraphEdit::set_selected(Node* p_child) {
|
||||
|
||||
for(int i=get_child_count()-1;i>=0;i--) {
|
||||
|
||||
GraphNode *gn=get_child(i)->cast_to<GraphNode>();
|
||||
if (!gn)
|
||||
continue;
|
||||
|
||||
gn->set_selected(gn==p_child);
|
||||
}
|
||||
}
|
||||
|
||||
void GraphEdit::_input_event(const InputEvent& p_ev) {
|
||||
|
||||
if (p_ev.type==InputEvent::MOUSE_MOTION && (p_ev.mouse_motion.button_mask&BUTTON_MASK_MIDDLE || (p_ev.mouse_motion.button_mask&BUTTON_MASK_LEFT && Input::get_singleton()->is_key_pressed(KEY_SPACE)))) {
|
||||
|
@ -804,6 +848,29 @@ bool GraphEdit::is_right_disconnects_enabled() const{
|
|||
return right_disconnects;
|
||||
}
|
||||
|
||||
void GraphEdit::add_valid_right_disconnect_type(int p_type) {
|
||||
|
||||
valid_right_disconnect_types.insert(p_type);
|
||||
}
|
||||
|
||||
void GraphEdit::remove_valid_right_disconnect_type(int p_type){
|
||||
|
||||
valid_right_disconnect_types.erase(p_type);
|
||||
|
||||
}
|
||||
|
||||
void GraphEdit::add_valid_left_disconnect_type(int p_type){
|
||||
|
||||
valid_left_disconnect_types.insert(p_type);
|
||||
|
||||
}
|
||||
|
||||
void GraphEdit::remove_valid_left_disconnect_type(int p_type){
|
||||
|
||||
valid_left_disconnect_types.erase(p_type);
|
||||
|
||||
}
|
||||
|
||||
Array GraphEdit::_get_connection_list() const {
|
||||
|
||||
List<Connection> conns;
|
||||
|
@ -838,6 +905,35 @@ void GraphEdit::_zoom_plus() {
|
|||
set_zoom(zoom*ZOOM_SCALE);
|
||||
}
|
||||
|
||||
void GraphEdit::add_valid_connection_type(int p_type,int p_with_type) {
|
||||
|
||||
ConnType ct;
|
||||
ct.type_a=p_type;
|
||||
ct.type_b=p_with_type;
|
||||
|
||||
valid_connection_types.insert(ct);
|
||||
}
|
||||
|
||||
void GraphEdit::remove_valid_connection_type(int p_type,int p_with_type) {
|
||||
|
||||
ConnType ct;
|
||||
ct.type_a=p_type;
|
||||
ct.type_b=p_with_type;
|
||||
|
||||
valid_connection_types.erase(ct);
|
||||
|
||||
}
|
||||
|
||||
bool GraphEdit::is_valid_connection_type(int p_type,int p_with_type) const {
|
||||
|
||||
ConnType ct;
|
||||
ct.type_a=p_type;
|
||||
ct.type_b=p_with_type;
|
||||
|
||||
return valid_connection_types.has(ct);
|
||||
|
||||
}
|
||||
|
||||
|
||||
void GraphEdit::_bind_methods() {
|
||||
|
||||
|
@ -865,10 +961,13 @@ void GraphEdit::_bind_methods() {
|
|||
|
||||
ObjectTypeDB::bind_method(_MD("_input_event"),&GraphEdit::_input_event);
|
||||
|
||||
ObjectTypeDB::bind_method(_MD("set_selected","node"),&GraphEdit::set_selected);
|
||||
|
||||
ADD_SIGNAL(MethodInfo("connection_request",PropertyInfo(Variant::STRING,"from"),PropertyInfo(Variant::INT,"from_slot"),PropertyInfo(Variant::STRING,"to"),PropertyInfo(Variant::INT,"to_slot")));
|
||||
ADD_SIGNAL(MethodInfo("disconnection_request",PropertyInfo(Variant::STRING,"from"),PropertyInfo(Variant::INT,"from_slot"),PropertyInfo(Variant::STRING,"to"),PropertyInfo(Variant::INT,"to_slot")));
|
||||
ADD_SIGNAL(MethodInfo("popup_request", PropertyInfo(Variant::VECTOR2,"p_position")));
|
||||
ADD_SIGNAL(MethodInfo("duplicate_nodes_request"));
|
||||
ADD_SIGNAL(MethodInfo("node_selected",PropertyInfo(Variant::OBJECT,"node")));
|
||||
ADD_SIGNAL(MethodInfo("delete_nodes_request"));
|
||||
ADD_SIGNAL(MethodInfo("_begin_node_move"));
|
||||
ADD_SIGNAL(MethodInfo("_end_node_move"));
|
||||
|
|
|
@ -106,7 +106,7 @@ private:
|
|||
bool updating;
|
||||
List<Connection> connections;
|
||||
|
||||
void _draw_cos_line(const Vector2& p_from, const Vector2& p_to,const Color& p_color);
|
||||
void _draw_cos_line(const Vector2& p_from, const Vector2& p_to, const Color& p_color, const Color &p_to_color);
|
||||
|
||||
void _graph_node_raised(Node* p_gn);
|
||||
void _graph_node_moved(Node *p_gn);
|
||||
|
@ -122,6 +122,30 @@ private:
|
|||
|
||||
Array _get_connection_list() const;
|
||||
|
||||
struct ConnType {
|
||||
|
||||
union {
|
||||
struct {
|
||||
uint32_t type_a;
|
||||
uint32_t type_b;
|
||||
};
|
||||
uint64_t key;
|
||||
};
|
||||
|
||||
bool operator<(const ConnType& p_type) const {
|
||||
return key<p_type.key;
|
||||
}
|
||||
|
||||
ConnType(uint32_t a=0, uint32_t b=0) {
|
||||
type_a=a;
|
||||
type_b=b;
|
||||
}
|
||||
};
|
||||
|
||||
Set<ConnType> valid_connection_types;
|
||||
Set<int> valid_left_disconnect_types;
|
||||
Set<int> valid_right_disconnect_types;
|
||||
|
||||
friend class GraphEditFilter;
|
||||
bool _filter_input(const Point2& p_point);
|
||||
protected:
|
||||
|
@ -138,6 +162,10 @@ public:
|
|||
void disconnect_node(const StringName& p_from, int p_from_port,const StringName& p_to,int p_to_port);
|
||||
void clear_connections();
|
||||
|
||||
void add_valid_connection_type(int p_type,int p_with_type);
|
||||
void remove_valid_connection_type(int p_type,int p_with_type);
|
||||
bool is_valid_connection_type(int p_type,int p_with_type) const;
|
||||
|
||||
void set_zoom(float p_zoom);
|
||||
float get_zoom() const;
|
||||
|
||||
|
@ -147,8 +175,16 @@ public:
|
|||
void set_right_disconnects(bool p_enable);
|
||||
bool is_right_disconnects_enabled() const;
|
||||
|
||||
void add_valid_right_disconnect_type(int p_type);
|
||||
void remove_valid_right_disconnect_type(int p_type);
|
||||
|
||||
void add_valid_left_disconnect_type(int p_type);
|
||||
void remove_valid_left_disconnect_type(int p_type);
|
||||
|
||||
Vector2 get_scroll_ofs() const;
|
||||
|
||||
void set_selected(Node* p_child);
|
||||
|
||||
|
||||
GraphEdit();
|
||||
};
|
||||
|
|
|
@ -223,10 +223,20 @@ void GraphNode::_notification(int p_what) {
|
|||
continue;
|
||||
const Slot &s=slot_info[E->key()];
|
||||
//left
|
||||
if (s.enable_left)
|
||||
port->draw(get_canvas_item(),icofs+Point2(edgeofs,cache_y[E->key()]),s.color_left);
|
||||
if (s.enable_right)
|
||||
port->draw(get_canvas_item(),icofs+Point2(get_size().x-edgeofs,cache_y[E->key()]),s.color_right);
|
||||
if (s.enable_left) {
|
||||
Ref<Texture> p = port;
|
||||
if (s.custom_slot_left.is_valid()) {
|
||||
p=s.custom_slot_left;
|
||||
}
|
||||
p->draw(get_canvas_item(),icofs+Point2(edgeofs,cache_y[E->key()]),s.color_left);
|
||||
}
|
||||
if (s.enable_right) {
|
||||
Ref<Texture> p = port;
|
||||
if (s.custom_slot_right.is_valid()) {
|
||||
p=s.custom_slot_right;
|
||||
}
|
||||
p->draw(get_canvas_item(),icofs+Point2(get_size().x-edgeofs,cache_y[E->key()]),s.color_right);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -239,7 +249,7 @@ void GraphNode::_notification(int p_what) {
|
|||
}
|
||||
|
||||
|
||||
void GraphNode::set_slot(int p_idx,bool p_enable_left,int p_type_left,const Color& p_color_left, bool p_enable_right,int p_type_right,const Color& p_color_right) {
|
||||
void GraphNode::set_slot(int p_idx,bool p_enable_left,int p_type_left,const Color& p_color_left, bool p_enable_right,int p_type_right,const Color& p_color_right,const Ref<Texture>& p_custom_left,const Ref<Texture>& p_custom_right) {
|
||||
|
||||
ERR_FAIL_COND(p_idx<0);
|
||||
|
||||
|
@ -255,6 +265,8 @@ void GraphNode::set_slot(int p_idx,bool p_enable_left,int p_type_left,const Colo
|
|||
s.enable_right=p_enable_right;
|
||||
s.type_right=p_type_right;
|
||||
s.color_right=p_color_right;
|
||||
s.custom_slot_left=p_custom_left;
|
||||
s.custom_slot_right=p_custom_right;
|
||||
slot_info[p_idx]=s;
|
||||
update();
|
||||
connpos_dirty=true;
|
||||
|
@ -580,7 +592,7 @@ void GraphNode::_bind_methods() {
|
|||
ObjectTypeDB::bind_method(_MD("get_title"),&GraphNode::get_title);
|
||||
ObjectTypeDB::bind_method(_MD("_input_event"),&GraphNode::_input_event);
|
||||
|
||||
ObjectTypeDB::bind_method(_MD("set_slot","idx","enable_left","type_left","color_left","enable_right","type_right","color_right"),&GraphNode::set_slot);
|
||||
ObjectTypeDB::bind_method(_MD("set_slot","idx","enable_left","type_left","color_left","enable_right","type_right","color_right","custom_left","custom_right"),&GraphNode::set_slot,DEFVAL(Ref<Texture>()),DEFVAL(Ref<Texture>()));
|
||||
ObjectTypeDB::bind_method(_MD("clear_slot","idx"),&GraphNode::clear_slot);
|
||||
ObjectTypeDB::bind_method(_MD("clear_all_slots","idx"),&GraphNode::clear_all_slots);
|
||||
ObjectTypeDB::bind_method(_MD("is_slot_enabled_left","idx"),&GraphNode::is_slot_enabled_left);
|
||||
|
|
|
@ -44,6 +44,8 @@ class GraphNode : public Container {
|
|||
bool enable_right;
|
||||
int type_right;
|
||||
Color color_right;
|
||||
Ref<Texture> custom_slot_left;
|
||||
Ref<Texture> custom_slot_right;
|
||||
|
||||
|
||||
Slot() { enable_left=false; type_left=0; color_left=Color(1,1,1,1); enable_right=false; type_right=0; color_right=Color(1,1,1,1); }
|
||||
|
@ -91,7 +93,7 @@ public:
|
|||
|
||||
|
||||
|
||||
void set_slot(int p_idx,bool p_enable_left,int p_type_left,const Color& p_color_left, bool p_enable_right,int p_type_right,const Color& p_color_right);
|
||||
void set_slot(int p_idx,bool p_enable_left,int p_type_left,const Color& p_color_left, bool p_enable_right,int p_type_right,const Color& p_color_right,const Ref<Texture>& p_custom_left=Ref<Texture>(),const Ref<Texture>& p_custom_right=Ref<Texture>());
|
||||
void clear_slot(int p_idx);
|
||||
void clear_all_slots();
|
||||
bool is_slot_enabled_left(int p_idx) const;
|
||||
|
|
|
@ -626,8 +626,8 @@ void fill_default_theme(Ref<Theme>& t,const Ref<Font> & default_font,const Ref<F
|
|||
|
||||
// GraphNode
|
||||
|
||||
Ref<StyleBoxTexture> graphsb = make_stylebox(graph_node_png,6,24,6,5,3,24,16,5);
|
||||
Ref<StyleBoxTexture> graphsbselected = make_stylebox(graph_node_selected_png,6,24,6,5,3,24,16,5);
|
||||
Ref<StyleBoxTexture> graphsb = make_stylebox(graph_node_png,6,24,6,5,16,24,16,5);
|
||||
Ref<StyleBoxTexture> graphsbselected = make_stylebox(graph_node_selected_png,6,24,6,5,16,24,16,5);
|
||||
Ref<StyleBoxTexture> graphsbdefault = make_stylebox(graph_node_default_png,4,4,4,4,6,4,4,4);
|
||||
Ref<StyleBoxTexture> graphsbdeffocus = make_stylebox(graph_node_default_focus_png,4,4,4,4,6,4,4,4);
|
||||
//graphsb->set_expand_margin_size(MARGIN_LEFT,10);
|
||||
|
@ -641,7 +641,7 @@ void fill_default_theme(Ref<Theme>& t,const Ref<Font> & default_font,const Ref<F
|
|||
t->set_icon("close","GraphNode", make_icon( graph_node_close_png ) );
|
||||
t->set_font("title_font","GraphNode", default_font );
|
||||
t->set_color("title_color","GraphNode", Color(0,0,0,1));
|
||||
t->set_constant("title_offset","GraphNode", 18 *scale);
|
||||
t->set_constant("title_offset","GraphNode", 20 *scale);
|
||||
t->set_constant("close_offset","GraphNode", 18 *scale);
|
||||
t->set_constant("port_offset","GraphNode", 3 *scale);
|
||||
|
||||
|
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 752 B |
Before Width: | Height: | Size: 805 B After Width: | Height: | Size: 964 B |
|
@ -5,12 +5,12 @@
|
|||
|
||||
|
||||
static const unsigned char arrow_down_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0xc,0x8,0x4,0x0,0x0,0x0,0xfc,0x7c,0x94,0x6c,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x4,0x4e,0x1d,0x2,0xaf,0x0,0x0,0x0,0x4a,0x49,0x44,0x41,0x54,0x18,0xd3,0x63,0x60,0xa0,0x1a,0x60,0x64,0x60,0x60,0x60,0x78,0xf0,0x1f,0x55,0x50,0x81,0x91,0x81,0x81,0x9,0x97,0xe,0xfc,0x12,0x8c,0xf1,0xc,0x5f,0xe1,0x22,0xdf,0x19,0xd3,0x91,0xe4,0xef,0x6b,0xdc,0xbf,0xf4,0xe0,0xff,0x83,0xff,0xf,0xae,0x3f,0xd6,0x45,0xb2,0x9c,0x81,0x81,0x81,0xe1,0x5,0xf7,0xcf,0x29,0xc,0xc,0xec,0x39,0x12,0x5f,0x19,0xa8,0xd,0x0,0x99,0x85,0x11,0xfa,0x28,0xbe,0xff,0xef,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0xc,0x8,0x6,0x0,0x0,0x0,0x56,0x75,0x5c,0xe7,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x6d,0x49,0x44,0x41,0x54,0x28,0x91,0x63,0x60,0x18,0x74,0x80,0x11,0xc6,0x78,0xf0,0xe0,0xc1,0x7f,0x7c,0xa,0x15,0x14,0x14,0x18,0x19,0x18,0x18,0x18,0x98,0x48,0xb5,0x81,0x7c,0xd,0x8c,0x8c,0x8c,0xf1,0xc,0xc,0xc,0x5f,0xb1,0xa8,0xf9,0xce,0xc8,0xc8,0x98,0xe,0x57,0x87,0x2c,0x73,0xff,0xfe,0x7d,0xd,0x6,0x6,0x86,0x55,0x8c,0x8c,0x8c,0xba,0x50,0xa1,0x1b,0xcc,0xcc,0xcc,0x61,0xb2,0xb2,0xb2,0x97,0xb1,0x6a,0x60,0x60,0x60,0x60,0x78,0xf1,0xe2,0x5,0xf7,0xcf,0x9f,0x3f,0xa7,0x30,0x30,0x30,0x30,0xb0,0xb3,0xb3,0xe7,0x48,0x48,0x48,0x60,0xb3,0x75,0x30,0x1,0x0,0x28,0x20,0x14,0xc2,0x1b,0xd0,0x7c,0xca,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
static const unsigned char arrow_right_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0xc,0x8,0x4,0x0,0x0,0x0,0xfc,0x7c,0x94,0x6c,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0x4e,0x49,0x44,0x41,0x54,0x18,0xd3,0x63,0x60,0x20,0x13,0x3c,0xf8,0xff,0xe0,0xff,0x83,0xff,0xf7,0x13,0x10,0x22,0x8c,0x30,0x9,0x6,0x6,0x6,0x6,0x86,0xaf,0x8c,0xe6,0xf2,0x57,0x21,0x22,0x4c,0x28,0x1a,0xb9,0xff,0xaf,0x7a,0xc1,0x8d,0x4d,0x82,0x81,0x41,0xeb,0xe7,0x14,0xec,0x12,0x70,0x80,0x2e,0x71,0x8d,0x3d,0x7,0x9b,0xc4,0x57,0xc6,0x30,0x89,0xaf,0x58,0x24,0xfe,0xe7,0xc0,0xdc,0x44,0xe,0x0,0x0,0xa0,0xe1,0x15,0x49,0x2,0x9f,0xab,0x0,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0xc,0x8,0x6,0x0,0x0,0x0,0x56,0x75,0x5c,0xe7,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x6c,0x49,0x44,0x41,0x54,0x28,0x91,0x63,0x60,0xa0,0x35,0x60,0x44,0xe6,0x3c,0x78,0xf0,0xe0,0x3f,0x8c,0xfd,0xff,0xff,0xff,0x44,0x45,0x45,0xc5,0x5,0xe8,0x1a,0x98,0x70,0x9a,0xc4,0xc8,0x38,0xe5,0xe1,0xc3,0x87,0xda,0x44,0x6b,0x60,0x60,0x60,0xe0,0xfe,0xff,0xff,0xff,0xaa,0x17,0x2f,0x5e,0x70,0x13,0xab,0x81,0x81,0x81,0x81,0x41,0xeb,0xe7,0xcf,0x9f,0x53,0x48,0xd1,0x80,0x1,0x8,0x69,0xb8,0xc6,0xce,0xce,0x9e,0x43,0xac,0x86,0xaf,0x8c,0x8c,0x8c,0x61,0x12,0x12,0x12,0x5f,0x89,0xd2,0xf0,0xff,0xff,0xff,0x1c,0x79,0x79,0xf9,0xab,0x84,0x1d,0x49,0x6d,0x0,0x0,0x8f,0x30,0x1e,0x10,0x6e,0x79,0xda,0xf9,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
|
@ -60,12 +60,12 @@ static const unsigned char checker_bg_png[]={
|
|||
|
||||
|
||||
static const unsigned char close_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x4,0x0,0x0,0x0,0xb5,0xfa,0x37,0xea,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0x6c,0x49,0x44,0x41,0x54,0x28,0xcf,0xad,0x90,0xd1,0xa,0x80,0x20,0xc,0x45,0xad,0xa7,0x6b,0xee,0x35,0xb1,0x3f,0xf3,0xbb,0x13,0xc,0xea,0x5f,0x5c,0xf,0x42,0x4d,0x1c,0x14,0xd4,0xde,0xc6,0x39,0xd3,0xdd,0x19,0xf3,0x53,0xd9,0x48,0x5e,0xf6,0xe4,0x6d,0x6c,0x30,0xa,0xd2,0xad,0x90,0x47,0x42,0x11,0xa,0xcd,0x76,0x5,0x63,0x9b,0x16,0xd9,0xb9,0x20,0x9f,0xbc,0x14,0x15,0xb,0x65,0x47,0x56,0x71,0x55,0x90,0xc1,0x60,0x1c,0x12,0x8f,0x5a,0x26,0x1e,0xd4,0x79,0xf9,0x45,0x5d,0x57,0x59,0xd2,0x85,0x36,0x51,0x87,0xfb,0xd0,0xef,0xe,0xf5,0x78,0xea,0x4f,0x75,0x2,0x30,0x98,0x34,0x72,0xa,0x11,0xfb,0xc2,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x9b,0x49,0x44,0x41,0x54,0x38,0x8d,0xcd,0x92,0x31,0xe,0xc2,0x30,0x10,0x4,0x17,0xaa,0x3d,0x67,0xdb,0x58,0xd0,0xd3,0xf0,0xa3,0x7c,0x36,0x3c,0x82,0x48,0x44,0x22,0x6f,0xb1,0x4d,0x85,0x14,0x81,0xf,0x2c,0x28,0xe0,0xda,0xd5,0x8c,0x4e,0x77,0xb,0xfc,0xd5,0x98,0xd9,0x20,0x29,0x7a,0xb9,0xa4,0x68,0x66,0x83,0xb,0x93,0xcc,0x24,0xa7,0x9a,0x44,0x52,0x24,0x39,0x91,0xcc,0x55,0x89,0xa4,0xde,0xcc,0xce,0x24,0xb,0xc9,0x39,0x84,0xb0,0xf7,0xb2,0xae,0xeb,0x76,0xde,0x8a,0x4f,0x92,0x66,0xd8,0x91,0x5c,0x49,0x5e,0x9a,0xe1,0xb5,0x64,0x5,0x16,0x92,0x8b,0x7,0x6f,0x9b,0x8c,0x0,0x4a,0x29,0x9b,0x26,0x81,0xa4,0x3e,0xa5,0x34,0x2,0x38,0x2,0x58,0x0,0xcc,0x0,0xe,0x39,0xe7,0xd3,0xfa,0xb0,0xee,0xea,0x8f,0x7,0x7b,0xf5,0x9d,0xb7,0xb0,0x97,0x55,0x25,0x5f,0x17,0xe9,0x2e,0xf9,0xb8,0xca,0x3f,0x9b,0x1b,0x1a,0xe3,0x40,0x47,0xa0,0xda,0xda,0x61,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
static const unsigned char close_hl_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x4,0x0,0x0,0x0,0xb5,0xfa,0x37,0xea,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0x6c,0x49,0x44,0x41,0x54,0x28,0xcf,0xad,0x90,0xd1,0xa,0x80,0x20,0xc,0x45,0xad,0xa7,0x6b,0xee,0x35,0xb1,0x3f,0xf3,0xbb,0x13,0xc,0xea,0x5f,0x5c,0xf,0x42,0x4d,0x1c,0x14,0xd4,0xde,0xc6,0x39,0xd3,0xdd,0x19,0xf3,0x53,0xd9,0x48,0x5e,0xf6,0xe4,0x6d,0x6c,0x30,0xa,0xd2,0xad,0x90,0x47,0x42,0x11,0xa,0xcd,0x76,0x5,0x63,0x9b,0x16,0xd9,0xb9,0x20,0x9f,0xbc,0x14,0x15,0xb,0x65,0x47,0x56,0x71,0x55,0x90,0xc1,0x60,0x1c,0x12,0x8f,0x5a,0x26,0x1e,0xd4,0x79,0xf9,0x45,0x5d,0x57,0x59,0xd2,0x85,0x36,0x51,0x87,0xfb,0xd0,0xef,0xe,0xf5,0x78,0xea,0x4f,0x75,0x2,0x30,0x98,0x34,0x72,0xa,0x11,0xfb,0xc2,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x9b,0x49,0x44,0x41,0x54,0x38,0x8d,0xcd,0x92,0x31,0xe,0xc2,0x30,0x10,0x4,0x17,0xaa,0x3d,0x67,0xdb,0x58,0xd0,0xd3,0xf0,0xa3,0x7c,0x36,0x3c,0x82,0x48,0x44,0x22,0x6f,0xb1,0x4d,0x85,0x14,0x81,0xf,0x2c,0x28,0xe0,0xda,0xd5,0x8c,0x4e,0x77,0xb,0xfc,0xd5,0x98,0xd9,0x20,0x29,0x7a,0xb9,0xa4,0x68,0x66,0x83,0xb,0x93,0xcc,0x24,0xa7,0x9a,0x44,0x52,0x24,0x39,0x91,0xcc,0x55,0x89,0xa4,0xde,0xcc,0xce,0x24,0xb,0xc9,0x39,0x84,0xb0,0xf7,0xb2,0xae,0xeb,0x76,0xde,0x8a,0x4f,0x92,0x66,0xd8,0x91,0x5c,0x49,0x5e,0x9a,0xe1,0xb5,0x64,0x5,0x16,0x92,0x8b,0x7,0x6f,0x9b,0x8c,0x0,0x4a,0x29,0x9b,0x26,0x81,0xa4,0x3e,0xa5,0x34,0x2,0x38,0x2,0x58,0x0,0xcc,0x0,0xe,0x39,0xe7,0xd3,0xfa,0xb0,0xee,0xea,0x8f,0x7,0x7b,0xf5,0x9d,0xb7,0xb0,0x97,0x55,0x25,0x5f,0x17,0xe9,0x2e,0xf9,0xb8,0xca,0x3f,0x9b,0x1b,0x1a,0xe3,0x40,0x47,0xa0,0xda,0xda,0x61,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
|
@ -100,12 +100,12 @@ static const unsigned char full_panel_bg_png[]={
|
|||
|
||||
|
||||
static const unsigned char graph_node_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x40,0x8,0x3,0x0,0x0,0x0,0x24,0xa3,0x7,0xa4,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x1,0x4d,0x50,0x4c,0x54,0x45,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf,0xd,0x10,0x17,0x14,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x12,0x10,0x13,0x0,0x0,0x0,0x19,0x17,0x1b,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x16,0x12,0x19,0x0,0x0,0x0,0xe,0xb,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0xe,0xb,0x10,0x16,0x12,0x19,0x0,0x0,0x0,0x1d,0x1a,0x1f,0x35,0x2f,0x38,0xba,0xa9,0xc3,0xc3,0xb7,0xcb,0xbd,0xad,0xc5,0xb9,0xa9,0xc3,0xb5,0xa3,0xbf,0xb4,0xa1,0xbe,0xb4,0xa2,0xbd,0xb4,0xa2,0xbe,0xb3,0xa2,0xbe,0xb1,0xa0,0xbc,0xb2,0xa0,0xbc,0xb2,0x9f,0xbc,0xb0,0x9e,0xba,0xb0,0x9d,0xbb,0xb1,0x9e,0xbb,0xb0,0x9e,0xbb,0xb1,0x9e,0xba,0xaf,0x9c,0xb9,0xae,0x9c,0xb9,0xae,0x9c,0xb8,0xaf,0x9d,0xb9,0xad,0x9b,0xb7,0xad,0x9a,0xb7,0xad,0x9a,0xb8,0xac,0x99,0xb6,0xab,0x99,0xb6,0xac,0x98,0xb6,0xab,0x98,0xb6,0xab,0x99,0xb5,0xa9,0x97,0xb4,0xa9,0x97,0xb5,0xaa,0x97,0xb4,0xa8,0x95,0xb3,0xa8,0x95,0xb2,0xa7,0x95,0xb3,0xa7,0x93,0xb1,0xa6,0x93,0xb1,0xa5,0x91,0xaf,0xa5,0x91,0xb0,0xa4,0x91,0xaf,0xa5,0x92,0xb0,0xa4,0x91,0xb0,0xa5,0x92,0xaf,0xa3,0x90,0xae,0xa3,0x90,0xad,0xa3,0x8f,0xae,0xa2,0x90,0xae,0xa1,0x8e,0xac,0xa1,0x8e,0xad,0xa2,0x8e,0xac,0x9f,0x8d,0xab,0xa0,0x8d,0xab,0xa0,0x8c,0xab,0xa0,0x8d,0xaa,0x9f,0x8c,0xaa,0x9f,0x8c,0xab,0x9e,0x8a,0xaa,0x9e,0x8b,0xa9,0x9e,0x8b,0xaa,0x9e,0x8a,0xa9,0x9d,0x8a,0xa9,0x9c,0x88,0xa7,0x9c,0x88,0xa8,0x9c,0x89,0xa7,0x9c,0x89,0xa8,0x9a,0x87,0xa6,0x9b,0x87,0xa6,0x9b,0x86,0xa6,0x9b,0x87,0xa7,0x19,0x15,0x1c,0x4a,0x42,0x4f,0x3b,0x34,0x3f,0x39,0x30,0x3f,0x24,0x1e,0x27,0xff,0xff,0xff,0x8f,0x6b,0x6d,0x0,0x0,0x0,0x0,0x22,0x74,0x52,0x4e,0x53,0x0,0x1,0x3,0x6,0x8,0x9,0x2,0xc,0x1e,0x33,0x41,0x46,0xd,0x31,0x9a,0xe3,0x5,0x24,0xb4,0x39,0xf4,0x44,0xa,0x47,0x45,0x3d,0xf8,0x2a,0xcd,0x11,0x3f,0xd3,0xfd,0x2b,0x85,0xa8,0x7,0x57,0x0,0x0,0x0,0x1,0x62,0x4b,0x47,0x44,0x6e,0x22,0xf,0x51,0x17,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x1,0x53,0x49,0x44,0x41,0x54,0x38,0xcb,0xed,0xd4,0x69,0x57,0x1,0x51,0x18,0xc0,0xf1,0x8b,0x99,0xb1,0x8c,0x65,0x6c,0x63,0x9d,0xc1,0x10,0xd1,0xc4,0x44,0x23,0x6b,0xb2,0x55,0xa8,0x24,0x92,0xb2,0x15,0x45,0x8a,0xef,0xff,0xb6,0x6b,0xba,0x39,0x4e,0xbd,0xe8,0xb,0xf8,0x9f,0xe7,0xdc,0x73,0x9e,0xdf,0xfb,0xe7,0x2,0x0,0x64,0x72,0x5,0x86,0xc3,0x30,0x85,0x5c,0x6,0x60,0x84,0x52,0xa5,0xd6,0x90,0x30,0x8d,0x5a,0xa5,0x24,0xe0,0xae,0xd5,0xe9,0xd,0x9c,0x94,0x41,0xaf,0xd3,0x12,0x80,0x32,0x9a,0xfc,0x81,0x3d,0xa9,0x80,0xdf,0x64,0xa4,0x0,0x66,0xb6,0x4,0x43,0xfb,0x52,0xa1,0xa0,0xc5,0x8c,0x1,0xdc,0xca,0x85,0x23,0x7,0x61,0x9e,0xe7,0x23,0x3c,0xcf,0x59,0x71,0x40,0xdb,0xb8,0xc3,0x68,0x34,0x1a,0x83,0x13,0x8b,0x71,0x36,0x1a,0xe0,0x24,0x27,0x1c,0x9,0x71,0x21,0x9e,0x48,0x8,0xc7,0x8,0xc4,0xe4,0x49,0x4a,0x4c,0x8a,0x29,0x51,0x44,0x90,0xce,0x64,0xd2,0xe9,0x2c,0x9c,0x2c,0x82,0x5c,0x3e,0x97,0x3b,0xcd,0x17,0xf2,0x67,0x5,0x4,0x45,0x58,0xa9,0x5c,0x2a,0x96,0xcb,0x8,0x2a,0xd5,0x6a,0x65,0xdd,0x79,0x5,0xc1,0xc5,0xe5,0xba,0xf5,0x8b,0xa0,0x56,0x6f,0xd4,0xae,0x1a,0x8d,0xfa,0xf5,0xd,0x82,0xe6,0x6d,0xb3,0xd9,0x6a,0xc1,0xb9,0x43,0xd0,0x6e,0x77,0xee,0xdb,0xb0,0x4e,0x1b,0x41,0xf7,0xa1,0xf7,0xf8,0xd4,0xef,0xf6,0x7b,0x7d,0x4,0x83,0xe1,0x68,0x38,0x1c,0xd,0xc6,0xe3,0x67,0x4,0x2f,0x93,0xe9,0x74,0x3a,0x81,0xbd,0x22,0x78,0x9b,0xc1,0xe6,0xf3,0xd9,0xec,0x1d,0xc1,0x56,0x12,0x2c,0x3e,0x36,0x2d,0xbe,0xe1,0x73,0xd3,0xe,0x76,0xf0,0x1f,0xd0,0xb6,0xdf,0x60,0xdf,0x6,0x3b,0xd,0x30,0x87,0x73,0xf9,0xb3,0x2f,0x9d,0xe,0xc,0x50,0x2e,0xf7,0xa,0xc9,0x72,0xe5,0x76,0x51,0x80,0x60,0x58,0x8f,0x77,0x21,0xe5,0xf5,0xb0,0xc,0xbc,0x75,0x39,0xe3,0x63,0x49,0x1b,0x8c,0x64,0x7d,0x8c,0x5c,0xfa,0xd,0x14,0x38,0x2d,0x85,0x2b,0x8,0xf0,0xb7,0x2f,0x56,0x15,0x7,0x92,0x8b,0x88,0xb4,0x10,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x43,0x6f,0x6d,0x6d,0x65,0x6e,0x74,0x0,0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x47,0x49,0x4d,0x50,0x57,0x81,0xe,0x17,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x39,0x3a,0x32,0x36,0x2b,0x30,0x32,0x3a,0x30,0x30,0xc9,0xad,0xc8,0x52,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x39,0x3a,0x32,0x36,0x2b,0x30,0x32,0x3a,0x30,0x30,0xb8,0xf0,0x70,0xee,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x40,0x8,0x6,0x0,0x0,0x0,0x13,0x7d,0xf7,0x96,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x7,0x1d,0x1,0x8,0x10,0x1e,0x6f,0x12,0x2b,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x43,0x6f,0x6d,0x6d,0x65,0x6e,0x74,0x0,0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x47,0x49,0x4d,0x50,0x57,0x81,0xe,0x17,0x0,0x0,0x2,0x6a,0x49,0x44,0x41,0x54,0x58,0xc3,0xed,0x97,0xbb,0x6e,0x13,0x51,0x10,0x86,0xbf,0xf1,0x2e,0xb1,0x83,0x85,0x63,0x5,0x10,0xe2,0x22,0xa5,0x0,0x1a,0x24,0x90,0x22,0x9e,0x81,0x2,0xd1,0x53,0xf1,0x2,0x20,0xa,0x1a,0xa,0xa0,0x44,0xd0,0xd0,0x20,0x81,0xe0,0x5,0xa8,0xe8,0x11,0x5,0xcf,0x80,0x22,0x81,0x42,0x3,0x14,0x91,0xb8,0x4,0x85,0x58,0x8e,0x21,0x78,0xd7,0xd9,0x73,0x86,0xe2,0x9c,0xdd,0xec,0xae,0xd7,0xce,0x85,0xe,0xed,0x34,0xbb,0x3a,0x3e,0xf3,0xcd,0xcc,0x3f,0x63,0x69,0x47,0xd8,0x36,0x1,0x1a,0x40,0xe0,0x9f,0x42,0xd1,0x14,0xb0,0x80,0xf1,0x4f,0x25,0x77,0xa9,0x1,0x1c,0x4,0xe6,0x81,0xa3,0x40,0x7,0x38,0x50,0x2,0x6c,0x1,0x3,0x60,0xd,0xe8,0x1,0x7f,0x0,0x9b,0x46,0x6d,0x3,0x67,0xe6,0xe,0x75,0xaf,0xb7,0x9a,0xad,0xcb,0x33,0x33,0xcd,0x53,0x54,0xd8,0x68,0x14,0x7f,0x89,0xe2,0xe8,0xf5,0xc6,0xaf,0xfe,0x73,0xe0,0x13,0xb0,0x29,0x3e,0xd2,0xc2,0x7c,0xf7,0xf0,0xe3,0xd3,0xb,0x67,0xaf,0x3c,0xb8,0xfb,0x88,0xd9,0x4e,0xab,0xca,0x9f,0xe1,0x20,0xe2,0xde,0xc3,0xdb,0x7c,0x5e,0xf9,0xf8,0xaa,0xd7,0x5f,0xbf,0x5,0xac,0x8,0xd0,0x2,0x16,0x8f,0x1f,0x3b,0xf9,0xe6,0xc5,0xb3,0x97,0xed,0x24,0xb1,0x24,0xa3,0xa4,0x12,0x10,0xce,0x84,0x84,0x61,0x83,0x6b,0x37,0xae,0x6e,0x7e,0xff,0xf1,0xf5,0x12,0xb0,0x14,0x7a,0x1d,0xda,0x61,0x10,0xb6,0x87,0xbf,0x63,0x10,0x75,0x47,0xa,0x2a,0x79,0x85,0x95,0x51,0xbc,0xc5,0x28,0x86,0x30,0x8,0xdb,0xbe,0x6c,0x49,0x1,0x1,0x80,0x51,0xeb,0xfc,0x9d,0xc0,0x4e,0x6b,0xf,0xd1,0xfc,0xb9,0xb3,0x20,0x5,0x68,0xfa,0x8b,0x5a,0x8b,0xaa,0x80,0x28,0x82,0xa0,0x28,0xa2,0x92,0x73,0xd3,0xb1,0xde,0x86,0x85,0x46,0x5b,0x45,0x51,0x50,0x45,0xc4,0x95,0x61,0x53,0x27,0x71,0x61,0x74,0x1a,0xc0,0xaa,0xcd,0x6e,0xa8,0x64,0x2f,0xee,0x5d,0x29,0x8a,0x32,0x39,0x3,0x5f,0xb6,0x2f,0x4c,0x45,0x73,0x5a,0xd8,0x31,0x48,0x1,0x60,0xac,0x2d,0xf1,0x5,0x51,0x75,0x45,0x68,0x5a,0xbf,0x4e,0xcf,0x60,0xfb,0x82,0x2b,0x5a,0x73,0x4e,0xb6,0xe2,0xf,0x52,0x2,0xd8,0x82,0xe2,0x14,0x50,0x54,0xc4,0x2f,0x8b,0x68,0xad,0x1f,0x99,0x54,0x79,0x41,0xdd,0x0,0xf8,0xb6,0x82,0x88,0x4e,0xeb,0x82,0x66,0x89,0xaa,0x3b,0xc8,0x52,0x48,0x41,0x56,0x76,0xcc,0x60,0x7b,0x74,0x75,0xac,0x1a,0x49,0x47,0x72,0x72,0x6,0xe2,0xe7,0x56,0x45,0xfd,0x5d,0xc9,0x44,0x28,0x40,0x2b,0x45,0x34,0xea,0x7,0xa8,0x14,0xc9,0x92,0x75,0x64,0x7,0x11,0x8d,0x8f,0x98,0x9b,0x87,0xf2,0xf4,0x4d,0xd5,0x40,0xd5,0xc9,0x97,0xf,0xa3,0x5a,0x74,0x9c,0x36,0x89,0xf7,0x9f,0xdc,0x61,0xaf,0x96,0x1,0x92,0x2d,0xc3,0xe2,0xf9,0x8b,0xbb,0x72,0x5a,0x7a,0xff,0xb6,0x3a,0x83,0x8d,0x41,0x7f,0xcf,0x19,0x34,0xf8,0x47,0xab,0x1,0x35,0xa0,0x6,0xd4,0x80,0x1a,0x50,0x3,0x6a,0xc0,0x7f,0x9,0x90,0x8a,0x4f,0xe0,0x3d,0x67,0x60,0xf7,0xe1,0x6b,0x53,0x80,0x5,0x22,0x63,0x4c,0x6c,0x93,0x5d,0x78,0x25,0x60,0x8c,0x89,0x81,0x8,0xb0,0xd,0xbf,0xca,0xae,0x47,0xf1,0x70,0x79,0xad,0xb7,0xca,0x34,0x88,0x4d,0x60,0xad,0xb7,0x4a,0x14,0xf,0x97,0x81,0x75,0xc0,0xa4,0x9b,0xeb,0x1c,0x70,0xa1,0xd3,0xee,0x3e,0x6d,0x35,0x67,0xcf,0x5,0x41,0x50,0x29,0xae,0x31,0xc6,0x46,0xf1,0xf0,0xc3,0x60,0xb3,0x7f,0x13,0x78,0x7,0x6c,0x48,0x6e,0x85,0xeb,0x0,0x27,0x80,0x23,0x40,0x73,0xc2,0xf2,0x1d,0x3,0x3f,0x81,0x6f,0x7e,0x8f,0x36,0x52,0x12,0x34,0x4c,0xf7,0xc1,0x9,0x55,0xa8,0x2f,0x39,0xd9,0xa7,0xf0,0xe3,0xf6,0x17,0x4c,0x97,0x1d,0x24,0x5b,0x8,0x8b,0x95,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
static const unsigned char graph_node_close_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0xc,0x8,0x4,0x0,0x0,0x0,0xfc,0x7c,0x94,0x6c,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0x65,0x49,0x44,0x41,0x54,0x18,0xd3,0x75,0x90,0x4b,0xe,0x80,0x20,0xc,0x44,0x47,0x57,0x53,0x64,0x2b,0x91,0x9b,0x71,0x6e,0x49,0x30,0xd1,0xbb,0x80,0xb,0xa2,0xb6,0x26,0x74,0x37,0x9f,0x34,0xaf,0x5,0x20,0xc9,0x7,0xa8,0xf1,0x41,0x12,0x0,0x49,0xac,0xcc,0x5f,0xe4,0x3,0x33,0xab,0x24,0xf8,0x55,0x76,0x36,0x1e,0x2e,0x2,0x78,0xd5,0xb2,0x29,0xe1,0xa2,0xb1,0x55,0xef,0x64,0x31,0x76,0x8f,0x58,0xd8,0xd8,0x78,0x3d,0xf6,0x8c,0xdf,0xb4,0xc9,0xf4,0xf5,0xaa,0x8e,0x61,0x48,0xc,0xa1,0x25,0x51,0xd1,0xf0,0xc0,0xd1,0x4b,0x6e,0xc7,0xae,0x34,0x72,0x3,0xf5,0x60,0xdd,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0xc,0x8,0x6,0x0,0x0,0x0,0x56,0x75,0x5c,0xe7,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x93,0x49,0x44,0x41,0x54,0x28,0x91,0x95,0x92,0x31,0xe,0xc2,0x30,0x10,0x4,0x17,0xaa,0x3d,0x7b,0xdb,0x58,0xa4,0xa7,0xe1,0x47,0xfe,0x2c,0x3c,0x82,0x48,0x44,0x22,0x6f,0xb1,0x4d,0x15,0xc9,0x20,0x1f,0x52,0xae,0xdd,0xd9,0x2b,0xe6,0xe,0x0,0x60,0x66,0x59,0x52,0x82,0x33,0x92,0x92,0x99,0x65,0xec,0x30,0xc9,0x4a,0x72,0x19,0x95,0x24,0x25,0x92,0xb,0xc9,0x6a,0x66,0x19,0x92,0x26,0x33,0x7b,0x92,0x6c,0x24,0xd7,0x10,0xc2,0xdc,0xc1,0x5f,0x59,0x8c,0xf1,0x32,0xc,0x42,0x8,0xb3,0xb,0x3b,0xdb,0xde,0x24,0x5f,0x2e,0xdc,0x97,0x3a,0xb0,0x91,0xdc,0x7e,0xe1,0xb3,0x67,0x66,0x9f,0xd6,0xda,0x69,0x58,0x90,0x34,0x95,0x52,0xee,0x0,0x6e,0x0,0x36,0x0,0x2b,0x80,0x6b,0xad,0xf5,0xd1,0x8b,0x70,0x6d,0xb8,0xf6,0xfe,0xd9,0x18,0x96,0xe,0x1f,0xe,0x38,0xf6,0x1a,0x1f,0x9f,0xec,0x40,0x47,0x56,0x51,0x84,0x77,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
|
@ -120,7 +120,7 @@ static const unsigned char graph_node_default_focus_png[]={
|
|||
|
||||
|
||||
static const unsigned char graph_node_selected_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x40,0x8,0x3,0x0,0x0,0x0,0x24,0xa3,0x7,0xa4,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0xd8,0x50,0x4c,0x54,0x45,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0xf,0xd,0x10,0x17,0x14,0x18,0x0,0x0,0x0,0x0,0x0,0x0,0x12,0x10,0x13,0x0,0x0,0x0,0x19,0x17,0x1b,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x16,0x12,0x19,0x0,0x0,0x0,0xe,0xb,0x10,0x0,0x0,0x0,0x0,0x0,0x0,0xe,0xb,0x10,0x16,0x12,0x19,0x0,0x0,0x0,0x1d,0x1a,0x1f,0x35,0x2f,0x38,0x94,0xd6,0x84,0xa4,0xdc,0x95,0x99,0xd8,0x8a,0x8c,0xd3,0x7b,0x8b,0xd2,0x79,0x88,0xd1,0x76,0x87,0xd1,0x74,0x86,0xd0,0x73,0x85,0xd0,0x71,0x83,0xcf,0x70,0x82,0xcf,0x6f,0x81,0xce,0x6d,0x7f,0xce,0x6c,0x7b,0xcc,0x67,0x7d,0xcd,0x68,0x7a,0xcc,0x65,0x79,0xcb,0x64,0x76,0xca,0x61,0x75,0xca,0x60,0x78,0xcb,0x62,0x74,0xc9,0x5e,0x72,0xc9,0x5c,0x70,0xc8,0x59,0x71,0xc8,0x5b,0x6d,0xc7,0x57,0x6f,0xc7,0x58,0x6c,0xc6,0x55,0x68,0xc4,0x51,0x67,0xc4,0x4f,0x69,0xc5,0x52,0x19,0x15,0x1c,0x4a,0x42,0x4f,0x3b,0x34,0x3f,0x39,0x30,0x3f,0x24,0x1e,0x27,0xff,0xff,0xff,0x23,0xbb,0x3,0x70,0x0,0x0,0x0,0x22,0x74,0x52,0x4e,0x53,0x0,0x1,0x3,0x6,0x8,0x9,0x2,0xc,0x1e,0x33,0x41,0x46,0xd,0x31,0x9a,0xe3,0x5,0x24,0xb4,0x39,0xf4,0x44,0xa,0x47,0x45,0x3d,0xf8,0x2a,0xcd,0x11,0x3f,0xd3,0xfd,0x2b,0x85,0xa8,0x7,0x57,0x0,0x0,0x0,0x1,0x62,0x4b,0x47,0x44,0x47,0x60,0xbd,0xc9,0x7b,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x4,0x4e,0x1d,0x2,0xaf,0x0,0x0,0x1,0x7,0x49,0x44,0x41,0x54,0x38,0xcb,0xed,0xd4,0xd9,0x5a,0x82,0x40,0x14,0xc0,0xf1,0x23,0x9b,0xb,0x2e,0xb8,0x81,0x1b,0xa8,0x23,0x59,0xb1,0xa4,0x51,0x60,0x81,0x85,0x52,0xf8,0xfe,0x8f,0xd4,0x71,0x3a,0xcd,0xe7,0x57,0x17,0xbd,0x80,0xbf,0x99,0x73,0x71,0xfe,0xf7,0x33,0x0,0x50,0x91,0x64,0x45,0x45,0x8a,0x2c,0x55,0x0,0x69,0xd5,0x5a,0xbd,0xa1,0xa3,0x46,0xbd,0x56,0xd5,0x70,0x6f,0xb6,0xda,0x1d,0xc6,0x75,0xda,0xad,0xa6,0x6,0x46,0xb7,0xb7,0x72,0x6f,0x38,0x77,0xd5,0xeb,0x1a,0xa0,0xf4,0x7,0x6b,0xf7,0x96,0x73,0xd7,0x83,0xbe,0x2,0xea,0x90,0xdd,0x9,0x6c,0xa8,0x82,0x69,0xb1,0x7b,0xe4,0xe1,0xf5,0x3c,0x66,0x99,0xa0,0xea,0xcc,0xf3,0x3d,0x42,0x21,0x8,0x43,0x3f,0x8,0x3,0x3f,0x8,0x28,0x3c,0x8,0x14,0x36,0x68,0x8b,0x67,0xb3,0xa5,0xf0,0x88,0xa2,0x28,0xc2,0xa1,0xf0,0x24,0x50,0x78,0x16,0x28,0xc4,0x71,0x12,0xef,0x92,0x24,0x4e,0x76,0x14,0x5e,0x4,0xa,0xaf,0x2,0x85,0x34,0xcb,0xb2,0x14,0x65,0x29,0x85,0xfd,0xdb,0xd9,0x1e,0x51,0x78,0x17,0x28,0xe4,0x67,0x87,0x43,0x9e,0x1f,0x29,0x5c,0xe0,0xa1,0xf8,0x10,0x8a,0xef,0xf0,0x29,0x5c,0xc3,0x35,0xfc,0x17,0x4c,0xeb,0x77,0x18,0x5d,0x86,0x91,0x9,0xca,0x78,0x52,0xfe,0xec,0xe5,0x64,0xac,0x80,0x31,0x9d,0x9d,0xa8,0x94,0xa7,0xd9,0xd4,0x0,0xcd,0x76,0xe6,0x8b,0x82,0x5b,0xcc,0x1d,0x1b,0xdf,0xba,0x64,0x2f,0x1d,0xdd,0x42,0xba,0xb3,0xb4,0x25,0xfe,0x1b,0xc8,0xaa,0xc9,0xa9,0xb2,0x6,0x7f,0x7d,0x1,0x5d,0xdd,0xb5,0x61,0x26,0xcd,0x71,0x81,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x39,0x3a,0x32,0x36,0x2b,0x30,0x32,0x3a,0x30,0x30,0xc9,0xad,0xc8,0x52,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x39,0x3a,0x32,0x36,0x2b,0x30,0x32,0x3a,0x30,0x30,0xb8,0xf0,0x70,0xee,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x40,0x8,0x6,0x0,0x0,0x0,0x13,0x7d,0xf7,0x96,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x7,0x1d,0x1,0x17,0x2a,0x15,0x39,0xc5,0x7,0x0,0x0,0x3,0x63,0x49,0x44,0x41,0x54,0x58,0xc3,0xed,0x97,0xcd,0x6f,0x1b,0x55,0x14,0xc5,0xcf,0x7d,0xf3,0xe5,0x19,0xbb,0xf1,0x47,0xe5,0xa4,0xd0,0x36,0x81,0x48,0x14,0x9,0xca,0x2a,0xa6,0x5d,0x50,0xb1,0x64,0x45,0xa5,0x2c,0xc8,0xaa,0xaa,0xc4,0x16,0xf6,0x48,0x48,0x48,0xed,0x22,0x1b,0xfe,0x2,0xd6,0xa8,0x55,0x57,0xd9,0x54,0xea,0xa,0x96,0x6c,0x23,0x96,0x20,0x91,0x45,0x20,0xa1,0x95,0x70,0x8d,0xfc,0x11,0x7b,0xc6,0xf6,0xbc,0x79,0xf7,0xb2,0xf0,0x38,0x19,0xdb,0xd1,0x18,0x89,0x1d,0xf2,0x93,0x6c,0xcf,0x78,0xe6,0xfe,0xce,0xb9,0xe7,0xbd,0x91,0xe6,0x91,0x88,0x10,0x0,0xf5,0xe2,0xc5,0xcf,0x5e,0xd2,0xee,0xf8,0xed,0xb3,0x96,0xc7,0xc2,0x4a,0xeb,0x98,0x90,0x19,0x8e,0xe3,0x8a,0x22,0xc5,0xb5,0xb5,0xfa,0xd8,0xae,0x55,0x87,0xf7,0xef,0xef,0x8c,0x1,0x30,0x89,0x88,0xf5,0xfc,0xfb,0xe7,0x57,0x7a,0x61,0x74,0xbd,0xdd,0xed,0x6e,0xf7,0x7a,0x9d,0x8d,0x41,0x38,0x8,0xe2,0x38,0xb6,0xb3,0x0,0xd7,0x75,0x93,0x52,0xb1,0x14,0x95,0xcb,0xd5,0x66,0xad,0x52,0x39,0x2e,0x17,0x83,0x57,0xbb,0x9f,0xef,0xf6,0xe9,0xc9,0x93,0x1f,0x8a,0x71,0xbb,0xf9,0x76,0xa7,0xd7,0xfe,0x78,0xf3,0xfa,0xe6,0xd7,0xe1,0x30,0xaa,0xc7,0x5a,0x17,0x44,0x4,0x90,0xb4,0x9a,0x0,0x22,0x82,0xeb,0x38,0xa3,0xa2,0x1f,0xb4,0x4e,0x5f,0x9d,0x7e,0x5b,0x2d,0xd7,0x7e,0x72,0x6b,0x1b,0xbf,0xdb,0xba,0xd3,0xd,0x9a,0x7f,0xbf,0xbe,0xb5,0x75,0x63,0xf3,0x71,0x62,0xcc,0xfa,0xbd,0x8f,0xee,0xc1,0xf6,0x2c,0x10,0xcd,0x74,0x0,0x11,0x41,0x32,0x36,0x85,0xc3,0xc3,0xc3,0x9b,0x6f,0x6c,0xbc,0xf9,0xf8,0xe4,0xe5,0xe9,0x17,0xd7,0xc8,0x6b,0xaa,0x38,0x19,0xba,0xe1,0xa0,0xbf,0x3e,0x1a,0x8f,0xae,0xde,0xb9,0xdb,0x0,0x29,0x42,0xa2,0x19,0x49,0x6c,0x66,0x3f,0x9a,0x41,0x8a,0x70,0xe7,0x6e,0x3,0xa3,0xf1,0xe8,0x6a,0x38,0xe8,0xaf,0xc7,0xc9,0xd0,0x55,0x2c,0xac,0xa2,0x61,0xe4,0x27,0xc6,0x58,0x46,0xb,0x44,0x18,0x4,0x0,0x9c,0x95,0x7,0x8,0x2,0x11,0x81,0x49,0x4,0x89,0x31,0x56,0x34,0x8c,0x7c,0x16,0x56,0x4a,0x6b,0x4d,0x6,0x86,0x44,0x18,0x92,0xda,0x16,0x11,0x40,0x61,0x26,0x3,0x61,0x0,0x22,0x80,0x10,0x44,0x18,0x6,0x86,0xb4,0xd6,0x64,0x3b,0x8e,0x23,0x30,0x0,0x84,0x0,0x16,0x8,0x8,0x20,0x1,0xe8,0x42,0xfd,0x1c,0x3a,0xfd,0x15,0x2,0xcc,0xe4,0x7f,0x7b,0x3e,0x28,0x10,0x1,0x10,0x88,0xe0,0xd2,0x21,0x73,0x17,0xec,0xb9,0xab,0x10,0x4e,0x6f,0x20,0xb9,0x70,0x90,0x75,0x93,0x7,0x90,0x89,0x76,0xf6,0x64,0x52,0xcc,0x17,0x90,0x79,0x67,0x33,0x0,0xe6,0x4c,0xef,0x69,0x7a,0x24,0x69,0x2e,0x22,0xa0,0xe5,0x2d,0x64,0x25,0x28,0xe3,0x67,0xf2,0xcd,0xcb,0x1c,0x40,0x18,0xc2,0x73,0xf1,0x2f,0xa6,0x98,0x93,0x41,0xda,0x77,0x6a,0x1a,0xe9,0xf2,0x99,0x36,0x33,0x39,0xca,0x73,0x30,0x1,0x70,0x5a,0x98,0x51,0xa3,0x8b,0xde,0x39,0x1f,0xc0,0x93,0xfa,0x19,0xed,0xac,0x2a,0x2d,0x9f,0x46,0x9a,0xae,0x7,0x9a,0x2e,0x26,0x9a,0xe6,0x99,0x3e,0xf,0x79,0xe,0x78,0x52,0xb8,0xa0,0xc4,0x38,0x9f,0x91,0xf9,0x68,0x17,0x97,0xb2,0xcc,0x3f,0x8a,0xf9,0x63,0x31,0xc4,0x79,0x8d,0x4c,0x90,0x73,0x7,0x8b,0x80,0x6f,0xf6,0xbf,0xc2,0xaf,0x47,0xbf,0xe4,0x2a,0xbe,0x77,0xeb,0x7d,0xec,0x7e,0xfa,0xd9,0x22,0x40,0x98,0xb1,0xbd,0xf5,0xe,0x2c,0xe5,0xe4,0x2,0xb6,0x6e,0xbe,0x5,0x61,0xbe,0xdc,0x41,0x18,0xe,0xd0,0x3b,0xeb,0xe6,0x2,0xc2,0x70,0x30,0x73,0xae,0xf0,0x1f,0xc7,0xa,0xb0,0x2,0xac,0x0,0x2b,0xc0,0xa,0xb0,0x2,0xac,0x0,0xff,0x3f,0x80,0xd6,0x9a,0x60,0xa5,0xdb,0x4,0xfa,0x17,0x15,0x94,0xde,0x6b,0x65,0x1c,0x58,0xb0,0x84,0x48,0xc1,0xb1,0xed,0xa5,0xf5,0x8e,0x6d,0x83,0x48,0xc1,0x82,0x25,0x0,0xa0,0x3c,0xd7,0x33,0x9e,0xeb,0xc6,0xca,0xb2,0x38,0xf0,0x4b,0x4b,0x1,0x81,0x5f,0x82,0xb2,0x2c,0xf6,0x5c,0x37,0xf6,0x5c,0xcf,0xd8,0xae,0xed,0xc7,0x5,0x3f,0x68,0x39,0xb6,0x3d,0x68,0xec,0x7c,0xb8,0x6,0x10,0xa2,0x61,0x1f,0x3a,0x49,0x66,0x36,0x5d,0x8e,0x6d,0x23,0xf0,0xaf,0xa0,0xb1,0xd3,0x0,0xb3,0x19,0x14,0xfc,0xa0,0xe5,0xda,0x7e,0x6c,0x3b,0xd5,0x4a,0x54,0xe9,0x97,0x8f,0xfe,0xf8,0xf3,0x78,0x7f,0xeb,0xc6,0xf6,0xa3,0xf,0x6e,0xdf,0x2e,0x31,0x33,0x89,0xc8,0xf9,0xb,0x36,0x11,0x81,0x88,0xa0,0x94,0x12,0x63,0xcc,0xe0,0xe4,0xe5,0xf1,0x7e,0x65,0xad,0x7a,0xe4,0x54,0x2b,0x11,0x89,0x88,0xf5,0xec,0xbb,0x67,0x6b,0xad,0x4e,0x77,0xab,0xd3,0xed,0xbe,0x1b,0xd,0xc3,0x75,0xad,0xb5,0xc3,0x3c,0xfb,0xb6,0xaa,0x94,0x82,0xe3,0x38,0x3a,0xf0,0x8b,0xaf,0xab,0x95,0xca,0x6f,0xf5,0x6a,0xe5,0xe4,0xc1,0x97,0xf,0xce,0x68,0xba,0x7b,0x7f,0xfa,0xf4,0xc7,0xc2,0xe0,0xaf,0x66,0x51,0xf3,0xd8,0x15,0xe1,0x4b,0xa7,0x97,0x48,0xb1,0xa3,0xbc,0xb8,0x74,0x6d,0x23,0x7c,0xf8,0xf0,0x93,0x11,0x80,0xf3,0xed,0x9,0x44,0x84,0xe,0xe,0xe,0x54,0xbd,0x5e,0xcf,0x9d,0xcc,0x56,0xab,0x25,0x7b,0x7b,0x7b,0x4c,0x34,0xd9,0xd6,0xfd,0x3,0xa,0x8,0xcf,0xdd,0x9c,0xab,0x42,0x7c,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
|
@ -165,32 +165,32 @@ static const unsigned char hsplitter_png[]={
|
|||
|
||||
|
||||
static const unsigned char icon_add_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x0,0x0,0x0,0x0,0x3a,0x98,0xa0,0xbd,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x74,0x52,0x4e,0x53,0x0,0x0,0x76,0x93,0xcd,0x38,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x4,0x4e,0x1d,0x2,0xaf,0x0,0x0,0x0,0x21,0x49,0x44,0x41,0x54,0x18,0xd3,0x63,0x60,0xc0,0x1,0x1e,0x3c,0x80,0x32,0x98,0xd0,0x65,0xa8,0x21,0xc0,0xc8,0xf0,0x0,0x85,0xaf,0x80,0xa1,0x82,0x3e,0xee,0xc0,0x0,0x0,0x13,0x86,0x4,0x98,0x60,0x93,0x6c,0x5a,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x36,0x49,0x44,0x41,0x54,0x38,0x8d,0x63,0x60,0xa0,0x25,0x78,0xf0,0xe0,0xc1,0xff,0x7,0xf,0x1e,0xfc,0xc7,0xa7,0x86,0x89,0x52,0x4b,0x46,0xd,0x60,0x60,0x60,0x64,0x60,0x80,0x84,0x36,0x39,0x9a,0x15,0x14,0x14,0x18,0x29,0x76,0x1,0x5e,0x30,0x9a,0xe,0xe8,0x64,0x0,0xc5,0x0,0x0,0xc7,0x6e,0x12,0x94,0xf9,0x26,0x2e,0xdb,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
static const unsigned char icon_close_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x4,0x0,0x0,0x0,0xb5,0xfa,0x37,0xea,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0x6c,0x49,0x44,0x41,0x54,0x28,0xcf,0xad,0x90,0xd1,0xa,0x80,0x20,0xc,0x45,0xad,0xa7,0x6b,0xee,0x35,0xb1,0x3f,0xf3,0xbb,0x13,0xc,0xea,0x5f,0x5c,0xf,0x42,0x4d,0x1c,0x14,0xd4,0xde,0xc6,0x39,0xd3,0xdd,0x19,0xf3,0x53,0xd9,0x48,0x5e,0xf6,0xe4,0x6d,0x6c,0x30,0xa,0xd2,0xad,0x90,0x47,0x42,0x11,0xa,0xcd,0x76,0x5,0x63,0x9b,0x16,0xd9,0xb9,0x20,0x9f,0xbc,0x14,0x15,0xb,0x65,0x47,0x56,0x71,0x55,0x90,0xc1,0x60,0x1c,0x12,0x8f,0x5a,0x26,0x1e,0xd4,0x79,0xf9,0x45,0x5d,0x57,0x59,0xd2,0x85,0x36,0x51,0x87,0xfb,0xd0,0xef,0xe,0xf5,0x78,0xea,0x4f,0x75,0x2,0x30,0x98,0x34,0x72,0xa,0x11,0xfb,0xc2,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x9b,0x49,0x44,0x41,0x54,0x38,0x8d,0xcd,0x92,0x31,0xe,0xc2,0x30,0x10,0x4,0x17,0xaa,0x3d,0x67,0xdb,0x58,0xd0,0xd3,0xf0,0xa3,0x7c,0x36,0x3c,0x82,0x48,0x44,0x22,0x6f,0xb1,0x4d,0x85,0x14,0x81,0xf,0x2c,0x28,0xe0,0xda,0xd5,0x8c,0x4e,0x77,0xb,0xfc,0xd5,0x98,0xd9,0x20,0x29,0x7a,0xb9,0xa4,0x68,0x66,0x83,0xb,0x93,0xcc,0x24,0xa7,0x9a,0x44,0x52,0x24,0x39,0x91,0xcc,0x55,0x89,0xa4,0xde,0xcc,0xce,0x24,0xb,0xc9,0x39,0x84,0xb0,0xf7,0xb2,0xae,0xeb,0x76,0xde,0x8a,0x4f,0x92,0x66,0xd8,0x91,0x5c,0x49,0x5e,0x9a,0xe1,0xb5,0x64,0x5,0x16,0x92,0x8b,0x7,0x6f,0x9b,0x8c,0x0,0x4a,0x29,0x9b,0x26,0x81,0xa4,0x3e,0xa5,0x34,0x2,0x38,0x2,0x58,0x0,0xcc,0x0,0xe,0x39,0xe7,0xd3,0xfa,0xb0,0xee,0xea,0x8f,0x7,0x7b,0xf5,0x9d,0xb7,0xb0,0x97,0x55,0x25,0x5f,0x17,0xe9,0x2e,0xf9,0xb8,0xca,0x3f,0x9b,0x1b,0x1a,0xe3,0x40,0x47,0xa0,0xda,0xda,0x61,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
static const unsigned char icon_color_pick_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x4,0x0,0x0,0x0,0xb5,0xfa,0x37,0xea,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0xe0,0x49,0x44,0x41,0x54,0x28,0xcf,0x95,0x91,0xbf,0x6a,0xc2,0x60,0x14,0xc5,0xcf,0x17,0x82,0xcf,0xd0,0xad,0x75,0x13,0x12,0xa1,0x5b,0xc0,0xdd,0x35,0xe0,0x50,0xfc,0x43,0xfb,0x8,0x6e,0x8e,0x3e,0x44,0x1f,0xa0,0xf,0xd0,0xa9,0x88,0x53,0x85,0x3a,0x38,0x74,0x12,0xc1,0x45,0x1c,0x8c,0xf9,0xce,0x27,0x89,0xa0,0x19,0x3a,0x17,0xe2,0x17,0x87,0xb4,0x60,0x9a,0x48,0xc9,0x99,0xee,0xe5,0x7,0xe7,0x5e,0xce,0x1,0xca,0x4a,0x59,0xab,0xa,0xc0,0x16,0xf7,0x3c,0xb0,0x5,0x88,0x2c,0x96,0x8e,0x78,0x17,0xb3,0xd3,0x9b,0x78,0x11,0x26,0x80,0xe3,0xdd,0x8d,0xf9,0xc7,0xe0,0x1b,0x71,0xe2,0x1a,0xee,0xcf,0x16,0x3,0x46,0x96,0x57,0x97,0x78,0xfe,0x9d,0x93,0x18,0xfd,0xdc,0x7,0xb2,0xc3,0x90,0x3d,0x46,0xd4,0xd4,0xfe,0x53,0x21,0xf6,0x6c,0x40,0x76,0xa9,0xa9,0xd5,0x68,0x55,0x29,0xc4,0xca,0x62,0xe0,0xf,0x19,0xf1,0x4b,0x59,0x57,0xb0,0xec,0x0,0xf2,0x5e,0x3a,0x17,0xd8,0x7f,0x60,0xb0,0xad,0x3,0xb2,0xa6,0x76,0xfe,0x63,0xee,0xf6,0x3f,0x98,0x8d,0xd4,0xdc,0xb3,0x53,0xf3,0xac,0xc,0x40,0x34,0xb1,0x4e,0x36,0x9e,0x6d,0x4e,0x92,0x41,0xf5,0xb5,0x28,0xfd,0x31,0x35,0x3f,0x18,0xca,0x76,0x51,0x37,0x2,0xe0,0x5c,0xec,0xb1,0xc0,0xf4,0xf6,0xb3,0x74,0xb3,0x0,0x70,0x6,0x95,0x2,0x6f,0xae,0x29,0xa4,0x96,0x25,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x34,0x39,0x2b,0x30,0x32,0x3a,0x30,0x30,0xe3,0xb6,0x51,0xb2,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x34,0x39,0x2b,0x30,0x32,0x3a,0x30,0x30,0x92,0xeb,0xe9,0xe,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x1,0x55,0x49,0x44,0x41,0x54,0x38,0x8d,0xb5,0x92,0xb1,0x4a,0x3,0x41,0x14,0x45,0xef,0xdb,0x6c,0xac,0xf2,0x1,0xda,0xcd,0x40,0x4,0x25,0x11,0x4,0x8b,0x80,0x8d,0x20,0x88,0x5d,0x20,0x88,0x90,0x22,0x9d,0x9d,0xa0,0x85,0x58,0xeb,0x7,0x88,0xe0,0x7,0x58,0x8b,0x36,0x5a,0x88,0xa0,0xa5,0x85,0xa5,0x60,0x61,0xb0,0x70,0xb2,0xef,0x8d,0x44,0x41,0x21,0x1f,0x20,0x6c,0xf2,0x2c,0xcc,0xc2,0x12,0x92,0x8d,0x45,0xbc,0xe5,0xdc,0xb9,0x67,0xee,0xbc,0x19,0xe0,0xbf,0xe5,0xbd,0x2f,0x35,0x9b,0xcd,0x29,0x0,0x10,0x91,0x9a,0x88,0x7c,0x88,0xc8,0xa7,0x88,0xd4,0x0,0x80,0xb2,0xc2,0xcc,0x5c,0x21,0xa2,0x5b,0x22,0xba,0xef,0x76,0xbb,0x97,0x44,0x74,0x4a,0x44,0x61,0xdf,0xfe,0x32,0xc6,0x4c,0x87,0x59,0x0,0x0,0xdf,0x0,0x62,0x55,0xad,0x6,0x41,0x50,0x1d,0xf0,0x62,0x0,0x8,0xb2,0xd2,0xd6,0xda,0x27,0x0,0x27,0x83,0xeb,0xaa,0x1a,0x3,0xd8,0x19,0xb,0x60,0xe6,0x3a,0x80,0x6d,0x0,0xd,0x0,0x9d,0x14,0x60,0xcb,0x18,0x73,0x95,0x9,0x60,0xe6,0x3a,0x11,0x1d,0xc7,0x71,0xbc,0x6e,0x8c,0x39,0x53,0xd5,0xdd,0xc4,0xcb,0xe5,0x72,0x1b,0xc9,0x60,0x87,0x2,0xd2,0xe1,0x62,0xb1,0xf8,0xec,0xbd,0x2f,0x11,0xd1,0x51,0xaf,0xd7,0x3b,0x0,0xd0,0x51,0xd5,0x95,0x42,0xa1,0x30,0x3b,0xf2,0x64,0x11,0x79,0x77,0xce,0x95,0x81,0xdf,0x67,0x14,0x91,0x76,0xff,0x3a,0x60,0xe6,0x45,0x66,0xae,0xc,0xd,0x47,0x51,0xb4,0x29,0x22,0xed,0x56,0xab,0xb5,0xd0,0xdf,0x3c,0xe7,0xbd,0x7f,0x8b,0xa2,0xa8,0x31,0x7a,0x52,0x93,0x8,0x8b,0xc8,0x72,0xba,0xb6,0x73,0xae,0x9c,0xae,0x9d,0xa5,0x0,0x0,0x88,0x68,0xd,0xc0,0x8b,0xaa,0xbe,0x3a,0xe7,0xca,0x61,0x18,0xde,0xa9,0xea,0xbe,0xb5,0xf6,0x7c,0x1c,0x20,0xf9,0x89,0x4b,0x0,0x56,0xf3,0xf9,0xfc,0xd,0x80,0x79,0x55,0xdd,0xb3,0xd6,0x5e,0x8c,0xad,0x9e,0x0,0x54,0x75,0x86,0x88,0xae,0x1,0x3c,0x2,0x38,0x34,0xc6,0x3c,0xfc,0x25,0x3c,0x11,0xfd,0x0,0x28,0x54,0xbb,0xfe,0xad,0x99,0xe5,0xb8,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
static const unsigned char icon_folder_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x4,0x0,0x0,0x0,0xb5,0xfa,0x37,0xea,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0x40,0x49,0x44,0x41,0x54,0x28,0xcf,0x63,0x60,0xa0,0x14,0x30,0x32,0x30,0x3c,0x38,0xca,0x60,0x85,0x24,0x72,0x44,0xc1,0x16,0x5d,0xc1,0x7f,0x54,0x3d,0xa,0x8c,0xc8,0x3c,0x26,0x4c,0x43,0x1f,0xda,0x10,0x30,0x1,0xd5,0x3a,0x26,0x6,0x7c,0xc0,0x6,0xab,0x15,0xa8,0x60,0xc8,0x28,0x38,0x82,0x4b,0xf2,0xff,0x61,0x42,0xda,0x89,0x1,0x0,0x7c,0x5,0xb,0xf5,0x5d,0xb6,0xe9,0xbb,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x34,0x39,0x2b,0x30,0x32,0x3a,0x30,0x30,0xe3,0xb6,0x51,0xb2,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x34,0x39,0x2b,0x30,0x32,0x3a,0x30,0x30,0x92,0xeb,0xe9,0xe,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x5f,0x49,0x44,0x41,0x54,0x38,0x8d,0xed,0x8f,0xc1,0xd,0x80,0x30,0x8,0x45,0x9f,0x9d,0x84,0x39,0x4c,0x3b,0xbd,0x75,0x8f,0x32,0x9,0x5e,0xec,0xa5,0x9,0xa4,0xc6,0x26,0x5e,0x7c,0x17,0xe,0xc0,0xe3,0x3,0x5f,0xb3,0x1,0xb4,0xd6,0x4e,0x60,0x77,0x66,0xaa,0x88,0x14,0x4f,0x90,0xee,0xea,0x2d,0x3,0xe4,0x28,0x41,0x8a,0x9a,0x1d,0x55,0x75,0x25,0xfd,0x5,0x9b,0x11,0xd,0x54,0x11,0x29,0x53,0x9,0x1c,0x32,0x4c,0xbe,0x10,0xf1,0xb,0x16,0xa,0xea,0xd3,0x45,0x33,0x3b,0xde,0x1e,0x5f,0xc3,0x5,0x1f,0xc5,0x12,0x2c,0xc5,0x88,0xe1,0xb4,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
static const unsigned char icon_play_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x4,0x0,0x0,0x0,0xb5,0xfa,0x37,0xea,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0x6b,0x49,0x44,0x41,0x54,0x28,0xcf,0x63,0x60,0xa0,0x17,0x78,0x70,0xf8,0xc1,0xb5,0x7,0xde,0xf8,0x14,0xfc,0x7f,0xf0,0xff,0xc1,0xff,0x87,0x3b,0x1e,0x6a,0xa1,0xcb,0x30,0x21,0x73,0xfe,0xbb,0xff,0xbf,0xf8,0x60,0xca,0x13,0x61,0x64,0x31,0x46,0x98,0x9,0x48,0x62,0x1f,0x18,0x3b,0x7e,0x4d,0x50,0xfd,0x89,0x5b,0x1,0x3,0x3,0x3,0xc3,0x11,0x5,0x5b,0x2c,0x56,0x60,0x3,0xd8,0x14,0xbc,0x67,0xac,0xf8,0xed,0x2,0xe3,0xb0,0xa0,0x49,0xfe,0x61,0x98,0xc9,0x52,0x2f,0xf3,0x16,0x21,0x80,0xa2,0x80,0x71,0x27,0x43,0x91,0xfc,0x35,0xf2,0x2,0x8a,0x96,0x0,0x0,0xbc,0x2d,0x27,0xc4,0x79,0x12,0x82,0x82,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0xa2,0x49,0x44,0x41,0x54,0x38,0x8d,0x63,0x60,0x18,0xf2,0x80,0x11,0x99,0xf3,0xe0,0xc1,0x83,0xc3,0xc,0xc,0xc,0xc2,0xc,0xc,0xc,0xa5,0xa,0xa,0xa,0x5b,0xc9,0x31,0xe0,0x3f,0x5c,0x82,0x91,0x71,0x27,0x3,0x3,0x43,0x91,0xbc,0xbc,0xfc,0x35,0x7c,0x6,0x30,0xe1,0x92,0xf8,0xff,0xff,0xbf,0xfb,0xff,0xff,0xff,0x2f,0x3e,0x78,0xf0,0x60,0xca,0x93,0x27,0x4f,0x84,0x49,0x76,0x1,0x1a,0xf8,0xc0,0xc8,0xc8,0xd8,0xf1,0xeb,0xd7,0xaf,0x9,0xaa,0xaa,0xaa,0x3f,0x89,0x72,0x1,0x1a,0x10,0xf8,0xff,0xff,0x7f,0x7,0x2b,0x2b,0xeb,0x1e,0x74,0x9,0x62,0xd,0xc0,0x9,0x88,0x35,0xe0,0x3d,0x23,0x23,0x63,0xc5,0xef,0xdf,0xbf,0x5d,0xd0,0x25,0x58,0x8,0x68,0xfc,0xc3,0xc0,0xc0,0x30,0x93,0x85,0x85,0xa5,0x5e,0x46,0x46,0xe6,0x2d,0x36,0x5,0x38,0xd,0x20,0x36,0x1a,0xd1,0xd,0x38,0xc2,0x0,0x4d,0x48,0xf2,0xf2,0xf2,0x44,0x25,0xa4,0x61,0x0,0x0,0x1e,0x57,0x33,0x3c,0xcc,0xe7,0x34,0x69,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
static const unsigned char icon_reload_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x4,0x0,0x0,0x0,0xb5,0xfa,0x37,0xea,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0xe8,0x49,0x44,0x41,0x54,0x28,0xcf,0xa5,0x91,0x31,0x4e,0x2,0x51,0x10,0x86,0x3f,0x16,0x22,0x5b,0x10,0x88,0x5a,0x1a,0x4a,0x1b,0xd7,0x4,0x4a,0x6e,0x60,0x65,0xa3,0xc1,0xc4,0x8e,0x8e,0x46,0x38,0x90,0x5,0xa5,0x17,0x90,0x46,0xf,0x80,0x56,0x84,0x2,0x48,0xc,0xc9,0xee,0x3c,0x56,0xe,0x60,0xd0,0x64,0x2d,0xde,0x40,0xe3,0xbe,0xdd,0x4d,0xec,0x98,0x6a,0x26,0xf3,0x4d,0xe6,0x9f,0x7f,0xe0,0xd0,0x28,0x65,0xe9,0xaa,0x5a,0xe9,0x97,0xee,0xb9,0x4,0xe6,0xfa,0x64,0x1f,0xcf,0x7f,0xb,0x40,0x7c,0x66,0xc7,0xb4,0x72,0xa3,0xb3,0xf2,0x75,0x73,0x3,0x5e,0x3a,0x6d,0xc7,0xb4,0x88,0xe9,0x26,0x8d,0xa4,0xb1,0xbb,0xe1,0x83,0xb6,0x7d,0x5e,0x55,0x1d,0x1e,0xd,0x45,0xc5,0xc4,0x27,0x69,0x6d,0x8e,0xc5,0x88,0x86,0xf,0xe,0x90,0x77,0x51,0xb9,0xcd,0x8b,0xb,0xbb,0xa2,0x32,0x71,0x2b,0xb8,0x80,0xe4,0x35,0xf,0xd8,0x17,0x20,0x0,0xf,0x64,0x24,0x4a,0xd,0xfc,0x2f,0x19,0x65,0x80,0xf7,0x27,0xdf,0x3,0x7f,0xc0,0x12,0x80,0xa5,0x3f,0xc8,0xdd,0x7f,0x5,0x2c,0x52,0x49,0x81,0x6c,0x65,0x6b,0x82,0xac,0xfd,0x79,0x6a,0xd6,0x5,0x91,0x51,0x2f,0xea,0x39,0xc3,0xea,0xe1,0x9d,0x59,0x8b,0xca,0x74,0x71,0x54,0x70,0xd2,0x5d,0xa4,0xff,0x18,0x55,0x88,0x6f,0xde,0x74,0xf8,0xd3,0x69,0x6e,0xe,0x7e,0x24,0x0,0x7b,0x27,0x64,0x59,0x3b,0x41,0xb6,0x9a,0xe,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x1,0x59,0x49,0x44,0x41,0x54,0x38,0x8d,0xcd,0x92,0x31,0x4b,0x3,0x31,0x18,0x86,0x9f,0x5c,0xe,0xec,0x20,0x76,0x70,0x39,0xd0,0xe3,0xba,0x74,0x51,0x41,0xdd,0xfc,0x7,0xba,0xb8,0x8,0x52,0xec,0x2e,0x4e,0x3a,0x88,0x3f,0xa3,0xa3,0x53,0x7,0x47,0x67,0x41,0x17,0xdd,0x9c,0x5c,0x3b,0xd8,0x82,0x64,0x68,0xca,0xd5,0x55,0x11,0x3c,0x1a,0x87,0x24,0x2e,0xd7,0x72,0x9e,0x9e,0xab,0xbe,0xd3,0xc7,0x1b,0x9e,0x37,0xf9,0xbe,0x7c,0xf0,0xd7,0x12,0x3f,0x99,0x4a,0xa9,0xb9,0x30,0xc,0x8f,0x84,0x10,0x7,0xc0,0x5a,0x6e,0x3f,0x3a,0xe7,0x2e,0xad,0xb5,0xdd,0x66,0xb3,0xf9,0x51,0x19,0x90,0xa6,0xe9,0x92,0xb5,0xf6,0x6,0x58,0xaf,0xb8,0xb4,0x27,0xa5,0xdc,0x8d,0xe3,0xf8,0x19,0x20,0x28,0xdf,0x5c,0x80,0x53,0x60,0xdf,0x18,0x53,0x37,0xc6,0xd4,0xbd,0xf7,0x7b,0xc0,0x13,0xb0,0x61,0xad,0xbd,0x56,0x4a,0xcd,0x1,0x84,0xc5,0x80,0x30,0xc,0x8f,0xa6,0xb0,0x94,0x72,0x33,0x8e,0xe3,0x97,0xc2,0xf1,0xd5,0x68,0x34,0xba,0xf7,0xde,0xf7,0x80,0xd,0x29,0xe5,0x21,0x70,0xfe,0xe5,0x5,0x42,0x88,0x76,0x5e,0x9e,0x96,0x60,0x0,0x92,0x24,0x79,0x75,0xce,0x9d,0x1,0x4,0x41,0xd0,0xfe,0xd6,0x2,0xb0,0x2,0x60,0x8c,0xb9,0xab,0xe8,0x1f,0x6b,0xed,0x6d,0x5e,0xae,0xce,0x2,0xb4,0xd6,0x17,0x5a,0x6b,0x7,0xcc,0x3,0xd4,0x6a,0xb5,0x37,0xad,0xf5,0xc5,0x4f,0x1,0x41,0x10,0x7c,0x19,0x7c,0x90,0x3,0xc7,0xc0,0xa0,0xe0,0xf,0x72,0xef,0x9b,0x84,0x10,0xdb,0x79,0xd9,0x9f,0x5,0x44,0x51,0x94,0x9,0x21,0x5a,0x40,0x6,0x64,0x42,0x88,0x56,0x14,0x45,0x59,0x19,0x1e,0x8f,0xc7,0x8b,0x52,0xca,0xe,0x80,0x73,0xee,0x12,0xa,0xbf,0x90,0x24,0x49,0x7f,0x38,0x1c,0x1e,0x3,0x34,0x1a,0x8d,0x7e,0x11,0x54,0x4a,0x2d,0x48,0x29,0x77,0xac,0xb5,0x1d,0xef,0xfd,0x32,0xd0,0x9b,0x4c,0x26,0x5d,0xa8,0xd8,0xc4,0xb2,0xf2,0xf9,0x4c,0x55,0xbd,0x48,0xbf,0xe8,0x1d,0x78,0x70,0xce,0x9d,0x64,0x59,0xb6,0x35,0x85,0xff,0x87,0x3e,0x1,0x53,0x7,0x87,0x11,0xd3,0x3a,0x9b,0x9e,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
|
@ -200,17 +200,17 @@ static const unsigned char icon_stop_png[]={
|
|||
|
||||
|
||||
static const unsigned char icon_zoom_less_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x0,0x0,0x0,0x0,0x3a,0x98,0xa0,0xbd,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x74,0x52,0x4e,0x53,0x0,0x0,0x76,0x93,0xcd,0x38,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0x17,0x49,0x44,0x41,0x54,0x18,0xd3,0x63,0x60,0x18,0x10,0xc0,0xc8,0xf0,0x0,0x85,0xaf,0xc0,0x34,0x30,0xee,0xc0,0x0,0x0,0x97,0xf9,0x1,0x4,0xea,0x8f,0x4a,0x96,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x34,0x39,0x2b,0x30,0x32,0x3a,0x30,0x30,0xe3,0xb6,0x51,0xb2,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x34,0x39,0x2b,0x30,0x32,0x3a,0x30,0x30,0x92,0xeb,0xe9,0xe,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x25,0x49,0x44,0x41,0x54,0x38,0x8d,0x63,0x60,0x18,0x5,0xc3,0x0,0x30,0x32,0x30,0x30,0x30,0x3c,0x78,0xf0,0xe0,0x3f,0x39,0x9a,0x15,0x14,0x14,0x18,0x99,0xa8,0xeb,0x9e,0x51,0x30,0x44,0x1,0x0,0xff,0xa9,0x4,0x4,0x4a,0xae,0x20,0xfa,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
static const unsigned char icon_zoom_more_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x0,0x0,0x0,0x0,0x3a,0x98,0xa0,0xbd,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x74,0x52,0x4e,0x53,0x0,0x0,0x76,0x93,0xcd,0x38,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0x21,0x49,0x44,0x41,0x54,0x18,0xd3,0x63,0x60,0xc0,0x1,0x1e,0x3c,0x80,0x32,0x98,0xd0,0x65,0xa8,0x21,0xc0,0xc8,0xf0,0x0,0x85,0xaf,0x80,0xa1,0x82,0x3e,0xee,0xc0,0x0,0x0,0x13,0x86,0x4,0x98,0x60,0x93,0x6c,0x5a,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x36,0x49,0x44,0x41,0x54,0x38,0x8d,0x63,0x60,0xa0,0x25,0x78,0xf0,0xe0,0xc1,0xff,0x7,0xf,0x1e,0xfc,0xc7,0xa7,0x86,0x89,0x52,0x4b,0x46,0xd,0x60,0x60,0x60,0x64,0x60,0x80,0x84,0x36,0x39,0x9a,0x15,0x14,0x14,0x18,0x29,0x76,0x1,0x5e,0x30,0x9a,0xe,0xe8,0x64,0x0,0xc5,0x0,0x0,0xc7,0x6e,0x12,0x94,0xf9,0x26,0x2e,0xdb,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
static const unsigned char icon_zoom_reset_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x4,0x0,0x0,0x0,0xb5,0xfa,0x37,0xea,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0x4e,0x49,0x44,0x41,0x54,0x28,0xcf,0x63,0x60,0x20,0x6,0x3c,0xc,0x7b,0xf0,0xff,0xc1,0x7f,0xec,0x22,0x8c,0xc,0xc,0xcf,0x44,0x7e,0x5d,0x65,0x10,0x63,0x60,0x50,0x60,0x84,0x49,0x23,0x8b,0x30,0x31,0x30,0xfc,0x9a,0xc6,0x20,0x86,0x6a,0x22,0xa6,0x8,0x3,0xcc,0x40,0x84,0x55,0x30,0x16,0x13,0x21,0xf7,0xb1,0xa0,0x72,0x11,0xee,0x80,0x1,0x82,0x26,0x50,0x5d,0x1,0x7a,0x80,0xd,0xe,0x5f,0x10,0x4,0x0,0xfc,0xc5,0x22,0x8c,0x12,0xab,0xcb,0x61,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x6f,0x49,0x44,0x41,0x54,0x38,0x8d,0xdd,0x91,0xbb,0xd,0x80,0x30,0x10,0x43,0x1f,0x11,0x23,0x20,0xea,0x4c,0xc5,0x62,0x48,0xec,0xc0,0x56,0x97,0x26,0x43,0xa4,0x31,0x15,0x12,0x45,0x72,0x8a,0x14,0xa,0x84,0xab,0xfb,0x58,0x3e,0xeb,0xc,0x83,0x98,0xee,0x22,0xa5,0xb4,0x49,0x3a,0x1,0x62,0x8c,0x53,0x8d,0x5c,0xe3,0x4,0x80,0x9c,0xf3,0x22,0x69,0xf7,0x2e,0xb5,0x38,0x1,0xa0,0x94,0x72,0x0,0xab,0x27,0xd0,0xc3,0xc1,0xcc,0x64,0x66,0x6a,0xf5,0xb5,0x59,0x70,0x15,0x3b,0x30,0x7b,0xcb,0xd6,0x33,0x9f,0x18,0x76,0xf0,0x71,0x81,0x5a,0xa,0xaf,0x3b,0xf8,0x41,0xa,0xc3,0xb8,0x0,0x6c,0x9c,0x3f,0xb8,0x84,0xfc,0x5b,0x85,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
|
@ -235,7 +235,7 @@ static const unsigned char logo_png[]={
|
|||
|
||||
|
||||
static const unsigned char option_arrow_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0xc,0x8,0x4,0x0,0x0,0x0,0xfc,0x7c,0x94,0x6c,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x4,0x4e,0x1d,0x2,0xaf,0x0,0x0,0x0,0x5f,0x49,0x44,0x41,0x54,0x18,0xd3,0x63,0x60,0x20,0xc,0xee,0x27,0xdc,0x4f,0xc0,0x22,0xfc,0x50,0xfb,0xc1,0x97,0x7,0x5f,0x1e,0x6a,0xc3,0xf8,0x4c,0x10,0xea,0x5,0xf7,0xff,0x55,0xc,0xdc,0xc,0xdc,0xff,0x57,0xbd,0xe0,0x46,0x91,0xf8,0x39,0x85,0x41,0x8b,0x81,0x81,0x81,0x81,0x41,0xeb,0xe7,0x14,0x22,0x6c,0xc5,0x7,0x1e,0xce,0x7f,0xf0,0x1f,0x2,0x1f,0xce,0x87,0x88,0x30,0xc2,0x2c,0xff,0x71,0x8a,0x41,0x8b,0x81,0x81,0xe1,0x1a,0x87,0x99,0xc4,0x57,0xbc,0xce,0x25,0xec,0x41,0x74,0x0,0x0,0xec,0x66,0x28,0xba,0x76,0x22,0x7a,0x72,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0xc,0x8,0x6,0x0,0x0,0x0,0x56,0x75,0x5c,0xe7,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x98,0x49,0x44,0x41,0x54,0x28,0x91,0xbd,0x91,0xb1,0xd,0xc2,0x30,0x10,0x45,0xdf,0xd1,0xb8,0xf0,0x2,0xee,0xdc,0x87,0x1,0xd8,0x24,0xb5,0xe9,0x19,0x87,0x1e,0xea,0x6c,0xc2,0x0,0xa4,0xb5,0xdc,0x79,0x1,0x17,0xae,0x8e,0x26,0x48,0x76,0x14,0x40,0x48,0x88,0xdf,0xfd,0xf7,0xef,0x4b,0x77,0x3a,0xf8,0x85,0x62,0x8c,0x21,0xc6,0x18,0xb6,0x32,0x59,0x83,0x94,0xd2,0x5e,0x55,0x6f,0x0,0x22,0x72,0xf0,0xde,0xdf,0xdb,0x7c,0xd7,0x9a,0x9c,0xb3,0x55,0xd5,0x9,0xb0,0x80,0x55,0xd5,0x29,0xe7,0x6c,0x5f,0x16,0x6a,0xad,0x67,0x60,0x68,0xd0,0xb0,0xb0,0x3f,0xaa,0x3b,0x3a,0xa5,0x74,0x51,0xd5,0xd0,0xd,0x88,0x5c,0xbd,0xf7,0xc7,0xa7,0xef,0x6e,0x30,0xc6,0x9c,0x80,0xb9,0x41,0xf3,0xc2,0xd8,0x2c,0x38,0xe7,0x8a,0x88,0x8c,0x40,0x1,0x8a,0x88,0x8c,0xce,0xb9,0xf2,0x71,0xcf,0x77,0x8f,0xfb,0x5a,0xf,0x28,0x4a,0x37,0xff,0x58,0x46,0x7b,0x50,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
|
@ -280,7 +280,7 @@ static const unsigned char popup_bg_disabled_png[]={
|
|||
|
||||
|
||||
static const unsigned char popup_checked_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x8,0x8,0x4,0x0,0x0,0x0,0x6e,0x6,0x76,0x0,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0x6c,0x49,0x44,0x41,0x54,0x8,0xd7,0x63,0x60,0x40,0x3,0x8c,0x8,0xe6,0xd,0x5e,0xf6,0xbd,0x8c,0x3f,0x99,0x60,0xdc,0xff,0x8c,0x1c,0xb,0x18,0x4d,0x19,0xb8,0xe0,0xf2,0xf,0x6a,0x1e,0xfc,0x7f,0xf0,0xee,0xb1,0xa,0xe3,0x83,0xc3,0xc,0x9c,0x7f,0xbc,0x58,0x4c,0x18,0x36,0x33,0x30,0x30,0xf8,0x2a,0x6c,0x63,0xf9,0xcf,0xce,0x68,0xcc,0x72,0x80,0x41,0x92,0x81,0x89,0xa1,0x46,0x61,0x1b,0x3,0x3,0xc3,0x1d,0xb1,0x7,0x97,0x1f,0xfc,0x7f,0xf0,0xff,0xc1,0xda,0xff,0x8c,0x50,0x5b,0xee,0x88,0xb1,0x6c,0x65,0xf8,0xfd,0xc3,0x5d,0xe3,0x33,0x3,0x3,0x3,0x3,0x0,0x6a,0x54,0x21,0x0,0x96,0x26,0x52,0xa9,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x8,0x8,0x6,0x0,0x0,0x0,0xc4,0xf,0xbe,0x8b,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0xa3,0x49,0x44,0x41,0x54,0x18,0x95,0x85,0xcd,0xa1,0xa,0xc2,0x50,0x0,0x85,0xe1,0xff,0xdc,0x5d,0xd8,0x14,0x4,0xab,0x69,0x37,0xac,0x98,0xd5,0x27,0xb0,0x89,0x16,0x8b,0xd5,0xf7,0xd0,0xec,0x73,0xf8,0x4,0x16,0x61,0x4d,0x10,0xc,0x16,0xa3,0x61,0x71,0xab,0x16,0xeb,0x84,0x3b,0xae,0x45,0x8b,0xa,0x9e,0x78,0xce,0x7,0x7,0xfe,0x44,0xbf,0xca,0xa2,0x28,0x3a,0x71,0x1c,0x1f,0x24,0x3d,0xcc,0xe7,0x18,0x42,0x50,0x92,0x24,0x5b,0x49,0x23,0xa0,0xfd,0x5,0xaa,0xaa,0x5a,0x1,0x73,0xe0,0x1e,0x45,0xd1,0x42,0x65,0x59,0x9e,0x80,0x96,0xf7,0x7e,0x62,0xad,0x1d,0x2,0xfb,0x97,0x9d,0x39,0xe7,0x72,0x1b,0x42,0x88,0x25,0xd,0xac,0xb5,0x47,0xa0,0x7,0x18,0x60,0xed,0x9c,0xcb,0x1,0x4c,0xd3,0x34,0x53,0xe0,0xa,0xf4,0x81,0x2e,0xb0,0x4b,0xd3,0x74,0xf3,0xbe,0x34,0x59,0x96,0xdd,0xbc,0xf7,0x63,0xe0,0x2,0x9c,0xeb,0xba,0x5e,0x4a,0xa,0x6f,0xf0,0x4,0x57,0x3d,0x2c,0x27,0x2b,0xe9,0x62,0x6b,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
|
@ -390,12 +390,12 @@ static const unsigned char selection_oof_png[]={
|
|||
|
||||
|
||||
static const unsigned char spinbox_updown_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x4,0x0,0x0,0x0,0xb5,0xfa,0x37,0xea,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0x76,0x49,0x44,0x41,0x54,0x28,0xcf,0x63,0x60,0x20,0xd,0xdc,0x4f,0x7f,0x98,0x86,0x47,0xfa,0x81,0xe5,0x83,0x1f,0xf,0x7e,0x3d,0xb2,0x45,0x16,0x63,0x44,0xd2,0x2d,0xc1,0x78,0x86,0x41,0x9a,0x81,0x81,0xe1,0x5,0xb3,0x89,0xec,0x53,0x98,0x28,0x13,0x8c,0x71,0x86,0x95,0x61,0x15,0x83,0x34,0x3,0x3,0x3,0x3,0x83,0xc4,0xdf,0x35,0xb7,0xd9,0x31,0x14,0x8,0x4f,0x61,0x44,0x18,0x6d,0xc1,0x36,0x93,0x44,0xc7,0xd3,0x7,0xdc,0x9f,0xf9,0xe0,0x3f,0x2,0x3e,0x9c,0x81,0xe1,0x8b,0xb7,0x39,0xff,0xf,0xc3,0x55,0x1f,0xff,0x95,0x4f,0x74,0x40,0xa1,0x5a,0x63,0x81,0x19,0xd4,0x68,0xe0,0x61,0x1a,0xde,0xc8,0xc2,0x6,0x0,0x74,0x4d,0x32,0x61,0xa3,0xda,0x8e,0xb3,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0xcd,0x49,0x44,0x41,0x54,0x38,0x8d,0xe5,0x53,0x31,0xe,0x82,0x40,0x10,0x9c,0x5d,0x22,0x3e,0x80,0x86,0xc4,0x0,0xe1,0xf,0x16,0x5a,0x58,0xf9,0x5,0xe3,0x13,0xd0,0xc2,0xc4,0xcf,0xd8,0xf0,0x5,0xe3,0x1f,0x2c,0x2c,0x6c,0xf8,0x1,0xc5,0x72,0x85,0x9,0xd,0xf,0x10,0x43,0xce,0x86,0x82,0xe0,0xe9,0x19,0x8d,0x95,0x53,0xce,0xce,0x6e,0x26,0x99,0x59,0xe0,0x97,0x10,0x91,0x95,0x52,0x2a,0x79,0xa5,0xa1,0x67,0x83,0xa2,0x28,0xa6,0x0,0x8e,0x0,0x98,0x99,0xe7,0x61,0x18,0x9e,0xde,0x3e,0x20,0x22,0x3e,0x11,0x65,0x0,0x46,0x2d,0x55,0x3a,0x8e,0x33,0xe,0x82,0xe0,0xd2,0xd7,0x72,0x9f,0xc8,0xb2,0x6c,0x0,0x60,0xdf,0x59,0x6,0x0,0xbf,0x69,0x9a,0x43,0x9e,0xe7,0x43,0xeb,0x1,0xcf,0xf3,0x76,0x44,0x34,0x33,0x18,0x9b,0xb8,0xae,0x9b,0x9a,0x1c,0xff,0x3b,0x1e,0x62,0x14,0x91,0x94,0x88,0x8c,0xe5,0x21,0xa2,0x34,0x8a,0xa2,0x75,0x97,0x7b,0x48,0xa1,0xaa,0xaa,0x8d,0xd6,0xda,0x54,0x9a,0x73,0x5d,0xd7,0x5b,0xab,0x83,0xd6,0xc5,0xe7,0x45,0x2,0x80,0x38,0x8e,0x4b,0xad,0xf5,0x2,0xc0,0x15,0xc0,0x8d,0x99,0x97,0xa6,0x65,0x2b,0x94,0x52,0x89,0xed,0x99,0xbe,0xc6,0x1d,0x31,0x1f,0x40,0xdc,0x74,0x8a,0x5b,0xc1,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
static const unsigned char submenu_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x8,0x8,0x4,0x0,0x0,0x0,0x6e,0x6,0x76,0x0,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x4,0x4e,0x1d,0x2,0xaf,0x0,0x0,0x0,0x4d,0x49,0x44,0x41,0x54,0x8,0xd7,0x55,0xc8,0xa1,0x19,0x40,0x40,0x18,0x0,0xd0,0x77,0x8a,0x60,0x1,0x4d,0xb7,0x80,0x4d,0x64,0x3,0x18,0xc7,0x14,0xf6,0xa1,0xba,0x68,0x81,0xb,0xd2,0x2f,0xf9,0xbe,0xf3,0xe2,0x43,0x8e,0x1c,0x39,0xae,0x5,0x48,0xe4,0x0,0x25,0x4d,0xc3,0x41,0xe3,0xd3,0xc5,0x7e,0x77,0x75,0x30,0x3e,0xdb,0x3f,0xf0,0x8f,0xb3,0x5d,0xeb,0x28,0x69,0xee,0x4b,0x15,0xb1,0xe,0x7,0xbc,0x18,0xe0,0x15,0x49,0xfb,0x84,0x18,0x58,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x8,0x8,0x6,0x0,0x0,0x0,0xc4,0xf,0xbe,0x8b,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x64,0x49,0x44,0x41,0x54,0x18,0x95,0x7d,0xca,0x21,0x12,0x80,0x20,0x14,0x45,0xd1,0xf7,0x2d,0x4,0x36,0x40,0x63,0xa8,0xba,0x1f,0xbb,0x9d,0xe5,0xb8,0x0,0xb3,0xfb,0xd1,0xc,0x8d,0xd,0x10,0x48,0xcf,0x22,0x6,0xc7,0xef,0x6d,0x77,0xe6,0x8,0x0,0xa4,0x94,0x88,0x3b,0x92,0x4b,0x8,0x61,0xeb,0x3f,0xe0,0x95,0x88,0xac,0x39,0xe7,0x49,0x5,0x0,0x2c,0xc9,0xbd,0x94,0x62,0x35,0x0,0x0,0x63,0x6b,0x6d,0xfd,0x3,0x4f,0x1a,0x38,0x8d,0x31,0x51,0x3,0x55,0x44,0x66,0xe7,0x5c,0xfd,0x4,0x24,0xa3,0xf7,0xfe,0xe8,0x7f,0x1,0xe,0xc2,0x1e,0x10,0xa,0xf0,0x33,0x4c,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
|
@ -410,7 +410,7 @@ static const unsigned char tab_behind_png[]={
|
|||
|
||||
|
||||
static const unsigned char tab_close_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x4,0x0,0x0,0x0,0xb5,0xfa,0x37,0xea,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0xb9,0x49,0x44,0x41,0x54,0x28,0xcf,0xad,0x90,0x5d,0xa,0x82,0x40,0x14,0x85,0xbf,0x31,0xb7,0xa0,0xd4,0x63,0x50,0x94,0x60,0x4b,0x28,0xe9,0x67,0x11,0x2e,0x36,0xa3,0xb6,0x90,0x82,0xc5,0x8,0xce,0x63,0xd0,0x12,0x34,0xa7,0x87,0xc9,0x1c,0x7b,0xa,0xea,0x3c,0xdd,0xcb,0xf9,0xe,0xf7,0x70,0xe1,0x4f,0x2a,0xe3,0xc2,0xb7,0xf7,0xc2,0x2f,0xe3,0x9e,0xad,0x1a,0x95,0x76,0x48,0xe1,0xab,0x54,0x35,0x6,0x71,0x0,0xea,0x44,0x67,0x84,0xee,0x49,0x8d,0x0,0xa4,0x37,0xd8,0x13,0x72,0xe5,0x8,0x20,0x4c,0x46,0x7a,0x6e,0x22,0x16,0x5c,0xd8,0x54,0xb5,0x99,0xf4,0x7a,0x7c,0xb3,0x80,0x16,0x11,0x52,0xd7,0x4,0x9d,0x6d,0x1,0x20,0x3d,0xf7,0x24,0x2,0xa0,0xd0,0xcb,0xd6,0x7e,0x75,0xf8,0x94,0xb0,0x62,0x4e,0xef,0x44,0xa0,0x25,0x39,0x13,0xe,0xa6,0xae,0x5,0xbc,0x4b,0xae,0xaa,0x48,0xa7,0xcc,0x6d,0x4,0x90,0x5e,0x79,0x56,0x5a,0xe5,0xe5,0xd0,0xde,0xc,0xe2,0x0,0xb8,0x5b,0x11,0x92,0xd5,0x91,0xa9,0x36,0xbd,0x3f,0x76,0x64,0xcc,0x74,0xf4,0xfd,0xab,0x7f,0xd2,0x13,0xed,0xc6,0x57,0xcd,0xb6,0x96,0x72,0x87,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0xfa,0x49,0x44,0x41,0x54,0x38,0x8d,0xcd,0x92,0x5f,0x4a,0xc4,0x30,0x10,0x87,0xbf,0xb1,0xb9,0xc2,0x16,0x7c,0x6b,0xc1,0xa2,0x85,0x7a,0x4,0x2d,0xfe,0x39,0xc4,0x9e,0x70,0x4f,0x61,0xc5,0x3d,0x83,0x5,0x95,0x4,0xd2,0x37,0x5,0x8f,0x90,0x94,0xf1,0xc5,0x4a,0x76,0xcd,0x22,0xf8,0xa2,0xf3,0x38,0xc3,0xef,0x9b,0xe4,0x4b,0xe0,0x5f,0x95,0xf7,0x7e,0xed,0x9c,0x2b,0xf,0xcd,0x9d,0x73,0xa5,0xf7,0x7e,0x9d,0xf6,0x8e,0xd2,0xb0,0x88,0x6c,0x8c,0x31,0x43,0xe,0xe2,0x9c,0x2b,0x8d,0x31,0x83,0x88,0x6c,0x52,0xc8,0x17,0x20,0xc6,0x38,0xa8,0xea,0x8,0x74,0xc6,0x98,0xed,0x34,0x4d,0xc7,0xcb,0xcc,0x5a,0xbb,0x2a,0x8a,0xe2,0xe,0xe8,0x80,0x17,0xe0,0x61,0x99,0x49,0xba,0xc5,0x5a,0xbb,0xfa,0xdc,0x72,0xe,0x3c,0x3,0xd7,0x21,0x84,0x98,0xf6,0x54,0xf5,0xaa,0xae,0xeb,0xb7,0x2c,0x60,0x1f,0x22,0x22,0x56,0x55,0x23,0xd0,0xe6,0xc2,0x59,0x40,0x2,0xd9,0x8a,0x48,0xbb,0x28,0x50,0xd5,0x8b,0xfd,0xf0,0x8e,0x83,0x9f,0x4a,0x44,0xb2,0xcb,0xbe,0x1,0x92,0x2b,0xb4,0xaa,0x6a,0x81,0x27,0xe0,0x4,0xb8,0x4f,0xc5,0x66,0x1,0x19,0x89,0x97,0x21,0x84,0x5e,0x55,0x1f,0x81,0xb3,0x1c,0x44,0xe,0x85,0x53,0x61,0xb9,0xd7,0xa9,0xaa,0xea,0x75,0xe7,0x4,0xc6,0x98,0x1b,0x11,0xe9,0x80,0x31,0xc6,0xd8,0xa7,0xc2,0x9a,0xa6,0x79,0x9f,0xe7,0xf9,0x16,0x18,0x81,0x53,0x55,0xed,0xb3,0xa2,0x7e,0xf3,0x95,0xff,0xbe,0x3e,0x0,0xbd,0x2c,0x93,0xec,0xb,0xe5,0x4f,0xb1,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
|
@ -425,12 +425,12 @@ static const unsigned char tab_current_png[]={
|
|||
|
||||
|
||||
static const unsigned char tab_menu_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x4,0x0,0x0,0x0,0xb5,0xfa,0x37,0xea,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0x4c,0x49,0x44,0x41,0x54,0x28,0xcf,0x63,0x60,0x18,0x5,0xc,0xc,0xc,0xc,0x8c,0x30,0xc6,0x83,0xff,0xa8,0x12,0xa,0x50,0x19,0x26,0x42,0x26,0x10,0xaf,0x80,0x31,0x9e,0xe1,0x2b,0x5c,0xf4,0x3b,0x63,0x3a,0x16,0xb5,0xf7,0x35,0xee,0x5f,0x7a,0xf0,0xff,0xc1,0xff,0x7,0xd7,0x1f,0xeb,0x62,0x71,0x24,0x3,0x3,0x3,0xc3,0xb,0xee,0x9f,0x53,0x18,0x18,0xd8,0x73,0x24,0xbe,0x32,0x50,0x11,0x0,0x0,0x6,0x9b,0x11,0xfa,0xe0,0x26,0x3d,0x9f,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x6f,0x49,0x44,0x41,0x54,0x38,0x8d,0x63,0x60,0x18,0x5,0xa3,0x80,0x81,0x81,0x11,0x5d,0xe0,0xc1,0x83,0x7,0xff,0xf1,0x69,0x50,0x50,0x50,0x40,0xd1,0xc3,0x44,0xa9,0xb,0xa8,0x6f,0x0,0x23,0x23,0x63,0x3c,0x3,0x3,0xc3,0x57,0x2c,0x6a,0xbf,0x33,0x32,0x32,0xa6,0x63,0xa8,0xc7,0x66,0xea,0xfd,0xfb,0xf7,0x35,0x18,0x18,0x18,0x56,0x31,0x32,0x32,0xea,0x42,0x85,0x6e,0x30,0x33,0x33,0x87,0xc9,0xca,0xca,0x5e,0x26,0xca,0x0,0x6,0x6,0x6,0x86,0x17,0x2f,0x5e,0x70,0xff,0xfc,0xf9,0x73,0xa,0x3,0x3,0x3,0x3,0x3b,0x3b,0x7b,0x8e,0x84,0x84,0x4,0x36,0x57,0xd,0x2,0x0,0x0,0x67,0xf2,0x14,0xc2,0xc2,0xbe,0xf5,0xb5,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
static const unsigned char tab_menu_hl_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x4,0x0,0x0,0x0,0xb5,0xfa,0x37,0xea,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x5,0x39,0x1a,0x32,0x39,0x0,0x0,0x0,0x4c,0x49,0x44,0x41,0x54,0x28,0xcf,0x63,0x60,0x18,0x5,0xc,0xc,0xc,0xc,0x8c,0x30,0xc6,0x83,0xff,0xa8,0x12,0xa,0x50,0x19,0x26,0x42,0x26,0x10,0xaf,0x80,0x31,0x9e,0xe1,0x2b,0x5c,0xf4,0x3b,0x63,0x3a,0x16,0xb5,0xf7,0x35,0xee,0x5f,0x7a,0xf0,0xff,0xc1,0xff,0x7,0xd7,0x1f,0xeb,0x62,0x71,0x24,0x3,0x3,0x3,0xc3,0xb,0xee,0x9f,0x53,0x18,0x18,0xd8,0x73,0x24,0xbe,0x32,0x50,0x11,0x0,0x0,0x6,0x9b,0x11,0xfa,0xe0,0x26,0x3d,0x9f,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x10,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x1f,0xf3,0xff,0x61,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x6f,0x49,0x44,0x41,0x54,0x38,0x8d,0x63,0x60,0x18,0x5,0xa3,0x80,0x81,0x81,0x11,0x5d,0xe0,0xc1,0x83,0x7,0xff,0xf1,0x69,0x50,0x50,0x50,0x40,0xd1,0xc3,0x44,0xa9,0xb,0xa8,0x6f,0x0,0x23,0x23,0x63,0x3c,0x3,0x3,0xc3,0x57,0x2c,0x6a,0xbf,0x33,0x32,0x32,0xa6,0x63,0xa8,0xc7,0x66,0xea,0xfd,0xfb,0xf7,0x35,0x18,0x18,0x18,0x56,0x31,0x32,0x32,0xea,0x42,0x85,0x6e,0x30,0x33,0x33,0x87,0xc9,0xca,0xca,0x5e,0x26,0xca,0x0,0x6,0x6,0x6,0x86,0x17,0x2f,0x5e,0x70,0xff,0xfc,0xf9,0x73,0xa,0x3,0x3,0x3,0x3,0x3b,0x3b,0x7b,0x8e,0x84,0x84,0x4,0x36,0x57,0xd,0x2,0x0,0x0,0x67,0xf2,0x14,0xc2,0xc2,0xbe,0xf5,0xb5,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
|
@ -490,7 +490,7 @@ static const unsigned char unchecked_png[]={
|
|||
|
||||
|
||||
static const unsigned char updown_png[]={
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x10,0x8,0x4,0x0,0x0,0x0,0x81,0x83,0xf6,0xf6,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,0x20,0x63,0x48,0x52,0x4d,0x0,0x0,0x7a,0x26,0x0,0x0,0x80,0x84,0x0,0x0,0xfa,0x0,0x0,0x0,0x80,0xe8,0x0,0x0,0x75,0x30,0x0,0x0,0xea,0x60,0x0,0x0,0x3a,0x98,0x0,0x0,0x17,0x70,0x9c,0xba,0x51,0x3c,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xe0,0x6,0x16,0x12,0x2b,0x4,0x4e,0x1d,0x2,0xaf,0x0,0x0,0x0,0x86,0x49,0x44,0x41,0x54,0x18,0xd3,0x85,0x8e,0x21,0x12,0xc2,0x30,0x10,0x45,0x5f,0x98,0x9d,0xe9,0x70,0x81,0x3d,0x41,0x1c,0x75,0xe5,0x4,0xc4,0xc1,0x79,0xa9,0xb,0x6,0x49,0x5d,0x8b,0x5b,0x11,0x9d,0xb,0xd4,0xec,0x4c,0x10,0xad,0x43,0xf4,0xb9,0x6f,0xfe,0x7b,0x70,0x44,0x0,0x30,0x95,0x27,0xf8,0x23,0x56,0xb6,0x59,0xe6,0xd2,0x4a,0x2b,0xb3,0x29,0x4,0x53,0x79,0x71,0x61,0x1,0x7a,0xbe,0x7e,0xb,0xe5,0xc3,0x95,0xc5,0x13,0x48,0xa6,0x67,0x3a,0xb5,0x95,0xc9,0x53,0xac,0xb1,0x7a,0x62,0x6a,0xeb,0xa1,0x95,0x50,0xde,0x9c,0xfd,0x1e,0x2b,0x98,0xca,0xc8,0x7a,0x6a,0x1d,0x83,0x64,0x53,0x53,0xc9,0xc,0xad,0xb,0xa6,0x92,0xe9,0x77,0xed,0xe2,0xe9,0x3f,0x6c,0x4f,0x1f,0x61,0x7b,0x3a,0xe6,0x7,0x73,0x18,0x40,0x43,0x76,0xe2,0x28,0x4e,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x63,0x72,0x65,0x61,0x74,0x65,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xba,0x84,0x14,0xff,0x0,0x0,0x0,0x25,0x74,0x45,0x58,0x74,0x64,0x61,0x74,0x65,0x3a,0x6d,0x6f,0x64,0x69,0x66,0x79,0x0,0x32,0x30,0x31,0x36,0x2d,0x30,0x36,0x2d,0x32,0x32,0x54,0x32,0x30,0x3a,0x33,0x35,0x3a,0x35,0x30,0x2b,0x30,0x32,0x3a,0x30,0x30,0xcb,0xd9,0xac,0x43,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0x10,0x8,0x6,0x0,0x0,0x0,0x2b,0x8a,0x3e,0x7d,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0xa6,0x49,0x44,0x41,0x54,0x28,0x91,0xa5,0x90,0x21,0xe,0xc2,0x50,0x10,0x44,0xdf,0x27,0x9b,0x10,0x2e,0xc0,0x9,0xd6,0x81,0xe3,0x6,0xe0,0xa0,0xd7,0x2d,0xae,0x18,0x24,0x95,0xc5,0x7d,0x51,0xdd,0xb,0x60,0xf6,0x67,0x31,0xfb,0x49,0xc1,0x20,0x3a,0x6a,0x93,0x99,0x9d,0xcc,0xc,0x2c,0x45,0xaa,0x47,0xce,0x79,0x2b,0x22,0x2d,0x80,0x99,0x5d,0x54,0x75,0xfa,0x8,0x82,0xec,0x80,0x7d,0xe8,0x7,0x33,0x3b,0xa9,0xea,0x94,0x82,0xbc,0x1,0x3b,0x60,0x8,0xc1,0x1e,0x78,0x9a,0xd9,0x51,0xc2,0x76,0x57,0xbf,0x0,0xaa,0x9b,0x88,0xb4,0x2b,0x77,0x7f,0x1,0x7d,0xb5,0x54,0xd5,0x29,0x84,0x7d,0x70,0x4b,0x6b,0x8e,0xe3,0x78,0x7,0x36,0x66,0x76,0xae,0xd5,0x22,0xf8,0x15,0x78,0x89,0xbb,0xaf,0x53,0x4a,0x7,0x11,0xe9,0x72,0xce,0x5f,0x21,0xdd,0xfd,0x21,0xa5,0x94,0x66,0x96,0xba,0x9b,0xd5,0x1c,0x4a,0x29,0xcd,0xff,0xa1,0x7e,0xa6,0xbe,0xc6,0xd4,0x9f,0x3c,0xcb,0xf1,0x6,0x8e,0x4e,0x65,0x44,0x6f,0x74,0x5c,0xa1,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -1051,7 +1051,11 @@ void CodeTextEditor::_code_complete_timer_timeout() {
|
|||
void CodeTextEditor::_complete_request() {
|
||||
|
||||
List<String> entries;
|
||||
_code_complete_script(text_editor->get_text_for_completion(),&entries);
|
||||
String ctext = text_editor->get_text_for_completion();
|
||||
_code_complete_script(ctext,&entries);
|
||||
if (code_complete_func) {
|
||||
code_complete_func(code_complete_ud,ctext,&entries);
|
||||
}
|
||||
// print_line("COMPLETE: "+p_request);
|
||||
if (entries.size()==0)
|
||||
return;
|
||||
|
@ -1135,13 +1139,16 @@ void CodeTextEditor::_text_changed_idle_timeout() {
|
|||
|
||||
|
||||
_validate_script();
|
||||
emit_signal("validate_script");
|
||||
}
|
||||
|
||||
void CodeTextEditor::_notification(int p_what) {
|
||||
|
||||
|
||||
if (p_what==EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED)
|
||||
if (p_what==EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) {
|
||||
_load_theme_settings();
|
||||
emit_signal("load_theme_settings");
|
||||
}
|
||||
if (p_what==NOTIFICATION_ENTER_TREE) {
|
||||
_update_font();
|
||||
}
|
||||
|
@ -1157,10 +1164,21 @@ void CodeTextEditor::_bind_methods() {
|
|||
ObjectTypeDB::bind_method("_code_complete_timer_timeout",&CodeTextEditor::_code_complete_timer_timeout);
|
||||
ObjectTypeDB::bind_method("_complete_request",&CodeTextEditor::_complete_request);
|
||||
ObjectTypeDB::bind_method("_font_resize_timeout",&CodeTextEditor::_font_resize_timeout);
|
||||
|
||||
ADD_SIGNAL(MethodInfo("validate_script"));
|
||||
ADD_SIGNAL(MethodInfo("load_theme_settings"));
|
||||
|
||||
}
|
||||
|
||||
void CodeTextEditor::set_code_complete_func(CodeTextEditorCodeCompleteFunc p_code_complete_func,void * p_ud) {
|
||||
code_complete_func=p_code_complete_func;
|
||||
code_complete_ud=p_ud;
|
||||
}
|
||||
|
||||
|
||||
CodeTextEditor::CodeTextEditor() {
|
||||
|
||||
code_complete_func=NULL;
|
||||
ED_SHORTCUT("script_editor/zoom_in", TTR("Zoom In"), KEY_MASK_CMD|KEY_EQUAL);
|
||||
ED_SHORTCUT("script_editor/zoom_out", TTR("Zoom Out"), KEY_MASK_CMD|KEY_MINUS);
|
||||
ED_SHORTCUT("script_editor/reset_zoom", TTR("Reset Zoom"), KEY_MASK_CMD|KEY_0);
|
||||
|
|
|
@ -189,6 +189,8 @@ public:
|
|||
};
|
||||
|
||||
|
||||
typedef void (*CodeTextEditorCodeCompleteFunc)(void* p_ud,const String& p_code, List<String>* r_options);
|
||||
|
||||
class CodeTextEditor : public VBoxContainer {
|
||||
|
||||
OBJ_TYPE(CodeTextEditor,VBoxContainer);
|
||||
|
@ -218,13 +220,16 @@ class CodeTextEditor : public VBoxContainer {
|
|||
void _zoom_out();
|
||||
void _reset_zoom();
|
||||
|
||||
|
||||
CodeTextEditorCodeCompleteFunc code_complete_func;
|
||||
void *code_complete_ud;
|
||||
|
||||
protected:
|
||||
|
||||
void set_error(const String& p_error);
|
||||
|
||||
virtual void _load_theme_settings() {}
|
||||
virtual void _validate_script()=0;
|
||||
virtual void _code_complete_script(const String& p_code, List<String>* r_options) {};
|
||||
virtual void _validate_script() {}
|
||||
virtual void _code_complete_script(const String& p_code, List<String>* r_options) {}
|
||||
|
||||
void _text_changed_idle_timeout();
|
||||
void _code_complete_timer_timeout();
|
||||
|
@ -235,10 +240,16 @@ protected:
|
|||
|
||||
public:
|
||||
|
||||
void set_error(const String& p_error);
|
||||
void update_line_and_column() { _line_col_changed(); }
|
||||
TextEdit *get_text_edit() { return text_editor; }
|
||||
FindReplaceBar *get_find_replace_bar() { return find_replace_bar; }
|
||||
virtual void apply_code() {}
|
||||
|
||||
|
||||
void set_code_complete_func(CodeTextEditorCodeCompleteFunc p_code_complete_func, void * p_ud);
|
||||
|
||||
|
||||
CodeTextEditor();
|
||||
};
|
||||
|
||||
|
|
|
@ -86,6 +86,7 @@
|
|||
#include "plugins/collision_polygon_editor_plugin.h"
|
||||
#include "plugins/collision_polygon_2d_editor_plugin.h"
|
||||
#include "plugins/script_editor_plugin.h"
|
||||
#include "plugins/script_text_editor.h"
|
||||
#include "plugins/path_2d_editor_plugin.h"
|
||||
#include "plugins/particles_editor_plugin.h"
|
||||
#include "plugins/particles_2d_editor_plugin.h"
|
||||
|
@ -6443,6 +6444,8 @@ EditorNode::EditorNode() {
|
|||
add_editor_plugin( memnew( SpatialEditorPlugin(this) ) );
|
||||
add_editor_plugin( memnew( ScriptEditorPlugin(this) ) );
|
||||
|
||||
ScriptTextEditor::register_editor(); //register one for text scripts
|
||||
|
||||
if (StreamPeerSSL::is_available()) {
|
||||
add_editor_plugin( memnew( AssetLibraryEditorPlugin(this) ) );
|
||||
} else {
|
||||
|
|
BIN
tools/editor/icons/2x/icon_uninstance.png
Normal file
After Width: | Height: | Size: 883 B |
BIN
tools/editor/icons/2x/icon_visual_script.png
Normal file
After Width: | Height: | Size: 683 B |
BIN
tools/editor/icons/icon_mini_aabb.png
Normal file
After Width: | Height: | Size: 205 B |
BIN
tools/editor/icons/icon_mini_array.png
Normal file
After Width: | Height: | Size: 193 B |
BIN
tools/editor/icons/icon_mini_boolean.png
Normal file
After Width: | Height: | Size: 203 B |
BIN
tools/editor/icons/icon_mini_color.png
Normal file
After Width: | Height: | Size: 202 B |
BIN
tools/editor/icons/icon_mini_color_array.png
Normal file
After Width: | Height: | Size: 201 B |
BIN
tools/editor/icons/icon_mini_dictionary.png
Normal file
After Width: | Height: | Size: 192 B |
BIN
tools/editor/icons/icon_mini_float.png
Normal file
After Width: | Height: | Size: 211 B |
BIN
tools/editor/icons/icon_mini_float_array.png
Normal file
After Width: | Height: | Size: 210 B |
BIN
tools/editor/icons/icon_mini_image.png
Normal file
After Width: | Height: | Size: 211 B |
BIN
tools/editor/icons/icon_mini_input.png
Normal file
After Width: | Height: | Size: 201 B |
BIN
tools/editor/icons/icon_mini_int_array.png
Normal file
After Width: | Height: | Size: 198 B |
BIN
tools/editor/icons/icon_mini_integer.png
Normal file
After Width: | Height: | Size: 196 B |
BIN
tools/editor/icons/icon_mini_matrix3.png
Normal file
After Width: | Height: | Size: 220 B |
BIN
tools/editor/icons/icon_mini_matrix32.png
Normal file
After Width: | Height: | Size: 216 B |
BIN
tools/editor/icons/icon_mini_object.png
Normal file
After Width: | Height: | Size: 210 B |
BIN
tools/editor/icons/icon_mini_path.png
Normal file
After Width: | Height: | Size: 211 B |
BIN
tools/editor/icons/icon_mini_plane.png
Normal file
After Width: | Height: | Size: 207 B |
BIN
tools/editor/icons/icon_mini_quat.png
Normal file
After Width: | Height: | Size: 205 B |
BIN
tools/editor/icons/icon_mini_raw_array.png
Normal file
After Width: | Height: | Size: 214 B |
BIN
tools/editor/icons/icon_mini_rect2.png
Normal file
After Width: | Height: | Size: 216 B |
BIN
tools/editor/icons/icon_mini_rid.png
Normal file
After Width: | Height: | Size: 205 B |
BIN
tools/editor/icons/icon_mini_string.png
Normal file
After Width: | Height: | Size: 198 B |
BIN
tools/editor/icons/icon_mini_string_array.png
Normal file
After Width: | Height: | Size: 216 B |
BIN
tools/editor/icons/icon_mini_transform.png
Normal file
After Width: | Height: | Size: 216 B |
BIN
tools/editor/icons/icon_mini_variant.png
Normal file
After Width: | Height: | Size: 254 B |
BIN
tools/editor/icons/icon_mini_vector2.png
Normal file
After Width: | Height: | Size: 217 B |
BIN
tools/editor/icons/icon_mini_vector2_array.png
Normal file
After Width: | Height: | Size: 216 B |
BIN
tools/editor/icons/icon_mini_vector3.png
Normal file
After Width: | Height: | Size: 219 B |
BIN
tools/editor/icons/icon_mini_vector3_array.png
Normal file
After Width: | Height: | Size: 212 B |
BIN
tools/editor/icons/icon_override.png
Normal file
After Width: | Height: | Size: 344 B |
BIN
tools/editor/icons/icon_uninstance.png
Normal file
After Width: | Height: | Size: 525 B |
BIN
tools/editor/icons/icon_variant.png
Normal file
After Width: | Height: | Size: 240 B |
BIN
tools/editor/icons/icon_visual_script.png
Normal file
After Width: | Height: | Size: 404 B |
BIN
tools/editor/icons/icon_visual_shader_port.png
Normal file
After Width: | Height: | Size: 355 B |
|
@ -73,41 +73,44 @@ public:
|
|||
|
||||
class ScriptEditorDebugger;
|
||||
|
||||
class ScriptTextEditor : public CodeTextEditor {
|
||||
|
||||
OBJ_TYPE( ScriptTextEditor, CodeTextEditor );
|
||||
|
||||
Ref<Script> script;
|
||||
|
||||
|
||||
Vector<String> functions;
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
|
||||
virtual void _validate_script();
|
||||
virtual void _code_complete_script(const String& p_code, List<String>* r_options);
|
||||
virtual void _load_theme_settings();
|
||||
void _notification(int p_what);
|
||||
static void _bind_methods();
|
||||
class ScriptEditorBase : public Control {
|
||||
|
||||
OBJ_TYPE( ScriptEditorBase, Control );
|
||||
|
||||
public:
|
||||
|
||||
virtual void apply_code();
|
||||
Ref<Script> get_edited_script() const;
|
||||
Vector<String> get_functions() ;
|
||||
void set_edited_script(const Ref<Script>& p_script);
|
||||
void reload_text();
|
||||
String get_name() ;
|
||||
Ref<Texture> get_icon() ;
|
||||
bool is_unsaved();
|
||||
ScriptTextEditor();
|
||||
virtual void apply_code()=0;
|
||||
virtual Ref<Script> get_edited_script() const=0;
|
||||
virtual Vector<String> get_functions()=0;
|
||||
virtual void set_edited_script(const Ref<Script>& p_script)=0;
|
||||
virtual void reload_text()=0;
|
||||
virtual String get_name()=0;
|
||||
virtual Ref<Texture> get_icon()=0;
|
||||
virtual bool is_unsaved()=0;
|
||||
virtual Variant get_edit_state()=0;
|
||||
virtual void set_edit_state(const Variant& p_state)=0;
|
||||
virtual void goto_line(int p_line)=0;
|
||||
virtual void trim_trailing_whitespace()=0;
|
||||
virtual void ensure_focus()=0;
|
||||
virtual void tag_saved_version()=0;
|
||||
virtual void reload(bool p_soft)=0;
|
||||
virtual void get_breakpoints(List<int> *p_breakpoints)=0;
|
||||
virtual bool goto_method(const String& p_method)=0;
|
||||
virtual void add_callback(const String& p_function,StringArray p_args)=0;
|
||||
virtual void update_settings()=0;
|
||||
|
||||
virtual void set_tooltip_request_func(String p_method,Object* p_obj)=0;
|
||||
virtual Control *get_edit_menu()=0;
|
||||
|
||||
ScriptEditorBase() {}
|
||||
};
|
||||
|
||||
|
||||
typedef ScriptEditorBase* (*CreateScriptEditorFunc)(const Ref<Script>& p_script);
|
||||
|
||||
|
||||
class EditorScriptCodeCompletionCache;
|
||||
|
||||
class ScriptEditor : public VBoxContainer {
|
||||
|
@ -128,43 +131,19 @@ class ScriptEditor : public VBoxContainer {
|
|||
FILE_SAVE_THEME_AS,
|
||||
FILE_CLOSE,
|
||||
CLOSE_DOCS,
|
||||
EDIT_UNDO,
|
||||
EDIT_REDO,
|
||||
EDIT_CUT,
|
||||
EDIT_COPY,
|
||||
EDIT_PASTE,
|
||||
EDIT_SELECT_ALL,
|
||||
EDIT_COMPLETE,
|
||||
EDIT_AUTO_INDENT,
|
||||
EDIT_TRIM_TRAILING_WHITESAPCE,
|
||||
EDIT_TOGGLE_COMMENT,
|
||||
EDIT_MOVE_LINE_UP,
|
||||
EDIT_MOVE_LINE_DOWN,
|
||||
EDIT_INDENT_RIGHT,
|
||||
EDIT_INDENT_LEFT,
|
||||
EDIT_CLONE_DOWN,
|
||||
FILE_TOOL_RELOAD,
|
||||
FILE_TOOL_RELOAD_SOFT,
|
||||
SEARCH_FIND,
|
||||
SEARCH_FIND_NEXT,
|
||||
SEARCH_FIND_PREV,
|
||||
SEARCH_REPLACE,
|
||||
SEARCH_LOCATE_FUNCTION,
|
||||
SEARCH_GOTO_LINE,
|
||||
SEARCH_HELP,
|
||||
SEARCH_CLASSES,
|
||||
SEARCH_WEBSITE,
|
||||
DEBUG_TOGGLE_BREAKPOINT,
|
||||
DEBUG_REMOVE_ALL_BREAKPOINTS,
|
||||
DEBUG_GOTO_NEXT_BREAKPOINT,
|
||||
DEBUG_GOTO_PREV_BREAKPOINT,
|
||||
DEBUG_NEXT,
|
||||
DEBUG_STEP,
|
||||
DEBUG_BREAK,
|
||||
DEBUG_CONTINUE,
|
||||
DEBUG_SHOW,
|
||||
DEBUG_SHOW_KEEP_OPEN,
|
||||
HELP_CONTEXTUAL,
|
||||
SEARCH_HELP,
|
||||
SEARCH_CLASSES,
|
||||
SEARCH_WEBSITE,
|
||||
HELP_SEARCH_FIND,
|
||||
HELP_SEARCH_FIND_NEXT,
|
||||
WINDOW_MOVE_LEFT,
|
||||
WINDOW_MOVE_RIGHT,
|
||||
WINDOW_NEXT,
|
||||
|
@ -175,10 +154,8 @@ class ScriptEditor : public VBoxContainer {
|
|||
HBoxContainer *menu_hb;
|
||||
MenuButton *file_menu;
|
||||
MenuButton *edit_menu;
|
||||
MenuButton *search_menu;
|
||||
MenuButton *script_search_menu;
|
||||
MenuButton *debug_menu;
|
||||
MenuButton *help_menu;
|
||||
Timer *autosave_timer;
|
||||
uint64_t idle;
|
||||
|
||||
|
@ -191,7 +168,6 @@ class ScriptEditor : public VBoxContainer {
|
|||
HSplitContainer *script_split;
|
||||
TabContainer *tab_container;
|
||||
EditorFileDialog *file_dialog;
|
||||
GotoLineDialog *goto_line_dialog;
|
||||
ConfirmationDialog *erase_tab_confirm;
|
||||
ScriptCreateDialog *script_create_dialog;
|
||||
ScriptEditorDebugger* debugger;
|
||||
|
@ -205,13 +181,17 @@ class ScriptEditor : public VBoxContainer {
|
|||
ToolButton *script_back;
|
||||
ToolButton *script_forward;
|
||||
|
||||
enum {
|
||||
SCRIPT_EDITOR_FUNC_MAX=32
|
||||
};
|
||||
|
||||
static int script_editor_func_count;
|
||||
static CreateScriptEditorFunc script_editor_funcs[SCRIPT_EDITOR_FUNC_MAX];
|
||||
|
||||
struct ScriptHistory {
|
||||
|
||||
Control *control;
|
||||
int scroll_pos;
|
||||
int cursor_column;
|
||||
int cursor_row;
|
||||
Variant state;
|
||||
};
|
||||
|
||||
Vector<ScriptHistory> history;
|
||||
|
@ -246,7 +226,7 @@ class ScriptEditor : public VBoxContainer {
|
|||
bool auto_reload_running_scripts;
|
||||
void _live_auto_reload_running_scripts();
|
||||
|
||||
ScriptEditorQuickOpen *quick_open;
|
||||
void _update_selected_editor_menu();
|
||||
|
||||
EditorScriptCodeCompletionCache *completion_cache;
|
||||
|
||||
|
@ -286,6 +266,7 @@ class ScriptEditor : public VBoxContainer {
|
|||
|
||||
void _unhandled_input(const InputEvent& p_event);
|
||||
|
||||
void _help_search(String p_text);
|
||||
|
||||
void _history_forward();
|
||||
void _history_back();
|
||||
|
@ -323,8 +304,7 @@ public:
|
|||
|
||||
void get_breakpoints(List<String> *p_breakpoints);
|
||||
|
||||
void swap_lines(TextEdit *tx, int line1, int line2);
|
||||
void _breakpoint_toggled(const int p_row);
|
||||
//void swap_lines(TextEdit *tx, int line1, int line2);
|
||||
|
||||
void save_all_scripts();
|
||||
|
||||
|
@ -342,6 +322,7 @@ public:
|
|||
ScriptEditorDebugger *get_debugger() { return debugger; }
|
||||
void set_live_auto_reload_running_scripts(bool p_enabled);
|
||||
|
||||
static void register_create_script_editor_function(CreateScriptEditorFunc p_func);
|
||||
ScriptEditor(EditorNode *p_editor);
|
||||
~ScriptEditor();
|
||||
};
|
||||
|
|
1057
tools/editor/plugins/script_text_editor.cpp
Normal file
112
tools/editor/plugins/script_text_editor.h
Normal file
|
@ -0,0 +1,112 @@
|
|||
#ifndef SCRIPT_TEXT_EDITOR_H
|
||||
#define SCRIPT_TEXT_EDITOR_H
|
||||
|
||||
#include "script_editor_plugin.h"
|
||||
|
||||
|
||||
class ScriptTextEditor : public ScriptEditorBase {
|
||||
|
||||
OBJ_TYPE( ScriptTextEditor, ScriptEditorBase );
|
||||
|
||||
CodeTextEditor *code_editor;
|
||||
|
||||
Ref<Script> script;
|
||||
|
||||
|
||||
Vector<String> functions;
|
||||
|
||||
HBoxContainer *edit_hb;
|
||||
|
||||
MenuButton *edit_menu;
|
||||
MenuButton *search_menu;
|
||||
|
||||
GotoLineDialog *goto_line_dialog;
|
||||
ScriptEditorQuickOpen *quick_open;
|
||||
|
||||
enum {
|
||||
EDIT_UNDO,
|
||||
EDIT_REDO,
|
||||
EDIT_CUT,
|
||||
EDIT_COPY,
|
||||
EDIT_PASTE,
|
||||
EDIT_SELECT_ALL,
|
||||
EDIT_COMPLETE,
|
||||
EDIT_AUTO_INDENT,
|
||||
EDIT_TRIM_TRAILING_WHITESAPCE,
|
||||
EDIT_TOGGLE_COMMENT,
|
||||
EDIT_MOVE_LINE_UP,
|
||||
EDIT_MOVE_LINE_DOWN,
|
||||
EDIT_INDENT_RIGHT,
|
||||
EDIT_INDENT_LEFT,
|
||||
EDIT_CLONE_DOWN,
|
||||
SEARCH_FIND,
|
||||
SEARCH_FIND_NEXT,
|
||||
SEARCH_FIND_PREV,
|
||||
SEARCH_REPLACE,
|
||||
SEARCH_LOCATE_FUNCTION,
|
||||
SEARCH_GOTO_LINE,
|
||||
DEBUG_TOGGLE_BREAKPOINT,
|
||||
DEBUG_REMOVE_ALL_BREAKPOINTS,
|
||||
DEBUG_GOTO_NEXT_BREAKPOINT,
|
||||
DEBUG_GOTO_PREV_BREAKPOINT,
|
||||
HELP_CONTEXTUAL,
|
||||
};
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
static void _code_complete_scripts(void* p_ud,const String& p_code, List<String>* r_options);
|
||||
void _breakpoint_toggled(int p_row);
|
||||
|
||||
//no longer virtual
|
||||
void _validate_script();
|
||||
void _code_complete_script(const String& p_code, List<String>* r_options);
|
||||
void _load_theme_settings();
|
||||
|
||||
void _notification(int p_what);
|
||||
static void _bind_methods();
|
||||
|
||||
void _edit_option(int p_op);
|
||||
|
||||
void _goto_line(int p_line) { goto_line(p_line); }
|
||||
public:
|
||||
|
||||
virtual void apply_code();
|
||||
virtual Ref<Script> get_edited_script() const;
|
||||
virtual Vector<String> get_functions() ;
|
||||
virtual void set_edited_script(const Ref<Script>& p_script);
|
||||
virtual void reload_text();
|
||||
virtual String get_name() ;
|
||||
virtual Ref<Texture> get_icon() ;
|
||||
virtual bool is_unsaved();
|
||||
|
||||
virtual Variant get_edit_state();
|
||||
virtual void set_edit_state(const Variant& p_state);
|
||||
virtual void ensure_focus();
|
||||
virtual void trim_trailing_whitespace();
|
||||
virtual void tag_saved_version();
|
||||
|
||||
virtual void goto_line(int p_line);
|
||||
|
||||
virtual void reload(bool p_soft);
|
||||
virtual void get_breakpoints(List<int> *p_breakpoints);
|
||||
|
||||
virtual void add_callback(const String& p_function,StringArray p_args);
|
||||
virtual void update_settings();
|
||||
virtual bool goto_method(const String& p_method);
|
||||
|
||||
virtual void set_tooltip_request_func(String p_method,Object* p_obj);
|
||||
|
||||
Control *get_edit_menu();
|
||||
|
||||
static void register_editor();
|
||||
|
||||
ScriptTextEditor();
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // SCRIPT_TEXT_EDITOR_H
|
|
@ -940,11 +940,23 @@ void CustomPropertyEditor::_color_changed(const Color& p_color) {
|
|||
|
||||
void CustomPropertyEditor::_node_path_selected(NodePath p_path) {
|
||||
|
||||
if (owner) {
|
||||
|
||||
if (hint==PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE && hint_text!=String()) {
|
||||
|
||||
Node* node=get_node(hint_text);
|
||||
if (node) {
|
||||
|
||||
Node *tonode=node->get_node(p_path);
|
||||
if (tonode) {
|
||||
p_path=node->get_path_to(tonode);
|
||||
}
|
||||
}
|
||||
|
||||
} else if (owner) {
|
||||
|
||||
Node *node=NULL;
|
||||
|
||||
if (owner->is_type("Node"))
|
||||
if (owner->is_type("Node"))
|
||||
node = owner->cast_to<Node>();
|
||||
else if (owner->is_type("ArrayPropertyEdit"))
|
||||
node = owner->cast_to<ArrayPropertyEdit>()->get_node();
|
||||
|
@ -4349,7 +4361,7 @@ SectionedPropertyEditor::~SectionedPropertyEditor() {
|
|||
|
||||
double PropertyValueEvaluator::eval(const String& p_text) {
|
||||
|
||||
if (!obj)
|
||||
if (!obj || !script_language)
|
||||
return _default_eval(p_text);
|
||||
|
||||
Ref<Script> script= Ref<Script>(script_language ->create_script());
|
||||
|
@ -4361,6 +4373,8 @@ double PropertyValueEvaluator::eval(const String& p_text) {
|
|||
}
|
||||
|
||||
ScriptInstance *script_instance = script->instance_create(this);
|
||||
if (!script_instance)
|
||||
return _default_eval(p_text);
|
||||
|
||||
Variant::CallError call_err;
|
||||
script_instance->call("set_this",obj);
|
||||
|
@ -4388,7 +4402,13 @@ String PropertyValueEvaluator::_build_script(const String& p_text) {
|
|||
}
|
||||
|
||||
PropertyValueEvaluator::PropertyValueEvaluator() {
|
||||
script_language = ScriptServer::get_language(0); // todo: get script language from editor setting
|
||||
script_language=NULL;
|
||||
|
||||
for(int i=0;i<ScriptServer::get_language_count();i++) {
|
||||
if (ScriptServer::get_language(i)->get_name()=="GDScript") {
|
||||
script_language=ScriptServer::get_language(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PropertyValueEvaluator::~PropertyValueEvaluator() {
|
||||
|
|