Compare commits
No commits in common. "master" and "v1.6.0" have entirely different histories.
32
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -1,32 +0,0 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: "[BUG]"
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. Go to '...'
|
||||
2. Click on '....'
|
||||
3. Scroll down to '....'
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Screenshots**
|
||||
If applicable, add screenshots to help explain your problem.
|
||||
|
||||
**Desktop (please complete the following information):**
|
||||
- OS: [e.g. Windows]
|
||||
- Godot Engine Version [e.g. 3.2.3rc6]
|
||||
- Plugin Version [e.g. v1.7.0]
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
17
.github/ISSUE_TEMPLATE/feature_request.md
vendored
@ -1,17 +0,0 @@
|
||||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for this project
|
||||
title: "[FEATURE]"
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Describe an implementation suggestion**
|
||||
A clear and concise description of any implementation method you'd like to suggest. It may be technical or just theoretical.
|
||||
|
||||
**Additional context**
|
||||
Add any other context or screenshots about the feature request here.
|
26
.gitignore
vendored
@ -1,26 +0,0 @@
|
||||
# Godot-specific ignores
|
||||
.import/
|
||||
scn/
|
||||
.import
|
||||
default_env.tres
|
||||
icon.png
|
||||
icon.png.import
|
||||
project.godot
|
||||
|
||||
# Imported translations (automatically generated from CSV files)
|
||||
*.translation
|
||||
|
||||
# Mono-specific ignores
|
||||
.mono/
|
||||
data_*/
|
||||
mono_crash.*.json
|
||||
|
||||
# System/tool-specific ignores
|
||||
.directory
|
||||
*~
|
||||
|
||||
# Plugin specific ignores
|
||||
icons.pngs/
|
||||
fonts/
|
||||
file.samples/
|
||||
icon.png
|
22
LICENSE
@ -1,22 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 fenix-hub
|
||||
Copyright (c) 2022 Péter Magyar
|
||||
|
||||
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.
|
@ -1,3 +0,0 @@
|
||||
[gd_scene format=2]
|
||||
|
||||
[node name="Node2D" type="Node2D"]
|
31
README.md
@ -1,21 +1,16 @@
|
||||
<p align="right">
|
||||
<a href="https://discord.gg/KnJGY9S">
|
||||
<img src="https://github.com/fenix-hub/ColoredBadges/blob/master/svg/social/discord.svg" alt="react" style="vertical-align:top; margin:6px 4px">
|
||||
</a>
|
||||
</p>
|
||||
Check my **[Discord](https://discord.gg/KnJGY9S)** to stay updated on this repository.
|
||||
*(Recommended since the AssetLibrary is not automatically updated)*
|
||||
|
||||
This plugin is now supported in [Godot Extended Library Discord](https://discord.gg/JNrcucg), check out the [Godot Extended Library Project](https://github.com/godot-extended-libraries)!
|
||||
|
||||
<img src="addons/file-editor/icon.png" width="64" height="64" align="left">
|
||||
|
||||
# Godot File Editor
|
||||
# Godot Text Editor
|
||||
A little plugin to easy-way manage your text files inside your project folder.
|
||||
|
||||
Author: *"Nicolo (fenix) Santilio"*
|
||||
Version: *1.9.2*
|
||||
Godot Version: *3.3.4*
|
||||
Version: *1.6.0*
|
||||
Godot Version: *3.1.1-stable*
|
||||
|
||||
**This repository was pushed directly from Godot Engine Editor thanks to this [GitHub Integration](https://github.com/fenix-hub/godot-engine.github-integration)!**
|
||||
**This repository was pushed directly from Godot Engine Editor thanks to [GitHub Integration](https://github.com/fenix-hub/godot-engine.github-integration)!**
|
||||
|
||||
## What is this?
|
||||
This is a little plugin I've made to easily edit text files in your project folder.
|
||||
@ -26,7 +21,6 @@ When opening / creating a file, the editor will open and you will be able to edi
|
||||
You can just *Save* the file, or *Save file As* a new file (if it is a new file but also to make some copies).
|
||||
You will also be able to see some informations about the file you are editing (time and date of last edit) and you can set your editor to *Read Only* if you don't want to make changes but still read the content of the file.
|
||||
Multiple files can be opened in different tabs.
|
||||
 
|
||||
 
|
||||
|
||||
## How do I install it?
|
||||
@ -55,16 +49,21 @@ You can find this plugin in the AssetLib of Godot Engine Editor. Just download i
|
||||
+ "*.html ; HyperText Markup Language"
|
||||
+ "*.cfg ; Configuration File"
|
||||
+ "*.ini ; Initialization File (same as .cfg Configuration File)"
|
||||
+ "*.csv ; Comma-separated values File"
|
||||
+ "*.res ; Resource File"
|
||||
|
||||
#### Current version
|
||||
To check all the features that are included in the current version, please read the [VERSION file](./VERSION.md)
|
||||
To check all the features included in the current version, please read the [VERSION file](./VERSION.md)
|
||||
|
||||
#### Upcoming features
|
||||
To check all the features I'm currently working on, please read the [TODO file](./TODO.md)
|
||||
|
||||
# Disclaimer
|
||||
This addon was built for the intention of my **personal use**. It was released as an open source plugin in the hope that it could be useful to the Godot Engine Community.
|
||||
This addon was built for a **personal use** intention. It was released as an open source plugin in the hope that it could be useful to the Godot Engine Community.
|
||||
As a "work in progress" project, there is *no warranty* for any eventual issue and bug that may broke your project.
|
||||
I don't assume any responsibility for possible corruptions of your project files. It is always advisable to keep a copy of your files and check any changes.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
99
VERSION.md
@ -0,0 +1,99 @@
|
||||
**version 0.0.1**
|
||||
*added*
|
||||
- Plugin Created
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 0.1.1**
|
||||
*added*
|
||||
- "Create new File" option
|
||||
- "Open File" option
|
||||
- "Delete File" option
|
||||
- "Save File" option
|
||||
- "Save File As.." option
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 0.1.2**
|
||||
*fixed*
|
||||
- Repository Installation, folder order
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 0.2.5**
|
||||
*removed*
|
||||
- Old layout
|
||||
|
||||
*added*
|
||||
- New Layout
|
||||
- Last modified time and date
|
||||
- Tabs
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 0.3.1**
|
||||
*added*
|
||||
- Version check
|
||||
- Preview support
|
||||
- Context menu in editor
|
||||
- BBCode converter
|
||||
- Light Mardkwon converter (DEMO)
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 1.2.1**
|
||||
*removed*
|
||||
- Old layout, the plugin won't appear in docs
|
||||
- Icons file extensions, plugin size reduced
|
||||
- Old Mardkwon preview method
|
||||
|
||||
*added*
|
||||
- More supported files
|
||||
1. "*.dat ; Data File",
|
||||
2. "*.xml ; XML File",
|
||||
3. "*.sql ; SQL database file",
|
||||
4. "*.json ; JavaScript Object Notation File",
|
||||
5. "*.html ; HyperText Markup Language",
|
||||
- New Markdown preview method ( Markdown -> BBCode converter)
|
||||
- New HTML preview method ( HTML -> BBCode converter)
|
||||
- New Plugin Layout: a new ButtonTool "File" in you TopBar will appear
|
||||
- Error check
|
||||
- Message popups for closing unsaved files
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 1.4.3**
|
||||
*removed*
|
||||
- Old layout
|
||||
|
||||
*added*
|
||||
- More supported files:
|
||||
1. "*.cfg ; Configuration File",
|
||||
2. "*.ini ; Initialization File (same as .cfg Configuration File)",
|
||||
- Added some sample files
|
||||
- Memorize system of last opened files
|
||||
- Added *Editor* button , you can now choose which editor to use:
|
||||
1. Vanilla Editor (simple text editor)
|
||||
2. Cfg/Ini Editor (table editor for Cfg/Ini files)
|
||||
Editors are automatically updated, so if you update a cfg/ini file in the Vanilla Editor it will be updated in the Cfg/Ini Editor, and viceversa
|
||||
- Added editor shorcuts:
|
||||
1. *Ctrl + N* (new file)
|
||||
2. *Ctrl + O* (open file)
|
||||
3. *Ctrl + Alt + C* (close file)
|
||||
4. *Ctrl + S* (save file)
|
||||
5. *Ctrl + Alt + S* (save file as...)
|
||||
6. *Ctrl + D* (delete file)
|
||||
7. *Ctrl + 1* (Vanilla Editor)
|
||||
8. *Ctrl + 3* (Cfg/Ini Editor)
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 1.6.0**
|
||||
*fixed*
|
||||
- Each opened file now has own editor: unsaved changes are no longer erased if a new file is opened without saving the previous opened file
|
||||
|
||||
*added*
|
||||
- Custom Syntax Highlighting for each file type (.md, .cfg/.ini, .html, .bbs)
|
||||
- Characters counter in VanillaEditor
|
||||
- String searcher in VanillaEditor (with custom shortcut *Ctrl + F*)
|
||||
- String replacer in VanillaEditor (with custom shortcut *Ctrl + R*)
|
69
addons/file-editor/README.md
Normal file
@ -0,0 +1,69 @@
|
||||
Check my **[Discord](https://discord.gg/KnJGY9S)** to stay updated on this repository.
|
||||
*(Recommended since the AssetLibrary is not automatically updated)*
|
||||
|
||||
This plugin is now supported in [Godot Extended Library Discord](https://discord.gg/JNrcucg), check out the [Godot Extended Library Project](https://github.com/godot-extended-libraries)!
|
||||
|
||||
# Godot Text Editor
|
||||
A little plugin to easy-way manage your text files inside your project folder.
|
||||
|
||||
Author: *"Nicolo (fenix) Santilio"*
|
||||
Version: *1.6.0*
|
||||
Godot Version: *3.1.1-stable*
|
||||
|
||||
**This repository was pushed directly from Godot Engine Editor thanks to [GitHub Integration](https://github.com/fenix-hub/godot-engine.github-integration)!**
|
||||
|
||||
## What is this?
|
||||
This is a little plugin I've made to easily edit text files in your project folder.
|
||||
|
||||
## How does it work?
|
||||
You can open an existing file, create a new file and delete a file.
|
||||
When opening / creating a file, the editor will open and you will be able to edit it and save it.
|
||||
You can just *Save* the file, or *Save file As* a new file (if it is a new file but also to make some copies).
|
||||
You will also be able to see some informations about the file you are editing (time and date of last edit) and you can set your editor to *Read Only* if you don't want to make changes but still read the content of the file.
|
||||
Multiple files can be opened in different tabs.
|
||||
 
|
||||
|
||||
## How do I install it?
|
||||
**Manual**
|
||||
Just download this whole repository and put it in your `res://addons` folder inside the project you want to work on.
|
||||
Then, go to `Project > Plugins > "File Editor" > Status > Activate`.
|
||||
|
||||
**Automatic**
|
||||
You can find this plugin in the AssetLib of Godot Engine Editor. Just download it from there and everything should be fine!
|
||||
(Remember to activate this plugin)
|
||||
|
||||
## Supported formats
|
||||
+ "*.txt ; Plain Text File",
|
||||
+ "*.rtf ; Rich Text Format File",
|
||||
+ "*.log ; Log File",
|
||||
+ "*.md ; MD File",
|
||||
+ "*.doc ; WordPad Document",
|
||||
+ "*.doc ; Microsoft Word Document",
|
||||
+ "*.docm ; Word Open XML Macro-Enabled Document",
|
||||
+ "*.docx ; Microsoft Word Open XML Document",
|
||||
+ "*.bbs ; Bulletin Board System Text",
|
||||
+ "*.dat ; Data File",
|
||||
+ "*.xml ; XML File",
|
||||
+ "*.sql ; SQL database file",
|
||||
+ "*.json ; JavaScript Object Notation File",
|
||||
+ "*.html ; HyperText Markup Language"
|
||||
+ "*.cfg ; Configuration File"
|
||||
+ "*.ini ; Initialization File (same as .cfg Configuration File)"
|
||||
|
||||
#### Current version
|
||||
To check all the features included in the current version, please read the [VERSION file](./VERSION.md)
|
||||
|
||||
#### Upcoming features
|
||||
To check all the features I'm currently working on, please read the [TODO file](./TODO.md)
|
||||
|
||||
# Disclaimer
|
||||
This addon was built for a **personal use** intention. It was released as an open source plugin in the hope that it could be useful to the Godot Engine Community.
|
||||
As a "work in progress" project, there is *no warranty* for any eventual issue and bug that may broke your project.
|
||||
I don't assume any responsibility for possible corruptions of your project files. It is always advisable to keep a copy of your files and check any changes.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
4
addons/file-editor/TODO.md
Normal file
@ -0,0 +1,4 @@
|
||||
### to do (v-0.x.x)
|
||||
- Popup dialog when closing a tab if there is new content
|
||||
- Module for markdown support/conversion
|
||||
|
99
addons/file-editor/VERSION.md
Normal file
@ -0,0 +1,99 @@
|
||||
**version 0.0.1**
|
||||
*added*
|
||||
- Plugin Created
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 0.1.1**
|
||||
*added*
|
||||
- "Create new File" option
|
||||
- "Open File" option
|
||||
- "Delete File" option
|
||||
- "Save File" option
|
||||
- "Save File As.." option
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 0.1.2**
|
||||
*fixed*
|
||||
- Repository Installation, folder order
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 0.2.5**
|
||||
*removed*
|
||||
- Old layout
|
||||
|
||||
*added*
|
||||
- New Layout
|
||||
- Last modified time and date
|
||||
- Tabs
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 0.3.1**
|
||||
*added*
|
||||
- Version check
|
||||
- Preview support
|
||||
- Context menu in editor
|
||||
- BBCode converter
|
||||
- Light Mardkwon converter (DEMO)
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 1.2.1**
|
||||
*removed*
|
||||
- Old layout, the plugin won't appear in docs
|
||||
- Icons file extensions, plugin size reduced
|
||||
- Old Mardkwon preview method
|
||||
|
||||
*added*
|
||||
- More supported files
|
||||
1. "*.dat ; Data File",
|
||||
2. "*.xml ; XML File",
|
||||
3. "*.sql ; SQL database file",
|
||||
4. "*.json ; JavaScript Object Notation File",
|
||||
5. "*.html ; HyperText Markup Language",
|
||||
- New Markdown preview method ( Markdown -> BBCode converter)
|
||||
- New HTML preview method ( HTML -> BBCode converter)
|
||||
- New Plugin Layout: a new ButtonTool "File" in you TopBar will appear
|
||||
- Error check
|
||||
- Message popups for closing unsaved files
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 1.4.3**
|
||||
*removed*
|
||||
- Old layout
|
||||
|
||||
*added*
|
||||
- More supported files:
|
||||
1. "*.cfg ; Configuration File",
|
||||
2. "*.ini ; Initialization File (same as .cfg Configuration File)",
|
||||
- Added some sample files
|
||||
- Memorize system of last opened files
|
||||
- Added *Editor* button , you can now choose which editor to use:
|
||||
1. Vanilla Editor (simple text editor)
|
||||
2. Cfg/Ini Editor (table editor for Cfg/Ini files)
|
||||
Editors are automatically updated, so if you update a cfg/ini file in the Vanilla Editor it will be updated in the Cfg/Ini Editor, and viceversa
|
||||
- Added editor shorcuts:
|
||||
1. *Ctrl + N* (new file)
|
||||
2. *Ctrl + O* (open file)
|
||||
3. *Ctrl + Alt + C* (close file)
|
||||
4. *Ctrl + S* (save file)
|
||||
5. *Ctrl + Alt + S* (save file as...)
|
||||
6. *Ctrl + D* (delete file)
|
||||
7. *Ctrl + 1* (Vanilla Editor)
|
||||
8. *Ctrl + 3* (Cfg/Ini Editor)
|
||||
|
||||
-----------------------
|
||||
|
||||
**version 1.6.0**
|
||||
*fixed*
|
||||
- Each opened file now has own editor: unsaved changes are no longer erased if a new file is opened without saving the previous opened file
|
||||
|
||||
*added*
|
||||
- Custom Syntax Highlighting for each file type (.md, .cfg/.ini, .html, .bbs)
|
||||
- Characters counter in VanillaEditor
|
||||
- String searcher in VanillaEditor (with custom shortcut *Ctrl + F*)
|
||||
- String replacer in VanillaEditor (with custom shortcut *Ctrl + R*)
|
@ -7,10 +7,6 @@
|
||||
[img]res://addons/file-editor/icon.png[/img]
|
||||
[code]monospaced text[/code]
|
||||
left [center]center[/center] [right]right[/right]
|
||||
[center][wave amp=50 freq=10]oooooondaaaaaaaaa[/wave][/center]
|
||||
[center][tornado amp=50 freq=10 radius=5]tornaaaaaadoooooo[/tornado][/center]
|
||||
[center][shake rate=15 level=10]scossa[/shake][/center]
|
||||
[center][fade start=4 length=14]Effetto fantasmaaaaaa[/fade][/center]
|
||||
[center][rainbow freq=4 sat=10 val=100]Arcobaleno![/rainbow][/center]
|
||||
[center][pulse freq=6.0 height=5.0][pulse color=#00FFAA freq=2.0]Questo è un codice custom![/pulse][/pulse][/center]
|
||||
|
||||
|
||||
*Some md text in bb file*
|
||||
|
@ -1,9 +1,23 @@
|
||||
; last modified 1 April 2001 by John Doe
|
||||
[owner]
|
||||
name="John Doe"
|
||||
organization="Acme Widgets Inc."
|
||||
[database]
|
||||
; use IP address in case network name resolution is not working
|
||||
server="192.0.2.62"
|
||||
port="143"
|
||||
file="payroll.dat"
|
||||
[Locale]
|
||||
Language="en"
|
||||
|
||||
[Version]
|
||||
Major="2"
|
||||
Minor="1"
|
||||
Micro="3"
|
||||
|
||||
[Directories]
|
||||
TempDir="C:\Users\Jon\AppData\Local\Audacity\SessionData"
|
||||
|
||||
[AudioIO]
|
||||
RecordingDevice="Microphone (Blue Snowball)"
|
||||
Host="MME"
|
||||
PlaybackDevice="Speakers / Headphones (Realtek)"
|
||||
EffectsPreviewLen="6"
|
||||
CutPreviewBeforeLen="2"
|
||||
CutPreviewAfterLen="1"
|
||||
SeekShortPeriod="1"
|
||||
SeekLongPeriod="15"
|
||||
Duplex="1"
|
||||
SWPlaythrough="0"
|
||||
|
||||
|
@ -1,19 +0,0 @@
|
||||
COLUMN 1; ;COLUMN2;COLUMN3;COLUMN5;COLUMN6;;;;;;;;;
|
||||
this is a; ;csv file with empty spaces; ;-;NEW COLUMN;;;;;;;;;
|
||||
anyway,;they are stored in; ;the file;-;F;;;;;;;;;
|
||||
this;is a ;new;line;-;F;;;;;;;;;
|
||||
line 5;and column 5;where created;with the editor;-;F;;;;;;;;;
|
||||
-;-;-;-;-;F;;;;;;;;;
|
||||
res;res;res;;F;e;;;;;;;;;
|
||||
awew;aweawe;ewaewa;wwwwwwwwiiiiiiiii ;F;F;;;;;;;;;
|
||||
ciao;ciao;;;F;F;;;;;;;;;
|
||||
ciao;ciao;ciao;ciao;ciao;F;;;;;;;;;
|
||||
NON;NE;VOGLIO;SAPERE;NIENTE;;;;;;;;;;
|
||||
UFFA;UFFA;UFFA;NUFFA;;REFFA;;;;;;;;;
|
||||
;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;YES
|
|
@ -1,3 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="keep"
|
@ -1,9 +1,10 @@
|
||||
; last modified 1 April 2001 by John Doe
|
||||
[owner]
|
||||
name="John Doe"
|
||||
organization="Acme Widgets Inc."
|
||||
|
||||
[database]
|
||||
; use IP address in case network name resolution is not working
|
||||
server="192.0.2.62"
|
||||
port="143"
|
||||
file="payroll.dat"
|
||||
[qqqq]
|
||||
ewe="qq"
|
||||
|
@ -1,16 +1,6 @@
|
||||
**bolded text**
|
||||
*italicized text*
|
||||
***bolded and italicized***
|
||||
~~strikethrough~~
|
||||
__underline__
|
||||
> This is a quote
|
||||
`this is some code`
|
||||
__simple__
|
||||
[link](http://example.com)
|
||||

|
||||
|
||||
# header 1
|
||||
## header 2
|
||||
### header 3
|
||||
#### header 5
|
||||
##### header 6
|
||||
###### header7
|
||||
|
@ -1 +0,0 @@
|
||||
This is a simple text file.
|
@ -1,9 +0,0 @@
|
||||
keys;en;it;da;de;ja;es
|
||||
HELLO;"""Hello!""";"""Ciao!""";"""Hej!""";"""Hallo!""";"""こんにちは!""";"""¡Hola!"""
|
||||
BYE;"""Bye bye!""";"""Ciao ciao!""";"""Hej hej!""";"""Tschüss!""";"""バイバイ!""";"""¡Adiós!"""
|
||||
GOODMORNING;"""Gooedmorning!""";"""Buongiorno!""";"""Gooedmorning!""";"""Guten Morgen!""";"""グーエドモーニング!""";"""¡Buen día!"""
|
||||
CONFIRM;"""Confirm this action""";"""Conferma questa azione""";"""Bekræft denne handling""";"""Bestätigen Sie diese Aktion""";"""このアクションを確認します""";"""Confirma esta acción"""
|
||||
CANCEL;"""Cancel this action""";"""Annulla questa azione""";"""Annuller denne handling""";"""Brechen Sie diese Aktion ab""";"""このアクションをキャンセルします""";"""Cancelar esta acción"""
|
||||
YES;"""Yes, please""";"""Sì grazie""";"""Ja tak""";"""Ja bitte""";"""はい、お願いします""";"""Sí por favor"""
|
||||
NO;"""No, thanks""";"""No grazie""";"""Nej tak""";"""Nein Danke""";"""結構です""";"""No, gracias"""
|
||||
q;ds;q;q;q;w;q
|
|
@ -1,3 +0,0 @@
|
||||
[remap]
|
||||
|
||||
importer="keep"
|
BIN
addons/file-editor/fonts/COUR.TTF
Normal file
BIN
addons/file-editor/fonts/Carlito-Bold.ttf
Normal file
BIN
addons/file-editor/fonts/Carlito-BoldItalic.ttf
Normal file
BIN
addons/file-editor/fonts/Carlito-Italic.ttf
Normal file
BIN
addons/file-editor/fonts/Carlito-Regular.ttf
Normal file
BIN
addons/file-editor/fonts/Roboto-Black.ttf
Normal file
BIN
addons/file-editor/fonts/Roboto-Regular.ttf
Normal file
@ -28,7 +28,6 @@ process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
|
Before Width: | Height: | Size: 195 B |
Before Width: | Height: | Size: 146 B |
Before Width: | Height: | Size: 283 B |
Before Width: | Height: | Size: 146 B |
Before Width: | Height: | Size: 150 B |
Before Width: | Height: | Size: 150 B |
Before Width: | Height: | Size: 524 B |
Before Width: | Height: | Size: 156 B |
Before Width: | Height: | Size: 142 B |
Before Width: | Height: | Size: 154 B |
Before Width: | Height: | Size: 154 B |
Before Width: | Height: | Size: 439 B |
Before Width: | Height: | Size: 462 B |
@ -1,8 +1,4 @@
|
||||
[Opened]
|
||||
|
||||
translation.csv="res://addons/file-editor/file.samples/translation.csv"
|
||||
sample.bbs="res://addons/file-editor/file.samples/sample.bbs"
|
||||
sample.cfg="res://addons/file-editor/file.samples/sample.cfg"
|
||||
sample.ini="res://addons/file-editor/file.samples/sample.ini"
|
||||
README.md="res://README.md"
|
||||
VERSION.md="res://VERSION.md"
|
||||
VERSION.md="res://addons/file-editor/VERSION.md"
|
||||
README.md="res://addons/file-editor/README.md"
|
||||
|
@ -3,5 +3,5 @@
|
||||
name="File Editor"
|
||||
description="An internal file editor to view and edit text files in your project folder."
|
||||
author="Nicolo 'fenix' Santilio"
|
||||
version="1.9.0"
|
||||
version="1.6.0"
|
||||
script="scripts/file-editor.gd"
|
||||
|
@ -1,8 +1,9 @@
|
||||
[gd_scene load_steps=15 format=2]
|
||||
[gd_scene load_steps=20 format=2]
|
||||
|
||||
[ext_resource path="res://addons/file-editor/scripts/FileEditor.gd" type="Script" id=1]
|
||||
[ext_resource path="res://addons/file-editor/fonts/Roboto-Black.ttf" type="DynamicFontData" id=2]
|
||||
|
||||
[sub_resource type="Image" id=41]
|
||||
[sub_resource type="Image" id=24]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
"format": "RGBA8",
|
||||
@ -11,11 +12,41 @@ data = {
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=30]
|
||||
image = SubResource( 41 )
|
||||
[sub_resource type="ImageTexture" id=9]
|
||||
image = SubResource( 24 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=42]
|
||||
[sub_resource type="Image" id=25]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 175, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 175, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 239, 224, 224, 224, 239, 224, 224, 224, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 80, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=11]
|
||||
image = SubResource( 25 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=26]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 80, 224, 224, 224, 206, 224, 224, 224, 238, 224, 224, 224, 238, 224, 224, 224, 174, 224, 224, 224, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 48, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 206, 224, 224, 224, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 48, 224, 224, 224, 238, 224, 224, 224, 254, 224, 224, 224, 206, 224, 224, 224, 112, 224, 224, 224, 16, 224, 224, 224, 16, 224, 224, 224, 80, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 222, 224, 224, 224, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 96, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 96, 0, 0, 0, 0, 224, 224, 224, 64, 224, 224, 224, 206, 224, 224, 224, 222, 224, 224, 224, 64, 0, 0, 0, 0, 224, 224, 224, 96, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 32, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 16, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 222, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 126, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 96, 0, 0, 0, 0, 224, 224, 224, 64, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 96, 0, 0, 0, 0, 224, 224, 224, 80, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 126, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 222, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 190, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 48, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 206, 224, 224, 224, 96, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 64, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 48, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 112, 224, 224, 224, 206, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 206, 224, 224, 224, 126, 224, 224, 224, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=13]
|
||||
image = SubResource( 26 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="DynamicFont" id=7]
|
||||
size = 13
|
||||
font_data = ExtResource( 2 )
|
||||
|
||||
[sub_resource type="Image" id=27]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
"format": "RGBA8",
|
||||
@ -24,11 +55,11 @@ data = {
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=32]
|
||||
image = SubResource( 42 )
|
||||
[sub_resource type="ImageTexture" id=15]
|
||||
image = SubResource( 27 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=43]
|
||||
[sub_resource type="Image" id=28]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
"format": "RGBA8",
|
||||
@ -37,11 +68,11 @@ data = {
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=34]
|
||||
image = SubResource( 43 )
|
||||
[sub_resource type="ImageTexture" id=17]
|
||||
image = SubResource( 28 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=44]
|
||||
[sub_resource type="Image" id=29]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
"format": "RGBA8",
|
||||
@ -50,11 +81,11 @@ data = {
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=36]
|
||||
image = SubResource( 44 )
|
||||
[sub_resource type="ImageTexture" id=19]
|
||||
image = SubResource( 29 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=45]
|
||||
[sub_resource type="Image" id=30]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
"format": "RGBA8",
|
||||
@ -63,11 +94,11 @@ data = {
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=38]
|
||||
image = SubResource( 45 )
|
||||
[sub_resource type="ImageTexture" id=21]
|
||||
image = SubResource( 30 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=46]
|
||||
[sub_resource type="Image" id=31]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
"format": "RGBA8",
|
||||
@ -76,21 +107,20 @@ data = {
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=40]
|
||||
image = SubResource( 46 )
|
||||
[sub_resource type="ImageTexture" id=23]
|
||||
image = SubResource( 31 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=28]
|
||||
|
||||
[node name="FileEditor" type="Control"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 7.0
|
||||
margin_right = -6.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="FileEditorContainer" type="VBoxContainer" parent="."]
|
||||
visible = false
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 6.0
|
||||
@ -100,94 +130,80 @@ size_flags_vertical = 3
|
||||
|
||||
[node name="TobBar" type="HBoxContainer" parent="FileEditorContainer"]
|
||||
margin_right = 1000.0
|
||||
margin_bottom = 20.0
|
||||
margin_bottom = 22.0
|
||||
|
||||
[node name="file_btn" type="MenuButton" parent="FileEditorContainer/TobBar"]
|
||||
margin_right = 35.0
|
||||
margin_bottom = 20.0
|
||||
margin_right = 54.0
|
||||
margin_bottom = 22.0
|
||||
text = "File"
|
||||
icon = SubResource( 9 )
|
||||
items = [ "New File", null, 0, false, false, 0, 268435534, null, "", false, "Open File", null, 0, false, false, 1, 268435535, null, "", false, "Close File", null, 0, false, false, 2, 335544387, null, "", false, "", null, 0, false, false, -1, 0, null, "", true, "Save File", null, 0, false, false, 3, 268435539, null, "", false, "Save File as...", null, 0, false, false, 4, 335544403, null, "", false, "Delete File", null, 0, false, false, 5, 268435524, null, "", false, "", null, 0, false, false, -1, 0, null, "", true, "Search in file...", null, 0, false, false, 6, 268435526, null, "", false, "Replace occurencies", null, 0, false, false, 7, 268435538, null, "", false ]
|
||||
|
||||
[node name="preview_btn" type="MenuButton" parent="FileEditorContainer/TobBar"]
|
||||
margin_left = 39.0
|
||||
margin_right = 101.0
|
||||
margin_bottom = 20.0
|
||||
text = "Preview"
|
||||
items = [ "BBCode Preview", null, 0, false, false, 0, 0, null, "", false, "Markdown Preview", null, 0, false, false, 1, 0, null, "", false, "HTML Preview", null, 0, false, false, 2, 0, null, "", false, "CSV Preview", null, 0, false, false, 3, 0, null, "", false ]
|
||||
[node name="editor_btn" type="MenuButton" parent="FileEditorContainer/TobBar"]
|
||||
margin_left = 58.0
|
||||
margin_right = 126.0
|
||||
margin_bottom = 22.0
|
||||
text = "Editor"
|
||||
icon = SubResource( 11 )
|
||||
items = [ "Vanilla Editor", null, 0, false, false, 0, 268435505, null, "", false, "CSV Editor", null, 0, false, false, 1, 0, null, "", false, "CFG/INI Editor", null, 0, false, false, 2, 268435507, null, "", false ]
|
||||
|
||||
[node name="SettingsBtn" type="MenuButton" parent="FileEditorContainer/TobBar"]
|
||||
margin_left = 105.0
|
||||
margin_right = 168.0
|
||||
margin_bottom = 20.0
|
||||
text = "Settings"
|
||||
items = [ "Change Font", null, 0, false, false, 0, 0, null, "", false ]
|
||||
[node name="preview_btn" type="MenuButton" parent="FileEditorContainer/TobBar"]
|
||||
margin_left = 130.0
|
||||
margin_right = 211.0
|
||||
margin_bottom = 22.0
|
||||
text = "Preview"
|
||||
icon = SubResource( 13 )
|
||||
items = [ "BBCode Preview", null, 0, false, false, 0, 0, null, "", false, "Markdown Preview", null, 0, false, false, 1, 0, null, "", false, "HTML Preview", null, 0, false, false, 2, 0, null, "", false, "CSV Preview", null, 0, false, false, 3, 0, null, "", false, "XML Preview", null, 0, false, false, 4, 0, null, "", false, "JSON Preview", null, 0, false, false, 5, 0, null, "", false ]
|
||||
|
||||
[node name="version" type="Label" parent="FileEditorContainer/TobBar"]
|
||||
margin_left = 961.0
|
||||
margin_top = 2.0
|
||||
margin_right = 1000.0
|
||||
margin_bottom = 19.0
|
||||
size_flags_horizontal = 10
|
||||
custom_fonts/font = SubResource( 7 )
|
||||
custom_colors/font_color = Color( 0.121569, 0.145098, 0.192157, 1 )
|
||||
text = "v1.4.3"
|
||||
align = 1
|
||||
|
||||
[node name="SplitContainer" type="HSplitContainer" parent="FileEditorContainer"]
|
||||
margin_top = 24.0
|
||||
margin_top = 26.0
|
||||
margin_right = 1000.0
|
||||
margin_bottom = 600.0
|
||||
margin_bottom = 596.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
split_offset = 150
|
||||
|
||||
[node name="FileContainer" type="VBoxContainer" parent="FileEditorContainer/SplitContainer"]
|
||||
margin_right = 153.0
|
||||
margin_bottom = 576.0
|
||||
margin_right = 1000.0
|
||||
margin_bottom = 570.0
|
||||
|
||||
[node name="OpenFileName" type="LineEdit" parent="FileEditorContainer/SplitContainer/FileContainer"]
|
||||
margin_right = 1000.0
|
||||
margin_bottom = 24.0
|
||||
mouse_filter = 1
|
||||
text = "res://addons/file-editor/file.samples/sample.md"
|
||||
editable = false
|
||||
|
||||
[node name="OpenFileList" type="ItemList" parent="FileEditorContainer/SplitContainer/FileContainer"]
|
||||
margin_right = 153.0
|
||||
margin_bottom = 572.0
|
||||
margin_top = 28.0
|
||||
margin_right = 1000.0
|
||||
margin_bottom = 566.0
|
||||
size_flags_vertical = 3
|
||||
items = [ "translation.csv", SubResource( 30 ), false, "sample.bbs", SubResource( 32 ), false, "sample.cfg", SubResource( 34 ), false, "sample.ini", SubResource( 36 ), false, "README.md", SubResource( 38 ), false, "VERSION.md", SubResource( 40 ), false ]
|
||||
items = [ "sample.cfg", SubResource( 15 ), false, "README.md", SubResource( 17 ), false, "sample.bbs", SubResource( 19 ), false, "sample.html", SubResource( 21 ), false, "sample.md", SubResource( 23 ), false ]
|
||||
allow_reselect = true
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="FileEditorContainer/SplitContainer/FileContainer"]
|
||||
margin_top = 576.0
|
||||
margin_right = 153.0
|
||||
margin_bottom = 576.0
|
||||
margin_top = 570.0
|
||||
margin_right = 1000.0
|
||||
margin_bottom = 570.0
|
||||
rect_min_size = Vector2( 2, 0 )
|
||||
custom_constants/separation = 0
|
||||
custom_styles/separator = SubResource( 28 )
|
||||
|
||||
[node name="EditorContainer" type="VBoxContainer" parent="FileEditorContainer/SplitContainer"]
|
||||
margin_left = 165.0
|
||||
[node name="TextureRect" type="TextureRect" parent="FileEditorContainer"]
|
||||
margin_top = 600.0
|
||||
margin_right = 1000.0
|
||||
margin_bottom = 576.0
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="FileEditorContainer/SplitContainer/EditorContainer"]
|
||||
margin_right = 835.0
|
||||
margin_bottom = 24.0
|
||||
|
||||
[node name="Label" type="Label" parent="FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer"]
|
||||
margin_top = 5.0
|
||||
margin_right = 71.0
|
||||
margin_bottom = 19.0
|
||||
text = "Editing file:"
|
||||
|
||||
[node name="OpenFileName" type="LineEdit" parent="FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer"]
|
||||
margin_left = 75.0
|
||||
margin_right = 650.0
|
||||
margin_bottom = 24.0
|
||||
mouse_filter = 1
|
||||
size_flags_horizontal = 3
|
||||
text = "res://VERSION.md"
|
||||
editable = false
|
||||
|
||||
[node name="wrap_button" type="OptionButton" parent="FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer"]
|
||||
margin_left = 654.0
|
||||
margin_right = 738.0
|
||||
margin_bottom = 24.0
|
||||
text = "No Wrap"
|
||||
items = [ "No Wrap", null, false, 0, null, "Soft Wrap", null, false, 1, null ]
|
||||
selected = 0
|
||||
|
||||
[node name="map_button" type="OptionButton" parent="FileEditorContainer/SplitContainer/EditorContainer/HBoxContainer"]
|
||||
margin_left = 742.0
|
||||
margin_right = 835.0
|
||||
margin_bottom = 24.0
|
||||
text = "Show Map"
|
||||
items = [ "Hide Map", null, false, 0, null, "Show Map", null, false, 1, null ]
|
||||
selected = 1
|
||||
margin_bottom = 600.0
|
||||
|
||||
[node name="FileList" type="FileDialog" parent="."]
|
||||
margin_top = 24.0
|
||||
@ -195,12 +211,11 @@ margin_right = 1024.0
|
||||
margin_bottom = 600.0
|
||||
size_flags_vertical = 3
|
||||
popup_exclusive = true
|
||||
window_title = "Salva un file"
|
||||
dialog_hide_on_ok = true
|
||||
filters = PoolStringArray( "*.txt ; Plain Text File", "*.rtf ; Rich Text Format File", "*.log ; Log File", "*.md ; MD File", "*.doc ; WordPad Document", "*.doc ; Microsoft Word Document", "*.docm ; Word Open XML Macro-Enabled Document", "*.docx ; Microsoft Word Open XML Document", "*.bbs ; Bulletin Board System Text", "*.dat ; Data File", "*.xml ; XML File", "*.sql ; SQL database file", "*.json ; JavaScript Object Notation File", "*.html ; HyperText Markup Language", "*.csv ; Comma-separated values", "*.cfg ; Configuration File", "*.ini ; Initialization File (same as .cfg Configuration File)", "*.csv ; Comma-separated values File", "*.res ; Resource File" )
|
||||
show_hidden_files = true
|
||||
filters = PoolStringArray( "*.txt ; Plain Text File", "*.rtf ; Rich Text Format File", "*.log ; Log File", "*.md ; MD File", "*.doc ; WordPad Document", "*.doc ; Microsoft Word Document", "*.docm ; Word Open XML Macro-Enabled Document", "*.docx ; Microsoft Word Open XML Document", "*.bbs ; Bulletin Board System Text", "*.dat ; Data File", "*.xml ; XML File", "*.sql ; SQL database file", "*.json ; JavaScript Object Notation File", "*.html ; HyperText Markup Language", "*.csv ; Comma-separated values", "*.cfg ; Configuration File", "*.ini ; Initialization File (same as .cfg Configuration File)" )
|
||||
|
||||
[node name="NewFileDialogue" type="AcceptDialog" parent="."]
|
||||
editor/display_folded = true
|
||||
margin_left = 348.254
|
||||
margin_top = 232.623
|
||||
margin_right = 644.254
|
||||
@ -246,19 +261,3 @@ margin_bottom = 37.5
|
||||
window_title = "Unsaved changes"
|
||||
dialog_text = "There are some unsaved changes.
|
||||
Press \"OK\" if you want to close this tab anyway, or \"cancel\" if you want to keep on editing your file."
|
||||
|
||||
[node name="SelectFontDialog" type="FileDialog" parent="."]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 222.0
|
||||
margin_top = 132.0
|
||||
margin_right = -221.0
|
||||
margin_bottom = -131.0
|
||||
window_title = "Open a File"
|
||||
resizable = true
|
||||
mode = 0
|
||||
access = 2
|
||||
filters = PoolStringArray( "*.TTF", "*.ttf" )
|
||||
show_hidden_files = true
|
||||
|
||||
[connection signal="confirmed" from="ConfirmationDialog" to="." method="_on_ConfirmationDialog_confirmed"]
|
||||
|
144
addons/file-editor/scenes/FileScene.tscn
Normal file
@ -0,0 +1,144 @@
|
||||
[gd_scene load_steps=12 format=2]
|
||||
|
||||
[ext_resource path="res://addons/file-editor/scripts/FileScene.gd" type="Script" id=1]
|
||||
[ext_resource path="res://addons/file-editor/fonts/Roboto-Black.ttf" type="DynamicFontData" id=2]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id=1]
|
||||
content_margin_left = 10.0
|
||||
content_margin_right = 10.0
|
||||
bg_color = Color( 0.145098, 0.172549, 0.231373, 1 )
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=9]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=2]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=3]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=4]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=5]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=6]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=7]
|
||||
|
||||
[sub_resource type="DynamicFont" id=8]
|
||||
font_data = ExtResource( 2 )
|
||||
|
||||
[node name="filename" type="VBoxContainer"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
size_flags_vertical = 3
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="."]
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 4.0
|
||||
|
||||
[node name="TopBar" type="HBoxContainer" parent="."]
|
||||
margin_top = 8.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 28.0
|
||||
|
||||
[node name="VSeparator" type="VSeparator" parent="TopBar"]
|
||||
margin_right = 4.0
|
||||
margin_bottom = 20.0
|
||||
|
||||
[node name="FileButton" type="MenuButton" parent="TopBar"]
|
||||
margin_left = 8.0
|
||||
margin_right = 51.0
|
||||
margin_bottom = 20.0
|
||||
custom_styles/hover = SubResource( 1 )
|
||||
custom_styles/normal = SubResource( 1 )
|
||||
text = "File"
|
||||
flat = false
|
||||
items = [ "Save File", null, 0, false, false, 0, 0, null, "", false, "Save file As...", null, 0, false, false, 1, 0, null, "", false, "", null, 0, false, false, -1, 0, null, "", true, "Normal Preview", null, 0, false, false, 2, 0, null, "", false, "BBCode Preview", null, 0, false, false, 3, 0, null, "", false, "Markdown Preview", null, 0, false, false, 4, 0, null, "", false, "HTML Preview", null, 0, false, false, 5, 0, null, "", false ]
|
||||
|
||||
[node name="filepath" type="Label" parent="TopBar"]
|
||||
margin_left = 523.0
|
||||
margin_top = 3.0
|
||||
margin_right = 523.0
|
||||
margin_bottom = 17.0
|
||||
size_flags_horizontal = 6
|
||||
|
||||
[node name="close_btn" type="Button" parent="TopBar"]
|
||||
margin_left = 996.0
|
||||
margin_right = 1016.0
|
||||
margin_bottom = 20.0
|
||||
size_flags_horizontal = 8
|
||||
text = "X"
|
||||
|
||||
[node name="VSeparator2" type="VSeparator" parent="TopBar"]
|
||||
margin_left = 1020.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 20.0
|
||||
|
||||
[node name="TextEditor" type="TextEdit" parent="."]
|
||||
margin_top = 32.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 577.0
|
||||
size_flags_vertical = 3
|
||||
syntax_highlighting = true
|
||||
show_line_numbers = true
|
||||
breakpoint_gutter = true
|
||||
highlight_all_occurrences = true
|
||||
smooth_scrolling = true
|
||||
wrap_enabled = true
|
||||
caret_blink = true
|
||||
caret_blink_speed = 1.0
|
||||
caret_moving_by_right_click = false
|
||||
|
||||
[node name="FileInfo" type="HBoxContainer" parent="."]
|
||||
margin_top = 581.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 600.0
|
||||
custom_constants/separation = 2
|
||||
|
||||
[node name="VSeparator4" type="VSeparator" parent="FileInfo"]
|
||||
margin_right = 5.0
|
||||
margin_bottom = 19.0
|
||||
rect_min_size = Vector2( 5, 0 )
|
||||
custom_styles/separator = SubResource( 9 )
|
||||
|
||||
[node name="lastmodified_icon" type="TextureRect" parent="FileInfo"]
|
||||
margin_left = 7.0
|
||||
margin_right = 7.0
|
||||
margin_bottom = 19.0
|
||||
stretch_mode = 4
|
||||
|
||||
[node name="Label" type="Label" parent="FileInfo"]
|
||||
margin_left = 9.0
|
||||
margin_top = 2.0
|
||||
margin_right = 134.0
|
||||
margin_bottom = 16.0
|
||||
text = "Last modified time:"
|
||||
|
||||
[node name="lastmodified" type="Label" parent="FileInfo"]
|
||||
margin_left = 136.0
|
||||
margin_top = 2.0
|
||||
margin_right = 136.0
|
||||
margin_bottom = 16.0
|
||||
|
||||
[node name="Readonly" type="CheckBox" parent="FileInfo"]
|
||||
margin_left = 939.0
|
||||
margin_right = 1018.0
|
||||
margin_bottom = 19.0
|
||||
size_flags_horizontal = 10
|
||||
custom_styles/hover = SubResource( 2 )
|
||||
custom_styles/pressed = SubResource( 3 )
|
||||
custom_styles/focus = SubResource( 4 )
|
||||
custom_styles/disabled = SubResource( 5 )
|
||||
custom_styles/hover_pressed = SubResource( 6 )
|
||||
custom_styles/normal = SubResource( 7 )
|
||||
custom_fonts/font = SubResource( 8 )
|
||||
custom_colors/font_color = Color( 0.145098, 0.172549, 0.231373, 1 )
|
||||
custom_colors/font_color_pressed = Color( 1, 1, 1, 1 )
|
||||
text = "Can Edit"
|
||||
flat = true
|
||||
|
||||
[node name="VSeparator3" type="VSeparator" parent="FileInfo"]
|
||||
margin_left = 1020.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 19.0
|
||||
rect_min_size = Vector2( 4, 0 )
|
||||
[connection signal="text_changed" from="TextEditor" to="." method="_on_TextEditor_text_changed"]
|
375
addons/file-editor/scenes/IniEditor.tscn
Normal file
@ -0,0 +1,375 @@
|
||||
[gd_scene load_steps=16 format=2]
|
||||
|
||||
[ext_resource path="res://addons/file-editor/scripts/IniVisualEditor.gd" type="Script" id=1]
|
||||
|
||||
[sub_resource type="Image" id=1]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=2]
|
||||
image = SubResource( 1 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=3]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=4]
|
||||
image = SubResource( 3 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=5]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 64, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=6]
|
||||
image = SubResource( 5 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=7]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 48, 224, 224, 224, 142, 224, 224, 224, 238, 224, 224, 224, 238, 224, 224, 224, 174, 224, 224, 224, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 32, 224, 224, 224, 238, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 158, 224, 224, 224, 254, 224, 224, 224, 190, 224, 224, 224, 48, 224, 224, 224, 32, 224, 224, 224, 190, 224, 224, 224, 254, 224, 224, 224, 158, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 32, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 32, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 158, 224, 224, 224, 254, 224, 224, 224, 190, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 158, 224, 224, 224, 254, 224, 224, 224, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 32, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 48, 224, 224, 224, 158, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 190, 224, 224, 224, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=8]
|
||||
image = SubResource( 7 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=9]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=10]
|
||||
image = SubResource( 9 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=11]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 175, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 175, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 16, 224, 224, 224, 239, 224, 224, 224, 239, 224, 224, 224, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 80, 224, 224, 224, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=12]
|
||||
image = SubResource( 11 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[sub_resource type="Image" id=13]
|
||||
data = {
|
||||
"data": PoolByteArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 222, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 224, 224, 64, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 254, 224, 224, 224, 238, 224, 224, 224, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ),
|
||||
"format": "RGBA8",
|
||||
"height": 16,
|
||||
"mipmaps": false,
|
||||
"width": 16
|
||||
}
|
||||
|
||||
[sub_resource type="ImageTexture" id=14]
|
||||
image = SubResource( 13 )
|
||||
size = Vector2( 16, 16 )
|
||||
|
||||
[node name="IniEditor" type="Control"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
|
||||
[node name="HSplitContainer" type="HSplitContainer" parent="VBoxContainer"]
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 595.0
|
||||
size_flags_vertical = 3
|
||||
split_offset = 100
|
||||
|
||||
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HSplitContainer"]
|
||||
margin_right = 174.0
|
||||
margin_bottom = 595.0
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/HSplitContainer/VBoxContainer"]
|
||||
editor/display_folded = true
|
||||
margin_right = 174.0
|
||||
margin_bottom = 16.0
|
||||
|
||||
[node name="sections_icon" type="TextureRect" parent="VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer"]
|
||||
margin_right = 16.0
|
||||
margin_bottom = 16.0
|
||||
texture = SubResource( 2 )
|
||||
|
||||
[node name="Label" type="Label" parent="VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer"]
|
||||
margin_left = 20.0
|
||||
margin_top = 1.0
|
||||
margin_right = 174.0
|
||||
margin_bottom = 15.0
|
||||
size_flags_horizontal = 7
|
||||
text = "Sections"
|
||||
|
||||
[node name="sections2" type="ItemList" parent="VBoxContainer/HSplitContainer/VBoxContainer"]
|
||||
margin_top = 20.0
|
||||
margin_right = 174.0
|
||||
margin_bottom = 567.0
|
||||
size_flags_vertical = 3
|
||||
allow_reselect = true
|
||||
auto_height = true
|
||||
same_column_width = true
|
||||
|
||||
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HSplitContainer/VBoxContainer"]
|
||||
editor/display_folded = true
|
||||
margin_top = 571.0
|
||||
margin_right = 174.0
|
||||
margin_bottom = 595.0
|
||||
alignment = 1
|
||||
|
||||
[node name="btn_add_section" type="ToolButton" parent="VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer2"]
|
||||
margin_left = 57.0
|
||||
margin_right = 85.0
|
||||
margin_bottom = 24.0
|
||||
hint_tooltip = "Add a new Section"
|
||||
disabled = true
|
||||
icon = SubResource( 4 )
|
||||
|
||||
[node name="btn_remove_section" type="ToolButton" parent="VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer2"]
|
||||
margin_left = 89.0
|
||||
margin_right = 117.0
|
||||
margin_bottom = 24.0
|
||||
hint_tooltip = "Remove selected Section"
|
||||
disabled = true
|
||||
icon = SubResource( 6 )
|
||||
|
||||
[node name="VBoxContainer2" type="VBoxContainer" parent="VBoxContainer/HSplitContainer"]
|
||||
editor/display_folded = true
|
||||
margin_left = 186.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 595.0
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer/HSplitContainer/VBoxContainer2"]
|
||||
margin_right = 838.0
|
||||
margin_bottom = 16.0
|
||||
|
||||
[node name="keys_icon" type="TextureRect" parent="VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer2"]
|
||||
margin_right = 16.0
|
||||
margin_bottom = 16.0
|
||||
texture = SubResource( 8 )
|
||||
|
||||
[node name="Label" type="Label" parent="VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer2"]
|
||||
margin_left = 20.0
|
||||
margin_top = 1.0
|
||||
margin_right = 838.0
|
||||
margin_bottom = 15.0
|
||||
size_flags_horizontal = 7
|
||||
text = "Keys"
|
||||
|
||||
[node name="keys" type="Tree" parent="VBoxContainer/HSplitContainer/VBoxContainer2"]
|
||||
margin_top = 20.0
|
||||
margin_right = 838.0
|
||||
margin_bottom = 567.0
|
||||
size_flags_vertical = 3
|
||||
columns = 2
|
||||
allow_reselect = true
|
||||
hide_folding = true
|
||||
hide_root = true
|
||||
select_mode = 1
|
||||
|
||||
[node name="HBoxContainer3" type="HBoxContainer" parent="VBoxContainer/HSplitContainer/VBoxContainer2"]
|
||||
editor/display_folded = true
|
||||
margin_top = 571.0
|
||||
margin_right = 838.0
|
||||
margin_bottom = 595.0
|
||||
alignment = 1
|
||||
|
||||
[node name="btn_add_key" type="ToolButton" parent="VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer3"]
|
||||
margin_left = 373.0
|
||||
margin_right = 401.0
|
||||
margin_bottom = 24.0
|
||||
hint_tooltip = "Add a new Key"
|
||||
disabled = true
|
||||
icon = SubResource( 10 )
|
||||
|
||||
[node name="btn_edit_key" type="ToolButton" parent="VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer3"]
|
||||
margin_left = 405.0
|
||||
margin_right = 433.0
|
||||
margin_bottom = 24.0
|
||||
hint_tooltip = "Edit selected Key"
|
||||
disabled = true
|
||||
icon = SubResource( 12 )
|
||||
|
||||
[node name="btn_remove_key" type="ToolButton" parent="VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer3"]
|
||||
margin_left = 437.0
|
||||
margin_right = 465.0
|
||||
margin_bottom = 24.0
|
||||
hint_tooltip = "Remove selected Key"
|
||||
disabled = true
|
||||
icon = SubResource( 14 )
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="VBoxContainer"]
|
||||
margin_top = 599.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 600.0
|
||||
rect_min_size = Vector2( 0, 1 )
|
||||
custom_constants/separation = 0
|
||||
|
||||
[node name="Section" type="AcceptDialog" parent="."]
|
||||
editor/display_folded = true
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
margin_left = -153.0
|
||||
margin_top = -29.0
|
||||
margin_right = 155.0
|
||||
margin_bottom = 98.0
|
||||
window_title = ""
|
||||
|
||||
[node name="Container" type="VBoxContainer" parent="Section"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 8.0
|
||||
margin_top = 8.0
|
||||
margin_right = -8.0
|
||||
margin_bottom = -36.0
|
||||
|
||||
[node name="section" type="HBoxContainer" parent="Section/Container"]
|
||||
margin_right = 292.0
|
||||
margin_bottom = 24.0
|
||||
|
||||
[node name="Label" type="Label" parent="Section/Container/section"]
|
||||
margin_top = 5.0
|
||||
margin_right = 91.0
|
||||
margin_bottom = 19.0
|
||||
text = "Section name:"
|
||||
|
||||
[node name="_name" type="LineEdit" parent="Section/Container/section"]
|
||||
margin_left = 95.0
|
||||
margin_right = 292.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
||||
context_menu_enabled = false
|
||||
|
||||
[node name="key" type="HBoxContainer" parent="Section/Container"]
|
||||
margin_top = 28.0
|
||||
margin_right = 292.0
|
||||
margin_bottom = 52.0
|
||||
|
||||
[node name="Label" type="Label" parent="Section/Container/key"]
|
||||
margin_top = 5.0
|
||||
margin_right = 91.0
|
||||
margin_bottom = 19.0
|
||||
rect_min_size = Vector2( 91, 0 )
|
||||
text = "Key name:"
|
||||
align = 1
|
||||
|
||||
[node name="_name" type="LineEdit" parent="Section/Container/key"]
|
||||
margin_left = 95.0
|
||||
margin_right = 292.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
||||
context_menu_enabled = false
|
||||
|
||||
[node name="value" type="HBoxContainer" parent="Section/Container"]
|
||||
margin_top = 56.0
|
||||
margin_right = 292.0
|
||||
margin_bottom = 80.0
|
||||
|
||||
[node name="Label" type="Label" parent="Section/Container/value"]
|
||||
margin_top = 5.0
|
||||
margin_right = 91.0
|
||||
margin_bottom = 19.0
|
||||
rect_min_size = Vector2( 91, 0 )
|
||||
text = "Key value:"
|
||||
align = 1
|
||||
|
||||
[node name="_value" type="LineEdit" parent="Section/Container/value"]
|
||||
margin_left = 95.0
|
||||
margin_right = 292.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
||||
context_menu_enabled = false
|
||||
|
||||
[node name="Key" type="ConfirmationDialog" parent="."]
|
||||
editor/display_folded = true
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
margin_left = -150.0
|
||||
margin_top = -46.0
|
||||
margin_right = 151.0
|
||||
margin_bottom = 64.0
|
||||
window_title = "Add a new Key"
|
||||
|
||||
[node name="data" type="VBoxContainer" parent="Key"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 8.0
|
||||
margin_top = 8.0
|
||||
margin_right = -8.0
|
||||
margin_bottom = -36.0
|
||||
alignment = 1
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="Key/data"]
|
||||
margin_top = 7.0
|
||||
margin_right = 285.0
|
||||
margin_bottom = 31.0
|
||||
|
||||
[node name="Label" type="Label" parent="Key/data/HBoxContainer"]
|
||||
margin_top = 5.0
|
||||
margin_right = 140.0
|
||||
margin_bottom = 19.0
|
||||
size_flags_horizontal = 3
|
||||
text = "Key name:"
|
||||
align = 1
|
||||
valign = 1
|
||||
|
||||
[node name="name" type="LineEdit" parent="Key/data/HBoxContainer"]
|
||||
margin_left = 144.0
|
||||
margin_right = 285.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="HBoxContainer2" type="HBoxContainer" parent="Key/data"]
|
||||
margin_top = 35.0
|
||||
margin_right = 285.0
|
||||
margin_bottom = 59.0
|
||||
|
||||
[node name="Label" type="Label" parent="Key/data/HBoxContainer2"]
|
||||
margin_top = 5.0
|
||||
margin_right = 140.0
|
||||
margin_bottom = 19.0
|
||||
size_flags_horizontal = 3
|
||||
text = "Key value:"
|
||||
align = 1
|
||||
valign = 1
|
||||
|
||||
[node name="value" type="LineEdit" parent="Key/data/HBoxContainer2"]
|
||||
margin_left = 144.0
|
||||
margin_right = 285.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
62
addons/file-editor/scenes/Preview.tscn
Normal file
@ -0,0 +1,62 @@
|
||||
[gd_scene load_steps=12 format=2]
|
||||
|
||||
[ext_resource path="res://addons/file-editor/scripts/Preview.gd" type="Script" id=1]
|
||||
[ext_resource path="res://addons/file-editor/fonts/COUR.TTF" type="DynamicFontData" id=2]
|
||||
[ext_resource path="res://addons/file-editor/fonts/Carlito-BoldItalic.ttf" type="DynamicFontData" id=3]
|
||||
[ext_resource path="res://addons/file-editor/fonts/Carlito-Italic.ttf" type="DynamicFontData" id=4]
|
||||
[ext_resource path="res://addons/file-editor/fonts/Carlito-Bold.ttf" type="DynamicFontData" id=5]
|
||||
[ext_resource path="res://addons/file-editor/fonts/Carlito-Regular.ttf" type="DynamicFontData" id=6]
|
||||
|
||||
[sub_resource type="DynamicFont" id=1]
|
||||
use_mipmaps = true
|
||||
use_filter = true
|
||||
font_data = ExtResource( 2 )
|
||||
|
||||
[sub_resource type="DynamicFont" id=2]
|
||||
font_data = ExtResource( 3 )
|
||||
|
||||
[sub_resource type="DynamicFont" id=3]
|
||||
font_data = ExtResource( 4 )
|
||||
|
||||
[sub_resource type="DynamicFont" id=4]
|
||||
font_data = ExtResource( 5 )
|
||||
|
||||
[sub_resource type="DynamicFont" id=5]
|
||||
font_data = ExtResource( 6 )
|
||||
|
||||
[node name="Preview" type="WindowDialog"]
|
||||
visible = true
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 81.0
|
||||
margin_top = 47.0
|
||||
margin_right = -80.0
|
||||
margin_bottom = -48.0
|
||||
window_title = "File preview"
|
||||
resizable = true
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="Container" type="VBoxContainer" parent="."]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
|
||||
[node name="TextPreview" type="RichTextLabel" parent="Container"]
|
||||
visible = false
|
||||
margin_right = 863.0
|
||||
margin_bottom = 250.0
|
||||
size_flags_vertical = 3
|
||||
custom_fonts/mono_font = SubResource( 1 )
|
||||
custom_fonts/bold_italics_font = SubResource( 2 )
|
||||
custom_fonts/italics_font = SubResource( 3 )
|
||||
custom_fonts/bold_font = SubResource( 4 )
|
||||
custom_fonts/normal_font = SubResource( 5 )
|
||||
bbcode_enabled = true
|
||||
scroll_following = true
|
||||
|
||||
[node name="TablePreview" type="GridContainer" parent="Container"]
|
||||
margin_right = 863.0
|
||||
margin_bottom = 505.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
columns = 3
|
||||
[connection signal="popup_hide" from="." to="." method="_on_Preview_popup_hide"]
|
213
addons/file-editor/scenes/VanillaEditor.tscn
Normal file
@ -0,0 +1,213 @@
|
||||
[gd_scene load_steps=10 format=2]
|
||||
|
||||
[ext_resource path="res://addons/file-editor/scripts/FileScene.gd" type="Script" id=1]
|
||||
[ext_resource path="res://addons/file-editor/fonts/Roboto-Black.ttf" type="DynamicFontData" id=2]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=1]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=2]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=3]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=4]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=5]
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id=6]
|
||||
|
||||
[sub_resource type="DynamicFont" id=7]
|
||||
font_data = ExtResource( 2 )
|
||||
|
||||
[node name="VanillaEditor" type="VBoxContainer"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
size_flags_vertical = 3
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="TextEditor" type="TextEdit" parent="."]
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 577.0
|
||||
size_flags_vertical = 3
|
||||
custom_colors/member_variable_color = Color( 0.737255, 0.882353, 1, 1 )
|
||||
custom_colors/code_folding_color = Color( 1, 1, 1, 0.701961 )
|
||||
custom_colors/function_color = Color( 0.341176, 0.701961, 1, 1 )
|
||||
custom_colors/safe_line_number_color = Color( 0.8, 0.968627, 0.827451, 0.74902 )
|
||||
custom_colors/symbol_color = Color( 0.670588, 0.788235, 1, 1 )
|
||||
custom_colors/caret_background_color = Color( 0, 0, 0, 1 )
|
||||
custom_colors/selection_color = Color( 0.411765, 0.611765, 0.909804, 0.34902 )
|
||||
custom_colors/caret_color = Color( 1, 1, 1, 1 )
|
||||
custom_colors/breakpoint_color = Color( 1, 0.470588, 0.419608, 1 )
|
||||
custom_colors/font_color_selected = Color( 0, 0, 0, 1 )
|
||||
custom_colors/font_color = Color( 1, 1, 1, 1 )
|
||||
custom_colors/completion_font_color = Color( 1, 1, 1, 0.392157 )
|
||||
custom_colors/completion_scroll_color = Color( 1, 1, 1, 0.0705882 )
|
||||
custom_colors/background_color = Color( 0.121569, 0.145098, 0.192157, 1 )
|
||||
custom_colors/number_color = Color( 0.631373, 1, 0.882353, 1 )
|
||||
custom_colors/completion_background_color = Color( 0.196078, 0.231373, 0.309804, 1 )
|
||||
custom_colors/brace_mismatch_color = Color( 1, 0.470588, 0.419608, 1 )
|
||||
custom_colors/current_line_color = Color( 1, 1, 1, 0.0705882 )
|
||||
custom_colors/completion_selected_color = Color( 1, 1, 1, 0.0705882 )
|
||||
custom_colors/mark_color = Color( 1, 0.470588, 0.419608, 0.301961 )
|
||||
custom_colors/word_highlighted_color = Color( 1, 1, 1, 0.392157 )
|
||||
custom_colors/completion_existing_color = Color( 1, 1, 1, 0.392157 )
|
||||
custom_constants/completion_lines = 20
|
||||
custom_constants/completion_max_width = 20
|
||||
custom_constants/completion_scroll_width = 20
|
||||
highlight_current_line = true
|
||||
syntax_highlighting = true
|
||||
show_line_numbers = true
|
||||
breakpoint_gutter = true
|
||||
highlight_all_occurrences = true
|
||||
override_selected_font_color = true
|
||||
smooth_scrolling = true
|
||||
hiding_enabled = 1
|
||||
wrap_enabled = true
|
||||
caret_blink = true
|
||||
caret_blink_speed = 1.0
|
||||
caret_moving_by_right_click = false
|
||||
|
||||
[node name="SearchBox" type="HBoxContainer" parent="."]
|
||||
visible = false
|
||||
margin_top = 525.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 549.0
|
||||
|
||||
[node name="Label" type="Label" parent="SearchBox"]
|
||||
margin_top = 5.0
|
||||
margin_right = 46.0
|
||||
margin_bottom = 19.0
|
||||
text = "Search:"
|
||||
|
||||
[node name="LineEdit" type="LineEdit" parent="SearchBox"]
|
||||
margin_left = 50.0
|
||||
margin_right = 778.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="matchcase" type="CheckBox" parent="SearchBox"]
|
||||
margin_left = 782.0
|
||||
margin_right = 883.0
|
||||
margin_bottom = 24.0
|
||||
text = "Match Case"
|
||||
|
||||
[node name="wholewords" type="CheckBox" parent="SearchBox"]
|
||||
margin_left = 887.0
|
||||
margin_right = 1001.0
|
||||
margin_bottom = 24.0
|
||||
text = "Whole Words"
|
||||
|
||||
[node name="close" type="Button" parent="SearchBox"]
|
||||
margin_left = 1005.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 24.0
|
||||
text = "x"
|
||||
flat = true
|
||||
|
||||
[node name="ReplaceBox" type="HBoxContainer" parent="."]
|
||||
visible = false
|
||||
margin_top = 553.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 577.0
|
||||
|
||||
[node name="Label" type="Label" parent="ReplaceBox"]
|
||||
margin_top = 5.0
|
||||
margin_right = 54.0
|
||||
margin_bottom = 19.0
|
||||
text = "Replace:"
|
||||
|
||||
[node name="replace" type="LineEdit" parent="ReplaceBox"]
|
||||
margin_left = 58.0
|
||||
margin_right = 475.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Label2" type="Label" parent="ReplaceBox"]
|
||||
margin_left = 479.0
|
||||
margin_top = 5.0
|
||||
margin_right = 513.0
|
||||
margin_bottom = 19.0
|
||||
text = "With:"
|
||||
|
||||
[node name="with" type="LineEdit" parent="ReplaceBox"]
|
||||
margin_left = 517.0
|
||||
margin_right = 934.0
|
||||
margin_bottom = 24.0
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Button" type="Button" parent="ReplaceBox"]
|
||||
margin_left = 938.0
|
||||
margin_right = 1000.0
|
||||
margin_bottom = 24.0
|
||||
text = "Replace"
|
||||
|
||||
[node name="close2" type="Button" parent="ReplaceBox"]
|
||||
margin_left = 1004.0
|
||||
margin_right = 1023.0
|
||||
margin_bottom = 24.0
|
||||
text = "x"
|
||||
flat = true
|
||||
|
||||
[node name="FileInfo" type="HBoxContainer" parent="."]
|
||||
margin_top = 581.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 600.0
|
||||
custom_constants/separation = 2
|
||||
alignment = 1
|
||||
|
||||
[node name="lastmodified_icon" type="TextureRect" parent="FileInfo"]
|
||||
margin_bottom = 19.0
|
||||
stretch_mode = 4
|
||||
|
||||
[node name="Label" type="Label" parent="FileInfo"]
|
||||
margin_left = 2.0
|
||||
margin_top = 2.0
|
||||
margin_right = 127.0
|
||||
margin_bottom = 16.0
|
||||
text = "Last modified time:"
|
||||
|
||||
[node name="lastmodified" type="Label" parent="FileInfo"]
|
||||
margin_left = 129.0
|
||||
margin_top = 2.0
|
||||
margin_right = 129.0
|
||||
margin_bottom = 16.0
|
||||
|
||||
[node name="Label2" type="Label" parent="FileInfo"]
|
||||
margin_left = 131.0
|
||||
margin_top = 2.0
|
||||
margin_right = 427.0
|
||||
margin_bottom = 16.0
|
||||
size_flags_horizontal = 15
|
||||
text = "Characters counter:"
|
||||
align = 2
|
||||
|
||||
[node name="c_counter" type="Label" parent="FileInfo"]
|
||||
margin_left = 429.0
|
||||
margin_top = 2.0
|
||||
margin_right = 429.0
|
||||
margin_bottom = 16.0
|
||||
size_flags_horizontal = 2
|
||||
|
||||
[node name="Readonly" type="CheckBox" parent="FileInfo"]
|
||||
margin_left = 945.0
|
||||
margin_right = 1024.0
|
||||
margin_bottom = 19.0
|
||||
size_flags_horizontal = 10
|
||||
custom_styles/hover = SubResource( 1 )
|
||||
custom_styles/pressed = SubResource( 2 )
|
||||
custom_styles/focus = SubResource( 3 )
|
||||
custom_styles/disabled = SubResource( 4 )
|
||||
custom_styles/hover_pressed = SubResource( 5 )
|
||||
custom_styles/normal = SubResource( 6 )
|
||||
custom_fonts/font = SubResource( 7 )
|
||||
custom_colors/font_color = Color( 0.145098, 0.172549, 0.231373, 1 )
|
||||
custom_colors/font_color_pressed = Color( 1, 1, 1, 1 )
|
||||
text = "Can Edit"
|
||||
flat = true
|
||||
[connection signal="text_changed" from="TextEditor" to="." method="_on_TextEditor_text_changed"]
|
||||
[connection signal="focus_entered" from="SearchBox/LineEdit" to="." method="_on_LineEdit_focus_entered"]
|
||||
[connection signal="text_changed" from="SearchBox/LineEdit" to="." method="_on_LineEdit_text_changed"]
|
||||
[connection signal="toggled" from="SearchBox/matchcase" to="." method="_on_matchcase_toggled"]
|
||||
[connection signal="toggled" from="SearchBox/wholewords" to="." method="_on_wholewords_toggled"]
|
||||
[connection signal="pressed" from="SearchBox/close" to="." method="_on_close_pressed"]
|
||||
[connection signal="pressed" from="ReplaceBox/Button" to="." method="_on_Button_pressed"]
|
||||
[connection signal="pressed" from="ReplaceBox/close2" to="." method="_on_close2_pressed"]
|
@ -1,16 +1,27 @@
|
||||
tool
|
||||
extends Control
|
||||
|
||||
enum FileMenuOptions {
|
||||
FILE_MENU_OPTION_NEW = 0,
|
||||
FILE_MENU_OPTION_OPEN = 1,
|
||||
FILE_MENU_OPTION_CLOSE = 2,
|
||||
FILE_MENU_OPTION_SAVE = 3,
|
||||
FILE_MENU_OPTION_SAVE_AS = 4,
|
||||
FILE_MENU_OPTION_DELETE = 5,
|
||||
FILE_MENU_OPTION_SEARCH = 6,
|
||||
FILE_MENU_OPTION_REPLACE = 7,
|
||||
};
|
||||
onready var FileList = $FileList
|
||||
|
||||
onready var NewFileDialogue = $NewFileDialogue
|
||||
onready var NewFileDialogue_name = $NewFileDialogue/VBoxContainer/new_filename
|
||||
|
||||
onready var FileBTN = $FileEditorContainer/TobBar/file_btn.get_popup()
|
||||
onready var PreviewBTN = $FileEditorContainer/TobBar/preview_btn.get_popup()
|
||||
onready var EditorBTN = $FileEditorContainer/TobBar/editor_btn.get_popup()
|
||||
|
||||
onready var Version = $FileEditorContainer/TobBar/version
|
||||
|
||||
|
||||
onready var FileContainer = $FileEditorContainer/SplitContainer/FileContainer
|
||||
onready var OpenFileList = $FileEditorContainer/SplitContainer/FileContainer/OpenFileList
|
||||
onready var OpenFileName = $FileEditorContainer/SplitContainer/FileContainer/OpenFileName
|
||||
|
||||
var Preview = preload("res://addons/file-editor/scenes/Preview.tscn")
|
||||
var IniEditor = preload("res://addons/file-editor/scenes/IniEditor.tscn")
|
||||
var VanillaEditor = preload("res://addons/file-editor/scenes/VanillaEditor.tscn")
|
||||
|
||||
onready var EditorContainer = $FileEditorContainer/SplitContainer
|
||||
|
||||
var DIRECTORY : String = "res://"
|
||||
var EXCEPTIONS : String = "addons"
|
||||
@ -32,368 +43,188 @@ var EXTENSIONS : PoolStringArray = [
|
||||
"*.csv ; Comma-separated values",
|
||||
"*.cfg ; Configuration File",
|
||||
"*.ini ; Initialization File (same as .cfg Configuration File)",
|
||||
"*.csv ; Comma-separated values File",
|
||||
"*.res ; Resource File",
|
||||
]
|
||||
|
||||
|
||||
var file_btn : MenuButton = null
|
||||
var preview_btn : MenuButton = null
|
||||
var settings_btn : MenuButton = null
|
||||
|
||||
var file_btn_popup : PopupMenu = null
|
||||
var preview_btn_popup : PopupMenu = null
|
||||
var settings_btn_popup : PopupMenu = null
|
||||
|
||||
var editor_container : HSplitContainer = null
|
||||
var file_container : VBoxContainer = null
|
||||
var open_file_list : ItemList = null
|
||||
var split_editor_container : VBoxContainer = null
|
||||
var open_file_name : LineEdit = null
|
||||
var wrap_btn : OptionButton = null
|
||||
var map_btn : OptionButton = null
|
||||
|
||||
var file_list : FileDialog = null
|
||||
|
||||
var new_file_dialogue : AcceptDialog = null
|
||||
var new_file_dialogue_name : LineEdit = null
|
||||
|
||||
var confirmation_close : ConfirmationDialog = null
|
||||
|
||||
var select_font_dialog : FileDialog = null
|
||||
|
||||
var LastOpenedFiles : Reference = null
|
||||
|
||||
var Preview = preload("res://addons/file-editor/scripts/Preview.gd")
|
||||
var VanillaEditor = preload("res://addons/file-editor/scripts/VanillaEditor.gd")
|
||||
|
||||
var directories : Array
|
||||
var files : Array
|
||||
var current_file_index : int = -1
|
||||
var current_file_path : String
|
||||
var save_as : bool = false
|
||||
var directories = []
|
||||
var files = []
|
||||
var current_file_index = -1
|
||||
var current_file_path = ""
|
||||
var save_as = false
|
||||
var current_editor : Control
|
||||
var current_font : DynamicFont
|
||||
var current_ini_editor : Control
|
||||
|
||||
var editing_file : bool = false
|
||||
func _ready():
|
||||
clean_editor()
|
||||
update_version()
|
||||
connect_signals()
|
||||
create_shortcuts()
|
||||
load_icons()
|
||||
|
||||
func _init() -> void:
|
||||
set_anchors_and_margins_preset(Control.PRESET_WIDE)
|
||||
size_flags_vertical = SIZE_EXPAND_FILL
|
||||
size_flags_horizontal = SIZE_EXPAND_FILL
|
||||
var opened_files : Array = LastOpenedFiles.load_opened_files()
|
||||
for open_file in opened_files:
|
||||
open_file(open_file[1])
|
||||
|
||||
var vbc : VBoxContainer = VBoxContainer.new()
|
||||
add_child(vbc)
|
||||
vbc.set_anchors_and_margins_preset(Control.PRESET_WIDE)
|
||||
FileList.set_filters(EXTENSIONS)
|
||||
|
||||
var tob_bar : HBoxContainer = HBoxContainer.new()
|
||||
vbc.add_child(tob_bar)
|
||||
func create_shortcuts():
|
||||
var hotkey
|
||||
|
||||
file_btn = MenuButton.new()
|
||||
tob_bar.add_child(file_btn)
|
||||
file_btn.text = "File"
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_S
|
||||
hotkey.control = true
|
||||
FileBTN.set_item_accelerator(4,hotkey.get_scancode_with_modifiers()) # save file
|
||||
|
||||
file_btn_popup = file_btn.get_popup()
|
||||
|
||||
var hotkey : InputEventKey = InputEventKey.new()
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_N
|
||||
hotkey.control = true
|
||||
file_btn_popup.add_item("New File", FileMenuOptions.FILE_MENU_OPTION_NEW, hotkey.get_scancode_with_modifiers())
|
||||
FileBTN.set_item_accelerator(0,hotkey.get_scancode_with_modifiers()) # new file
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_O
|
||||
hotkey.control = true
|
||||
file_btn_popup.add_item("Open File", FileMenuOptions.FILE_MENU_OPTION_OPEN, hotkey.get_scancode_with_modifiers())
|
||||
FileBTN.set_item_accelerator(1,hotkey.get_scancode_with_modifiers()) # open file
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_D
|
||||
hotkey.control = true
|
||||
FileBTN.set_item_accelerator(6,hotkey.get_scancode_with_modifiers()) # delete file
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_S
|
||||
hotkey.control = true
|
||||
hotkey.alt = true
|
||||
FileBTN.set_item_accelerator(5,hotkey.get_scancode_with_modifiers()) #save file as
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_C
|
||||
hotkey.control = true
|
||||
hotkey.alt = true
|
||||
file_btn_popup.add_item("Close File", FileMenuOptions.FILE_MENU_OPTION_CLOSE, hotkey.get_scancode_with_modifiers())
|
||||
|
||||
file_btn_popup.add_separator()
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_S
|
||||
hotkey.control = true
|
||||
file_btn_popup.add_item("Save File", FileMenuOptions.FILE_MENU_OPTION_SAVE, hotkey.get_scancode_with_modifiers())
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_S
|
||||
hotkey.control = true
|
||||
hotkey.alt = true
|
||||
file_btn_popup.add_item("Save File as...", FileMenuOptions.FILE_MENU_OPTION_SAVE_AS, hotkey.get_scancode_with_modifiers())
|
||||
|
||||
#hotkey = InputEventKey.new()
|
||||
#hotkey.scancode = KEY_D
|
||||
#hotkey.control = true
|
||||
#file_btn_popup.add_item("Delete File", FileMenuOptions.FILE_MENU_OPTION_DELETE, hotkey.get_scancode_with_modifiers())
|
||||
file_btn_popup.add_item("Delete File", FileMenuOptions.FILE_MENU_OPTION_DELETE)
|
||||
|
||||
file_btn_popup.add_separator()
|
||||
FileBTN.set_item_accelerator(2,hotkey.get_scancode_with_modifiers()) # close file
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_F
|
||||
hotkey.control = true
|
||||
file_btn_popup.add_item("Search in file...", FileMenuOptions.FILE_MENU_OPTION_SEARCH, hotkey.get_scancode_with_modifiers())
|
||||
FileBTN.set_item_accelerator(8,hotkey.get_scancode_with_modifiers()) # search
|
||||
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_R
|
||||
hotkey.control = true
|
||||
file_btn_popup.add_item("Replace occurencies", FileMenuOptions.FILE_MENU_OPTION_REPLACE, hotkey.get_scancode_with_modifiers())
|
||||
FileBTN.set_item_accelerator(9,hotkey.get_scancode_with_modifiers()) # replace
|
||||
|
||||
#Preview
|
||||
preview_btn = MenuButton.new()
|
||||
tob_bar.add_child(preview_btn)
|
||||
preview_btn.text = "Preview"
|
||||
# vanilla editor -----------------------
|
||||
|
||||
preview_btn_popup = preview_btn.get_popup()
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_1
|
||||
hotkey.control = true
|
||||
EditorBTN.set_item_accelerator(0,hotkey.get_scancode_with_modifiers()) # vanilla editor
|
||||
|
||||
preview_btn_popup.add_item("BBCode Preview")
|
||||
preview_btn_popup.add_item("Markdown Preview")
|
||||
preview_btn_popup.add_item("HTML Preview")
|
||||
preview_btn_popup.add_item("CSV Preview")
|
||||
hotkey = InputEventKey.new()
|
||||
hotkey.scancode = KEY_3
|
||||
hotkey.control = true
|
||||
EditorBTN.set_item_accelerator(2,hotkey.get_scancode_with_modifiers()) # vanilla editor
|
||||
|
||||
#Settings
|
||||
settings_btn = MenuButton.new()
|
||||
tob_bar.add_child(settings_btn)
|
||||
settings_btn.text = "Settings"
|
||||
func load_icons():
|
||||
$FileEditorContainer/TobBar/file_btn.icon = IconLoader.load_icon_from_name("file")
|
||||
$FileEditorContainer/TobBar/preview_btn.icon = IconLoader.load_icon_from_name("read")
|
||||
$FileEditorContainer/TobBar/editor_btn.icon = IconLoader.load_icon_from_name("edit_")
|
||||
|
||||
settings_btn_popup = settings_btn.get_popup()
|
||||
func connect_signals():
|
||||
FileList.connect("confirmed",self,"update_list")
|
||||
FileBTN.connect("id_pressed",self,"_on_filebtn_pressed")
|
||||
PreviewBTN.connect("id_pressed",self,"_on_previewbtn_pressed")
|
||||
EditorBTN.connect("id_pressed",self,"_on_editorbtn_pressed")
|
||||
|
||||
settings_btn_popup.add_item("Change Font")
|
||||
OpenFileList.connect("item_selected",self,"_on_fileitem_pressed")
|
||||
|
||||
#SplitContainer
|
||||
editor_container = HSplitContainer.new()
|
||||
vbc.add_child(editor_container)
|
||||
editor_container.split_offset = 150
|
||||
editor_container.size_flags_horizontal = SIZE_EXPAND_FILL
|
||||
editor_container.size_flags_vertical = SIZE_EXPAND_FILL
|
||||
|
||||
#Files
|
||||
file_container = VBoxContainer.new()
|
||||
editor_container.add_child(file_container)
|
||||
|
||||
open_file_list = ItemList.new()
|
||||
file_container.add_child(open_file_list)
|
||||
open_file_list.allow_reselect = true
|
||||
open_file_list.size_flags_vertical = SIZE_EXPAND_FILL
|
||||
|
||||
file_container.add_child(HSeparator.new())
|
||||
|
||||
#Editor
|
||||
split_editor_container = VBoxContainer.new()
|
||||
editor_container.add_child(split_editor_container)
|
||||
|
||||
var editor_top_bar : HBoxContainer = HBoxContainer.new()
|
||||
split_editor_container.add_child(editor_top_bar)
|
||||
|
||||
var edtopbar_label : Label = Label.new()
|
||||
editor_top_bar.add_child(edtopbar_label)
|
||||
edtopbar_label.text = "Editing file:"
|
||||
|
||||
open_file_name = LineEdit.new()
|
||||
editor_top_bar.add_child(open_file_name)
|
||||
open_file_name.editable = false
|
||||
open_file_name.mouse_filter = Control.MOUSE_FILTER_PASS
|
||||
open_file_name.size_flags_horizontal = SIZE_EXPAND_FILL
|
||||
|
||||
wrap_btn = OptionButton.new()
|
||||
editor_top_bar.add_child(wrap_btn)
|
||||
wrap_btn.add_item("No Wrap")
|
||||
wrap_btn.add_item("Soft Wrap")
|
||||
|
||||
map_btn = OptionButton.new()
|
||||
editor_top_bar.add_child(map_btn)
|
||||
map_btn.add_item("Hide Map")
|
||||
map_btn.add_item("Show Map")
|
||||
map_btn.selected = 1
|
||||
|
||||
#dialogs
|
||||
file_list = FileDialog.new()
|
||||
add_child(file_list)
|
||||
file_list.show_hidden_files = true
|
||||
file_list.dialog_hide_on_ok = true
|
||||
file_list.window_title = "Save file"
|
||||
file_list.popup_exclusive = true
|
||||
file_list.set_anchors_and_margins_preset(Control.PRESET_WIDE)
|
||||
file_list.margin_left = 222
|
||||
file_list.margin_top = 132
|
||||
file_list.margin_right = -221
|
||||
file_list.margin_bottom = -131
|
||||
file_list.rect_min_size = Vector2(200, 70)
|
||||
|
||||
new_file_dialogue = AcceptDialog.new()
|
||||
add_child(new_file_dialogue)
|
||||
new_file_dialogue.window_title = "Create new File"
|
||||
|
||||
var nfd_vbc : VBoxContainer = VBoxContainer.new()
|
||||
new_file_dialogue.add_child(nfd_vbc)
|
||||
|
||||
var nfd_name : Label = Label.new()
|
||||
nfd_vbc.add_child(nfd_name)
|
||||
nfd_name.text = "Insert file name (no extension needed)"
|
||||
nfd_name.align = Label.ALIGN_CENTER
|
||||
nfd_name.valign = Label.VALIGN_CENTER
|
||||
nfd_name.size_flags_vertical = SIZE_EXPAND_FILL
|
||||
|
||||
new_file_dialogue_name = LineEdit.new()
|
||||
nfd_vbc.add_child(new_file_dialogue_name)
|
||||
new_file_dialogue_name.clear_button_enabled = true
|
||||
new_file_dialogue_name.text = "example"
|
||||
new_file_dialogue_name.rect_min_size = Vector2(200, 0)
|
||||
new_file_dialogue_name.size_flags_horizontal = SIZE_EXPAND | SIZE_SHRINK_CENTER
|
||||
new_file_dialogue_name.size_flags_vertical = SIZE_EXPAND_FILL
|
||||
|
||||
confirmation_close = ConfirmationDialog.new()
|
||||
add_child(confirmation_close)
|
||||
confirmation_close.dialog_text = "There are some unsaved changes.\nPress \"OK\" if you want to close this tab anyway, or \"cancel\" if you want to keep on editing your file."
|
||||
confirmation_close.window_title = "Unsaved changes"
|
||||
confirmation_close.set_anchors_and_margins_preset(Control.PRESET_CENTER)
|
||||
|
||||
select_font_dialog = FileDialog.new()
|
||||
add_child(select_font_dialog)
|
||||
select_font_dialog.mode = FileDialog.MODE_OPEN_FILE
|
||||
select_font_dialog.access = FileDialog.ACCESS_FILESYSTEM
|
||||
select_font_dialog.show_hidden_files = true
|
||||
select_font_dialog.window_title = "Open a File"
|
||||
select_font_dialog.resizable = true
|
||||
select_font_dialog.set_anchors_and_margins_preset(Control.PRESET_WIDE)
|
||||
select_font_dialog.margin_left = 222
|
||||
select_font_dialog.margin_top = 132
|
||||
select_font_dialog.margin_right = -221
|
||||
select_font_dialog.margin_bottom = -131
|
||||
select_font_dialog.rect_min_size = Vector2(200, 70)
|
||||
|
||||
var farr : PoolStringArray = PoolStringArray()
|
||||
farr.push_back("*.TTF")
|
||||
farr.push_back("*.ttf")
|
||||
select_font_dialog.filters = farr
|
||||
#---------------- to update from IniEditor to VanillaEditor
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if not Engine.is_editor_hint():
|
||||
return
|
||||
|
||||
clean_editor()
|
||||
connect_signals()
|
||||
|
||||
if LastOpenedFiles:
|
||||
var opened_files : Array = LastOpenedFiles.load_opened_files()
|
||||
for opened_file in opened_files:
|
||||
open_file(opened_file[1], opened_file[2])
|
||||
|
||||
file_list.set_filters(EXTENSIONS)
|
||||
# ---- preview buttons
|
||||
|
||||
|
||||
func connect_signals() -> void:
|
||||
file_list.connect("confirmed",self,"update_list")
|
||||
file_btn_popup.connect("id_pressed",self,"_on_file_btn_pressed")
|
||||
preview_btn_popup.connect("id_pressed",self,"_on_preview_btn_pressed")
|
||||
settings_btn_popup.connect("id_pressed",self,"_on_settings_btn_pressed")
|
||||
func update_version():
|
||||
var plugin_version = ""
|
||||
var config = ConfigFile.new()
|
||||
var err = config.load("res://addons/file-editor/plugin.cfg")
|
||||
if err == OK:
|
||||
plugin_version = config.get_value("plugin","version")
|
||||
Version.set_text("v"+plugin_version)
|
||||
|
||||
open_file_list.connect("item_selected",self,"_on_fileitem_pressed")
|
||||
wrap_btn.connect("item_selected",self,"on_wrap_button")
|
||||
map_btn.connect("item_selected",self,"on_minimap_button")
|
||||
|
||||
select_font_dialog.connect("file_selected",self,"_on_font_selected")
|
||||
|
||||
|
||||
func create_selected_file() -> void:
|
||||
func create_selected_file():
|
||||
update_list()
|
||||
FileList.mode = FileDialog.MODE_SAVE_FILE
|
||||
FileList.set_title("Create a new File")
|
||||
if FileList.is_connected("file_selected",self,"delete_file"):
|
||||
FileList.disconnect("file_selected",self,"delete_file")
|
||||
if FileList.is_connected("file_selected",self,"open_file"):
|
||||
FileList.disconnect("file_selected",self,"open_file")
|
||||
if not FileList.is_connected("file_selected",self,"create_new_file"):
|
||||
FileList.connect("file_selected",self,"create_new_file")
|
||||
open_filelist()
|
||||
|
||||
file_list.mode = FileDialog.MODE_SAVE_FILE
|
||||
file_list.set_title("Create a new File")
|
||||
|
||||
if file_list.is_connected("file_selected",self,"delete_file"):
|
||||
file_list.disconnect("file_selected",self,"delete_file")
|
||||
|
||||
if file_list.is_connected("file_selected",self,"open_file"):
|
||||
file_list.disconnect("file_selected",self,"open_file")
|
||||
|
||||
if not file_list.is_connected("file_selected",self,"create_new_file"):
|
||||
file_list.connect("file_selected",self,"create_new_file")
|
||||
|
||||
open_file_list()
|
||||
|
||||
func open_selected_file() -> void:
|
||||
func open_selected_file():
|
||||
update_list()
|
||||
FileList.mode = FileDialog.MODE_OPEN_FILE
|
||||
FileList.set_title("Select a File you want to edit")
|
||||
if FileList.is_connected("file_selected",self,"delete_file"):
|
||||
FileList.disconnect("file_selected",self,"delete_file")
|
||||
if FileList.is_connected("file_selected",self,"create_new_file"):
|
||||
FileList.disconnect("file_selected",self,"create_new_file")
|
||||
if not FileList.is_connected("file_selected",self,"open_file"):
|
||||
FileList.connect("file_selected",self,"open_file")
|
||||
open_filelist()
|
||||
|
||||
file_list.mode = FileDialog.MODE_OPEN_FILE
|
||||
file_list.set_title("Select a File you want to edit")
|
||||
|
||||
if file_list.is_connected("file_selected",self,"delete_file"):
|
||||
file_list.disconnect("file_selected",self,"delete_file")
|
||||
|
||||
if file_list.is_connected("file_selected",self,"create_new_file"):
|
||||
file_list.disconnect("file_selected",self,"create_new_file")
|
||||
|
||||
if not file_list.is_connected("file_selected",self,"open_file"):
|
||||
file_list.connect("file_selected",self,"open_file")
|
||||
|
||||
open_file_list()
|
||||
|
||||
func delete_selected_file() -> void:
|
||||
func delete_selected_file():
|
||||
update_list()
|
||||
FileList.mode = FileDialog.MODE_OPEN_FILES
|
||||
FileList.set_title("Select one or more Files you want to delete")
|
||||
if FileList.is_connected("file_selected",self,"open_file"):
|
||||
FileList.disconnect("file_selected",self,"open_file")
|
||||
if FileList.is_connected("file_selected",self,"create_new_file"):
|
||||
FileList.disconnect("file_selected",self,"create_new_file")
|
||||
if not FileList.is_connected("files_selected",self,"delete_file"):
|
||||
FileList.connect("files_selected",self,"delete_file")
|
||||
open_filelist()
|
||||
|
||||
file_list.mode = FileDialog.MODE_OPEN_FILES
|
||||
file_list.set_title("Select one or more Files you want to delete")
|
||||
|
||||
if file_list.is_connected("file_selected",self,"open_file"):
|
||||
file_list.disconnect("file_selected",self,"open_file")
|
||||
|
||||
if file_list.is_connected("file_selected",self,"create_new_file"):
|
||||
file_list.disconnect("file_selected",self,"create_new_file")
|
||||
|
||||
if not file_list.is_connected("files_selected",self,"delete_file"):
|
||||
file_list.connect("files_selected",self,"delete_file")
|
||||
|
||||
open_file_list()
|
||||
|
||||
func save_current_file_as() -> void:
|
||||
func save_current_file_as():
|
||||
update_list()
|
||||
file_list.mode = FileDialog.MODE_SAVE_FILE
|
||||
file_list.set_title("Save this File as...")
|
||||
FileList.mode = FileDialog.MODE_SAVE_FILE
|
||||
FileList.set_title("Save this File as...")
|
||||
if FileList.is_connected("file_selected",self,"delete_file"):
|
||||
FileList.disconnect("file_selected",self,"delete_file")
|
||||
if FileList.is_connected("file_selected",self,"open_file"):
|
||||
FileList.disconnect("file_selected",self,"open_file")
|
||||
if not FileList.is_connected("file_selected",self,"create_new_file"):
|
||||
FileList.connect("file_selected",self,"create_new_file")
|
||||
open_filelist()
|
||||
|
||||
if file_list.is_connected("file_selected",self,"delete_file"):
|
||||
file_list.disconnect("file_selected",self,"delete_file")
|
||||
|
||||
if file_list.is_connected("file_selected",self,"open_file"):
|
||||
file_list.disconnect("file_selected",self,"open_file")
|
||||
|
||||
if not file_list.is_connected("file_selected",self,"create_new_file"):
|
||||
file_list.connect("file_selected",self,"create_new_file")
|
||||
|
||||
open_file_list()
|
||||
|
||||
func _on_file_btn_pressed(index : int) -> void:
|
||||
func _on_filebtn_pressed(index : int):
|
||||
match index:
|
||||
FileMenuOptions.FILE_MENU_OPTION_NEW:
|
||||
0:
|
||||
create_selected_file()
|
||||
FileMenuOptions.FILE_MENU_OPTION_OPEN:
|
||||
1:
|
||||
open_selected_file()
|
||||
FileMenuOptions.FILE_MENU_OPTION_CLOSE:
|
||||
2:
|
||||
if current_file_index!=-1 and current_file_path != "":
|
||||
close_file(current_file_index)
|
||||
|
||||
FileMenuOptions.FILE_MENU_OPTION_SAVE:
|
||||
3:
|
||||
if current_file_index!=-1 and current_file_path != "":
|
||||
save_as = false
|
||||
|
||||
save_file(current_file_path)
|
||||
FileMenuOptions.FILE_MENU_OPTION_SAVE_AS:
|
||||
4:
|
||||
if current_file_index!=-1 and current_file_path != "":
|
||||
save_as = true
|
||||
save_file(current_file_path)
|
||||
save_current_file_as()
|
||||
FileMenuOptions.FILE_MENU_OPTION_DELETE:
|
||||
5:
|
||||
delete_selected_file()
|
||||
FileMenuOptions.FILE_MENU_OPTION_SEARCH:
|
||||
current_editor.open_search_box()
|
||||
FileMenuOptions.FILE_MENU_OPTION_REPLACE:
|
||||
current_editor.open_replace_box()
|
||||
6:
|
||||
current_editor.open_searchbox()
|
||||
7:
|
||||
current_editor.open_replacebox()
|
||||
|
||||
func _on_preview_btn_pressed(id : int) -> void:
|
||||
func _on_previewbtn_pressed(id : int):
|
||||
if id == 0:
|
||||
bbcode_preview()
|
||||
elif id == 1:
|
||||
@ -402,257 +233,249 @@ func _on_preview_btn_pressed(id : int) -> void:
|
||||
html_preview()
|
||||
elif id == 3:
|
||||
csv_preview()
|
||||
elif id == 4:
|
||||
xml_preview()
|
||||
elif id == 5:
|
||||
json_preview()
|
||||
|
||||
func _on_settings_btn_pressed(index : int) -> void:
|
||||
func _on_editorbtn_pressed(index : int):
|
||||
match index:
|
||||
0:
|
||||
select_font_dialog.popup()
|
||||
|
||||
func _on_font_selected(font_path : String) -> void:
|
||||
current_editor.set_font(font_path)
|
||||
LastOpenedFiles.store_editor_fonts(current_file_path.get_file(), font_path)
|
||||
|
||||
func _on_fileitem_pressed(index : int) -> void:
|
||||
current_file_index = index
|
||||
var selected_item_metadata : Array = open_file_list.get_item_metadata(current_file_index)
|
||||
var extension : String = selected_item_metadata[0].current_path.get_file().get_extension()
|
||||
|
||||
if open_file_list.get_item_text(current_file_index).begins_with("(*)"):
|
||||
editing_file = true
|
||||
else:
|
||||
editing_file = false
|
||||
|
||||
current_file_path = selected_item_metadata[0].current_path
|
||||
|
||||
if current_editor.visible or current_editor == null:
|
||||
if current_editor != null:
|
||||
current_editor.hide()
|
||||
|
||||
current_editor = selected_item_metadata[0]
|
||||
if not current_editor.visible:
|
||||
current_editor.show()
|
||||
open_file_name.set_text(current_editor.current_path)
|
||||
current_ini_editor.hide()
|
||||
2:
|
||||
if not current_ini_editor.visible:
|
||||
current_editor.hide()
|
||||
current_ini_editor.show()
|
||||
|
||||
if wrap_btn.get_selected_id() == 1:
|
||||
current_editor.set_wrap_enabled(true)
|
||||
func _on_fileitem_pressed(index : int):
|
||||
current_file_index = index
|
||||
var selected_item_metadata = OpenFileList.get_item_metadata(index)
|
||||
current_file_path = selected_item_metadata[2]
|
||||
|
||||
OpenFileName.set_text(current_file_path)
|
||||
|
||||
if current_ini_editor!= null:
|
||||
if not current_ini_editor.visible:
|
||||
for editor in get_tree().get_nodes_in_group("vanilla_editor"):
|
||||
if editor.current_path != current_file_path:
|
||||
editor.hide()
|
||||
else:
|
||||
current_editor.set_wrap_enabled(false)
|
||||
|
||||
if map_btn.get_selected_id() == 1:
|
||||
current_editor.draw_minimap(true)
|
||||
current_editor = editor
|
||||
editor.show()
|
||||
else:
|
||||
current_editor.draw_minimap(false)
|
||||
var ext = current_file_path.get_file().get_extension()
|
||||
if ext == "cfg" or ext == "ini":
|
||||
for editor in get_tree().get_nodes_in_group("ini_editor"):
|
||||
if editor.current_file_path != current_file_path:
|
||||
editor.hide()
|
||||
else:
|
||||
current_ini_editor = editor
|
||||
editor.show()
|
||||
else:
|
||||
current_ini_editor.hide()
|
||||
for editor in get_tree().get_nodes_in_group("vanilla_editor"):
|
||||
if editor.current_path != current_file_path:
|
||||
editor.hide()
|
||||
else:
|
||||
current_editor = editor
|
||||
editor.show()
|
||||
else:
|
||||
for editor in get_tree().get_nodes_in_group("vanilla_editor"):
|
||||
if editor.current_path != current_file_path:
|
||||
editor.hide()
|
||||
else:
|
||||
current_editor = editor
|
||||
editor.show()
|
||||
|
||||
func open_file(path : String, font : String = "null") -> void:
|
||||
|
||||
func open_file(path : String):
|
||||
if current_file_path != path:
|
||||
current_file_path = path
|
||||
|
||||
var vanilla_editor : Control = open_in_vanillaeditor(path)
|
||||
|
||||
if font != "null" and vanilla_editor.get("custom_fonts/font")!=null:
|
||||
vanilla_editor.set_font(font)
|
||||
|
||||
generate_file_item(path, vanilla_editor)
|
||||
|
||||
LastOpenedFiles.store_opened_files(open_file_list)
|
||||
open_in_vanillaeditor(path)
|
||||
open_in_inieditor(path)
|
||||
|
||||
LastOpenedFiles.store_opened_files(OpenFileList)
|
||||
current_editor.show()
|
||||
|
||||
func generate_file_item(path : String , veditor : Control) -> void:
|
||||
open_file_name.set_text(path)
|
||||
open_file_list.add_item(path.get_file(), null,true)
|
||||
|
||||
current_file_index = open_file_list.get_item_count()-1
|
||||
|
||||
open_file_list.set_item_metadata(current_file_index,[veditor])
|
||||
open_file_list.select(open_file_list.get_item_count()-1)
|
||||
|
||||
func open_in_vanillaeditor(path : String) -> Control:
|
||||
var editor : Control = VanillaEditor.new()
|
||||
editor.LastOpenedFiles = LastOpenedFiles
|
||||
editor.file_list = file_list
|
||||
split_editor_container.add_child(editor,true)
|
||||
|
||||
if current_editor and current_editor!=editor:
|
||||
editor.show()
|
||||
current_editor.hide()
|
||||
|
||||
func open_in_vanillaeditor(path : String):
|
||||
var editor = VanillaEditor.instance()
|
||||
EditorContainer.add_child(editor,true)
|
||||
|
||||
current_editor = editor
|
||||
|
||||
for editor in get_tree().get_nodes_in_group("vanilla_editor"):
|
||||
if editor != current_editor:
|
||||
editor.hide()
|
||||
|
||||
editor.connect("text_changed",self,"_on_vanillaeditor_text_changed")
|
||||
|
||||
var current_file : File = File.new()
|
||||
current_file.open(path,File.READ)
|
||||
var current_content : String = ""
|
||||
var current_content = ""
|
||||
current_content = current_file.get_as_text()
|
||||
|
||||
var last_modified = OS.get_datetime_from_unix_time(current_file.get_modified_time(path))
|
||||
|
||||
current_file.close()
|
||||
|
||||
OpenFileName.set_text(path)
|
||||
OpenFileList.add_item(path.get_file(),IconLoader.load_icon_from_name("file"),true)
|
||||
current_file_index = OpenFileList.get_item_count()-1
|
||||
OpenFileList.set_item_metadata(current_file_index,[current_content,last_modified,path])
|
||||
|
||||
editor.new_file_open(current_content,last_modified,current_file_path)
|
||||
|
||||
update_list()
|
||||
|
||||
if wrap_btn.get_selected_id() == 1:
|
||||
current_editor.set_wrap_enabled(true)
|
||||
OpenFileList.select(OpenFileList.get_item_count()-1)
|
||||
|
||||
return editor
|
||||
func open_in_inieditor(path : String):
|
||||
var extension = path.get_file().get_extension()
|
||||
if extension == "ini" or extension == "cfg":
|
||||
var inieditor = IniEditor.instance()
|
||||
EditorContainer.add_child(inieditor)
|
||||
inieditor.hide()
|
||||
inieditor.connect("update_file",self,"_on_update_file")
|
||||
current_ini_editor = inieditor
|
||||
inieditor.current_file_path = path
|
||||
var current_file : ConfigFile = ConfigFile.new()
|
||||
var err = current_file.load(path)
|
||||
if err == OK:
|
||||
var sections = current_file.get_sections()
|
||||
var filemap = []
|
||||
for section in sections:
|
||||
var keys = []
|
||||
var section_keys = current_file.get_section_keys(section)
|
||||
for key in section_keys:
|
||||
keys.append([key,current_file.get_value(section,key)])
|
||||
|
||||
func close_file(index : int) -> void:
|
||||
if editing_file:
|
||||
confirmation_close.popup()
|
||||
else:
|
||||
confirm_close(index)
|
||||
filemap.append([section,keys])
|
||||
|
||||
func confirm_close(index : int) -> void:
|
||||
LastOpenedFiles.remove_opened_file(index,open_file_list)
|
||||
open_file_list.remove_item(index)
|
||||
open_file_name.clear()
|
||||
inieditor.open_file(filemap)
|
||||
|
||||
func close_file(index):
|
||||
LastOpenedFiles.remove_opened_file(index,OpenFileList)
|
||||
OpenFileList.remove_item(index)
|
||||
OpenFileName.clear()
|
||||
current_editor.queue_free()
|
||||
|
||||
if index > 0:
|
||||
open_file_list.select(index-1)
|
||||
_on_fileitem_pressed(index-1)
|
||||
OpenFileList.select(OpenFileList.get_item_count()-1)
|
||||
_on_fileitem_pressed(OpenFileList.get_item_count()-1)
|
||||
|
||||
func _on_update_file() -> void:
|
||||
func _on_update_file():
|
||||
current_editor.clean_editor()
|
||||
var current_file : File = File.new()
|
||||
current_file.open(current_file_path,File.READ)
|
||||
|
||||
var current_content : String = current_file.get_as_text()
|
||||
var last_modified : Dictionary = OS.get_datetime_from_unix_time(current_file.get_modified_time(current_file_path))
|
||||
var current_content = current_file.get_as_text()
|
||||
var last_modified = OS.get_datetime_from_unix_time(current_file.get_modified_time(current_file_path))
|
||||
|
||||
current_file.close()
|
||||
|
||||
current_editor.new_file_open(current_content,last_modified,current_file_path)
|
||||
current_editor.new_file_open(current_content,last_modified)
|
||||
|
||||
func delete_file(files_selected : PoolStringArray) -> void:
|
||||
func delete_file(files_selected : PoolStringArray):
|
||||
var dir = Directory.new()
|
||||
for file in files_selected:
|
||||
dir.remove(file)
|
||||
|
||||
update_list()
|
||||
|
||||
func open_new_file_dialogue() -> void:
|
||||
new_file_dialogue.popup()
|
||||
new_file_dialogue.set_position(OS.get_screen_size()/2 - new_file_dialogue.get_size()/2)
|
||||
func open_newfiledialogue():
|
||||
NewFileDialogue.popup()
|
||||
NewFileDialogue.set_position(OS.get_screen_size()/2 - NewFileDialogue.get_size()/2)
|
||||
|
||||
func open_file_list() -> void:
|
||||
func open_filelist():
|
||||
update_list()
|
||||
file_list.popup()
|
||||
file_list.set_position(OS.get_screen_size()/2 - file_list.get_size()/2)
|
||||
FileList.popup()
|
||||
FileList.set_position(OS.get_screen_size()/2 - FileList.get_size()/2)
|
||||
|
||||
func create_new_file(given_path : String) -> void:
|
||||
var current_file : File = File.new()
|
||||
func create_new_file(given_path : String):
|
||||
var current_file = File.new()
|
||||
current_file.open(given_path,File.WRITE)
|
||||
|
||||
if save_as :
|
||||
current_file.store_line(current_editor.text_editor.get_text())
|
||||
current_file.store_line(current_editor.get_node("TextEditor").get_text())
|
||||
current_file.close()
|
||||
|
||||
open_file(given_path)
|
||||
|
||||
func save_file(current_path : String) -> void:
|
||||
print("Saving file: ",current_path)
|
||||
|
||||
var current_file : File = File.new()
|
||||
func save_file(current_path : String):
|
||||
var current_file = File.new()
|
||||
current_file.open(current_path,File.WRITE)
|
||||
var current_content : String = ""
|
||||
var lines : int = current_editor.text_editor.get_line_count()
|
||||
|
||||
for line in range(lines):
|
||||
#if current_editor.text_editor.get_line(line) == "":
|
||||
# continue
|
||||
|
||||
current_content = current_editor.text_editor.get_text()
|
||||
current_file.store_line(current_editor.text_editor.get_line(line))
|
||||
|
||||
var current_content = ""
|
||||
var lines = current_editor.get_node("TextEditor").get_line_count()
|
||||
for line in range(0,lines):
|
||||
current_content = current_editor.get_node("TextEditor").get_text()
|
||||
current_file.store_line(current_editor.get_node("TextEditor").get_line(line))
|
||||
current_file.close()
|
||||
|
||||
current_file_path = current_path
|
||||
current_file_path = current_file_path
|
||||
|
||||
var last_modified : Dictionary = OS.get_datetime_from_unix_time(current_file.get_modified_time(current_file_path))
|
||||
var last_modified = OS.get_datetime_from_unix_time(current_file.get_modified_time(current_path))
|
||||
|
||||
current_editor.update_lastmodified(last_modified,"save")
|
||||
OpenFileList.set_item_metadata(current_file_index,[current_content,last_modified,current_path])
|
||||
|
||||
if OpenFileList.get_item_text(current_file_index).ends_with("(*)"):
|
||||
OpenFileList.set_item_text(current_file_index,OpenFileList.get_item_text(current_file_index).rstrip("(*)"))
|
||||
|
||||
open_file_list.set_item_metadata(current_file_index,[current_editor])
|
||||
|
||||
if open_file_list.get_item_text(current_file_index).begins_with("(*)"):
|
||||
open_file_list.set_item_text(current_file_index,open_file_list.get_item_text(current_file_index).lstrip("(*)"))
|
||||
editing_file = false
|
||||
|
||||
open_in_inieditor(current_file_path)
|
||||
update_list()
|
||||
|
||||
func clean_editor() -> void:
|
||||
var nodes : Array = get_tree().get_nodes_in_group("vanilla_editor")
|
||||
|
||||
for i in range(nodes.size()):
|
||||
var vanillaeditor : Node = nodes[i]
|
||||
func clean_editor():
|
||||
OpenFileName.clear()
|
||||
OpenFileList.clear()
|
||||
for inieditor in get_tree().get_nodes_in_group("ini_editor"):
|
||||
inieditor.queue_free()
|
||||
for vanillaeditor in get_tree().get_nodes_in_group("vanilla_editor"):
|
||||
vanillaeditor.queue_free()
|
||||
|
||||
open_file_name.clear()
|
||||
open_file_list.clear()
|
||||
|
||||
|
||||
func csv_preview() -> void:
|
||||
var preview : Control = Preview.new()
|
||||
func csv_preview():
|
||||
var preview = Preview.instance()
|
||||
get_parent().get_parent().get_parent().add_child(preview)
|
||||
preview.popup()
|
||||
preview.window_title += " ("+current_file_path.get_file()+")"
|
||||
var lines : int = current_editor.text_editor.get_line_count()
|
||||
var rows : Array = Array()
|
||||
|
||||
var lines = current_editor.get_node("TextEditor").get_line_count()
|
||||
var rows = []
|
||||
for i in range(0,lines-1):
|
||||
rows.append(current_editor.text_editor.get_line(i).rsplit(",",false))
|
||||
|
||||
rows.append(current_editor.get_node("TextEditor").get_line(i).rsplit(",",false))
|
||||
preview.print_csv(rows)
|
||||
|
||||
func bbcode_preview() -> void:
|
||||
var preview : Control = Preview.new()
|
||||
func bbcode_preview():
|
||||
var preview = Preview.instance()
|
||||
get_parent().get_parent().get_parent().add_child(preview)
|
||||
preview.popup()
|
||||
preview.window_title += " ("+current_file_path.get_file()+")"
|
||||
preview.print_bb(current_editor.text_editor.get_text())
|
||||
preview.print_bb(current_editor.get_node("TextEditor").get_text())
|
||||
|
||||
func markdown_preview() -> void:
|
||||
var preview : Control = Preview.new()
|
||||
func markdown_preview():
|
||||
var preview = Preview.instance()
|
||||
get_parent().get_parent().get_parent().add_child(preview)
|
||||
preview.popup()
|
||||
preview.window_title += " ("+current_file_path.get_file()+")"
|
||||
preview.print_markdown(current_editor.text_editor.get_text())
|
||||
preview.print_markdown(current_editor.get_node("TextEditor").get_text())
|
||||
|
||||
func html_preview() -> void:
|
||||
var preview : Control = Preview.new()
|
||||
func html_preview():
|
||||
var preview = Preview.instance()
|
||||
get_parent().get_parent().get_parent().add_child(preview)
|
||||
preview.popup()
|
||||
preview.window_title += " ("+current_file_path.get_file()+")"
|
||||
preview.print_html(current_editor.text_editor.get_text())
|
||||
preview.print_html(current_editor.get_node("TextEditor").get_text())
|
||||
|
||||
func xml_preview():
|
||||
pass
|
||||
|
||||
func _on_vanillaeditor_text_changed() -> void:
|
||||
if not open_file_list.get_item_text(current_file_index).begins_with("(*)"):
|
||||
open_file_list.set_item_text(current_file_index,"(*)"+open_file_list.get_item_text(current_file_index))
|
||||
editing_file = true
|
||||
|
||||
func update_list() -> void:
|
||||
file_list.invalidate()
|
||||
|
||||
func on_wrap_button(index:int) -> void:
|
||||
match index:
|
||||
0:
|
||||
current_editor.set_wrap_enabled(false)
|
||||
1:
|
||||
current_editor.set_wrap_enabled(true)
|
||||
|
||||
func on_minimap_button(index:int) -> void:
|
||||
match index:
|
||||
0:
|
||||
current_editor.draw_minimap(false)
|
||||
1:
|
||||
current_editor.draw_minimap(true)
|
||||
|
||||
func check_file_preview(file : String) -> void:
|
||||
# check whether the opened file has a corresponding preview session for its extension
|
||||
func json_preview():
|
||||
pass
|
||||
|
||||
|
||||
func _on_ConfirmationDialog_confirmed() -> void:
|
||||
confirm_close(current_file_index)
|
||||
func _on_vanillaeditor_text_changed():
|
||||
if not OpenFileList.get_item_text(current_file_index).ends_with("(*)"):
|
||||
OpenFileList.set_item_text(current_file_index,OpenFileList.get_item_text(current_file_index)+"(*)")
|
||||
|
||||
|
||||
func update_list():
|
||||
FileList.invalidate()
|
19
addons/file-editor/scripts/FileEditorButton.gd
Normal file
@ -0,0 +1,19 @@
|
||||
tool
|
||||
extends ToolButton
|
||||
|
||||
var fileditor_workspace
|
||||
var fileditor
|
||||
|
||||
func _ready():
|
||||
connect("pressed",self,"show_fileditor")
|
||||
|
||||
func show_fileditor():
|
||||
fileditor_workspace.get_children()[0].hide()
|
||||
fileditor_workspace.get_children()[1].hide()
|
||||
fileditor_workspace.get_children()[2].hide()
|
||||
fileditor_workspace.add_child(fileditor)
|
||||
fileditor.show()
|
||||
|
||||
func load_values(fi, fe):
|
||||
fileditor_workspace = fi
|
||||
fileditor = fe
|
196
addons/file-editor/scripts/FileScene.gd
Normal file
@ -0,0 +1,196 @@
|
||||
tool
|
||||
extends VBoxContainer
|
||||
|
||||
|
||||
onready var ReadOnly = $FileInfo/Readonly
|
||||
|
||||
onready var TextEditor = $TextEditor
|
||||
|
||||
onready var LastModified = $FileInfo/lastmodified
|
||||
|
||||
onready var FileList = get_parent().get_parent().get_parent().get_node("FileList")
|
||||
|
||||
onready var ClosingFile = get_parent().get_parent().get_parent().get_node("ConfirmationDialog")
|
||||
|
||||
onready var LastModifiedIcon = $FileInfo/lastmodified_icon
|
||||
|
||||
onready var SearchBox = $SearchBox
|
||||
onready var ReplaceBox = $ReplaceBox
|
||||
|
||||
onready var c_counter = $FileInfo/c_counter
|
||||
|
||||
var current_path = ""
|
||||
var current_filename = ""
|
||||
var Preview = load("res://addons/file-editor/scenes/Preview.tscn")
|
||||
|
||||
|
||||
var search_flag = 0
|
||||
|
||||
signal text_changed()
|
||||
|
||||
func _ready():
|
||||
ClosingFile.connect("confirmed",self,"queue_free")
|
||||
|
||||
ReadOnly.connect("toggled",self,"_on_Readonly_toggled")
|
||||
|
||||
ReadOnly.set("custom_icons/checked",IconLoader.load_icon_from_name("read"))
|
||||
ReadOnly.set("custom_icons/unchecked",IconLoader.load_icon_from_name("edit"))
|
||||
|
||||
add_to_group("vanilla_editor")
|
||||
|
||||
func color_region(filextension : String): # -----------------------------> dal momento che voglio creare un editor per ogni file, renderò questa funzione singola in base all'estensione del file
|
||||
match(filextension):
|
||||
"bbs":
|
||||
TextEditor.add_color_region("[b]","[/b]",Color8(153,153,255,255),false)
|
||||
TextEditor.add_color_region("[i]","[/i]",Color8(153,255,153,255),false)
|
||||
TextEditor.add_color_region("[s]","[/s]",Color8(255,153,153,255),false)
|
||||
TextEditor.add_color_region("[u]","[/u]",Color8(255,255,102,255),false)
|
||||
TextEditor.add_color_region("[url","[/url]",Color8(153,204,255,255),false)
|
||||
TextEditor.add_color_region("[code]","[/code]",Color8(192,192,192,255),false)
|
||||
TextEditor.add_color_region("[img]","[/img]",Color8(255,204,153,255),false)
|
||||
TextEditor.add_color_region("[center]","[/center]",Color8(175,238,238,255),false)
|
||||
TextEditor.add_color_region("[right]","[/right]",Color8(135,206,235,255),false)
|
||||
"html":
|
||||
TextEditor.add_color_region("<b>","</b>",Color8(153,153,255,255),false)
|
||||
TextEditor.add_color_region("<i>","</i>",Color8(153,255,153,255),false)
|
||||
TextEditor.add_color_region("<del>","</del>",Color8(255,153,153,255),false)
|
||||
TextEditor.add_color_region("<ins>","</ins>",Color8(255,255,102,255),false)
|
||||
TextEditor.add_color_region("<a","</a>",Color8(153,204,255,255),false)
|
||||
TextEditor.add_color_region("<img","/>",Color8(255,204,153,255),true)
|
||||
TextEditor.add_color_region("<pre>","</pre>",Color8(192,192,192,255),false)
|
||||
TextEditor.add_color_region("<center>","</center>",Color8(175,238,238,255),false)
|
||||
TextEditor.add_color_region("<right>","</right>",Color8(135,206,235,255),false)
|
||||
"md":
|
||||
TextEditor.add_color_region("**","**",Color8(153,153,255,255),false)
|
||||
TextEditor.add_color_region("*","*",Color8(153,255,153,255),false)
|
||||
TextEditor.add_color_region("+ ","",Color8(255,178,102,255),false)
|
||||
TextEditor.add_color_region("- ","",Color8(255,178,102,255),false)
|
||||
TextEditor.add_color_region("~~","~~",Color8(255,153,153,255),false)
|
||||
TextEditor.add_color_region("__","__",Color8(255,255,102,255),false)
|
||||
TextEditor.add_color_region("[",")",Color8(153,204,255,255),false)
|
||||
TextEditor.add_color_region("`","`",Color8(192,192,192,255),false)
|
||||
TextEditor.add_color_region('"*.','"',Color8(255,255,255,255),true)
|
||||
TextEditor.add_color_region("# ","",Color8(105,105,105,255),true)
|
||||
TextEditor.add_color_region("## ","",Color8(128,128,128,255),true)
|
||||
TextEditor.add_color_region("### ","",Color8(169,169,169,255),true)
|
||||
TextEditor.add_color_region("#### ","",Color8(192,192,192,255),true)
|
||||
TextEditor.add_color_region("##### ","",Color8(211,211,211,255),true)
|
||||
TextEditor.add_color_region("###### ","",Color8(255,255,255,255),true)
|
||||
"cfg":
|
||||
TextEditor.add_color_region("[","]",Color8(153,204,255,255),false)
|
||||
TextEditor.add_color_region('"','"',Color8(255,255,102,255),false)
|
||||
_:
|
||||
pass
|
||||
|
||||
func clean_editor():
|
||||
TextEditor.set_text("")
|
||||
LastModifiedIcon.texture = IconLoader.load_icon_from_name("save")
|
||||
LastModified.set_text("")
|
||||
FileList.invalidate()
|
||||
current_filename = ""
|
||||
current_path = ""
|
||||
|
||||
func new_file_open(file_content, last_modified , current_file_path):
|
||||
current_path = current_file_path
|
||||
current_filename = current_file_path.get_file()
|
||||
color_region(current_filename.get_extension())
|
||||
TextEditor.set_text(file_content)
|
||||
update_lastmodified(last_modified,"save")
|
||||
FileList.invalidate()
|
||||
count_characters()
|
||||
|
||||
func update_lastmodified(last_modified : Dictionary, icon : String):
|
||||
LastModified.set_text(str(last_modified.hour)+":"+str(last_modified.minute)+" "+str(last_modified.day)+"/"+str(last_modified.month)+"/"+str(last_modified.year))
|
||||
LastModifiedIcon.texture = IconLoader.load_icon_from_name(icon)
|
||||
|
||||
func new_file_create(file_name):
|
||||
TextEditor.set_text("")
|
||||
|
||||
FileList.invalidate()
|
||||
|
||||
func _on_Readonly_toggled(button_pressed):
|
||||
if button_pressed:
|
||||
ReadOnly.set_text("Read Only")
|
||||
TextEditor.readonly = (true)
|
||||
else:
|
||||
ReadOnly.set_text("Can Edit")
|
||||
TextEditor.readonly = (false)
|
||||
|
||||
func _on_TextEditor_text_changed():
|
||||
LastModifiedIcon.texture = IconLoader.load_icon_from_name("saveas")
|
||||
count_characters()
|
||||
emit_signal("text_changed")
|
||||
|
||||
func count_characters():
|
||||
var counted : int = 0
|
||||
for line in TextEditor.get_line_count():
|
||||
counted += TextEditor.get_line(line).length()
|
||||
c_counter.set_text(str(counted))
|
||||
|
||||
func _on_LineEdit_text_changed(new_text):
|
||||
var linecount = TextEditor.get_line_count()
|
||||
if new_text != "":
|
||||
var found
|
||||
var find = false
|
||||
for line in range(0,linecount):
|
||||
for column in range(0,TextEditor.get_line(line).length()):
|
||||
found = TextEditor.search( new_text, search_flag, line , column )
|
||||
if found.size():
|
||||
if found[1] == line:
|
||||
# if not find:
|
||||
TextEditor.select(line,found[0],found[1],found[0]+new_text.length())
|
||||
# find = true
|
||||
else:
|
||||
TextEditor.select(0,0,0,0)
|
||||
else:
|
||||
TextEditor.select(0,0,0,0)
|
||||
|
||||
func _on_matchcase_toggled(button_pressed):
|
||||
if button_pressed:
|
||||
search_flag = 1
|
||||
else:
|
||||
if $SearchBox/wholewords.is_pressed():
|
||||
search_flag = 2
|
||||
else:
|
||||
search_flag = 0
|
||||
_on_LineEdit_text_changed($SearchBox/LineEdit.get_text())
|
||||
|
||||
func _on_wholewords_toggled(button_pressed):
|
||||
if button_pressed:
|
||||
search_flag = 2
|
||||
else:
|
||||
if $SearchBox/matchcase.is_pressed():
|
||||
search_flag = 1
|
||||
else:
|
||||
search_flag = 0
|
||||
_on_LineEdit_text_changed($SearchBox/LineEdit.get_text())
|
||||
|
||||
func _on_close_pressed():
|
||||
SearchBox.hide()
|
||||
|
||||
func open_searchbox():
|
||||
if SearchBox.visible:
|
||||
SearchBox.hide()
|
||||
else:
|
||||
SearchBox.show()
|
||||
SearchBox.get_node("LineEdit").grab_focus()
|
||||
|
||||
func _on_Button_pressed():
|
||||
var linecount = TextEditor.get_line_count()-1
|
||||
var old_text = $ReplaceBox/replace.get_text()
|
||||
var new_text = $ReplaceBox/with.get_text()
|
||||
var text = TextEditor.get_text()
|
||||
TextEditor.set_text(text.replace(old_text,new_text))
|
||||
|
||||
func open_replacebox():
|
||||
if ReplaceBox.visible:
|
||||
ReplaceBox.hide()
|
||||
else:
|
||||
ReplaceBox.show()
|
||||
ReplaceBox.get_node("replace").grab_focus()
|
||||
|
||||
func _on_close2_pressed():
|
||||
ReplaceBox.hide()
|
||||
|
||||
func _on_LineEdit_focus_entered():
|
||||
_on_LineEdit_text_changed($SearchBox/LineEdit.get_text())
|
@ -1,13 +1,21 @@
|
||||
tool
|
||||
extends Node
|
||||
|
||||
signal image_downloaded()
|
||||
signal image_completed()
|
||||
|
||||
var imgBuffer
|
||||
|
||||
func _ready():
|
||||
pass
|
||||
|
||||
func load_icon_from_name(icon_name : String) -> ImageTexture:
|
||||
var file : File = File.new()
|
||||
var image : Image = Image.new()
|
||||
var texture : ImageTexture = ImageTexture.new()
|
||||
var file = File.new()
|
||||
var image = Image.new()
|
||||
var texture = ImageTexture.new()
|
||||
|
||||
file.open("res://addons/file-editor/icons.pngs/"+icon_name+".png.buttonicon", File.READ)
|
||||
var buffer : PoolByteArray = file.get_buffer(file.get_len())
|
||||
var buffer = file.get_buffer(file.get_len())
|
||||
file.close()
|
||||
|
||||
image.load_png_from_buffer(buffer)
|
||||
|
274
addons/file-editor/scripts/IniVisualEditor.gd
Normal file
@ -0,0 +1,274 @@
|
||||
extends Control
|
||||
tool
|
||||
|
||||
onready var Keys = $VBoxContainer/HSplitContainer/VBoxContainer2/keys
|
||||
onready var Sections = $VBoxContainer/HSplitContainer/VBoxContainer/sections2
|
||||
|
||||
onready var BtnAddSection = $VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer2/btn_add_section
|
||||
onready var BtnRemoveSection = $VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer2/btn_remove_section
|
||||
|
||||
onready var BtnAddKey = $VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer3/btn_add_key
|
||||
onready var BtnEditKey = $VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer3/btn_edit_key
|
||||
onready var BtnRemoveKey = $VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer3/btn_remove_key
|
||||
|
||||
onready var Section = $Section
|
||||
onready var Key = $Key
|
||||
|
||||
var selected_key
|
||||
var selected_section : int = -1
|
||||
var root : TreeItem
|
||||
|
||||
var current_file_path : String = ""
|
||||
|
||||
signal update_file()
|
||||
|
||||
func _ready():
|
||||
create_table_names()
|
||||
connect_signals()
|
||||
load_icons()
|
||||
clean_editor()
|
||||
|
||||
add_to_group("ini_editor")
|
||||
|
||||
# var metadata = [["name","Godot Engine"],["version","1.0.0"],["color","Light Blue"]]
|
||||
# load_section("Engine", metadata)
|
||||
|
||||
func connect_signals():
|
||||
Sections.connect("item_selected",self,"_on_section_selected")
|
||||
Sections.connect("nothing_selected",self,"_on_nosection_selected")
|
||||
|
||||
BtnAddSection.connect("pressed",self,"_on_addsection_pressed")
|
||||
BtnRemoveSection.connect("pressed",self,"_on_removesection_pressed")
|
||||
|
||||
Keys.connect("item_selected",self,"_on_key_selected")
|
||||
Keys.connect("nothing_selected",self,"_on_nokey_selected")
|
||||
|
||||
BtnAddKey.connect("pressed",self,"_on_addkey_pressed")
|
||||
BtnRemoveKey.connect("pressed",self,"_on_removekey_pressed")
|
||||
BtnEditKey.connect("pressed",self,"_on_editkey_pressed")
|
||||
|
||||
func create_table_names():
|
||||
create_root()
|
||||
Keys.hide_root = true
|
||||
|
||||
Keys.set_column_titles_visible(true)
|
||||
Keys.set_column_title(0,"Name")
|
||||
Keys.set_column_title(1,"Value")
|
||||
|
||||
func load_icons():
|
||||
$VBoxContainer/HSplitContainer/VBoxContainer/HBoxContainer/sections_icon.texture = IconLoader.load_icon_from_name("sections")
|
||||
$VBoxContainer/HSplitContainer/VBoxContainer2/HBoxContainer2/keys_icon.texture = IconLoader.load_icon_from_name("keys")
|
||||
BtnAddSection.icon = IconLoader.load_icon_from_name("add")
|
||||
BtnAddSection.hint_tooltip = "Add a new Section"
|
||||
BtnRemoveSection.icon = IconLoader.load_icon_from_name("delete")
|
||||
BtnRemoveSection.hint_tooltip = "Remove selected Section"
|
||||
|
||||
BtnAddKey.icon = IconLoader.load_icon_from_name("add")
|
||||
BtnAddKey.hint_tooltip = "Add a new Key"
|
||||
BtnRemoveKey.icon = IconLoader.load_icon_from_name("delete")
|
||||
BtnRemoveKey.hint_tooltip = "Remove selected Key"
|
||||
BtnEditKey.icon = IconLoader.load_icon_from_name("edit_")
|
||||
BtnEditKey.hint_tooltip = "Edit selected Key"
|
||||
|
||||
func _on_addsection_pressed():
|
||||
Section.get_node("Container/section/_name").show()
|
||||
Section.window_title = "Add a new Section"
|
||||
if not Section.is_connected("confirmed",self,"new_section"):
|
||||
Section.connect("confirmed",self,"new_section")
|
||||
if Section.is_connected("confirmed",self,"remove_section"):
|
||||
Section.disconnect("confirmed",self,"remove_section")
|
||||
Section.popup()
|
||||
|
||||
func _on_removesection_pressed():
|
||||
Section.get_node("Container").hide()
|
||||
Section.window_title = "Remove selected Section"
|
||||
Section.dialog_text = "Are you sure you want to remove this Section?"
|
||||
if not Section.is_connected("confirmed",self,"remove_section"):
|
||||
Section.connect("confirmed",self,"remove_section")
|
||||
if Section.is_connected("confirmed",self,"new_section"):
|
||||
Section.disconnect("confirmed",self,"new_section")
|
||||
Section.popup()
|
||||
|
||||
func _on_addkey_pressed():
|
||||
Key.get_node("data").show()
|
||||
Key.get_node("data/HBoxContainer/name").editable = true
|
||||
Key.get_node("data/HBoxContainer/name").set_text("")
|
||||
Key.window_title = "Add a new Key"
|
||||
Key.dialog_text = ""
|
||||
if not Key.is_connected("confirmed",self,"new_key"):
|
||||
Key.connect("confirmed",self,"new_key")
|
||||
if Key.is_connected("confirmed",self,"edit_key"):
|
||||
Key.disconnect("confirmed",self,"edit_key")
|
||||
if Key.is_connected("confirmed",self,"remove_key"):
|
||||
Key.disconnect("confirmed",self,"remove_key")
|
||||
Key.popup()
|
||||
|
||||
func _on_removekey_pressed():
|
||||
Key.get_node("data").hide()
|
||||
Key.window_title = "Delete selected Key"
|
||||
Key.dialog_text = "Are you sure you want to remove the selected Key?"
|
||||
if not Key.is_connected("confirmed",self,"remove_key"):
|
||||
Key.connect("confirmed",self,"remove_key")
|
||||
if Key.is_connected("confirmed",self,"edit_key"):
|
||||
Key.disconnect("confirmed",self,"edit_key")
|
||||
if Key.is_connected("confirmed",self,"new_key"):
|
||||
Key.disconnect("confirmed",self,"new_key")
|
||||
Key.popup()
|
||||
|
||||
func _on_editkey_pressed():
|
||||
Key.get_node("data").show()
|
||||
Key.get_node("data/HBoxContainer/name").editable = false
|
||||
Key.get_node("data/HBoxContainer/name").set_text(str(selected_key.get_text(0)))
|
||||
Key.window_title = "Edit selected Key"
|
||||
Key.dialog_text = ""
|
||||
if not Key.is_connected("confirmed",self,"edit_key"):
|
||||
Key.connect("confirmed",self,"edit_key")
|
||||
if Key.is_connected("confirmed",self,"remove_key"):
|
||||
Key.disconnect("confirmed",self,"remove_key")
|
||||
if Key.is_connected("confirmed",self,"new_key"):
|
||||
Key.disconnect("confirmed",self,"new_key")
|
||||
Key.popup()
|
||||
|
||||
func clean_editor():
|
||||
Keys.clear()
|
||||
Sections.clear()
|
||||
selected_section = -1
|
||||
BtnAddKey.disabled = true
|
||||
if current_file_path == "":
|
||||
BtnAddSection.disabled = true
|
||||
else:
|
||||
BtnAddSection.disabled = false
|
||||
BtnEditKey.disabled = true
|
||||
BtnRemoveKey.disabled = true
|
||||
BtnRemoveSection.disabled = true
|
||||
|
||||
create_root()
|
||||
|
||||
func open_file(filemap : Array):
|
||||
clean_editor()
|
||||
for section in filemap:
|
||||
load_sections(section[0],section[1])
|
||||
|
||||
func new_section():
|
||||
var file = ConfigFile.new()
|
||||
file.load(current_file_path)
|
||||
|
||||
var section_name = str(Section.get_node("Container/section/_name").get_text())
|
||||
var key_name = str(Section.get_node("Container/key/_name").get_text())
|
||||
var key_value = Section.get_node("Container/value/_value").get_text()
|
||||
|
||||
if section_name and key_name and key_value:
|
||||
file.set_value(section_name,key_name,key_value)
|
||||
file.save(current_file_path)
|
||||
|
||||
load_sections(section_name,[[key_name,key_value]])
|
||||
|
||||
emit_signal("update_file")
|
||||
else:
|
||||
print("Section <",section_name,"> with Key name: <",key_name,"> and Key value: <",key_value,"> not valid.")
|
||||
|
||||
func remove_section():
|
||||
var file = ConfigFile.new()
|
||||
file.load(current_file_path)
|
||||
var current_section = Sections.get_item_text(selected_section)
|
||||
file.erase_section(current_section)
|
||||
Sections.remove_item(selected_section)
|
||||
file.save(current_file_path)
|
||||
|
||||
emit_signal("update_file")
|
||||
|
||||
func new_key():
|
||||
var key_name = str(Key.get_node("data/HBoxContainer/name").get_text())
|
||||
var key_value = Key.get_node("data/HBoxContainer2/value").get_text()
|
||||
if key_name and key_value:
|
||||
|
||||
var file = ConfigFile.new()
|
||||
file.load(current_file_path)
|
||||
|
||||
var current_section = Sections.get_item_text(selected_section)
|
||||
|
||||
file.set_value(current_section,key_name,key_value)
|
||||
file.save(current_file_path)
|
||||
|
||||
load_keys_selected_section([[key_name,key_value]])
|
||||
|
||||
file.save(current_file_path)
|
||||
|
||||
emit_signal("update_file")
|
||||
else:
|
||||
print("Key name: <",key_name,"> with Key value: <",key_value,"> not valid.")
|
||||
|
||||
func remove_key():
|
||||
var section = Sections.get_item_text(selected_section)
|
||||
var sectionmetadata = Sections.get_item_metadata(selected_section)
|
||||
|
||||
for meta in sectionmetadata:
|
||||
if meta.has(selected_key.get_text(0)):
|
||||
sectionmetadata.erase(meta)
|
||||
|
||||
Sections.set_item_metadata(selected_section,sectionmetadata)
|
||||
|
||||
if Sections.get_item_metadata(selected_section) == []:
|
||||
Sections.remove_item(selected_section)
|
||||
|
||||
var file = ConfigFile.new()
|
||||
file.load(current_file_path)
|
||||
file.set_value(section,selected_key.get_text(0),null)
|
||||
file.save(current_file_path)
|
||||
|
||||
Keys.clear()
|
||||
create_root()
|
||||
load_keys_selected_section(sectionmetadata)
|
||||
|
||||
emit_signal("update_file")
|
||||
|
||||
func edit_key():
|
||||
remove_key()
|
||||
new_key()
|
||||
|
||||
# load a section with custom fields @section_name = name of section ; @section_metadata = keys of this section with keys' properties
|
||||
func load_sections(section_name : String, section_metadata : Array):
|
||||
Sections.add_item(section_name,IconLoader.load_icon_from_name("section"),true)
|
||||
Sections.set_item_metadata(Sections.get_item_count()-1,section_metadata)
|
||||
|
||||
# load a key of a selected section to fill the "keys" list
|
||||
func load_keys_selected_section(metadata : Array):
|
||||
for key in metadata:
|
||||
var key_item = Keys.create_item(root)
|
||||
key_item.set_text(0,key[0])
|
||||
key_item.set_text(1,key[1])
|
||||
|
||||
func _on_section_selected(index : int):
|
||||
Keys.clear()
|
||||
create_root()
|
||||
BtnRemoveSection.disabled = false
|
||||
BtnAddSection.disabled = false
|
||||
BtnAddKey.disabled = false
|
||||
BtnRemoveKey.disabled = true
|
||||
BtnEditKey.disabled = true
|
||||
|
||||
selected_section = index
|
||||
if Sections.get_item_metadata(index):
|
||||
load_keys_selected_section(Sections.get_item_metadata(index))
|
||||
|
||||
func _on_key_selected():
|
||||
selected_key = Keys.get_selected()
|
||||
BtnRemoveKey.disabled = false
|
||||
BtnEditKey.disabled = false
|
||||
|
||||
func _on_nosection_selected():
|
||||
BtnRemoveKey.disabled = true
|
||||
BtnAddKey.disabled = true
|
||||
BtnEditKey.disabled = true
|
||||
BtnRemoveSection.disabled = true
|
||||
Keys.clear()
|
||||
selected_section = -1
|
||||
|
||||
func _on_nokey_selected():
|
||||
BtnRemoveKey.disabled = true
|
||||
BtnEditKey.disabled = true
|
||||
|
||||
func create_root():
|
||||
root = Keys.create_item()
|
||||
root.set_text(0,"KEY_NAME")
|
||||
root.set_text(1,"KEY_VALUE")
|
@ -1,71 +1,33 @@
|
||||
tool
|
||||
extends Reference
|
||||
extends Node
|
||||
|
||||
var editor_plugin : EditorPlugin = null
|
||||
var editor_settings : EditorSettings = null
|
||||
const lastopenedfile_path : String = "res://addons/file-editor/lastopenedfiles.lastcfg"
|
||||
|
||||
func store_opened_files(filecontainer : Control) -> void:
|
||||
var arr : Array = Array()
|
||||
func _ready():
|
||||
pass
|
||||
|
||||
for child in range(filecontainer.get_item_count()):
|
||||
var filepath : String = filecontainer.get_item_metadata(child)[0].current_path
|
||||
func store_opened_files(filecontainer : Control):
|
||||
var file = ConfigFile.new()
|
||||
file.load(lastopenedfile_path)
|
||||
for child in range(0,filecontainer.get_item_count()):
|
||||
var filepath = filecontainer.get_item_metadata(child)[2]
|
||||
file.set_value("Opened",filepath.get_file(),filepath)
|
||||
|
||||
var a : Array = Array()
|
||||
a.push_back(filepath.get_file())
|
||||
a.push_back(filepath)
|
||||
file.save(lastopenedfile_path)
|
||||
|
||||
arr.push_back(a)
|
||||
|
||||
editor_settings.set_project_metadata("file_editor", "files", arr)
|
||||
|
||||
func remove_opened_file(index : int , filecontainer : Control) -> void:
|
||||
var filepath : String = filecontainer.get_item_metadata(index)[0].current_path
|
||||
var f : String = filepath.get_file()
|
||||
|
||||
var arr : Array = editor_settings.get_project_metadata("file_editor", "files", Array())
|
||||
|
||||
for i in range(arr.size()):
|
||||
var a : Array = arr[i]
|
||||
|
||||
if a[0] == f:
|
||||
arr.remove(i)
|
||||
break
|
||||
|
||||
editor_settings.set_project_metadata("file_editor", "files", arr)
|
||||
|
||||
var fonts_dict : Dictionary = editor_settings.get_project_metadata("file_editor", "file_fonts", Dictionary())
|
||||
|
||||
if fonts_dict.has(f):
|
||||
fonts_dict.erase(f)
|
||||
editor_settings.set_project_metadata("file_editor", "file_fonts", fonts_dict)
|
||||
func remove_opened_file(index : int , filecontainer : Control):
|
||||
var file = ConfigFile.new()
|
||||
file.load(lastopenedfile_path)
|
||||
var filepath = filecontainer.get_item_metadata(index)[2]
|
||||
file.set_value("Opened",filepath.get_file(),null)
|
||||
file.save(lastopenedfile_path)
|
||||
|
||||
func load_opened_files() -> Array:
|
||||
var arr : Array = editor_settings.get_project_metadata("file_editor", "files", Array())
|
||||
var fonts_dict : Dictionary = editor_settings.get_project_metadata("file_editor", "file_fonts", Dictionary())
|
||||
var keys : Array = Array()
|
||||
for i in range(arr.size()):
|
||||
var a : Array = arr[i]
|
||||
|
||||
# creating and returning an Array with this format [1:file name, 2:file path, 3:file font]
|
||||
var k : Array
|
||||
k.push_back(a[0])
|
||||
k.push_back(a[1])
|
||||
|
||||
if fonts_dict.has(a[0]):
|
||||
k.push_back(fonts_dict[a[0]])
|
||||
else:
|
||||
k.push_back("null")
|
||||
|
||||
keys.append(k)
|
||||
|
||||
var file = ConfigFile.new()
|
||||
file.load(lastopenedfile_path)
|
||||
var keys = []
|
||||
if file.has_section("Opened"):
|
||||
var openedfiles = file.get_section_keys("Opened")
|
||||
for openedfile in openedfiles:
|
||||
keys.append([openedfile,file.get_value("Opened",openedfile)])
|
||||
return keys
|
||||
|
||||
func store_editor_fonts(file_name : String, font_path : String) -> void:
|
||||
var fonts_dict : Dictionary = editor_settings.get_project_metadata("file_editor", "file_fonts", Dictionary())
|
||||
fonts_dict[file_name] = font_path
|
||||
editor_settings.set_project_metadata("file_editor", "file_fonts", fonts_dict)
|
||||
|
||||
|
||||
func get_editor_font() -> String:
|
||||
#var editor_plugin : EditorPlugin = EditorPlugin.new()
|
||||
return editor_plugin.get_editor_interface().get_editor_settings().get_setting("interface/editor/code_font")
|
||||
|
@ -1,160 +1,118 @@
|
||||
tool
|
||||
extends WindowDialog
|
||||
|
||||
var text_preview : RichTextLabel = null
|
||||
var table_preview : GridContainer = null
|
||||
onready var TextPreview = $Container/TextPreview
|
||||
onready var TablePreview = $Container/TablePreview
|
||||
|
||||
signal image_downloaded()
|
||||
signal image_loaded()
|
||||
|
||||
func _init() -> void:
|
||||
window_title = "File preview"
|
||||
resizable = true
|
||||
set_anchors_and_margins_preset(Control.PRESET_WIDE)
|
||||
margin_left = 81
|
||||
margin_top = 47
|
||||
margin_right = -80
|
||||
margin_bottom = -48
|
||||
var imgBuffer : Image
|
||||
|
||||
var vbc : VBoxContainer = VBoxContainer.new()
|
||||
vbc.set_anchors_and_margins_preset(Control.PRESET_WIDE)
|
||||
add_child(vbc)
|
||||
func _ready():
|
||||
TextPreview.hide()
|
||||
TablePreview.hide()
|
||||
|
||||
text_preview = RichTextLabel.new()
|
||||
vbc.add_child(text_preview)
|
||||
text_preview.scroll_following = true
|
||||
text_preview.bbcode_enabled = true
|
||||
text_preview.size_flags_vertical = SIZE_EXPAND_FILL
|
||||
text_preview.hide()
|
||||
func print_preview(content : String):
|
||||
TextPreview.append_bbcode(content)
|
||||
TextPreview.show()
|
||||
|
||||
table_preview = GridContainer.new()
|
||||
vbc.add_child(table_preview)
|
||||
table_preview.columns = 3
|
||||
table_preview.size_flags_horizontal = SIZE_EXPAND_FILL
|
||||
table_preview.size_flags_vertical = SIZE_EXPAND_FILL
|
||||
table_preview.hide()
|
||||
func print_bb(content : String):
|
||||
TextPreview.append_bbcode(content)
|
||||
TextPreview.show()
|
||||
|
||||
connect("popup_hide", self, "_on_Preview_popup_hide")
|
||||
func print_markdown(content : String):
|
||||
var result = ""
|
||||
var bolded = []
|
||||
var italics = []
|
||||
var striked = []
|
||||
var coded = []
|
||||
var linknames = []
|
||||
var images = []
|
||||
var links = []
|
||||
var lists = []
|
||||
var underlined = []
|
||||
|
||||
func print_preview(content : String) -> void:
|
||||
text_preview.append_bbcode(content)
|
||||
text_preview.show()
|
||||
|
||||
func print_bb(content : String) -> void:
|
||||
text_preview.append_bbcode(content)
|
||||
text_preview.show()
|
||||
|
||||
func print_markdown(content : String) -> void:
|
||||
var result : Array = Array()
|
||||
var bolded : Array = Array()
|
||||
var italics : Array = Array()
|
||||
var striked : Array = Array()
|
||||
var coded : Array = Array()
|
||||
var linknames : Array = Array()
|
||||
var images : Array = Array()
|
||||
var links : Array = Array()
|
||||
var lists : Array = Array()
|
||||
var underlined : Array = Array()
|
||||
|
||||
var regex : RegEx = RegEx.new()
|
||||
var regex = RegEx.new()
|
||||
regex.compile('\\*\\*(?<boldtext>.*)\\*\\*')
|
||||
result = regex.search_all(content)
|
||||
for i in range(result.size()):
|
||||
var res : RegExMatch = result[i]
|
||||
if result:
|
||||
for res in result:
|
||||
bolded.append(res.get_string("boldtext"))
|
||||
|
||||
regex.compile('\\_\\_(?<underlinetext>.*)\\_\\_')
|
||||
result = regex.search_all(content)
|
||||
for i in range(result.size()):
|
||||
var res : RegExMatch = result[i]
|
||||
if result:
|
||||
for res in result:
|
||||
underlined.append(res.get_string("underlinetext"))
|
||||
|
||||
regex.compile("\\*(?<italictext>.*)\\*")
|
||||
result = regex.search_all(content)
|
||||
for i in range(result.size()):
|
||||
var res : RegExMatch = result[i]
|
||||
if result:
|
||||
for res in result:
|
||||
italics.append(res.get_string("italictext"))
|
||||
|
||||
regex.compile("~~(?<strikedtext>.*)~~")
|
||||
result = regex.search_all(content)
|
||||
for i in range(result.size()):
|
||||
var res : RegExMatch = result[i]
|
||||
if result:
|
||||
for res in result:
|
||||
striked.append(res.get_string("strikedtext"))
|
||||
|
||||
regex.compile("`(?<coded>.*)`")
|
||||
result = regex.search_all(content)
|
||||
for i in range(result.size()):
|
||||
var res : RegExMatch = result[i]
|
||||
if result:
|
||||
for res in result:
|
||||
coded.append(res.get_string("coded"))
|
||||
|
||||
regex.compile("[+-*](?<element>\\s.*)")
|
||||
result = regex.search_all(content)
|
||||
for i in range(result.size()):
|
||||
var res : RegExMatch = result[i]
|
||||
if result:
|
||||
for res in result:
|
||||
lists.append(res.get_string("element"))
|
||||
|
||||
regex.compile("(?<img>!\\[.*?\\))")
|
||||
result = regex.search_all(content)
|
||||
for i in range(result.size()):
|
||||
var res : RegExMatch = result[i]
|
||||
if result:
|
||||
for res in result:
|
||||
images.append(res.get_string("img"))
|
||||
|
||||
regex.compile("\\[(?<linkname>.*?)\\]|\\((?<link>[h\\.]\\S*?)\\)")
|
||||
result = regex.search_all(content)
|
||||
for i in range(result.size()):
|
||||
var res : RegExMatch = result[i]
|
||||
|
||||
if result:
|
||||
for res in result:
|
||||
if res.get_string("link")!="":
|
||||
links.append(res.get_string("link"))
|
||||
|
||||
if res.get_string("linkname")!="":
|
||||
linknames.append(res.get_string("linkname"))
|
||||
|
||||
for i in range(bolded.size()):
|
||||
var bold : String = bolded[i]
|
||||
for bold in bolded:
|
||||
content = content.replace("**"+bold+"**","[b]"+bold+"[/b]")
|
||||
|
||||
for i in range(italics.size()):
|
||||
var italic : String = italics[i]
|
||||
for italic in italics:
|
||||
content = content.replace("*"+italic+"*","[i]"+italic+"[/i]")
|
||||
|
||||
for i in range(striked.size()):
|
||||
var strik : String = striked[i]
|
||||
for strik in striked:
|
||||
content = content.replace("~~"+strik+"~~","[s]"+strik+"[/s]")
|
||||
|
||||
for i in range(underlined.size()):
|
||||
var underline : String = underlined[i]
|
||||
for underline in underlined:
|
||||
content = content.replace("__"+underline+"__","[u]"+underline+"[/u]")
|
||||
|
||||
for i in range(coded.size()):
|
||||
var code : String = coded[i]
|
||||
for code in coded:
|
||||
content = content.replace("`"+code+"`","[code]"+code+"[/code]")
|
||||
|
||||
for i in range(images.size()):
|
||||
var image : String = images[i]
|
||||
for image in images:
|
||||
var substr = image.split("(")
|
||||
var imglink = substr[1].rstrip(")")
|
||||
content = content.replace(image,"[img]"+imglink+"[/img]")
|
||||
|
||||
for i in links.size():
|
||||
content = content.replace("["+linknames[i]+"]("+links[i]+")","[url="+links[i]+"]"+linknames[i]+"[/url]")
|
||||
|
||||
for i in range(lists.size()):
|
||||
var element : String = lists[i]
|
||||
|
||||
for element in lists:
|
||||
if content.find("- "+element):
|
||||
content = content.replace("-"+element,"[indent]-"+element+"[/indent]")
|
||||
|
||||
if content.find("+ "+element):
|
||||
content = content.replace("+"+element,"[indent]-"+element+"[/indent]")
|
||||
|
||||
if content.find("* "+element):
|
||||
content = content.replace("+"+element,"[indent]-"+element+"[/indent]")
|
||||
|
||||
text_preview.append_bbcode(content)
|
||||
text_preview.show()
|
||||
TextPreview.append_bbcode(content)
|
||||
TextPreview.show()
|
||||
|
||||
func print_html(content : String) -> void:
|
||||
func print_html(content : String):
|
||||
content = content.replace("<i>","[i]")
|
||||
content = content.replace("</i>","[/i]")
|
||||
content = content.replace("<b>","[b]")
|
||||
@ -175,14 +133,12 @@ func print_html(content : String) -> void:
|
||||
content = content.replace("</pre>","[/code]")
|
||||
content = content.replace("<center>","[center]")
|
||||
content = content.replace("</center>","[/center]")
|
||||
content = content.replace("<right>","[right]")
|
||||
content = content.replace("</right>","[/right]")
|
||||
|
||||
text_preview.append_bbcode(content)
|
||||
text_preview.show()
|
||||
TextPreview.append_bbcode(content)
|
||||
TextPreview.show()
|
||||
|
||||
func print_csv(rows : Array) -> void:
|
||||
table_preview.columns = rows[0].size()
|
||||
func print_csv(rows : Array):
|
||||
TablePreview.columns = rows[0].size()
|
||||
for item in rows:
|
||||
for string in item:
|
||||
var label = Label.new()
|
||||
@ -190,9 +146,10 @@ func print_csv(rows : Array) -> void:
|
||||
label.set_h_size_flags(SIZE_EXPAND)
|
||||
label.set_align(1)
|
||||
label.set_valign(1)
|
||||
table_preview.add_child(label)
|
||||
TablePreview.add_child(label)
|
||||
|
||||
table_preview.show()
|
||||
|
||||
func _on_Preview_popup_hide() -> void:
|
||||
TablePreview.show()
|
||||
|
||||
func _on_Preview_popup_hide():
|
||||
queue_free()
|
@ -1,374 +0,0 @@
|
||||
tool
|
||||
extends VBoxContainer
|
||||
|
||||
var LastOpenedFiles : Reference = null
|
||||
|
||||
var text_editor : TextEdit = null
|
||||
|
||||
var file_list : FileDialog = null
|
||||
|
||||
var search_box : HBoxContainer = null
|
||||
var search_box_line_edit : LineEdit = null
|
||||
var search_box_match_case_cb : CheckBox = null
|
||||
var search_box_whole_words_cb : CheckBox = null
|
||||
var search_box_close_button : Button = null
|
||||
|
||||
var replace_box : HBoxContainer = null
|
||||
var replace_box_replace_le : LineEdit = null
|
||||
var replace_box_with : LineEdit = null
|
||||
var replace_box_button : Button = null
|
||||
var replace_box_close : Button = null
|
||||
|
||||
var file_info_last_modified_icon : TextureRect = null
|
||||
var file_info_last_modified : Label = null
|
||||
var file_info_c_counter : Label = null
|
||||
var file_info_read_only : CheckBox = null
|
||||
|
||||
var current_path : String = ""
|
||||
var current_filename : String = ""
|
||||
|
||||
var search_flag : int = 0
|
||||
|
||||
signal text_changed()
|
||||
|
||||
func _init() -> void:
|
||||
size_flags_vertical = SIZE_EXPAND_FILL
|
||||
set_anchors_and_margins_preset(Control.PRESET_WIDE)
|
||||
|
||||
text_editor = TextEdit.new()
|
||||
add_child(text_editor)
|
||||
text_editor.highlight_current_line = true
|
||||
text_editor.syntax_highlighting = true
|
||||
text_editor.show_line_numbers = true
|
||||
text_editor.breakpoint_gutter = true
|
||||
text_editor.highlight_all_occurrences = true
|
||||
text_editor.override_selected_font_color = true
|
||||
text_editor.smooth_scrolling = true
|
||||
text_editor.hiding_enabled = true
|
||||
#todo look this up from the editor settings
|
||||
#text_editor.caret_blink = true
|
||||
#text_editor.caret_blink_speed = 1
|
||||
text_editor.caret_moving_by_right_click = false
|
||||
text_editor.minimap_draw = true
|
||||
text_editor.size_flags_vertical = SIZE_EXPAND_FILL
|
||||
text_editor.set("custom_colors/member_variable_color", Color(0.737255, 0.882353, 1))
|
||||
text_editor.set("custom_colors/code_folding_color", Color(1, 1, 1, 0.701961))
|
||||
text_editor.set("custom_colors/function_color", Color(0.341176, 0.701961, 1))
|
||||
text_editor.set("custom_colors/safe_line_number_color", Color(0.8, 0.968627, 0.827451, 0.74902))
|
||||
text_editor.set("custom_colors/symbol_color", Color(0.670588, 0.788235, 1))
|
||||
text_editor.set("custom_colors/caret_background_color", Color(0, 0, 0))
|
||||
text_editor.set("custom_colors/selection_color", Color(0.411765, 0.611765, 0.909804, 0.34902))
|
||||
text_editor.set("custom_colors/caret_color", Color(1, 1, 1))
|
||||
text_editor.set("custom_colors/breakpoint_color", Color(1, 0.470588, 0.419608))
|
||||
text_editor.set("custom_colors/font_color_selected", Color(0, 0, 0))
|
||||
text_editor.set("custom_colors/font_color", Color(1, 1, 1))
|
||||
text_editor.set("custom_colors/completion_font_color", Color(1, 1, 1, 0.392157))
|
||||
text_editor.set("custom_colors/completion_scroll_color", Color(1, 1, 1, 0.070588))
|
||||
text_editor.set("custom_colors/background_color", Color(0.121569, 0.145098, 0.192157))
|
||||
text_editor.set("custom_colors/number_color", Color(0.631373, 1, 0.882353))
|
||||
text_editor.set("custom_colors/completion_background_color", Color(0.196078, 0.231373, 0.309804))
|
||||
text_editor.set("custom_colors/brace_mismatch_color", Color(1, 0.470588, 0.419608))
|
||||
text_editor.set("custom_colors/current_line_color", Color(1, 1, 1, 0.070588))
|
||||
text_editor.set("custom_colors/completion_selected_color", Color(1, 1, 1, 0.070588))
|
||||
text_editor.set("custom_colors/mark_color", Color(1, 0.470588, 0.419608, 0.301961))
|
||||
text_editor.set("custom_colors/word_highlighted_color", Color(1, 1, 1, 0.392157))
|
||||
text_editor.set("custom_colors/completion_existing_color", Color(1, 1, 1, 0.392157))
|
||||
text_editor.set("custom_constants/completion_lines", 20)
|
||||
text_editor.set("custom_constants/completion_max_width", 20)
|
||||
text_editor.set("custom_constants/completion_scroll_width", 20)
|
||||
#text_editor.owner = self
|
||||
|
||||
search_box = HBoxContainer.new()
|
||||
add_child(search_box)
|
||||
search_box.hide()
|
||||
|
||||
var selabel : Label = Label.new()
|
||||
search_box.add_child(selabel)
|
||||
selabel.text = "Search:"
|
||||
|
||||
search_box_line_edit = LineEdit.new()
|
||||
search_box.add_child(search_box_line_edit)
|
||||
search_box_line_edit.size_flags_horizontal = SIZE_EXPAND_FILL
|
||||
search_box_line_edit.connect("text_changed", self, "_on_LineEdit_text_changed")
|
||||
search_box_line_edit.connect("focus_entered", self, "_on_LineEdit_focus_entered")
|
||||
|
||||
search_box_match_case_cb = CheckBox.new()
|
||||
search_box.add_child(search_box_match_case_cb)
|
||||
search_box_match_case_cb.text = "Match Case"
|
||||
search_box_match_case_cb.connect("toggled", self, "_on_matchcase_toggled")
|
||||
|
||||
search_box_whole_words_cb = CheckBox.new()
|
||||
search_box.add_child(search_box_whole_words_cb)
|
||||
search_box_whole_words_cb.text = "Whole Words"
|
||||
search_box_whole_words_cb.connect("toggled", self, "_on_wholewords_toggled")
|
||||
|
||||
search_box_close_button = Button.new()
|
||||
search_box.add_child(search_box_close_button)
|
||||
search_box_close_button.text = "x"
|
||||
search_box_close_button.flat = true
|
||||
search_box_whole_words_cb.connect("pressed", self, "_on_close_pressed")
|
||||
|
||||
replace_box = HBoxContainer.new()
|
||||
add_child(replace_box)
|
||||
replace_box.hide()
|
||||
|
||||
var rblabel : Label = Label.new()
|
||||
replace_box.add_child(rblabel)
|
||||
rblabel.text = "Replace:"
|
||||
|
||||
replace_box_replace_le = LineEdit.new()
|
||||
replace_box.add_child(replace_box_replace_le)
|
||||
replace_box_replace_le.size_flags_horizontal = SIZE_EXPAND_FILL
|
||||
|
||||
var rb2label : Label = Label.new()
|
||||
replace_box.add_child(rb2label)
|
||||
rb2label.text = "With:"
|
||||
|
||||
replace_box_with = LineEdit.new()
|
||||
replace_box.add_child(replace_box_with)
|
||||
replace_box_with.size_flags_horizontal = SIZE_EXPAND_FILL
|
||||
|
||||
replace_box_button = Button.new()
|
||||
replace_box.add_child(replace_box_button)
|
||||
replace_box_button.text = "Replace"
|
||||
replace_box_button.connect("pressed", self, "_on_Button_pressed")
|
||||
|
||||
replace_box_close = Button.new()
|
||||
replace_box.add_child(replace_box_close)
|
||||
replace_box_close.text = "x"
|
||||
replace_box_close.flat = true
|
||||
replace_box_button.connect("pressed", self, "_on_close2_pressed")
|
||||
|
||||
var file_info : HBoxContainer = HBoxContainer.new()
|
||||
add_child(file_info)
|
||||
|
||||
file_info_last_modified_icon = TextureRect.new()
|
||||
file_info.add_child(file_info_last_modified_icon)
|
||||
file_info_last_modified_icon.stretch_mode = TextureRect.STRETCH_KEEP_CENTERED
|
||||
|
||||
var filabel : Label = Label.new()
|
||||
file_info.add_child(filabel)
|
||||
filabel.text = "Last modified time:"
|
||||
|
||||
file_info_last_modified = Label.new()
|
||||
file_info.add_child(file_info_last_modified)
|
||||
|
||||
var fi2label : Label = Label.new()
|
||||
file_info.add_child(fi2label)
|
||||
fi2label.text = "Characters counter:"
|
||||
fi2label.align = Label.ALIGN_RIGHT
|
||||
fi2label.size_flags_horizontal = SIZE_EXPAND | SIZE_FILL | SIZE_SHRINK_CENTER | SIZE_SHRINK_END
|
||||
|
||||
file_info_c_counter = Label.new()
|
||||
file_info.add_child(file_info_c_counter)
|
||||
file_info_c_counter.size_flags_horizontal = SIZE_EXPAND
|
||||
|
||||
file_info_read_only = CheckBox.new()
|
||||
file_info.add_child(file_info_read_only)
|
||||
file_info_read_only.text = "Can Edit"
|
||||
file_info_read_only.flat = true
|
||||
file_info_read_only.size_flags_horizontal = SIZE_EXPAND | SIZE_SHRINK_END
|
||||
|
||||
func _ready() -> void:
|
||||
text_editor.connect("text_changed", self, "_on_text_editor_text_changed")
|
||||
|
||||
#FileList = get_parent().get_parent().get_parent().get_parent().get_node("FileList")
|
||||
|
||||
file_info_read_only.connect("toggled",self,"_on_Readonly_toggled")
|
||||
|
||||
#file_info_read_only.set("custom_icons/checked",IconLoader.load_icon_from_name("read"))
|
||||
#file_info_read_only.set("custom_icons/unchecked",IconLoader.load_icon_from_name("edit"))
|
||||
|
||||
add_to_group("vanilla_editor")
|
||||
load_default_font()
|
||||
|
||||
func set_font(font_path : String) -> void:
|
||||
var dynamic_font : DynamicFont = DynamicFont.new()
|
||||
var dynamic_font_data : DynamicFontData = DynamicFontData.new()
|
||||
dynamic_font_data.set_font_path(font_path)
|
||||
dynamic_font.set_font_data(dynamic_font_data)
|
||||
text_editor.set("custom_fonts/font",dynamic_font)
|
||||
|
||||
func load_default_font() -> void:
|
||||
var default_font : String = LastOpenedFiles.get_editor_font()
|
||||
|
||||
if default_font != "":
|
||||
set_font(default_font)
|
||||
|
||||
func set_wrap_enabled(enabled:bool) -> void:
|
||||
text_editor.set_wrap_enabled(enabled)
|
||||
text_editor.update()
|
||||
|
||||
func draw_minimap(value:bool) -> void:
|
||||
text_editor.draw_minimap(value)
|
||||
text_editor.update()
|
||||
|
||||
func color_region(filextension : String) -> void:
|
||||
match(filextension):
|
||||
"bbs":
|
||||
text_editor.add_color_region("[b]","[/b]",Color8(153,153,255,255),false)
|
||||
text_editor.add_color_region("[i]","[/i]",Color8(153,255,153,255),false)
|
||||
text_editor.add_color_region("[s]","[/s]",Color8(255,153,153,255),false)
|
||||
text_editor.add_color_region("[u]","[/u]",Color8(255,255,102,255),false)
|
||||
text_editor.add_color_region("[url","[/url]",Color8(153,204,255,255),false)
|
||||
text_editor.add_color_region("[code]","[/code]",Color8(192,192,192,255),false)
|
||||
text_editor.add_color_region("[img]","[/img]",Color8(255,204,153,255),false)
|
||||
text_editor.add_color_region("[center]","[/center]",Color8(175,238,238,255),false)
|
||||
text_editor.add_color_region("[right]","[/right]",Color8(135,206,235,255),false)
|
||||
"html":
|
||||
text_editor.add_color_region("<b>","</b>",Color8(153,153,255,255),false)
|
||||
text_editor.add_color_region("<i>","</i>",Color8(153,255,153,255),false)
|
||||
text_editor.add_color_region("<del>","</del>",Color8(255,153,153,255),false)
|
||||
text_editor.add_color_region("<ins>","</ins>",Color8(255,255,102,255),false)
|
||||
text_editor.add_color_region("<a","</a>",Color8(153,204,255,255),false)
|
||||
text_editor.add_color_region("<img","/>",Color8(255,204,153,255),true)
|
||||
text_editor.add_color_region("<pre>","</pre>",Color8(192,192,192,255),false)
|
||||
text_editor.add_color_region("<center>","</center>",Color8(175,238,238,255),false)
|
||||
text_editor.add_color_region("<right>","</right>",Color8(135,206,235,255),false)
|
||||
"md":
|
||||
text_editor.add_color_region("***","***",Color8(126,186,181,255),false)
|
||||
text_editor.add_color_region("**","**",Color8(153,153,255,255),false)
|
||||
text_editor.add_color_region("*","*",Color8(153,255,153,255),false)
|
||||
text_editor.add_color_region("+ ","",Color8(255,178,102,255),false)
|
||||
text_editor.add_color_region("- ","",Color8(255,178,102,255),false)
|
||||
text_editor.add_color_region("~~","~~",Color8(255,153,153,255),false)
|
||||
text_editor.add_color_region("__","__",Color8(255,255,102,255),false)
|
||||
text_editor.add_color_region("[",")",Color8(153,204,255,255),false)
|
||||
text_editor.add_color_region("`","`",Color8(192,192,192,255),false)
|
||||
text_editor.add_color_region('"*.','"',Color8(255,255,255,255),true)
|
||||
text_editor.add_color_region("# ","",Color8(105,105,105,255),true)
|
||||
text_editor.add_color_region("## ","",Color8(128,128,128,255),true)
|
||||
text_editor.add_color_region("### ","",Color8(169,169,169,255),true)
|
||||
text_editor.add_color_region("#### ","",Color8(192,192,192,255),true)
|
||||
text_editor.add_color_region("##### ","",Color8(211,211,211,255),true)
|
||||
text_editor.add_color_region("###### ","",Color8(255,255,255,255),true)
|
||||
text_editor.add_color_region("> ","",Color8(172,138,79,255),true)
|
||||
"cfg":
|
||||
text_editor.add_color_region("[","]",Color8(153,204,255,255),false)
|
||||
text_editor.add_color_region('"','"',Color8(255,255,102,255),false)
|
||||
text_editor.add_color_region(';','',Color8(128,128,128,255),true)
|
||||
"ini":
|
||||
text_editor.add_color_region("[","]",Color8(153,204,255,255),false)
|
||||
text_editor.add_color_region('"','"',Color8(255,255,102,255),false)
|
||||
text_editor.add_color_region(';','',Color8(128,128,128,255),true)
|
||||
_:
|
||||
pass
|
||||
|
||||
func clean_editor() -> void:
|
||||
text_editor.set_text("")
|
||||
#file_info_last_modified_icon.texture = IconLoader.load_icon_from_name("save")
|
||||
file_info_last_modified.set_text("")
|
||||
file_list.invalidate()
|
||||
current_filename = ""
|
||||
current_path = ""
|
||||
|
||||
func new_file_open(file_content : String, last_modified : Dictionary, current_file_path : String) -> void:
|
||||
current_path = current_file_path
|
||||
current_filename = current_file_path.get_file()
|
||||
color_region(current_filename.get_extension())
|
||||
text_editor.set_text(file_content)
|
||||
update_lastmodified(last_modified,"save")
|
||||
file_list.invalidate()
|
||||
count_characters()
|
||||
|
||||
func update_lastmodified(last_modified : Dictionary, icon : String) -> void:
|
||||
file_info_last_modified.set_text(str(last_modified.hour)+":"+str(last_modified.minute)+" "+str(last_modified.day)+"/"+str(last_modified.month)+"/"+str(last_modified.year))
|
||||
#file_info_last_modified_icon.texture = IconLoader.load_icon_from_name(icon)
|
||||
|
||||
func new_file_create(file_name : String) -> void:
|
||||
text_editor.set_text("")
|
||||
|
||||
file_list.invalidate()
|
||||
|
||||
func _on_Readonly_toggled(button_pressed : bool) -> void:
|
||||
if button_pressed:
|
||||
file_info_read_only.set_text("Read Only")
|
||||
text_editor.readonly = (true)
|
||||
else:
|
||||
file_info_read_only.set_text("Can Edit")
|
||||
text_editor.readonly = (false)
|
||||
|
||||
func _on_text_editor_text_changed() -> void:
|
||||
#file_info_last_modified_icon.texture = IconLoader.load_icon_from_name("saveas")
|
||||
count_characters()
|
||||
emit_signal("text_changed")
|
||||
|
||||
func count_characters() -> void:
|
||||
var counted : int = 0
|
||||
|
||||
for line in range(text_editor.get_line_count()):
|
||||
counted += text_editor.get_line(line).length()
|
||||
|
||||
file_info_c_counter.set_text(str(counted))
|
||||
|
||||
func _on_LineEdit_text_changed(new_text : String) -> void:
|
||||
var linecount : int = text_editor.get_line_count()
|
||||
if new_text != "":
|
||||
var found : PoolIntArray
|
||||
var find : bool = false
|
||||
|
||||
for line in range(linecount):
|
||||
for column in range(text_editor.get_line(line).length()):
|
||||
found = text_editor.search( new_text, search_flag, line , column )
|
||||
|
||||
if found.size():
|
||||
if found[1] == line:
|
||||
# if not find:
|
||||
text_editor.select(line,found[0],found[1],found[0]+new_text.length())
|
||||
# find = true
|
||||
else:
|
||||
text_editor.select(0,0,0,0)
|
||||
else:
|
||||
text_editor.select(0,0,0,0)
|
||||
|
||||
func _on_matchcase_toggled(button_pressed : bool) -> void:
|
||||
if button_pressed:
|
||||
search_flag = 1
|
||||
else:
|
||||
if search_box_whole_words_cb.is_pressed():
|
||||
search_flag = 2
|
||||
else:
|
||||
search_flag = 0
|
||||
|
||||
_on_LineEdit_text_changed(search_box_line_edit.get_text())
|
||||
|
||||
func _on_wholewords_toggled(button_pressed : bool) -> void:
|
||||
if button_pressed:
|
||||
search_flag = 2
|
||||
else:
|
||||
if search_box_match_case_cb.is_pressed():
|
||||
search_flag = 1
|
||||
else:
|
||||
search_flag = 0
|
||||
|
||||
_on_LineEdit_text_changed(search_box_line_edit.get_text())
|
||||
|
||||
func _on_close_pressed() -> void:
|
||||
search_box.hide()
|
||||
|
||||
func open_search_box() -> void:
|
||||
if search_box.visible:
|
||||
search_box.hide()
|
||||
else:
|
||||
search_box.show()
|
||||
search_box.get_node("LineEdit").grab_focus()
|
||||
|
||||
func _on_Button_pressed() -> void:
|
||||
var linecount : int = text_editor.get_line_count()-1
|
||||
var old_text : String = replace_box_replace_le.get_text()
|
||||
var new_text : String = replace_box_with.get_text()
|
||||
var text : String = text_editor.get_text()
|
||||
text_editor.set_text(text.replace(old_text,new_text))
|
||||
|
||||
func open_replace_box() -> void:
|
||||
if replace_box.visible:
|
||||
replace_box.hide()
|
||||
else:
|
||||
replace_box.show()
|
||||
replace_box.get_node("replace").grab_focus()
|
||||
|
||||
func _on_close2_pressed() -> void:
|
||||
replace_box.hide()
|
||||
|
||||
func _on_LineEdit_focus_entered() -> void:
|
||||
_on_LineEdit_text_changed(search_box_line_edit.get_text())
|
@ -1,22 +1,23 @@
|
||||
tool
|
||||
extends EditorPlugin
|
||||
|
||||
var IconLoader = preload("res://addons/file-editor/scripts/IconLoader.gd").new()
|
||||
var LastOpenedFiles = preload("res://addons/file-editor/scripts/LastOpenedFiles.gd").new()
|
||||
|
||||
var FileEditor
|
||||
var doc = preload("../scenes/FileEditor.tscn").instance()
|
||||
var plugin_version
|
||||
var toolbar
|
||||
var fileditorbutton
|
||||
var IconLoader = preload("res://addons/file-editor/scripts/IconLoader.gd")
|
||||
|
||||
func _enter_tree():
|
||||
LastOpenedFiles.editor_plugin = self
|
||||
LastOpenedFiles.editor_settings = get_editor_interface().get_editor_settings()
|
||||
|
||||
FileEditor = preload("res://addons/file-editor/scripts/FileEditor.gd").new()
|
||||
FileEditor.LastOpenedFiles = LastOpenedFiles
|
||||
get_editor_interface().get_editor_viewport().add_child(FileEditor)
|
||||
FileEditor.hide()
|
||||
add_autoload_singleton("IconLoader","res://addons/file-editor/scripts/IconLoader.gd")
|
||||
add_autoload_singleton("LastOpenedFiles","res://addons/file-editor/scripts/LastOpenedFiles.gd")
|
||||
get_editor_interface().get_editor_viewport().add_child(doc)
|
||||
doc.hide()
|
||||
|
||||
func _exit_tree():
|
||||
get_editor_interface().get_editor_viewport().remove_child(FileEditor)
|
||||
doc.clean_editor()
|
||||
get_editor_interface().get_editor_viewport().remove_child(doc)
|
||||
remove_autoload_singleton("IconLoader")
|
||||
remove_autoload_singleton("LastOpenedFiles")
|
||||
|
||||
func has_main_screen():
|
||||
return true
|
||||
@ -28,4 +29,4 @@ func get_plugin_icon():
|
||||
return IconLoader.load_icon_from_name("file")
|
||||
|
||||
func make_visible(visible):
|
||||
FileEditor.visible = visible
|
||||
doc.visible = visible
|
@ -1,28 +0,0 @@
|
||||
; Engine configuration file.
|
||||
; It's best edited using the editor UI and not directly,
|
||||
; since the parameters that go here are not all obvious.
|
||||
;
|
||||
; Format:
|
||||
; [section] ; section goes between []
|
||||
; param=value ; assign values to parameters
|
||||
|
||||
config_version=4
|
||||
|
||||
[application]
|
||||
|
||||
config/name="fileed"
|
||||
config/icon="res://icon.png"
|
||||
|
||||
[editor_plugins]
|
||||
|
||||
enabled=PoolStringArray( "res://addons/file-editor/plugin.cfg" )
|
||||
|
||||
[physics]
|
||||
|
||||
common/enable_pause_aware_picking=true
|
||||
|
||||
[rendering]
|
||||
|
||||
vram_compression/import_etc=true
|
||||
vram_compression/import_etc2=false
|
||||
environment/default_environment="res://default_env.tres"
|