Skip to content
Open
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
16 changes: 12 additions & 4 deletions addons/godot_db_manager/core/db_table.gd
Original file line number Diff line number Diff line change
Expand Up @@ -292,10 +292,18 @@ func add_row(data_array : Array) -> void :

# removes a row
func remove_row(row_idx : int) -> void :
for idx in range(m_data.size()-1, 0, -1):
if(m_data[idx].get_row_idx() == row_idx):
m_data[idx].remove(idx)
m_rows_count -= 1
var to_remove : Array = []
for _data in m_data:
if _data.get_row_idx() == row_idx:
to_remove.append(_data)
if _data.get_row_idx() > row_idx:
_data.set_row_idx(_data.get_row_idx() - 1)

if not to_remove.empty():
m_rows_count -= 1

for rm in to_remove:
m_data.erase(rm)

# returns the rows count
func get_rows_count() -> int :
Expand Down
35 changes: 35 additions & 0 deletions addons/godot_db_manager/table_editor.gd
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,36 @@ func on_add_row_data_btn_pressed() -> void:
cell.connect("choose_resource", self, "on_choose_resource")
cell.connect("choose_data", self, "on_choose_data")
cell.connect("edit_string", self, "on_edit_string")

var delete_btn = Button.new()
row.add_child(delete_btn)
delete_btn.text = "X"
delete_btn.rect_size = Vector2(20, 20)
delete_btn.connect("pressed", self, "delete_row", [row_idx, row])

emit_signal("set_dirty")

# removes a row from current active table
func delete_row(row_idx : int, row : HBoxContainer) -> void:
m_parent_table.remove_row(row_idx)

# get index of deleted child
var idx = 0
for child in row.get_parent().get_children():
if child == row:
break
idx += 1

for i in range(idx + 1, row.get_parent().get_child_count()):
var node = row.get_parent().get_child(i) # row
for child in node.get_children():
if child is Button and child.is_connected("pressed", self, "delete_row"):
child.disconnect("pressed", self, "delete_row")
child.connect("pressed", self, "delete_row", [i - 1, node])

row.get_parent().remove_child(row)
row.queue_free()

emit_signal("set_dirty")

# sets the table from database
Expand Down Expand Up @@ -169,6 +198,12 @@ func fill_data() -> void:
cell.connect("choose_resource", self, "on_choose_resource")
cell.connect("choose_data", self, "on_choose_data")
cell.connect("edit_string", self, "on_edit_string")

var delete_btn = Button.new()
row.add_child(delete_btn)
delete_btn.text = "X"
delete_btn.rect_size = Vector2(20, 20)
delete_btn.connect("pressed", self, "delete_row", [idx, row])

# links properties
func link_props() -> void :
Expand Down