Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ env:
GODOT_FEATURE_VERSION: 4.5
# Commit hash
GODOT_COMMIT_HASH: 2d113cc22
PROJECT_NAME: GodSVG Mobile
BUILD_OPTIONS: target=template_release lto=full production=yes deprecated=no minizip=no brotli=no vulkan=no openxr=no use_volk=no disable_3d=yes disable_physics_2d=yes disable_navigation_2d=yes modules_enabled_by_default=no module_freetype_enabled=yes module_gdscript_enabled=yes module_svg_enabled=yes module_jpg_enabled=yes module_text_server_adv_enabled=yes graphite=no module_webp_enabled=yes module_mbedtls_enabled=yes swappy=no build_profile=../godsvg/.github/disabled_classes.build
PROJECT_NAME: VectorTouch
BUILD_OPTIONS: target=template_release lto=full production=yes deprecated=no minizip=no brotli=no vulkan=no openxr=no use_volk=no disable_3d=yes disable_physics_2d=yes disable_navigation_2d=yes modules_enabled_by_default=no module_freetype_enabled=yes module_gdscript_enabled=yes module_svg_enabled=yes module_jpg_enabled=yes module_text_server_adv_enabled=yes graphite=no module_webp_enabled=yes module_mbedtls_enabled=yes swappy=no build_profile=../vectortouch/.github/disabled_classes.build
GODOT_REPO: https://github.com/godotengine/godot.git

jobs:
Expand Down Expand Up @@ -91,7 +91,7 @@ jobs:
- name: Checkout repository
uses: actions/checkout@v4
with:
path: godsvg
path: vectortouch

- if: ${{ steps.cache-template.outputs.cache-hit != 'true' }}
name: Build Godot template for Android
Expand All @@ -118,9 +118,9 @@ jobs:
GODOT_ANDROID_KEYSTORE_DEBUG_USER: "androiddebugkey"
GODOT_ANDROID_KEYSTORE_DEBUG_PASSWORD: "android"
run: |
cd godsvg
cd vectortouch
mkdir -p build/android
godot --headless --export-debug "Android" build/android/GodSVG-Mobile-debug.apk
godot --headless --export-debug "Android" build/android/VectorTouch-debug.apk

- name: Export release project
if: github.event.pull_request.head.repo.fork != true
Expand All @@ -129,32 +129,32 @@ jobs:
GODOT_ANDROID_KEYSTORE_RELEASE_USER: ${{ secrets.KEY_ALIAS }}
GODOT_ANDROID_KEYSTORE_RELEASE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
run: |
cd godsvg
cd vectortouch
mkdir -p build/android
echo "${{ secrets.KEYSTORE }}" | base64 -d > /tmp/release.keystore
godot --headless --export-release "Android(arm32)" build/android/GodSVG-Mobile-arm32.apk
godot --headless --export-release "Android" build/android/GodSVG-Mobile.apk
godot --headless --export-release "Android(arm32)" build/android/VectorTouch-arm32.apk
godot --headless --export-release "Android" build/android/VectorTouch.apk

- name: Upload debug artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.PROJECT_NAME }}.debug
path: godsvg/build/android/GodSVG-Mobile-debug.apk
path: vectortouch/build/android/VectorTouch-debug.apk
if-no-files-found: error
retention-days: 28

- name: Upload release artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.PROJECT_NAME }}
path: godsvg/build/android/GodSVG-Mobile.apk
path: vectortouch/build/android/VectorTouch.apk
if-no-files-found: ignore
retention-days: 28

- name: Upload arm32 APK
uses: actions/upload-artifact@v4
with:
name: ${{ env.PROJECT_NAME }}-arm32
path: godsvg/build/android/GodSVG-Mobile-arm32.apk
path: vectortouch/build/android/VectorTouch-arm32.apk
if-no-files-found: ignore
retention-days: 28
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# GodSVG Mobile
# VectorTouch

<p align="center">
<img src="godot_only/source_assets/splash.svg" width="480" alt="GodSVG logo">
</p>

