1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
<?xml version="1.0" encoding="UTF-8" ?>
<class name="ConfigFile" inherits="Reference" category="Core" version="3.2">
<brief_description>
Helper class to handle INI-style files.
</brief_description>
<description>
This helper class can be used to store [Variant] values on the filesystem using INI-style formatting. The stored values are identified by a section and a key:
[codeblock]
[section]
some_key=42
string_example="Hello World!"
a_vector=Vector3( 1, 0, 2 )
[/codeblock]
The stored data can be saved to or parsed from a file, though ConfigFile objects can also be used directly without accessing the filesystem.
The following example shows how to parse an INI-style file from the system, read its contents and store new values in it:
[codeblock]
var config = ConfigFile.new()
var err = config.load("user://settings.cfg")
if err == OK: # if not, something went wrong with the file loading
# Look for the display/width pair, and default to 1024 if missing
var screen_width = config.get_value("display", "width", 1024)
# Store a variable if and only if it hasn't been defined yet
if not config.has_section_key("audio", "mute"):
config.set_value("audio", "mute", false)
# Save the changes by overwriting the previous file
config.save("user://settings.cfg")
[/codeblock]
Keep in mind that section and property names can't contain spaces. Anything after a space will be ignored on save and on load.
</description>
<tutorials>
</tutorials>
<methods>
<method name="erase_section">
<return type="void">
</return>
<argument index="0" name="section" type="String">
</argument>
<description>
Deletes the specified section along with all the key-value pairs inside.
</description>
</method>
<method name="get_section_keys" qualifiers="const">
<return type="PoolStringArray">
</return>
<argument index="0" name="section" type="String">
</argument>
<description>
Returns an array of all defined key identifiers in the specified section.
</description>
</method>
<method name="get_sections" qualifiers="const">
<return type="PoolStringArray">
</return>
<description>
Returns an array of all defined section identifiers.
</description>
</method>
<method name="get_value" qualifiers="const">
<return type="Variant">
</return>
<argument index="0" name="section" type="String">
</argument>
<argument index="1" name="key" type="String">
</argument>
<argument index="2" name="default" type="Variant" default="null">
</argument>
<description>
Returns the current value for the specified section and key. If the section and/or the key do not exist, the method returns the value of the optional [code]default[/code] argument, or [code]null[/code] if it is omitted.
</description>
</method>
<method name="has_section" qualifiers="const">
<return type="bool">
</return>
<argument index="0" name="section" type="String">
</argument>
<description>
Returns [code]true[/code] if the specified section exists.
</description>
</method>
<method name="has_section_key" qualifiers="const">
<return type="bool">
</return>
<argument index="0" name="section" type="String">
</argument>
<argument index="1" name="key" type="String">
</argument>
<description>
Returns [code]true[/code] if the specified section-key pair exists.
</description>
</method>
<method name="load">
<return type="int" enum="Error">
</return>
<argument index="0" name="path" type="String">
</argument>
<description>
Loads the config file specified as a parameter. The file's contents are parsed and loaded in the ConfigFile object which the method was called on. Returns one of the [constant OK], [constant FAILED] or [code]ERR_*[/code] constants listed in [@GlobalScope]. If the load was successful, the return value is [constant OK].
</description>
</method>
<method name="save">
<return type="int" enum="Error">
</return>
<argument index="0" name="path" type="String">
</argument>
<description>
Saves the contents of the ConfigFile object to the file specified as a parameter. The output file uses an INI-style structure. Returns one of the [constant OK], [constant FAILED] or [code]ERR_*[/code] constants listed in [@GlobalScope]. If the load was successful, the return value is [constant OK].
</description>
</method>
<method name="set_value">
<return type="void">
</return>
<argument index="0" name="section" type="String">
</argument>
<argument index="1" name="key" type="String">
</argument>
<argument index="2" name="value" type="Variant">
</argument>
<description>
Assigns a value to the specified key of the specified section. If the section and/or the key do not exist, they are created. Passing a [code]null[/code] value deletes the specified key if it exists, and deletes the section if it ends up empty once the key has been removed.
</description>
</method>
</methods>
<constants>
</constants>
</class>
|