Clean and hard-typing
This commit is contained in:
@@ -1,27 +1,27 @@
|
||||
extends Control
|
||||
|
||||
var element_scene: = preload("res://sources/language_tool/gp_list_element.tscn")
|
||||
var element_scene: PackedScene = preload("res://sources/language_tool/gp_list_element.tscn")
|
||||
|
||||
@onready var elements_container: VBoxContainer = %ElementsContainer
|
||||
@onready var error_label: Label = %ErrorLabel
|
||||
|
||||
var undo_redo: = UndoRedo.new()
|
||||
var undo_redo: UndoRedo = UndoRedo.new()
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
var query: = "Select * FROM GPs ORDER BY GPs.Grapheme"
|
||||
var query: String = "Select * FROM GPs ORDER BY GPs.Grapheme"
|
||||
Database.db.query(query)
|
||||
var result: = Database.db.query_result
|
||||
for e in result:
|
||||
var element: GPListElement = element_scene.instantiate()
|
||||
element.grapheme = e.Grapheme
|
||||
element.phoneme = e.Phoneme
|
||||
element.type = e.Type
|
||||
element.exception = e.Exception
|
||||
element.undo_redo = undo_redo
|
||||
element.id = e.ID
|
||||
elements_container.add_child(element)
|
||||
element.delete_pressed.connect(_on_element_delete_pressed.bind(element))
|
||||
var result: Array[Dictionary] = Database.db.query_result
|
||||
for element_dico: Dictionary in result:
|
||||
var new_element: GPListElement = element_scene.instantiate()
|
||||
new_element.grapheme = element_dico.Grapheme
|
||||
new_element.phoneme = element_dico.Phoneme
|
||||
new_element.type = element_dico.Type
|
||||
new_element.exception = element_dico.Exception
|
||||
new_element.undo_redo = undo_redo
|
||||
new_element.id = element_dico.ID
|
||||
elements_container.add_child(new_element)
|
||||
new_element.delete_pressed.connect(_on_element_delete_pressed.bind(new_element))
|
||||
|
||||
for pseudo_button: Label in [%Grapheme, %Phoneme, %Type]:
|
||||
pseudo_button.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND
|
||||
@@ -53,9 +53,9 @@ func _on_plus_button_pressed() -> void:
|
||||
func _on_save_button_pressed() -> void:
|
||||
for element: GPListElement in elements_container.get_children():
|
||||
element.insert_in_database()
|
||||
var query: = "Select * FROM GPs"
|
||||
var query: String = "Select * FROM GPs"
|
||||
Database.db.query(query)
|
||||
var result: = Database.db.query_result
|
||||
var result: Array[Dictionary] = Database.db.query_result
|
||||
for e in result:
|
||||
var found: = false
|
||||
for element: GPListElement in elements_container.get_children():
|
||||
|
||||
@@ -14,7 +14,7 @@ func _on_item_selected(index: int) -> void:
|
||||
if index == 0:
|
||||
new_selected.emit()
|
||||
return
|
||||
var id: = get_item_id(index)
|
||||
var id: int = get_item_id(index)
|
||||
gp_selected.emit(id)
|
||||
|
||||
|
||||
|
||||
@@ -22,13 +22,13 @@ enum Type {
|
||||
|
||||
|
||||
|
||||
var grapheme: = "":
|
||||
var grapheme: String = "":
|
||||
set = set_grapheme
|
||||
var phoneme: = "":
|
||||
var phoneme: String = "":
|
||||
set = set_phoneme
|
||||
var type: = Type.Silent:
|
||||
var type: GPListElement.Type = Type.Silent:
|
||||
set = set_type
|
||||
var exception: = 0:
|
||||
var exception: bool = false:
|
||||
set = set_exception
|
||||
var id: int = -1
|
||||
var undo_redo: UndoRedo:
|
||||
@@ -107,9 +107,9 @@ func insert_in_database() -> void:
|
||||
if id >= 0:
|
||||
Database.db.query_with_bindings("SELECT * FROM GPs WHERE ID=?", [id])
|
||||
if not Database.db.query_result.is_empty():
|
||||
var e = Database.db.query_result[0]
|
||||
if grapheme != e.Grapheme or phoneme != e.Phoneme or type != e.Type or exception != e.Exception:
|
||||
Logger.trace("GPListElement: UPDATING %s" % e.Grapheme)
|
||||
var element: Dictionary = Database.db.query_result[0]
|
||||
if grapheme != element.Grapheme or phoneme != element.Phoneme or type != element.Type or exception != element.Exception:
|
||||
Logger.trace("GPListElement: UPDATING %s" % element.Grapheme)
|
||||
Database.db.update_rows("GPs", "ID=%s" % id, {Grapheme=grapheme, Phoneme=phoneme, Type=type, Exception=exception})
|
||||
return
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
extends MarginContainer
|
||||
class_name LessonContainer
|
||||
|
||||
var gp_label_scene: = preload("res://sources/language_tool/lesson_gp_label.tscn")
|
||||
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
extends Label
|
||||
class_name LessonGPLabel
|
||||
|
||||
signal gp_dropped(before: bool, data: Dictionary)
|
||||
|
||||
var gp_id: = -1
|
||||
var grapheme: = "":
|
||||
var gp_id: int = -1
|
||||
var grapheme: String = "":
|
||||
set = set_grapheme
|
||||
var phoneme: = "":
|
||||
var phoneme: String = "":
|
||||
set = set_phoneme
|
||||
var is_being_dragged: = false
|
||||
var is_being_dragged: bool = false
|
||||
|
||||
|
||||
func set_grapheme(p_grapheme: String) -> void:
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
extends Control
|
||||
|
||||
@onready var lessons_container: = $%LessonsContainer
|
||||
@onready var unused_gp_container: = $%UnusedGPContainer
|
||||
@onready var lessons_container: MarginContainer = $%LessonsContainer
|
||||
@onready var unused_gp_container: GridContainer = $%UnusedGPContainer
|
||||
|
||||
var lesson_container_scene: = preload("res://sources/language_tool/lesson_container.tscn")
|
||||
var gp_label_scene: = preload("res://sources/language_tool/lesson_gp_label.tscn")
|
||||
var lesson_container_scene: PackedScene = preload("res://sources/language_tool/lesson_container.tscn")
|
||||
var gp_label_scene: PackedScene = preload("res://sources/language_tool/lesson_gp_label.tscn")
|
||||
|
||||
var lessons: = {}
|
||||
var lessons: Dictionary = {}
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
@@ -14,35 +14,35 @@ func _ready() -> void:
|
||||
INNER JOIN GPsInLessons ON GPsInLessons.LessonID = Lessons.ID
|
||||
INNER JOIN GPs ON GPsInLessons.GPID = GPs.ID
|
||||
ORDER BY LessonNb")
|
||||
for e in Database.db.query_result:
|
||||
if lessons.has(e.LessonNb):
|
||||
lessons[e.LessonNb].add_gp({grapheme = e.Grapheme, phoneme = e.Phoneme, gp_id = e.GPID})
|
||||
for element: Dictionary in Database.db.query_result:
|
||||
if lessons.has(element.LessonNb):
|
||||
(lessons[element.LessonNb] as LessonContainer).add_gp({grapheme = element.Grapheme, phoneme = element.Phoneme, gp_id = element.GPID})
|
||||
else:
|
||||
var lesson_container: = lesson_container_scene.instantiate()
|
||||
var lesson_container: LessonContainer = lesson_container_scene.instantiate()
|
||||
lessons_container.add_child(lesson_container)
|
||||
lesson_container.add_gp({grapheme = e.Grapheme, phoneme = e.Phoneme, gp_id = e.GPID})
|
||||
lesson_container.number = e.LessonNb
|
||||
lesson_container.add_gp({grapheme = element.Grapheme, phoneme = element.Phoneme, gp_id = element.GPID})
|
||||
lesson_container.number = element.LessonNb
|
||||
lesson_container.lesson_dropped.connect(_on_lesson_dropped)
|
||||
lessons[e.LessonNb] = lesson_container
|
||||
lessons[element.LessonNb] = lesson_container
|
||||
|
||||
Database.db.query("SELECT Grapheme, Phoneme, GPs.ID as GPID FROM GPs
|
||||
WHERE NOT EXISTS(SELECT 1 FROM GPsInLessons WHERE GPs.ID=GPsInLessons.GPID)")
|
||||
for e in Database.db.query_result:
|
||||
var gp_label: = gp_label_scene.instantiate()
|
||||
for element: Dictionary in Database.db.query_result:
|
||||
var gp_label: LessonGPLabel = gp_label_scene.instantiate()
|
||||
unused_gp_container.add_child(gp_label)
|
||||
gp_label.grapheme = e.Grapheme
|
||||
gp_label.phoneme = e.Phoneme
|
||||
gp_label.gp_id = e.GPID
|
||||
gp_label.grapheme = element.Grapheme
|
||||
gp_label.phoneme = element.Phoneme
|
||||
gp_label.gp_id = element.GPID
|
||||
gp_label.gp_dropped.connect(_on_gp_dropped)
|
||||
|
||||
unused_gp_container.set_drag_forwarding(Callable(), _can_drop_in_gp_container, _drop_data_in_gp_container)
|
||||
|
||||
|
||||
func _on_plus_button_pressed() -> void:
|
||||
var lesson_container: = lesson_container_scene.instantiate()
|
||||
var lesson_container: LessonContainer = lesson_container_scene.instantiate()
|
||||
lessons_container.add_child(lesson_container)
|
||||
lesson_container.lesson_dropped.connect(_on_lesson_dropped)
|
||||
var max_nb: = -1
|
||||
var max_nb: int = -1
|
||||
for e in lessons.values():
|
||||
max_nb = max(max_nb, e.number)
|
||||
lesson_container.number = max_nb + 1
|
||||
@@ -56,7 +56,7 @@ func _can_drop_in_gp_container(_at_position: Vector2, data: Variant) -> bool:
|
||||
func _drop_data_in_gp_container(_at_position: Vector2, data: Variant) -> void:
|
||||
if not data.has("gp_id"):
|
||||
return
|
||||
var new_gp_label: = gp_label_scene.instantiate()
|
||||
var new_gp_label: LessonGPLabel = gp_label_scene.instantiate()
|
||||
new_gp_label.grapheme = data.grapheme
|
||||
new_gp_label.phoneme = data.phoneme
|
||||
new_gp_label.gp_id = data.gp_id
|
||||
@@ -84,8 +84,8 @@ func _on_lesson_dropped(before: bool, number: int, dropped_number: int) -> void:
|
||||
|
||||
func _on_save_button_pressed() -> void:
|
||||
Database.db.query("DELETE FROM GPsInLessons")
|
||||
var children: = lessons_container.get_children()
|
||||
for index in children.size():
|
||||
var children: Array[Node] = lessons_container.get_children()
|
||||
for index: int in children.size():
|
||||
var child: = children[index]
|
||||
Database.db.query_with_bindings("SELECT * FROM Lessons WHERE LessonNb = ?", [index + 1])
|
||||
var lesson_id: = -1
|
||||
|
||||
@@ -43,11 +43,11 @@ func _on_button_pressed() -> void:
|
||||
|
||||
file_dialog.ok_button_text = "Add new elements"
|
||||
|
||||
for connection in file_dialog.file_selected.get_connections():
|
||||
connection["signal"].disconnect(connection["callable"])
|
||||
for connection: Dictionary in file_dialog.file_selected.get_connections():
|
||||
(connection["signal"] as Signal).disconnect(connection["callable"] as Callable)
|
||||
|
||||
for connection in file_dialog.custom_action.get_connections():
|
||||
connection["signal"].disconnect(connection["callable"])
|
||||
for connection: Dictionary in file_dialog.custom_action.get_connections():
|
||||
(connection["signal"] as Signal).disconnect(connection["callable"] as Callable)
|
||||
|
||||
file_dialog.file_selected.connect(_on_filename_selected)
|
||||
file_dialog.custom_action.connect(_on_match_to_file_selected)
|
||||
@@ -59,7 +59,7 @@ func _on_filename_selected(path: String) -> void:
|
||||
import_path_selected.emit(path, false)
|
||||
|
||||
|
||||
func _on_match_to_file_selected(custom_action: String) -> void:
|
||||
func _on_match_to_file_selected(_custom_action: String) -> void:
|
||||
import_path_selected.emit(file_dialog.current_path, true)
|
||||
file_dialog.hide()
|
||||
|
||||
|
||||
@@ -418,7 +418,7 @@ func _create_words_csv() -> void:
|
||||
if gp_id_lesson < 0:
|
||||
lesson = -1
|
||||
break
|
||||
lesson = max(lesson, gp_id_lesson)
|
||||
lesson = maxi(lesson, gp_id_lesson)
|
||||
gp_list_file.store_csv_line([element.Word, gpmatch, lesson, element.Reading, element.Writing])
|
||||
|
||||
|
||||
@@ -447,7 +447,7 @@ func _create_syllable_csv() -> void:
|
||||
if gp_id_lesson < 0:
|
||||
lesson = -1
|
||||
break
|
||||
lesson = max(lesson, gp_id_lesson)
|
||||
lesson = maxi(lesson, gp_id_lesson)
|
||||
gp_list_file.store_csv_line([element.Syllable, gpmatch, lesson, element.Reading, element.Writing])
|
||||
|
||||
|
||||
@@ -465,11 +465,11 @@ func _create_sentence_csv() -> void:
|
||||
var lesson: int = -1
|
||||
@warning_ignore("unsafe_method_access")
|
||||
for word_id: String in element.WordIDs.split(' '):
|
||||
var i: int = Database.get_min_lesson_for_word_id(int(word_id))
|
||||
if i < 0:
|
||||
var ind: int = Database.get_min_lesson_for_word_id(int(word_id))
|
||||
if ind < 0:
|
||||
lesson = -1
|
||||
break
|
||||
lesson = max(lesson, i)
|
||||
lesson = maxi(lesson, ind)
|
||||
gp_list_file.store_csv_line([element.Sentence, lesson])
|
||||
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@ signal changed()
|
||||
@onready var segments_container: VBoxContainer = %SegmentsContainer
|
||||
@onready var lines: Node2D = %Lines
|
||||
|
||||
const segment_build_class: = preload("res://sources/language_tool/segment_build.tscn")
|
||||
const point_button_class: = preload("res://sources/language_tool/segment_point_button.tscn")
|
||||
const segment_build_class: PackedScene = preload("res://sources/language_tool/segment_build.tscn")
|
||||
const point_button_class: PackedScene = preload("res://sources/language_tool/segment_point_button.tscn")
|
||||
|
||||
var gradient: Gradient
|
||||
|
||||
@@ -22,9 +22,9 @@ var buttons: Array[SegmentPointButton]
|
||||
|
||||
|
||||
func reset() -> void:
|
||||
var to_free: = lines.get_children()
|
||||
var to_free: Array[Node] = lines.get_children()
|
||||
to_free.append_array(segments_container.get_children())
|
||||
for node in to_free:
|
||||
for node: Node in to_free:
|
||||
node.queue_free()
|
||||
|
||||
current_segment = null
|
||||
@@ -49,7 +49,7 @@ func _process(_delta: float) -> void:
|
||||
current_button = null
|
||||
|
||||
if is_instance_valid(current_button):
|
||||
var ind: = current_segment.remove_point(current_button.global_position - lines.global_position)
|
||||
var ind: int = current_segment.remove_point(current_button.global_position - lines.global_position)
|
||||
current_button.global_position = get_global_mouse_position()
|
||||
current_segment.add_point_at(current_button.global_position - lines.global_position, ind)
|
||||
|
||||
@@ -58,14 +58,14 @@ func draw_segment(segment: SegmentBuild) -> void:
|
||||
if not is_instance_valid(segment):
|
||||
return
|
||||
|
||||
var ind_seg: = segments_container.get_children().find(segment)
|
||||
var ind_seg: int = segments_container.get_children().find(segment)
|
||||
var line: Line2D = lines.get_child(ind_seg)
|
||||
|
||||
line.points = Bezier.bezier_sampling(segment.points, max(points_per_lines, segment.points.size()))
|
||||
line.points = Bezier.bezier_sampling(segment.points, maxi(points_per_lines, segment.points.size()))
|
||||
|
||||
|
||||
func draw_all_segments() -> void:
|
||||
for segment in segments_container.get_children():
|
||||
for segment: SegmentBuild in segments_container.get_children():
|
||||
draw_segment(segment)
|
||||
|
||||
|
||||
@@ -121,7 +121,7 @@ func _on_place_point_button_pressed() -> void:
|
||||
|
||||
|
||||
func _on_add_segment_button_pressed() -> void:
|
||||
var segment_build: = segment_build_class.instantiate()
|
||||
var segment_build: SegmentBuild = segment_build_class.instantiate()
|
||||
segments_container.add_child(segment_build)
|
||||
|
||||
segment_build.modify.connect(_on_segment_modify.bind(segment_build))
|
||||
@@ -129,16 +129,16 @@ func _on_add_segment_button_pressed() -> void:
|
||||
|
||||
current_segment = segment_build
|
||||
|
||||
var line: = Line2D.new()
|
||||
var line: Line2D = Line2D.new()
|
||||
line.width = 25
|
||||
line.begin_cap_mode = Line2D.LINE_CAP_ROUND
|
||||
line.end_cap_mode = Line2D.LINE_CAP_ROUND
|
||||
line.joint_mode = Line2D.LINE_JOINT_ROUND
|
||||
lines.add_child(line)
|
||||
|
||||
var i: = segments_container.get_child_count()
|
||||
var r: = float(i % points_per_gradient) / float(points_per_gradient)
|
||||
var color: = gradient.sample(r)
|
||||
var i: int = segments_container.get_child_count()
|
||||
var r: float = float(i % points_per_gradient) / float(points_per_gradient)
|
||||
var color: Color = gradient.sample(r)
|
||||
segment_build.set_color(color)
|
||||
line.default_color = color
|
||||
|
||||
@@ -157,15 +157,15 @@ func _on_segment_modify(segment: SegmentBuild) -> void:
|
||||
|
||||
func _on_segment_delete(segment: SegmentBuild) -> void:
|
||||
if segment == current_segment:
|
||||
var possible_segments: = segments_container.get_children()
|
||||
var possible_segments: Array[Node] = segments_container.get_children()
|
||||
if not possible_segments.is_empty():
|
||||
current_segment = possible_segments[0]
|
||||
current_segment = possible_segments[0] as SegmentBuild
|
||||
else:
|
||||
current_segment = null
|
||||
|
||||
match_segment_with_buttons()
|
||||
|
||||
var ind_seg: = segments_container.get_children().find(segment)
|
||||
var ind_seg: int = segments_container.get_children().find(segment)
|
||||
lines.get_child(ind_seg).queue_free()
|
||||
|
||||
changed.emit()
|
||||
|
||||
@@ -13,13 +13,13 @@ func _ready() -> void:
|
||||
|
||||
|
||||
func update_lesson() -> void:
|
||||
var m: = -1
|
||||
var m: int = -1
|
||||
for gp_id in gp_ids:
|
||||
var i: = Database.get_min_lesson_for_word_id(gp_id)
|
||||
var i: int = Database.get_min_lesson_for_word_id(gp_id)
|
||||
if i < 0:
|
||||
m = -1
|
||||
break
|
||||
m = max(m, i)
|
||||
m = maxi(m, i)
|
||||
lesson = m
|
||||
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@ signal new_GP_asked(i: int)
|
||||
signal validated()
|
||||
signal GPs_updated()
|
||||
|
||||
const gp_list_button_scene: = preload("res://sources/language_tool/gp_list_button.tscn")
|
||||
const plus_button_scene: = preload("res://sources/language_tool/plus_button.tscn")
|
||||
const gp_list_button_scene: PackedScene = preload("res://sources/language_tool/gp_list_button.tscn")
|
||||
const plus_button_scene: PackedScene = preload("res://sources/language_tool/plus_button.tscn")
|
||||
|
||||
@export var table: String = "Words"
|
||||
@export var table_graph_column: String = "Word"
|
||||
@@ -32,24 +32,24 @@ const plus_button_scene: = preload("res://sources/language_tool/plus_button.tscn
|
||||
@onready var add_gp_button: MarginContainer = %AddGPButton
|
||||
@onready var remove_gp_button: MarginContainer = %RemoveGPButton2
|
||||
|
||||
var word: = "":
|
||||
var word: String = "":
|
||||
set = set_word
|
||||
var lesson: = 0:
|
||||
var lesson: int = 0:
|
||||
set = set_lesson
|
||||
var undo_redo: UndoRedo:
|
||||
get:
|
||||
if not undo_redo:
|
||||
undo_redo = UndoRedo.new()
|
||||
return undo_redo
|
||||
var id: = -1
|
||||
var id: int = -1
|
||||
var gp_ids: Array[int] = []:
|
||||
set = set_gp_ids
|
||||
var unvalidated_gp_ids: Array[int] = []
|
||||
var exception: = 0:
|
||||
var exception: int = 0:
|
||||
set = set_exception
|
||||
var reading: = 0:
|
||||
var reading: int = 0:
|
||||
set = set_reading
|
||||
var writing: = 0:
|
||||
var writing: int = 0:
|
||||
set = set_writing
|
||||
var sub_elements_list: Dictionary
|
||||
|
||||
@@ -92,11 +92,11 @@ func set_gp_ids(p_gp_ids: Array[int]) -> void:
|
||||
|
||||
func set_graphemes_edit(p_gp_ids: Array[int]) -> void:
|
||||
if graphemes_edit_container:
|
||||
for child in graphemes_edit_container.get_children():
|
||||
for child: Node in graphemes_edit_container.get_children():
|
||||
graphemes_edit_container.remove_child(child)
|
||||
child.queue_free()
|
||||
for ind_gp_id in p_gp_ids.size():
|
||||
var gp_id: = p_gp_ids[ind_gp_id]
|
||||
for ind_gp_id: int in p_gp_ids.size():
|
||||
var gp_id: int = p_gp_ids[ind_gp_id]
|
||||
add_gp_list_button(gp_id, ind_gp_id)
|
||||
|
||||
|
||||
@@ -117,27 +117,27 @@ func add_gp_list_button(gp_id: int, ind_gp_id: int) -> void:
|
||||
|
||||
func _on_gp_list_button_selected(gp_id: int, element: Node) -> void:
|
||||
@warning_ignore("integer_division")
|
||||
var ind_gp_id: = element.get_index() / 2
|
||||
var ind_gp_id: int = element.get_index() / 2
|
||||
unvalidated_gp_ids[ind_gp_id] = gp_id
|
||||
word_edit.text = get_graphemes(unvalidated_gp_ids)
|
||||
|
||||
|
||||
func _on_gp_list_button_new_selected(element: Node) -> void:
|
||||
@warning_ignore("integer_division")
|
||||
var ind_gp_id: = element.get_index() / 2
|
||||
var ind_gp_id: int = element.get_index() / 2
|
||||
new_GP_asked.emit(ind_gp_id)
|
||||
|
||||
|
||||
func get_graphemes(p_gp_ids: Array[int]) -> String:
|
||||
var res: = ""
|
||||
for gp_id in p_gp_ids:
|
||||
var res: String = ""
|
||||
for gp_id: int in p_gp_ids:
|
||||
res += sub_elements_list[gp_id].grapheme
|
||||
return res
|
||||
|
||||
|
||||
func get_gps(p_gp_ids: Array[int]) -> String:
|
||||
var res: = ""
|
||||
for gp_id in p_gp_ids:
|
||||
var res: String = ""
|
||||
for gp_id: int in p_gp_ids:
|
||||
res += sub_elements_list[gp_id].grapheme
|
||||
res += "-"
|
||||
res += sub_elements_list[gp_id].phoneme
|
||||
@@ -195,13 +195,13 @@ func _on_validate_button_pressed() -> void:
|
||||
|
||||
|
||||
func update_lesson() -> void:
|
||||
var m: = -1
|
||||
for gp_id in gp_ids:
|
||||
var i: = Database.get_min_lesson_for_gp_id(gp_id)
|
||||
var m: int = -1
|
||||
for gp_id: int in gp_ids:
|
||||
var i: int = Database.get_min_lesson_for_gp_id(gp_id)
|
||||
if i < 0:
|
||||
m = -1
|
||||
break
|
||||
m = max(m, i)
|
||||
m = maxi(m, i)
|
||||
lesson = m
|
||||
|
||||
|
||||
@@ -226,7 +226,7 @@ func insert_in_database() -> void:
|
||||
id = Database.db.query_result[0].ID
|
||||
|
||||
if id >= 0:
|
||||
var query: = "SELECT %s, group_concat(%s, ' ') as %ss, group_concat(%s, ' ') as %ss, group_concat(%s.ID, ' ') as %sIDs, group_concat(%s.ID, ' ') as %sIDs, %s.Exception, %s.Reading, %s.Writing
|
||||
var query: String = "SELECT %s, group_concat(%s, ' ') as %ss, group_concat(%s, ' ') as %ss, group_concat(%s.ID, ' ') as %sIDs, group_concat(%s.ID, ' ') as %sIDs, %s.Exception, %s.Reading, %s.Writing
|
||||
FROM %s
|
||||
INNER JOIN ( SELECT * FROM %s ORDER BY %s.Position ) %s ON %s.ID = %s.%sID
|
||||
INNER JOIN %s ON %s.ID = %s.%s
|
||||
@@ -242,15 +242,15 @@ func insert_in_database() -> void:
|
||||
Database.db.query_with_bindings(query, [id])
|
||||
Logger.trace("WordListElement: Sending query to insert in database: %s" % query)
|
||||
if not Database.db.query_result.is_empty():
|
||||
var e = Database.db.query_result[0]
|
||||
if word != e[table_graph_column] or exception != e.Exception or reading != e.Reading or writing != e.Writing:
|
||||
var element: Dictionary = Database.db.query_result[0]
|
||||
if word != element[table_graph_column] or exception != element.Exception or reading != element.Reading or writing != element.Writing:
|
||||
Database.db.update_rows(table, "ID=%s" % id, {table_graph_column: word, "Exception": exception, "Reading": reading, "Writing": writing})
|
||||
if " ".join(gp_ids) != e[sub_table + "IDs"]:
|
||||
var gps_in_words_ids: Array = Array(e[relational_table + "IDs"].split(" "))
|
||||
if " ".join(gp_ids) != element[sub_table + "IDs"]:
|
||||
var gps_in_words_ids: Array[String] = Array((element[relational_table + "IDs"] as String).split(" "))
|
||||
while gps_in_words_ids.size() > gp_ids.size():
|
||||
Database.db.delete_rows(relational_table, "ID=%s" % int(gps_in_words_ids.pop_back()))
|
||||
Database.db.delete_rows(relational_table, "ID=%s" % int(gps_in_words_ids.pop_back() as String))
|
||||
for index: int in gps_in_words_ids.size():
|
||||
var gps_in_words_id: = int(gps_in_words_ids[index])
|
||||
var gps_in_words_id: int = int(gps_in_words_ids[index])
|
||||
Database.db.update_rows(relational_table, "ID=%s" % gps_in_words_id, {
|
||||
table_graph_column + "ID": id,
|
||||
sub_table_id: gp_ids[index],
|
||||
@@ -266,9 +266,9 @@ func insert_in_database() -> void:
|
||||
else:
|
||||
Database.db.query_with_bindings("SELECT * FROM %s WHERE %s=?" % [table, table_graph_column], [word])
|
||||
if not Database.db.query_result.is_empty():
|
||||
var e = Database.db.query_result[0]
|
||||
id = e.ID
|
||||
if word != e[table_graph_column] or exception != e.Exception or reading != e.Reading or writing != e.writing:
|
||||
var element: Dictionary = Database.db.query_result[0]
|
||||
id = element.ID
|
||||
if word != element[table_graph_column] or exception != element.Exception or reading != element.Reading or writing != element.writing:
|
||||
Database.db.update_rows(table, "ID=%s" % id, {table_graph_column: word, "Exception": exception, "Reading": reading, "Writing": writing})
|
||||
for index: int in range(gp_ids.size()):
|
||||
Database.db.insert_row(relational_table, {
|
||||
@@ -290,7 +290,7 @@ func insert_in_database() -> void:
|
||||
|
||||
|
||||
func _already_in_database(text: String) -> int:
|
||||
var query: = "SELECT %s.ID, %s, group_concat(%s, ' ') as %ss, group_concat(%s, ' ') as %ss, group_concat(%s.ID, ' ') as %sIDs
|
||||
var query: String = "SELECT %s.ID, %s, group_concat(%s, ' ') as %ss, group_concat(%s, ' ') as %ss, group_concat(%s.ID, ' ') as %sIDs
|
||||
FROM %s
|
||||
INNER JOIN ( SELECT * FROM %s ORDER BY %s.Position ) %s ON %s.ID = %s.%sID
|
||||
INNER JOIN %s ON %s.ID = %s.%s
|
||||
@@ -305,15 +305,15 @@ func _already_in_database(text: String) -> int:
|
||||
table]
|
||||
Database.db.query_with_bindings(query, [text])
|
||||
if not Database.db.query_result.is_empty():
|
||||
var e = Database.db.query_result[0]
|
||||
id = e.ID
|
||||
var element: Dictionary = Database.db.query_result[0]
|
||||
id = element.ID
|
||||
return id
|
||||
return -1
|
||||
|
||||
|
||||
func _add_from_additional_word_list(new_text: String) -> int:
|
||||
if new_text in Database.additional_word_list:
|
||||
var is_word: = table == "Words"
|
||||
var is_word: bool = table == "Words"
|
||||
var res: Array = Database._import_word_from_csv(new_text, Database.additional_word_list[new_text].GPMATCH as String, is_word)
|
||||
GPs_updated.emit()
|
||||
id = res[0]
|
||||
@@ -355,14 +355,15 @@ func _process(_delta: float) -> void:
|
||||
remove_gp_button.visible = graphemes_edit_container.get_child_count() > 0
|
||||
|
||||
|
||||
func new_gp_asked_added(ind: int, id: int) -> void:
|
||||
unvalidated_gp_ids[ind] = id
|
||||
func new_gp_asked_added(ind: int, gp_id: int) -> void:
|
||||
unvalidated_gp_ids[ind] = gp_id
|
||||
set_graphemes_edit(unvalidated_gp_ids)
|
||||
word_edit.text = get_graphemes(unvalidated_gp_ids)
|
||||
|
||||
|
||||
func _on_add_gp_button_pressed(element: Node) -> void:
|
||||
var ind_gp_id: = element.get_index() / 2
|
||||
@warning_ignore("integer_division")
|
||||
var ind_gp_id: int = element.get_index() / 2
|
||||
var gp_id: int = sub_elements_list.keys()[0]
|
||||
unvalidated_gp_ids.insert(ind_gp_id + 1, gp_id)
|
||||
add_gp_list_button(gp_id, ind_gp_id + 1)
|
||||
|
||||
Reference in New Issue
Block a user