**GodSVG Mobile** brings the power of the **GodSVG** to your Android device, allowing you to edit Scalable Vector Graphics (SVG) files directly on mobile. This version is optimized for touch-based interaction, providing an intuitive and mobile-friendly interface for editing SVG files.
**VectorTouch** brings the power of the **GodSVG** to your Android device, allowing you to edit Scalable Vector Graphics (SVG) files directly on mobile. This version is optimized for touch-based interaction, providing an intuitive and mobile-friendly interface for editing SVG files.

For the desktop version of GodSVG, please visit the [GodSVG repository](https://github.com/MewPurPur/GodSVG).

Expand All @@ -13,7 +13,7 @@ For the desktop version of GodSVG, please visit the [GodSVG repository](https://

## Installation

Download the latest release of the Android version from the [releases](https://github.com/syntaxerror247/GodSVG-Mobile/releases).
Download the latest release of the Android version from the [releases](https://github.com/syntaxerror247/VectorTouch/releases).

## License

Expand Down
8 changes: 4 additions & 4 deletions export_presets.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ architectures/x86=false
architectures/x86_64=false
version/code=3
version/name="1.0-alpha3"
package/unique_name="com.godsvg.mobile"
package/name="GodSVG Mobile"
package/unique_name="com.vectortouch.app"
package/name="VectorTouch"
package/signed=true
package/app_category=3
package/retain_data_on_uninstall=false
Expand Down Expand Up @@ -256,8 +256,8 @@ architectures/x86=false
architectures/x86_64=false
version/code=3
version/name="1.0-alpha3"
package/unique_name="com.godsvg.mobile"
package/name="GodSVG Mobile"
package/unique_name="com.vectortouch.app"
package/name="VectorTouch"
package/signed=true
package/app_category=3
package/retain_data_on_uninstall=false
Expand Down
12 changes: 6 additions & 6 deletions godot_only/scripts/update_translations.gd
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ extends EditorScript
const COMMENTS_DICT = {
"Viewport": "The viewport is the area where the graphic is displayed. In similar applications, it's often called the canvas.",
"CDATA color": "CDATA shouldn't be translated. It's a type of XML section.",
"Editor formatter": "Refers to the formatter used for GodSVG's code editor.",
"Editor formatter": "Refers to the formatter used for VectorTouch's code editor.",
"Export formatter": "Refers to the formatter used when exporting.",
"Handles": "Refers to the draggable gizmos.",
"Dash length": "Refers to the selection rectangle's animated dashed stroke.",
Expand All @@ -23,7 +23,7 @@ const TRANSLATIONS_DIR = "translations"
const HEADER = """#, fuzzy
msgid \"\"
msgstr \"\"
\"Project-Id-Version: GodSVG\\n\"
\"Project-Id-Version: VectorTouch\\n\"
\"POT-Creation-Date: \\n\"
\"PO-Revision-Date: \\n\"
\"Last-Translator: \\n\"
Expand Down Expand Up @@ -98,7 +98,7 @@ func search_directory(dir: String) -> void:
func update_translations() -> void:
var used_comments := PackedStringArray()
var folder_location := ProjectSettings.globalize_path(TRANSLATIONS_DIR)
var pot_location := folder_location.path_join("GodSVG.pot")
var pot_location := folder_location.path_join("VectorTouch.pot")

var fa := FileAccess.open(pot_location, FileAccess.WRITE)
fa.store_string(HEADER)
Expand All @@ -108,11 +108,11 @@ func update_translations() -> void:
used_comments.append(msg.msgid)
fa.store_string(msg.to_string())
fa = null
print("Created %s with %d strings" % [TRANSLATIONS_DIR.path_join("/GodSVG.pot"),
print("Created %s with %d strings" % [TRANSLATIONS_DIR.path_join("/VectorTouch.pot"),
(messages.size() + 1)])

for file in DirAccess.get_files_at(folder_location):
if not (file.get_extension() == "po" or file == "GodSVG.pot"):
if not (file.get_extension() == "po" or file == "VectorTouch.pot"):
continue

var args := PackedStringArray(["--update", "--quiet", "--verbose", "--backup=off",
Expand All @@ -123,7 +123,7 @@ func update_translations() -> void:
var po_location = folder_location.path_join(file)
args = PackedStringArray(["--no-wrap", po_location, "-o", po_location])
OS.execute("msgcat", args)
if file == "GodSVG.pot":
if file == "VectorTouch.pot":
continue
elif not output.is_empty():
print("Updated " + TRANSLATIONS_DIR + "/%s: %s" % [file, output[0].rstrip("\n")])
Expand Down
2 changes: 1 addition & 1 deletion project.godot
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ config_version=5

[application]

config/name="GodSVG Mobile"
config/name="VectorTouch"
config/version="1.0-alpha3"
config/tags=PackedStringArray("application", "mobile", "project")
run/main_scene="uid://bihwwoedqcyo8"
Expand Down
10 changes: 5 additions & 5 deletions src/autoload/HandlerGUI.gd
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@ func _unhandled_input(event: InputEvent) -> void:
"about_donate": open_donate()
"check_updates": open_update_checker()
"open_settings": open_settings()
"about_repo": OS.shell_open("https://github.com/syntaxerror247/GodSVG-Mobile")
"about_repo": OS.shell_open("https://github.com/syntaxerror247/VectorTouch")
"about_website": OS.shell_open("https://godsvg.com")
"open_externally": FileUtils.open_svg(
Configs.savedata.get_active_tab().svg_file_path)
Expand Down Expand Up @@ -482,8 +482,8 @@ func prompt_quit() -> void:
remove_all_menus()
var confirm_dialog := ConfirmDialogScene.instantiate()
add_menu(confirm_dialog)
confirm_dialog.setup(Translator.translate("Quit GodSVG"),
Translator.translate("Do you want to quit GodSVG?"),
confirm_dialog.setup(Translator.translate("Quit VectorTouch"),
Translator.translate("Do you want to quit VectorTouch?"),
Translator.translate("Quit"), get_tree().quit)


Expand Down Expand Up @@ -569,9 +569,9 @@ func open_export() -> void:
func update_window_title() -> void:
if Configs.savedata.use_filename_for_window_title and\
not Configs.savedata.get_active_tab().svg_file_path.is_empty():
get_window().title = Configs.savedata.get_active_tab().presented_name + " - GodSVG"
get_window().title = Configs.savedata.get_active_tab().presented_name + " - VectorTouch"
else:
get_window().title = "GodSVG"
get_window().title = "VectorTouch"


# Helpers
Expand Down
4 changes: 2 additions & 2 deletions src/config_classes/SaveData.gd
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ func is_theming_default() -> bool:

# TODO Typed Dictionary wonkiness Dictionary[ThemePreset, String]. This one was copied
# from an earlier similar implementation, but I didn't bother to test if it's still
# necessary because GodSVG was disheveled while I was implementing the feature.
# necessary because VectorTouch was disheveled while I was implementing the feature.
static func get_theme_preset_value_text_map() -> Dictionary:
return {
ThemePreset.DARK: Translator.translate("Dark"),
Expand All @@ -171,7 +171,7 @@ func is_highlighting_default() -> bool:

# TODO Typed Dictionary wonkiness Dictionary[ThemePreset, String]. This one was copied
# from an earlier similar implementation, but I didn't bother to test if it's still
# necessary because GodSVG was disheveled while I was implementing the feature.
# necessary because VectorTouch was disheveled while I was implementing the feature.
static func get_highlighter_preset_value_text_map() -> Dictionary:
return {
HighlighterPreset.DEFAULT_DARK: Translator.translate("Default Dark"),
Expand Down
2 changes: 1 addition & 1 deletion src/data_classes/ElementUnrecognized.gd
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# An element that GodSVG doesn't recognize.
# An element that VectorTouch doesn't recognize.
class_name ElementUnrecognized extends Element

var name: String
Expand Down
20 changes: 10 additions & 10 deletions src/ui_parts/about_menu.gd
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func _ready() -> void:
stylebox.content_margin_top += 2.0
add_theme_stylebox_override("panel", stylebox)

%VersionLabel.text = "GodSVG Mobile v" + ProjectSettings.get_setting("application/config/version")
%VersionLabel.text = "VectorTouch Mobile v" + ProjectSettings.get_setting("application/config/version")

close_button.pressed.connect(queue_free)
close_button.text = Translator.translate("Close")
Expand Down Expand Up @@ -118,28 +118,28 @@ func _on_tab_changed(idx: int) -> void:
2:
# This part doesn't need to be translated.
%LicenseLabel.text = "MIT License\n\nCopyright (c) 2025 Anish Mishra\n" +\
"Copyright (c) 2023-present GodSVG contributors\n\n" +\
"Copyright (c) 2023-present VectorTouch contributors\n\n" +\
Engine.get_license_info()["Expat"]
3:
for child in %GodSVGParts.get_children():
for child in %VectorTouchParts.get_children():
child.queue_free()
for child in %GodotParts.get_children():
child.queue_free()
for child in %LicenseTexts.get_children():
child.queue_free()

# This part doesn't need to be translated.
var godsvg_parts_label := Label.new()
godsvg_parts_label.text = "GodSVG components"
var vectortouch_parts_label := Label.new()
vectortouch_parts_label.text = "VectorTouch components"
var godot_parts_label := Label.new()
godot_parts_label.text = "Godot Engine components"
var license_texts_label := Label.new()
license_texts_label.text = "Licenses"
for label: Label in [godsvg_parts_label, godot_parts_label, license_texts_label]:
for label: Label in [vectortouch_parts_label, godot_parts_label, license_texts_label]:
label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
label.theme_type_variation = "TitleLabel"
label.add_theme_font_size_override("font_size", 17)
%GodSVGParts.add_child(godsvg_parts_label)
%VectorTouchParts.add_child(vectortouch_parts_label)
%GodotParts.add_child(godot_parts_label)
%LicenseTexts.add_child(license_texts_label)

Expand All @@ -151,7 +151,7 @@ func _on_tab_changed(idx: int) -> void:
godot_engine_copyright = dict
break

var godsvg_copyright_info: Array[Dictionary] = [
var vectortouch_copyright_info: Array[Dictionary] = [
godot_engine_copyright,
{
"name": "Noto Sans font",
Expand All @@ -175,7 +175,7 @@ func _on_tab_changed(idx: int) -> void:
}
]

for copyright_info in godsvg_copyright_info:
for copyright_info in vectortouch_copyright_info:
var label := Label.new()
label.add_theme_font_size_override("font_size", 11)
for part in copyright_info["parts"]:
Expand All @@ -189,7 +189,7 @@ func _on_tab_changed(idx: int) -> void:
name_label.text = copyright_info["name"]
vbox.add_child(name_label)
vbox.add_child(label)
%GodSVGParts.add_child(vbox)
%VectorTouchParts.add_child(vbox)

# Clean up Godot's copyright info from some stripped modules
# to show more relevant components and load the UI faster.
Expand Down
4 changes: 2 additions & 2 deletions src/ui_parts/about_menu.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ theme_override_constants/line_spacing = 0
theme_override_font_sizes/font_size = 12
text = "© 2025 Anish Mishra
© 2023 MewPurPur
© 2023-present GodSVG contributors"
© 2023-present VectorTouch contributors"

[node name="TabContainer" type="TabContainer" parent="VBoxContainer"]
custom_minimum_size = Vector2(0, 280)
Expand Down Expand Up @@ -260,7 +260,7 @@ theme_override_constants/margin_bottom = 6
layout_mode = 2
theme_override_constants/separation = 18

[node name="GodSVGParts" type="VBoxContainer" parent="VBoxContainer/TabContainer/Third-party Licenses/MarginContainer/ThirdParties"]
[node name="VectorTouchParts" type="VBoxContainer" parent="VBoxContainer/TabContainer/Third-party Licenses/MarginContainer/ThirdParties"]
unique_name_in_owner = true
layout_mode = 2
theme_override_constants/separation = 8
Expand Down
2 changes: 1 addition & 1 deletion src/ui_parts/donate_menu.gd
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ func _ready() -> void:

github_link.pressed.connect(OS.shell_open.bind("https://github.com/sponsors/MewPurPur"))
ko_fi_link.pressed.connect(OS.shell_open.bind("https://ko-fi.com/mewpurpur"))
patreon_link.pressed.connect(OS.shell_open.bind("https://www.patreon.com/GodSVG"))
patreon_link.pressed.connect(OS.shell_open.bind("https://www.patreon.com/VectorTouch"))
github_link.mouse_entered.connect(set_link.bind(Link.GITHUB))
ko_fi_link.mouse_entered.connect(set_link.bind(Link.KO_FI))
patreon_link.mouse_entered.connect(set_link.bind(Link.PATREON))
Expand Down
2 changes: 1 addition & 1 deletion src/ui_parts/import_warning_menu.gd
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ func _ready() -> void:
ok_button.pressed.connect(finish_import)
cancel_button.pressed.connect(queue_free)

# Convert forward and backward to show how GodSVG would display the given SVG.
# Convert forward and backward to show how VectorTouch would display the given SVG.
var imported_text_parse_result := SVGParser.text_to_root(imported_text)
if is_instance_valid(imported_text_parse_result.svg):
var preview_text := SVGParser.root_to_editor_text(imported_text_parse_result.svg)
Expand Down
8 changes: 4 additions & 4 deletions src/ui_parts/update_menu.gd
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ func _ready() -> void:
func request() -> void:
retry_button.hide()
status_label.text = Translator.translate("Retrieving information...")
var err := http.request("https://api.github.com/repos/syntaxerror247/GodSVG-Mobile/releases",
["User-Agent: syntaxerror247/GodSVG-Mobile"])
var err := http.request("https://api.github.com/repos/syntaxerror247/VectorTouch-Mobile/releases",
["User-Agent: syntaxerror247/VectorTouch-Mobile"])
if err != OK:
display_error_message(error_string(err))

Expand Down Expand Up @@ -84,7 +84,7 @@ _headers: PackedStringArray, body: PackedByteArray) -> void:
func display_error_message(msg: String) -> void:
status_label.text = Translator.translate("Update check failed")
results_panel.show()
results_label.text = "%s\n[url=https://github.com/syntaxerror247/GodSVG-Mobile/releases]%s[/url]" %\
results_label.text = "%s\n[url=https://github.com/syntaxerror247/VectorTouch-Mobile/releases]%s[/url]" %\
[msg, Translator.translate("View all releases")]
retry_button.show()

Expand All @@ -101,7 +101,7 @@ func display_results() -> void:
# Set the text.
results_label.text = ""
if not has_results:
status_label.text = Translator.translate("GodSVG is up-to-date.")
status_label.text = Translator.translate("VectorTouch is up-to-date.")
results_panel.hide()
return
else:
Expand Down
4 changes: 2 additions & 2 deletions src/ui_widgets/settings_content_generic.gd
Original file line number Diff line number Diff line change
Expand Up @@ -592,7 +592,7 @@ func setup_other_content() -> void:
var use_native_file_dialog_forced_off :=\
(not DisplayServer.has_feature(DisplayServer.FEATURE_NATIVE_DIALOG_FILE))
add_preview(SettingTextPreview.new(Translator.translate(
"When enabled, uses your operating system's native file dialog instead of GodSVG's built-in one."),
"When enabled, uses your operating system's native file dialog instead of VectorTouch's built-in one."),
SettingTextPreview.get_platform_availability_warning(
use_native_file_dialog_forced_on or use_native_file_dialog_forced_off)))
# Disable fallback file dialog on web, and native file dialog if not available.
Expand All @@ -604,7 +604,7 @@ func setup_other_content() -> void:
current_setup_setting = "use_filename_for_window_title"
add_checkbox(Translator.translate("Sync window title to file name"))
add_preview(SettingTextPreview.new(
Translator.translate("When enabled, adds the current file name before the \"GodSVG\" window title.")))
Translator.translate("When enabled, adds the current file name before the \"VectorTouch\" window title.")))


func add_section(section_name: String) -> void:
Expand Down
4 changes: 2 additions & 2 deletions src/ui_widgets/unrecognized_field.gd
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# An editor to be tied to an attribute GodSVG can't recognize, allowing to still edit it.
# An editor to be tied to an attribute VectorTouch can't recognize, allowing to still edit it.
extends BetterLineEdit

var element: Element
Expand All @@ -22,4 +22,4 @@ func sync() -> void:

func sync_localization() -> void:
tooltip_text = attribute_name + "\n(%s)" %\
Translator.translate("GodSVG doesn’t recognize this attribute")
Translator.translate("VectorTouch doesn’t recognize this attribute")
Loading