Skip to content
Draft
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
4 changes: 4 additions & 0 deletions material_maker/locale/locale.gd
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
class_name Locale
extends Object

const LOCALE_DIR : String = "user://locale"
Expand All @@ -23,6 +24,9 @@ func add_translations(dest : Translation, src : Translation):
dest.add_message(m, src.get_message(m))

func read_translations():
for translation in TranslationServer.get_translations():
TranslationServer.remove_translation(translation)

var translations : Dictionary = {}
var dir : DirAccess = DirAccess.open(LOCALE_DIR)
if dir != null:
Expand Down
1 change: 1 addition & 0 deletions material_maker/windows/preferences/lang_option.gd
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ func init_from_locales():
locales.insert(0, "en")
clear()
for l in locales:
print(l)
add_item(l+" - "+TranslationServer.get_locale_name(l))

func init_from_config(config : ConfigFile) -> void:
Expand Down
22 changes: 17 additions & 5 deletions material_maker/windows/preferences/language_download.gd
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ var languages : Dictionary

const INDEX_URL : String = "https://rodzill4.github.io/material-maker/languages.json"


func _ready():
var error = http_request.request(INDEX_URL)
if error != OK:
Expand All @@ -32,19 +31,32 @@ func _ready():
button = Button.new()
button.text = "Download"
$ScrollContainer/Languages.add_child(button)
button.connect("pressed", Callable(self, "download_language").bind(l))
button.pressed.connect(download_language.bind(l, button))
var minimum_size : Vector2i = $ScrollContainer/Languages.get_minimum_size()
content_scale_factor = mm_globals.ui_scale_factor()
minimum_size *= content_scale_factor
popup(Rect2i($ScrollContainer.get_global_mouse_position()*content_scale_factor, minimum_size))

func download_language(l : String):
func download_language(l : String, button : Button):
http_request.cancel_request()

# darken the popup to hint language file is being downloaded
var darken : ColorRect = preload("res://material_maker/darken.tscn").instantiate()
add_child(darken)

button.text = tr("Loading..")
var locale = load("res://material_maker/locale/locale.gd").new()
locale.uninstall_translation(l)
locale.create_translations_dir()
var ext : String = languages[l].url.get_extension()
$HTTPRequest.download_file = locale.get_translations_dir().path_join(l+"."+ext)
var error = $HTTPRequest.request(languages[l].url)
http_request.download_file = locale.get_translations_dir().path_join(l+"."+ext)
var error = http_request.request(languages[l].url)
if error == OK:
#print("Downloading")
await http_request.request_completed
mm_steam.unlock_achievement("ACH_POLYGLOT")
queue_free()

func _on_focus_exited() -> void:
if not $HTTPRequest.get_http_client_status() == HTTPClient.Status.STATUS_DISCONNECTED:
queue_free()
4 changes: 3 additions & 1 deletion material_maker/windows/preferences/language_download.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,11 @@

[node name="LanguageDownload" type="PopupPanel" unique_id=567521287]
oversampling_override = 1.0
visible = true
always_on_top = true
script = ExtResource("1")

[node name="HTTPRequest" type="HTTPRequest" parent="." unique_id=1866806840]
use_threads = true

[node name="ScrollContainer" type="ScrollContainer" parent="." unique_id=1400833866]
offset_left = 4.0
Expand All @@ -21,4 +22,5 @@ vertical_scroll_mode = 0
layout_mode = 2
columns = 3

[connection signal="focus_exited" from="." to="." method="_on_focus_exited"]
[connection signal="popup_hide" from="." to="." method="queue_free"]
29 changes: 16 additions & 13 deletions material_maker/windows/preferences/preferences.gd
Original file line number Diff line number Diff line change
Expand Up @@ -31,44 +31,47 @@ func update_config(p : Node) -> void:
c.update_config(config)
update_config(c)

func _on_Apply_pressed():
func _on_Apply_pressed() -> void:
update_config(self)
emit_signal("config_changed")

func _on_OK_pressed():
func _on_OK_pressed() -> void:
update_config(self)
emit_signal("config_changed")
queue_free()

func _on_Cancel_pressed():
func _on_Cancel_pressed() -> void:
queue_free()

func _on_InstallLanguage_pressed():
var dialog = load("res://material_maker/windows/file_dialog/file_dialog.tscn").instantiate()
func _on_InstallLanguage_pressed() -> void:
var dialog : FileDialog = load("res://material_maker/windows/file_dialog/file_dialog.tscn").instantiate()
dialog.min_size = Vector2(500, 500)
dialog.access = FileDialog.ACCESS_FILESYSTEM
dialog.file_mode = FileDialog.FILE_MODE_OPEN_FILE
dialog.add_filter("*.po,*.position,*.csv;Translation file")
var files = await dialog.select_files()
var files : Array = await dialog.select_files()
if files.size() > 0:
var locale = load("res://material_maker/locale/locale.gd").new()
var locale : Locale = Locale.new()
locale.install_translation(files[0])
update_language_list()

func update_language_list():
func update_language_list() -> void:
%Language.init_from_locales()
%Language.init_from_config(config)

func _on_DownloadLanguage_pressed():
var download_popup = load("res://material_maker/windows/preferences/language_download.tscn").instantiate()
func _on_DownloadLanguage_pressed() -> void:
%DownloadLanguage.disabled = true
var download_popup : Popup = load("res://material_maker/windows/preferences/language_download.tscn").instantiate()
mm_globals.main_window.add_child(download_popup)
download_popup.connect("tree_exited", Callable(self, "_on_DownloadLanguage_closed"))
download_popup.tree_exited.connect(_load_language_items)
download_popup.tree_exited.connect(func() -> void: %DownloadLanguage.disabled = false)

func _on_DownloadLanguage_closed():
var locale = load("res://material_maker/locale/locale.gd").new()
func _load_language_items() -> void:
var locale = Locale.new()
locale.read_translations()
update_language_list()

func _on_ready() -> void:
_load_language_items()
%WinTabletDriver.visible = OS.get_name() == "Windows"
%WinTabletDriverSpacer.visible = OS.get_name() == "Windows"
1 change: 1 addition & 0 deletions material_maker/windows/preferences/preferences.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ layout_mode = 2
text = "Install"

[node name="DownloadLanguage" type="Button" parent="HSplitContainer/PreferencesPanel/VBoxContainer/TabContainer/General/VBoxContainer/Language/HBoxContainer" unique_id=1946949754]
unique_name_in_owner = true
layout_mode = 2
text = "Download"

Expand Down