bugs squished

This commit is contained in:
2023-04-22 03:08:05 +02:00
parent 24c4b98a5e
commit 17d8637156
13 changed files with 346 additions and 107 deletions

View File

@ -1,4 +1,4 @@
extends PanelContainer
extends Control
var config: ConfigManager = preload("res://config_manager.tres")
@ -26,11 +26,13 @@ func _ready() -> void:
# warning-ignore:return_value_discarded
file_path_file_dialog.connect("file_selected", self, "_on_current_file_selected")
# warning-ignore:return_value_discarded
file_path_line_edit.connect("text_submitted", self, "_on_current_file_selected")
file_path_line_edit.connect("text_entered", self, "_on_current_file_selected")
theme_path_button.connected("pressed", self, "_on_theme_path_button_pressed")
# warning-ignore:return_value_discarded
theme_path_button.connect("pressed", self, "_on_theme_path_button_pressed")
theme_path_file_dialog.connected("file_selected", self, "_on_new_theme_selected")
# warning-ignore:return_value_discarded
theme_path_file_dialog.connect("file_selected", self, "_on_new_theme_selected")
theme_path_file_dialog.hide()
file_path_file_dialog.hide()
@ -46,6 +48,7 @@ func _ready() -> void:
# warning-ignore:return_value_discarded
open_data_dir_button.connect("pressed", self, "_on_open_data_dir_button_pressed")
_on_current_file_changed()
func _on_current_file_changed() -> void:

View File

@ -116,19 +116,31 @@ This game uses Godot Engine, available under the following license:
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.
"
[node name="FilePathFileDialog" type="FileDialog" parent="."]
[node name="CanvasLayer" type="CanvasLayer" parent="."]
[node name="FilePathFileDialog" type="FileDialog" parent="CanvasLayer"]
unique_name_in_owner = true
margin_right = 442.0
margin_bottom = 760.0
anchor_right = 1.0
anchor_bottom = 1.0
size_flags_horizontal = 3
size_flags_vertical = 3
window_title = "Pick a file"
resizable = true
dialog_hide_on_ok = true
mode_overrides_title = false
access = 2
filters = PoolStringArray( "*.csv ; Comma Separated Files" )
[node name="ThemePathFileDialog" type="FileDialog" parent="."]
[node name="ThemePathFileDialog" type="FileDialog" parent="CanvasLayer"]
unique_name_in_owner = true
margin_right = 360.0
margin_bottom = 760.0
anchor_right = 1.0
anchor_bottom = 1.0
size_flags_horizontal = 3
size_flags_vertical = 3
window_title = "Open a File"
resizable = true
dialog_hide_on_ok = true
mode_overrides_title = false
mode = 0
access = 2
filters = PoolStringArray( "*.theme ; Theme Files" )

View File

@ -18,16 +18,14 @@ func _ready() -> void:
# warning-ignore:return_value_discarded
_timer.connect("timeout", self, "_on_timer_timeout")
# warning-ignore:return_value_discarded
config.connect("file_changed", self, "populate_entries")
# warning-ignore:return_value_discarded
config.connect("time_sheet_reloaded", self, "populate_entries")
config.connect("time_sheet_loaded", self, "populate_entries")
populate_entries()
func populate_entries() -> void:
clear()
var tree_items_root := create_item()
var item_entries_tree := config.timesheet.tree
var item_entries_tree := config.timesheet.make_items_tree()
_populate_from_entry(tree_items_root, item_entries_tree)
_timer.start()
#for item in entries:
@ -56,18 +54,23 @@ func _populate_from_entry(tree_item_root: TreeItem, time_entry_item_root: TimeEn
for time_entry_name in children:
var time_entry_item: TimeEntryTreeItem = children[time_entry_name]
var item := find_or_create_item(tree_item_root, time_entry_name)
item.set_metadata(COL.TEXT, time_entry_item)
item.set_metadata(COL.TEXT, time_entry_name)
item.set_text(COL.TIME, time_entry_item.get_period())
# warning-ignore:return_value_discarded
time_entry_item.connect("end_time_updated", self, "_on_time_entry_changed_update_item", [time_entry_item, item])
_populate_from_entry(item, time_entry_item)
var has_at_least_one_running_entry := time_entry_item.find_active_time_entry() != null
var texture := preload("res://assets/stop_small.svg") \
if has_at_least_one_running_entry \
else preload("res://assets/play_small.svg")
item.add_button(COL.TIME, texture)
var entries = time_entry_item_root.time_entries
for entry_item in entries:
var time_entry_item := entry_item as TimeEntryTreeItem
var item := create_item(tree_item_root)
var time_entry := time_entry_item.time_entry
item.set_text(COL.TEXT, time_entry.start_time.to_string())
item.set_metadata(COL.TEXT, time_entry_item)
item.set_metadata(COL.TEXT, time_entry_item.time_entry.name)
item.set_text(COL.TIME, time_entry_item.get_period())
if time_entry.is_closed == false:
var texture := preload("res://assets/stop_small.svg")
@ -81,17 +84,10 @@ func _on_time_entry_changed_update_item(time_entry_item: TimeEntryTreeItem, item
func _on_button_pressed(item: TreeItem, _column: int, _id: int) -> void:
var time_entry_tree_item: TimeEntryTreeItem = item.get_metadata(COL.TEXT)
if time_entry_tree_item == null:
var task_name: String = item.get_metadata(COL.TEXT)
if task_name == "":
return
var time_entry := time_entry_tree_item.time_entry
if time_entry == null:
return
if time_entry.is_closed:
return
else:
time_entry.close()
item.erase_button(COL.TIME, 0)
config.timesheet.toggle_entry(task_name)
## Unecessary in Godot 4, can bre replaced with get_children()

View File

@ -10,6 +10,7 @@ onready var start_button := $"%StartButton" as Button
onready var timer := $"%Timer" as Timer
onready var audio_stream_player := $"%AudioStreamPlayer" as AudioStreamPlayer
var current_time_entry: TimeEntry
func _ready() -> void:
# warning-ignore:return_value_discarded
@ -18,13 +19,16 @@ func _ready() -> void:
start_button.toggle_mode = true
# warning-ignore:return_value_discarded
start_button.connect("toggled", self, "_on_start_button_toggled")
task_name_line_edit.text = config.last_task_name
task_name_line_edit.text = config.current_task_name
# warning-ignore:return_value_discarded
task_name_line_edit.connect("text_changed", self, "_on_task_name_line_edit_text_changed")
# warning-ignore:return_value_discarded
config.connect("entry_started", self, "set_button_as_started")
config.connect("time_sheet_loaded", self, "_on_time_sheet_loaded")
update_timer_state()
# warning-ignore:return_value_discarded
config.connect("entry_stopped", self, "set_button_as_stopped")
#config.connect("entry_started", self, "set_button_as_started")
# warning-ignore:return_value_discarded
#config.connect("entry_stopped", self, "set_button_as_stopped")
# TODO: connect this:
#time_entries_items_tree.item_selected.connect(
# func item_selected() -> void:
@ -34,25 +38,33 @@ func _ready() -> void:
func _on_timer_timeout() -> void:
config.timesheet.update()
time_label.text = config.timesheet.get_period()
## TODO: change this
# var total_elapsed: int = config.timesheet.get_total_elapsed_seconds()
# time_entries_items_tree.set_time_elapsed(total_elapsed)
time_label.text = current_time_entry.get_period()
func _on_start_button_toggled(is_on: bool) -> void:
func _on_start_button_toggled(_is_on: bool) -> void:
if config.sound_fx_on:
audio_stream_player.play()
if is_on:
config.timesheet.start_entry(task_name_line_edit.text)
if current_time_entry != null:
config.timesheet.stop_entry(task_name_line_edit.text)
else:
config.timesheet.close_entry()
config.timesheet.add_entry(task_name_line_edit.text)
func _on_task_name_line_edit_text_changed(new_text: String) -> void:
config.last_task_name = new_text
config.current_task_name = new_text
update_timer_state()
func _on_time_sheet_loaded():
print("loaded")
update_timer_state()
func update_timer_state() -> void:
current_time_entry = config.timesheet.get_active_entry_from_name(config.current_task_name)
if current_time_entry:
set_button_as_started()
else:
set_button_as_stopped()
func set_button_as_stopped() -> void:
@ -70,9 +82,3 @@ func set_button_as_started() -> void:
start_button.hint_tooltip = tr(Consts.STOP)
start_button.theme_type_variation = Consts.THEME_OVERRIDE_STOP
timer.start()
func set_initial_state() -> void:
if config.timesheet.current_entry != null and config.timesheet.current_entry.closed == false:
start_button.set_pressed_no_signal(true)
set_button_as_started()