first commit
This commit is contained in:
commit
e1f3ca740f
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.godot/
|
365
Main.gd
Normal file
365
Main.gd
Normal file
@ -0,0 +1,365 @@
|
|||||||
|
extends Control
|
||||||
|
|
||||||
|
const CONFIG_PATH := "user://settings.cfg"
|
||||||
|
|
||||||
|
enum COL{
|
||||||
|
TEXT,
|
||||||
|
TIME
|
||||||
|
}
|
||||||
|
|
||||||
|
const STRINGS := {
|
||||||
|
START = "start",
|
||||||
|
STOP = "stop",
|
||||||
|
NO_TIME = "00:00:00",
|
||||||
|
}
|
||||||
|
|
||||||
|
@onready var time_label: Label = %TimeLabel
|
||||||
|
@onready var start_button: Button = %StartButton
|
||||||
|
@onready var task_name_line_edit: LineEdit = %TaskNameLineEdit
|
||||||
|
@onready var previous_tasks_tree: Tree = %PreviousTasksTree
|
||||||
|
@onready var timer: Timer = %Timer
|
||||||
|
@onready var tasks_button: Button = %TasksButton
|
||||||
|
@onready var settings_button: Button = %SettingsButton
|
||||||
|
@onready var previous_tasks_window: Window = %PreviousTasksWindow
|
||||||
|
@onready var settings_window: Window = %SettingsWindow
|
||||||
|
@onready var file_path_file_dialog: FileDialog = %FilePathFileDialog
|
||||||
|
@onready var file_path_line_edit: LineEdit = %FilePathLineEdit
|
||||||
|
@onready var file_path_button: Button = %FilePathButton
|
||||||
|
@onready var theme_path_file_dialog: FileDialog = %ThemePathFileDialog
|
||||||
|
@onready var theme_path_button: Button = %ThemePathButton
|
||||||
|
@onready var sound_check_box: CheckBox = %SoundCheckBox
|
||||||
|
@onready var attributions_rich_text_label: RichTextLabel = %AttributionsRichTextLabel
|
||||||
|
@onready var audio_stream_player: AudioStreamPlayer = %AudioStreamPlayer
|
||||||
|
@onready var open_data_dir_button: Button = %OpenDataDirButton
|
||||||
|
|
||||||
|
|
||||||
|
var previous_entries: Array[TimeEntry] = []
|
||||||
|
var current_entry := TimeEntry.new()
|
||||||
|
var current_item: TreeItem
|
||||||
|
var config := ConfigFile.new()
|
||||||
|
var current_file := ""
|
||||||
|
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
|
||||||
|
config.load(CONFIG_PATH)
|
||||||
|
var default_path := OS.get_system_dir(OS.SYSTEM_DIR_DOCUMENTS, true).path_join("mouse_timer.csv")
|
||||||
|
current_file = config.get_value("MAIN", "file", default_path)
|
||||||
|
if config.has_section_key("MAIN", "theme"):
|
||||||
|
var new_theme: Theme = ResourceLoader.load(config.get_value("MAIN", "theme", "res://default_theme.theme"), "Theme")
|
||||||
|
if new_theme != null:
|
||||||
|
theme = new_theme
|
||||||
|
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
|
||||||
|
get_tree().set_auto_accept_quit(false)
|
||||||
|
var _root := previous_tasks_tree.create_item()
|
||||||
|
|
||||||
|
file_path_button.pressed.connect(
|
||||||
|
file_path_file_dialog.popup_centered
|
||||||
|
)
|
||||||
|
|
||||||
|
file_path_file_dialog.file_selected.connect(set_current_file)
|
||||||
|
file_path_line_edit.text_submitted.connect(set_current_file)
|
||||||
|
|
||||||
|
theme_path_button.pressed.connect(
|
||||||
|
theme_path_file_dialog.popup_centered
|
||||||
|
)
|
||||||
|
theme_path_file_dialog.file_selected.connect(
|
||||||
|
func theme_selected(theme_path: String) -> void:
|
||||||
|
var new_theme: Theme = ResourceLoader.load(theme_path, "Theme")
|
||||||
|
if new_theme != null:
|
||||||
|
theme = new_theme
|
||||||
|
config.set_value("MAIN", "theme", theme_path)
|
||||||
|
config.save(CONFIG_PATH)
|
||||||
|
)
|
||||||
|
|
||||||
|
theme_path_file_dialog.hide()
|
||||||
|
file_path_file_dialog.hide()
|
||||||
|
previous_tasks_window.hide()
|
||||||
|
settings_window.hide()
|
||||||
|
|
||||||
|
timer.timeout.connect(
|
||||||
|
func on_timer_timeout() -> void:
|
||||||
|
current_entry.update()
|
||||||
|
|
||||||
|
time_label.text = current_entry.get_period()
|
||||||
|
|
||||||
|
var total_elapsed: int = current_entry.get_total_elapsed_seconds()
|
||||||
|
current_item.set_text(COL.TIME, TimeEntry.time_to_period(total_elapsed))
|
||||||
|
current_item.set_metadata(COL.TIME, total_elapsed)
|
||||||
|
)
|
||||||
|
|
||||||
|
start_button.tooltip_text = tr(STRINGS.START)
|
||||||
|
start_button.toggle_mode = true
|
||||||
|
start_button.toggled.connect(
|
||||||
|
func start(is_on: bool) -> void:
|
||||||
|
if sound_check_box.button_pressed:
|
||||||
|
audio_stream_player.play()
|
||||||
|
if is_on:
|
||||||
|
current_entry = TimeEntry.new().start_recording()
|
||||||
|
current_entry.name = task_name_line_edit.text
|
||||||
|
current_item = append_name_to_tree(task_name_line_edit.text)
|
||||||
|
current_entry.previous_total = current_item.get_metadata(COL.TIME)
|
||||||
|
start_button.tooltip_text = tr(STRINGS.STOP)
|
||||||
|
timer.start()
|
||||||
|
else:
|
||||||
|
add_to_entries()
|
||||||
|
start_button.tooltip_text = tr(STRINGS.START)
|
||||||
|
time_label.text = STRINGS.NO_TIME
|
||||||
|
timer.stop()
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
task_name_line_edit.text = config.get_value("MAIN", "last_task_name", "")
|
||||||
|
task_name_line_edit.text_changed.connect(
|
||||||
|
func(new_text: String) -> void:
|
||||||
|
config.set_value("MAIN", "last_task_name", new_text)
|
||||||
|
config.save(CONFIG_PATH)
|
||||||
|
)
|
||||||
|
previous_tasks_tree.item_selected.connect(
|
||||||
|
func item_selected() -> void:
|
||||||
|
var item := previous_tasks_tree.get_selected()
|
||||||
|
task_name_line_edit.text = item.get_metadata(COL.TEXT)
|
||||||
|
)
|
||||||
|
|
||||||
|
tasks_button.toggle_mode = true
|
||||||
|
tasks_button.toggled.connect(
|
||||||
|
func tasks_toggled(is_on: bool) -> void:
|
||||||
|
previous_tasks_window.visible = is_on
|
||||||
|
)
|
||||||
|
previous_tasks_window.close_requested.connect(
|
||||||
|
func close() -> void:
|
||||||
|
tasks_button.set_pressed_no_signal(false)
|
||||||
|
previous_tasks_window.hide()
|
||||||
|
)
|
||||||
|
|
||||||
|
settings_button.toggle_mode = true
|
||||||
|
settings_button.toggled.connect(
|
||||||
|
func settings_toggled(is_on: bool) -> void:
|
||||||
|
settings_window.visible = is_on
|
||||||
|
)
|
||||||
|
settings_window.close_requested.connect(
|
||||||
|
func close() -> void:
|
||||||
|
settings_button.set_pressed_no_signal(false)
|
||||||
|
settings_window.hide()
|
||||||
|
)
|
||||||
|
|
||||||
|
sound_check_box.button_pressed = config.get_value("MAIN", "sound_fx", true)
|
||||||
|
sound_check_box.toggled.connect(
|
||||||
|
func sound_toggle(is_on: bool) -> void:
|
||||||
|
config.set_value("MAIN", "sound_fx", is_on)
|
||||||
|
)
|
||||||
|
|
||||||
|
open_data_dir_button.pressed.connect(
|
||||||
|
OS.shell_open.bind(OS.get_user_data_dir())
|
||||||
|
)
|
||||||
|
|
||||||
|
attributions_rich_text_label.meta_clicked.connect(OS.shell_open)
|
||||||
|
|
||||||
|
set_current_file(current_file)
|
||||||
|
|
||||||
|
|
||||||
|
## Adds a new time entry to the tree and to the data file
|
||||||
|
func add_to_entries() -> void:
|
||||||
|
previous_entries.append(current_entry)
|
||||||
|
var file := FileAccess.open(current_file, FileAccess.WRITE)
|
||||||
|
if file == null:
|
||||||
|
printerr("Could not open file")
|
||||||
|
file.store_csv_line(current_entry.to_csv_line())
|
||||||
|
|
||||||
|
|
||||||
|
## Adds a new item to the tree, or returns the old item if it exists
|
||||||
|
func append_name_to_tree(task_name: String, total_time := 0) -> TreeItem:
|
||||||
|
var item := previous_tasks_tree.get_root()
|
||||||
|
for item_name in task_name.split("/"):
|
||||||
|
item.collapsed = false
|
||||||
|
item = find_item(item, item_name, true)
|
||||||
|
item.set_metadata(COL.TEXT, task_name)
|
||||||
|
if not item.get_metadata(COL.TIME):
|
||||||
|
item.set_metadata(COL.TIME, total_time)
|
||||||
|
previous_tasks_tree.scroll_to_item(item)
|
||||||
|
return item
|
||||||
|
|
||||||
|
|
||||||
|
## Finds an item in the tree by text
|
||||||
|
func find_item(root: TreeItem, item_name: String, or_create: bool) -> TreeItem:
|
||||||
|
for child in root.get_children():
|
||||||
|
if child.get_text(COL.TEXT) == item_name:
|
||||||
|
return child
|
||||||
|
if or_create:
|
||||||
|
var child := root.create_child()
|
||||||
|
child.set_text(COL.TEXT, item_name)
|
||||||
|
child.set_text(COL.TIME, STRINGS.NO_TIME)
|
||||||
|
return child
|
||||||
|
return null
|
||||||
|
|
||||||
|
|
||||||
|
## Changes the data file path, and loads the new path
|
||||||
|
func set_current_file(new_current_file: String) -> void:
|
||||||
|
if not load_file(new_current_file):
|
||||||
|
return
|
||||||
|
previous_entries.clear()
|
||||||
|
current_file = new_current_file
|
||||||
|
config.set_value("MAIN", "file", current_file)
|
||||||
|
config.save(CONFIG_PATH)
|
||||||
|
file_path_file_dialog.current_path = current_file
|
||||||
|
file_path_file_dialog.current_dir = current_file.get_base_dir()
|
||||||
|
file_path_line_edit.text = current_file
|
||||||
|
|
||||||
|
|
||||||
|
## Loads the data file
|
||||||
|
func load_file(source_path: String) -> bool:
|
||||||
|
var file := FileAccess.open(source_path, FileAccess.READ)
|
||||||
|
if file == null:
|
||||||
|
file = FileAccess.open(source_path, FileAccess.WRITE)
|
||||||
|
if file == null:
|
||||||
|
printerr("Failed to open file %s"%[ProjectSettings.globalize_path(source_path)])
|
||||||
|
return false
|
||||||
|
return true
|
||||||
|
var collector := {}
|
||||||
|
while not file.eof_reached():
|
||||||
|
var line := file.get_csv_line()
|
||||||
|
if line.size() == 0 or "".join(line).length() == 0:
|
||||||
|
continue
|
||||||
|
if not TimeEntry.is_csv_line_valid(line):
|
||||||
|
push_warning("CSV Line `%s` is not conform"%[",".join(line)])
|
||||||
|
continue
|
||||||
|
var entry := TimeEntry.new().from_csv_line(line)
|
||||||
|
previous_entries.append(entry)
|
||||||
|
if not collector.has(entry.name):
|
||||||
|
collector[entry.name] = 0
|
||||||
|
collector[entry.name] += entry.get_elapsed_seconds()
|
||||||
|
for entry_name in collector:
|
||||||
|
append_name_to_tree(entry_name, collector[entry_name])
|
||||||
|
file.close()
|
||||||
|
return true
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func _notification(what: int) -> void:
|
||||||
|
if what == NOTIFICATION_WM_CLOSE_REQUEST:
|
||||||
|
if start_button.button_pressed:
|
||||||
|
add_to_entries()
|
||||||
|
get_tree().quit()
|
||||||
|
|
||||||
|
|
||||||
|
## Unused; if a manual quit button is added, this would be used
|
||||||
|
func quit() -> void:
|
||||||
|
get_tree().notification(NOTIFICATION_WM_CLOSE_REQUEST)
|
||||||
|
|
||||||
|
|
||||||
|
class TimeEntry:
|
||||||
|
|
||||||
|
var name := ""
|
||||||
|
var start_time := TimeStamp.new()
|
||||||
|
var end_time := TimeStamp.new()
|
||||||
|
var previous_total := 0
|
||||||
|
|
||||||
|
|
||||||
|
func start_recording() -> TimeEntry:
|
||||||
|
start_time = start_time.from_current_time()
|
||||||
|
end_time = end_time.from_current_time()
|
||||||
|
return self
|
||||||
|
|
||||||
|
|
||||||
|
func update() -> void:
|
||||||
|
end_time = end_time.from_current_time()
|
||||||
|
|
||||||
|
|
||||||
|
func get_elapsed_seconds() -> int:
|
||||||
|
var elapsed := end_time.get_difference(start_time)
|
||||||
|
return elapsed
|
||||||
|
|
||||||
|
|
||||||
|
func get_total_elapsed_seconds() -> int:
|
||||||
|
var elapsed := get_elapsed_seconds() + previous_total
|
||||||
|
return elapsed
|
||||||
|
|
||||||
|
|
||||||
|
func get_period() -> String:
|
||||||
|
var time_in_secs := get_elapsed_seconds()
|
||||||
|
return TimeEntry.time_to_period(time_in_secs)
|
||||||
|
|
||||||
|
|
||||||
|
func get_total_period() -> String:
|
||||||
|
var time_in_secs := get_total_elapsed_seconds()
|
||||||
|
return TimeEntry.time_to_period(time_in_secs)
|
||||||
|
|
||||||
|
|
||||||
|
static func time_to_period(time_in_secs: int) -> String:
|
||||||
|
var seconds := time_in_secs%60
|
||||||
|
@warning_ignore("integer_division")
|
||||||
|
var minutes := (time_in_secs/60)%60
|
||||||
|
@warning_ignore("integer_division")
|
||||||
|
var hours := (time_in_secs/60)/60
|
||||||
|
return "%02d:%02d:%02d" % [hours, minutes, seconds]
|
||||||
|
|
||||||
|
func to_csv_line() -> PackedStringArray:
|
||||||
|
return PackedStringArray([
|
||||||
|
name,
|
||||||
|
start_time,
|
||||||
|
end_time,
|
||||||
|
str(get_elapsed_seconds()),
|
||||||
|
])
|
||||||
|
|
||||||
|
static func is_csv_line_valid(line: PackedStringArray) -> bool:
|
||||||
|
return line.size() > 2
|
||||||
|
|
||||||
|
|
||||||
|
func from_csv_line(line: PackedStringArray) -> TimeEntry:
|
||||||
|
name = line[0]
|
||||||
|
start_time.from_string(line[1])
|
||||||
|
end_time.from_string(line[2])
|
||||||
|
return self
|
||||||
|
|
||||||
|
|
||||||
|
class TimeStamp:
|
||||||
|
var year := 0
|
||||||
|
var month := 0
|
||||||
|
var day := 0
|
||||||
|
var weekday := 0
|
||||||
|
var hour := 0
|
||||||
|
var minute := 0
|
||||||
|
var second := 0
|
||||||
|
var unix := 0
|
||||||
|
|
||||||
|
|
||||||
|
func from_current_time() -> TimeStamp:
|
||||||
|
return from_dict(Time.get_datetime_dict_from_system())
|
||||||
|
|
||||||
|
|
||||||
|
func from_dict(time: Dictionary) -> TimeStamp:
|
||||||
|
year = time.year
|
||||||
|
month = time.month
|
||||||
|
day = time.day
|
||||||
|
weekday = time.weekday
|
||||||
|
hour = time.hour
|
||||||
|
minute = time.minute
|
||||||
|
second = time.second
|
||||||
|
unix = Time.get_unix_time_from_datetime_dict(time)
|
||||||
|
return self
|
||||||
|
|
||||||
|
func to_dict() -> Dictionary:
|
||||||
|
return {
|
||||||
|
year = year,
|
||||||
|
month = month,
|
||||||
|
day = day,
|
||||||
|
weekday = weekday,
|
||||||
|
hour = hour,
|
||||||
|
minute = minute,
|
||||||
|
second = second,
|
||||||
|
}
|
||||||
|
|
||||||
|
func get_difference(other_timestamp: TimeStamp) -> int:
|
||||||
|
return unix - other_timestamp.unix
|
||||||
|
|
||||||
|
|
||||||
|
func from_string(time_string: String) -> TimeStamp:
|
||||||
|
var time := Time.get_datetime_dict_from_datetime_string(time_string, true)
|
||||||
|
return from_dict(time)
|
||||||
|
|
||||||
|
|
||||||
|
func _to_string() -> String:
|
||||||
|
return Time.get_datetime_string_from_datetime_dict(to_dict(), false)
|
236
Main.tscn
Normal file
236
Main.tscn
Normal file
@ -0,0 +1,236 @@
|
|||||||
|
[gd_scene load_steps=6 format=3 uid="uid://bmlciwscreowf"]
|
||||||
|
|
||||||
|
[ext_resource type="Theme" uid="uid://bd8ancgbfsvmd" path="res://assets/default_theme.theme" id="1_1mila"]
|
||||||
|
[ext_resource type="Script" path="res://Main.gd" id="1_vrowr"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://cdsbhoidgyx70" path="res://assets/pop.ogg" id="3_o37py"]
|
||||||
|
|
||||||
|
[sub_resource type="InputEventKey" id="InputEventKey_guuii"]
|
||||||
|
device = -1
|
||||||
|
pressed = true
|
||||||
|
keycode = 32
|
||||||
|
unicode = 32
|
||||||
|
|
||||||
|
[sub_resource type="Shortcut" id="Shortcut_irhvi"]
|
||||||
|
events = [SubResource("InputEventKey_guuii")]
|
||||||
|
|
||||||
|
[node name="PanelContainer" type="PanelContainer"]
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
theme = ExtResource("1_1mila")
|
||||||
|
theme_type_variation = &"background"
|
||||||
|
|
||||||
|
[node name="Main" type="MarginContainer" parent="."]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/margin_left = 5
|
||||||
|
theme_override_constants/margin_top = 5
|
||||||
|
theme_override_constants/margin_right = 5
|
||||||
|
theme_override_constants/margin_bottom = 5
|
||||||
|
script = ExtResource("1_vrowr")
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="Main"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
|
||||||
|
[node name="HBoxContainer2" type="HBoxContainer" parent="Main/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="SettingsButton" type="Button" parent="Main/VBoxContainer/HBoxContainer2"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
tooltip_text = "Settings"
|
||||||
|
theme_type_variation = &"settings_button"
|
||||||
|
icon_alignment = 1
|
||||||
|
|
||||||
|
[node name="TaskNameLineEdit" type="LineEdit" parent="Main/VBoxContainer/HBoxContainer2"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
placeholder_text = "Task Name. Use \"/\" to create subtasks"
|
||||||
|
caret_blink = true
|
||||||
|
caret_blink_interval = 0.5
|
||||||
|
|
||||||
|
[node name="TasksButton" type="Button" parent="Main/VBoxContainer/HBoxContainer2"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
tooltip_text = "Tasks"
|
||||||
|
theme_type_variation = &"tasks_button"
|
||||||
|
icon_alignment = 1
|
||||||
|
|
||||||
|
[node name="HBoxContainer" type="HBoxContainer" parent="Main/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="TimeLabel" type="Label" parent="Main/VBoxContainer/HBoxContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 1
|
||||||
|
theme_type_variation = &"time_label"
|
||||||
|
text = "00:00:00"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
|
||||||
|
[node name="StartButton" type="Button" parent="Main/VBoxContainer/HBoxContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
theme_type_variation = &"play_button"
|
||||||
|
shortcut = SubResource("Shortcut_irhvi")
|
||||||
|
|
||||||
|
[node name="Timer" type="Timer" parent="Main"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
[node name="FilePathFileDialog" type="FileDialog" parent="Main"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
title = "Pick Tracker File"
|
||||||
|
size = Vector2i(800, 600)
|
||||||
|
ok_button_text = "Save"
|
||||||
|
access = 2
|
||||||
|
filters = PackedStringArray("*.csv ; Comma Separated Files")
|
||||||
|
|
||||||
|
[node name="ThemePathFileDialog" type="FileDialog" parent="Main"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
title = "Open a File"
|
||||||
|
size = Vector2i(800, 600)
|
||||||
|
ok_button_text = "Open"
|
||||||
|
file_mode = 0
|
||||||
|
access = 2
|
||||||
|
filters = PackedStringArray("*.theme ; Theme Files")
|
||||||
|
|
||||||
|
[node name="PreviousTasksWindow" type="Window" parent="Main"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
title = "Tasks"
|
||||||
|
size = Vector2i(300, 300)
|
||||||
|
visible = false
|
||||||
|
always_on_top = true
|
||||||
|
|
||||||
|
[node name="PanelContainer" type="PanelContainer" parent="Main/PreviousTasksWindow"]
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
theme_type_variation = &"background"
|
||||||
|
|
||||||
|
[node name="MarginContainer" type="MarginContainer" parent="Main/PreviousTasksWindow/PanelContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 3
|
||||||
|
theme_override_constants/margin_left = 20
|
||||||
|
theme_override_constants/margin_top = 20
|
||||||
|
theme_override_constants/margin_right = 20
|
||||||
|
theme_override_constants/margin_bottom = 20
|
||||||
|
|
||||||
|
[node name="PreviousTasksTree" type="Tree" parent="Main/PreviousTasksWindow/PanelContainer/MarginContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
columns = 2
|
||||||
|
|
||||||
|
[node name="SettingsWindow" type="Window" parent="Main"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
title = "Settings"
|
||||||
|
size = Vector2i(300, 300)
|
||||||
|
visible = false
|
||||||
|
always_on_top = true
|
||||||
|
|
||||||
|
[node name="PanelContainer" type="PanelContainer" parent="Main/SettingsWindow"]
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
theme_type_variation = &"background"
|
||||||
|
|
||||||
|
[node name="MarginContainer" type="MarginContainer" parent="Main/SettingsWindow/PanelContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
theme_override_constants/margin_left = 20
|
||||||
|
theme_override_constants/margin_top = 20
|
||||||
|
theme_override_constants/margin_right = 20
|
||||||
|
theme_override_constants/margin_bottom = 20
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="Main/SettingsWindow/PanelContainer/MarginContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
theme_override_constants/separation = 10
|
||||||
|
|
||||||
|
[node name="HBoxContainer" type="HBoxContainer" parent="Main/SettingsWindow/PanelContainer/MarginContainer/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="Main/SettingsWindow/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "File Path"
|
||||||
|
|
||||||
|
[node name="FilePathLineEdit" type="LineEdit" parent="Main/SettingsWindow/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
caret_blink = true
|
||||||
|
caret_blink_interval = 0.5
|
||||||
|
|
||||||
|
[node name="FilePathButton" type="Button" parent="Main/SettingsWindow/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
text = "..."
|
||||||
|
|
||||||
|
[node name="HBoxContainer2" type="HBoxContainer" parent="Main/SettingsWindow/PanelContainer/MarginContainer/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="Main/SettingsWindow/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer2"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "Alternative theme
|
||||||
|
"
|
||||||
|
|
||||||
|
[node name="ThemePathButton" type="Button" parent="Main/SettingsWindow/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer2"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
text = "load"
|
||||||
|
|
||||||
|
[node name="HBoxContainer3" type="HBoxContainer" parent="Main/SettingsWindow/PanelContainer/MarginContainer/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="SoundCheckBox" type="CheckBox" parent="Main/SettingsWindow/PanelContainer/MarginContainer/VBoxContainer/HBoxContainer3"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
button_pressed = true
|
||||||
|
text = "Sounds"
|
||||||
|
|
||||||
|
[node name="OpenDataDirButton" type="Button" parent="Main/SettingsWindow/PanelContainer/MarginContainer/VBoxContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
text = "open data dir"
|
||||||
|
|
||||||
|
[node name="AttributionsRichTextLabel" type="RichTextLabel" parent="Main/SettingsWindow/PanelContainer/MarginContainer/VBoxContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_vertical = 3
|
||||||
|
theme_type_variation = &"small_text"
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "Font: Cairo, Designed by Mohamed Gaber, Accademia di Belle Arti di Urbino
|
||||||
|
|
||||||
|
Sound: [url]https://opengameart.org/content/bubbles-pop[/url]
|
||||||
|
|
||||||
|
This game uses Godot Engine, available under the following license:
|
||||||
|
|
||||||
|
Copyright (c) 2014-present Godot Engine contributors. Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
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="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = ExtResource("3_o37py")
|
9
README.md
Normal file
9
README.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
# Rat Times
|
||||||
|
|
||||||
|
Track your time, save it to a CSV file.
|
||||||
|
|
||||||
|
![screenshot of the app](info/screenshot.png)
|
||||||
|
|
||||||
|
That's it I guess
|
||||||
|
|
||||||
|
Uses Godot 4
|
BIN
assets/Cairo-VariableFont_slnt,wght.ttf
Normal file
BIN
assets/Cairo-VariableFont_slnt,wght.ttf
Normal file
Binary file not shown.
33
assets/Cairo-VariableFont_slnt,wght.ttf.import
Normal file
33
assets/Cairo-VariableFont_slnt,wght.ttf.import
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="font_data_dynamic"
|
||||||
|
type="FontFile"
|
||||||
|
uid="uid://xixlsyswj6mv"
|
||||||
|
path="res://.godot/imported/Cairo-VariableFont_slnt,wght.ttf-8e1ad3a3f88c2663b83086e73553b314.fontdata"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/Cairo-VariableFont_slnt,wght.ttf"
|
||||||
|
dest_files=["res://.godot/imported/Cairo-VariableFont_slnt,wght.ttf-8e1ad3a3f88c2663b83086e73553b314.fontdata"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
Rendering=null
|
||||||
|
antialiasing=1
|
||||||
|
generate_mipmaps=false
|
||||||
|
multichannel_signed_distance_field=false
|
||||||
|
msdf_pixel_range=8
|
||||||
|
msdf_size=48
|
||||||
|
allow_system_fallback=true
|
||||||
|
force_autohinter=false
|
||||||
|
hinting=1
|
||||||
|
subpixel_positioning=1
|
||||||
|
oversampling=0.0
|
||||||
|
Fallbacks=null
|
||||||
|
fallbacks=[]
|
||||||
|
Compress=null
|
||||||
|
compress=true
|
||||||
|
preload=[]
|
||||||
|
language_support={}
|
||||||
|
script_support={}
|
||||||
|
opentype_features={}
|
BIN
assets/debug.keystore
Normal file
BIN
assets/debug.keystore
Normal file
Binary file not shown.
BIN
assets/default_theme.theme
Normal file
BIN
assets/default_theme.theme
Normal file
Binary file not shown.
54
assets/play.svg
Normal file
54
assets/play.svg
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
viewBox="0 0 16.933333 16.933333"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||||
|
sodipodi:docname="play.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#111111"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="1"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:zoom="8.8391522"
|
||||||
|
inkscape:cx="28.905487"
|
||||||
|
inkscape:cy="29.867118"
|
||||||
|
inkscape:window-width="1896"
|
||||||
|
inkscape:window-height="1029"
|
||||||
|
inkscape:window-x="12"
|
||||||
|
inkscape:window-y="39"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid7036"
|
||||||
|
originx="0"
|
||||||
|
originy="0" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<path
|
||||||
|
id="rect11457"
|
||||||
|
style="fill:#ffffff;stroke-width:1.85208;paint-order:stroke markers fill;stop-color:#000000"
|
||||||
|
d="M 2.38125,2.38125 14.552082,8.466666 2.38125,14.552082 Z"
|
||||||
|
sodipodi:nodetypes="cccc" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
37
assets/play.svg.import
Normal file
37
assets/play.svg.import
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bcledyqebmri"
|
||||||
|
path="res://.godot/imported/play.svg-1c68bc58d294f89383fc6b13dae7f4f1.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/play.svg"
|
||||||
|
dest_files=["res://.godot/imported/play.svg-1c68bc58d294f89383fc6b13dae7f4f1.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
BIN
assets/pop.ogg
Normal file
BIN
assets/pop.ogg
Normal file
Binary file not shown.
19
assets/pop.ogg.import
Normal file
19
assets/pop.ogg.import
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="oggvorbisstr"
|
||||||
|
type="AudioStreamOggVorbis"
|
||||||
|
uid="uid://cdsbhoidgyx70"
|
||||||
|
path="res://.godot/imported/pop.ogg-1ea32f2d825ac1e6d9420f3fecda89df.oggvorbisstr"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/pop.ogg"
|
||||||
|
dest_files=["res://.godot/imported/pop.ogg-1ea32f2d825ac1e6d9420f3fecda89df.oggvorbisstr"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=false
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
122
assets/tasks.svg
Normal file
122
assets/tasks.svg
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="32"
|
||||||
|
height="32"
|
||||||
|
viewBox="0 0 8.4666665 8.4666666"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||||
|
sodipodi:docname="tasks.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#2e2e2e"
|
||||||
|
bordercolor="#111111"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="1"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:zoom="50.001796"
|
||||||
|
inkscape:cx="28.848964"
|
||||||
|
inkscape:cy="14.559477"
|
||||||
|
inkscape:window-width="1896"
|
||||||
|
inkscape:window-height="1029"
|
||||||
|
inkscape:window-x="12"
|
||||||
|
inkscape:window-y="39"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid7036" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.85208;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
|
||||||
|
id="rect7028"
|
||||||
|
width="4.7625003"
|
||||||
|
height="0.79374999"
|
||||||
|
x="2.6458333"
|
||||||
|
y="0.79372603" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.85208;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
|
||||||
|
id="rect7030"
|
||||||
|
width="0.79374999"
|
||||||
|
height="0.79374999"
|
||||||
|
x="-1.8520833"
|
||||||
|
y="0.79374999"
|
||||||
|
transform="scale(-1,1)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.85208;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
|
||||||
|
id="rect7032"
|
||||||
|
width="4.7625003"
|
||||||
|
height="0.79374999"
|
||||||
|
x="2.6458333"
|
||||||
|
y="2.3907511" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.85208;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
|
||||||
|
id="rect7034"
|
||||||
|
width="0.79374999"
|
||||||
|
height="0.79374999"
|
||||||
|
x="-1.8520833"
|
||||||
|
y="2.3907752"
|
||||||
|
transform="scale(-1,1)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.85208;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
|
||||||
|
id="rect7038"
|
||||||
|
width="4.7625003"
|
||||||
|
height="0.79374999"
|
||||||
|
x="2.6458333"
|
||||||
|
y="3.9782515" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.85208;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
|
||||||
|
id="rect7040"
|
||||||
|
width="0.79374999"
|
||||||
|
height="0.79374999"
|
||||||
|
x="-1.8520833"
|
||||||
|
y="3.9782753"
|
||||||
|
transform="scale(-1,1)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.85208;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
|
||||||
|
id="rect7042"
|
||||||
|
width="4.7625003"
|
||||||
|
height="0.79374999"
|
||||||
|
x="2.6458333"
|
||||||
|
y="5.5657516" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.85208;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
|
||||||
|
id="rect7044"
|
||||||
|
width="0.79374999"
|
||||||
|
height="0.79374999"
|
||||||
|
x="-1.8520833"
|
||||||
|
y="5.5657754"
|
||||||
|
transform="scale(-1,1)" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.85208;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
|
||||||
|
id="rect7046"
|
||||||
|
width="4.7625003"
|
||||||
|
height="0.79374999"
|
||||||
|
x="2.6458333"
|
||||||
|
y="7.1532512" />
|
||||||
|
<rect
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.85208;stroke-opacity:1;paint-order:stroke markers fill;stop-color:#000000"
|
||||||
|
id="rect7048"
|
||||||
|
width="0.79374999"
|
||||||
|
height="0.79374999"
|
||||||
|
x="-1.8520833"
|
||||||
|
y="7.153275"
|
||||||
|
transform="scale(-1,1)" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.1 KiB |
37
assets/tasks.svg.import
Normal file
37
assets/tasks.svg.import
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://ctxkpfc0syh2m"
|
||||||
|
path="res://.godot/imported/tasks.svg-78ebb4f2e18a1507072d2a7762176d95.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/tasks.svg"
|
||||||
|
dest_files=["res://.godot/imported/tasks.svg-78ebb4f2e18a1507072d2a7762176d95.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
51
assets/wheel.svg
Normal file
51
assets/wheel.svg
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="32"
|
||||||
|
height="32"
|
||||||
|
viewBox="0 0 8.4666665 8.4666666"
|
||||||
|
version="1.1"
|
||||||
|
id="svg5"
|
||||||
|
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||||
|
sodipodi:docname="wheel.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#111111"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="1"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="17.678304"
|
||||||
|
inkscape:cx="9.7577232"
|
||||||
|
inkscape:cy="18.610382"
|
||||||
|
inkscape:window-width="1896"
|
||||||
|
inkscape:window-height="1029"
|
||||||
|
inkscape:window-x="12"
|
||||||
|
inkscape:window-y="39"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs2" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<path
|
||||||
|
id="path3561"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
d="m 3.6356476,1.2293853 0.00379,0.046558 0.1415653,0.7051859 -0.8202564,0.3399125 -0.3985834,-0.5988214 -0.030282,-0.035581 -0.845239,0.845239 0.035581,0.030282 0.5988214,0.3985834 -0.3399125,0.8202564 -0.7051859,-0.141567 -0.046558,-0.00379 v 1.1953715 l 0.046558,-0.00379 0.7051859,-0.1415637 0.3399125,0.8202566 -0.5988214,0.3985832 -0.035581,0.030282 0.845239,0.8452389 0.030282,-0.035581 0.3985834,-0.5988213 0.8202564,0.3399125 -0.141567,0.7051859 -0.00378,0.046558 H 4.8310222 L 4.8272338,7.1907233 4.6856667,6.4855374 5.5059233,6.1456249 5.9045065,6.7444462 5.9347883,6.7800272 6.7800272,5.9347883 6.7444462,5.9045065 6.1456249,5.5059233 6.4855374,4.6856667 l 0.7051859,0.1415671 0.046558,0.00379 V 3.6356476 L 7.1907233,3.6394329 6.4855374,3.7809999 6.1456249,2.9607435 6.7444462,2.5621601 6.7800272,2.5318785 5.9347883,1.6866395 5.9045065,1.7222205 5.5059233,2.3210419 4.6856667,1.9811294 4.8272338,1.2759435 4.8310208,1.2293853 Z M 4.2333334,3.0303915 A 1.2027582,1.2027582 0 0 1 5.4362753,4.2333334 1.2027582,1.2027582 0 0 1 4.2333334,5.4362753 1.2027582,1.2027582 0 0 1 3.0303915,4.2333334 1.2027582,1.2027582 0 0 1 4.2333334,3.0303915 Z" />
|
||||||
|
<path
|
||||||
|
id="path5496"
|
||||||
|
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||||
|
d="m 3.6356476,1.2293853 0.00379,0.046558 0.1415653,0.7051859 -0.8202564,0.3399125 -0.3985834,-0.5988214 -0.030282,-0.035581 -0.845239,0.845239 0.035581,0.030282 0.5988214,0.3985834 -0.3399125,0.8202564 -0.7051859,-0.141567 -0.046558,-0.00379 v 1.1953715 l 0.046558,-0.00379 0.7051859,-0.1415637 0.3399125,0.8202566 -0.5988214,0.3985832 -0.035581,0.030282 0.845239,0.8452389 0.030282,-0.035581 0.3985834,-0.5988213 0.8202564,0.3399125 -0.141567,0.7051859 -0.00378,0.046558 H 4.8310222 L 4.8272338,7.1907233 4.6856667,6.4855374 5.5059233,6.1456249 5.9045065,6.7444462 5.9347883,6.7800272 6.7800272,5.9347883 6.7444462,5.9045065 6.1456249,5.5059233 6.4855374,4.6856667 l 0.7051859,0.1415671 0.046558,0.00379 V 3.6356476 L 7.1907233,3.6394329 6.4855374,3.7809999 6.1456249,2.9607435 6.7444462,2.5621601 6.7800272,2.5318785 5.9347883,1.6866395 5.9045065,1.7222205 5.5059233,2.3210419 4.6856667,1.9811294 4.8272338,1.2759435 4.8310208,1.2293853 Z M 4.2333334,3.0303915 A 1.2027582,1.2027582 0 0 1 5.4362753,4.2333334 1.2027582,1.2027582 0 0 1 4.2333334,5.4362753 1.2027582,1.2027582 0 0 1 3.0303915,4.2333334 1.2027582,1.2027582 0 0 1 4.2333334,3.0303915 Z" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
37
assets/wheel.svg.import
Normal file
37
assets/wheel.svg.import
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dskgsrua03gwe"
|
||||||
|
path="res://.godot/imported/wheel.svg-6ab291b0608b06b66eec00e4d4332248.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/wheel.svg"
|
||||||
|
dest_files=["res://.godot/imported/wheel.svg-6ab291b0608b06b66eec00e4d4332248.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
53
build-icons.sh
Executable file
53
build-icons.sh
Executable file
@ -0,0 +1,53 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# requires imagemagick and png2icns (usually found in libicns)
|
||||||
|
|
||||||
|
convert \
|
||||||
|
-density 300 \
|
||||||
|
-define icon:auto-resize=256,128,96,64,48,32,16 \
|
||||||
|
-background none \
|
||||||
|
logo.svg logo.ico
|
||||||
|
|
||||||
|
|
||||||
|
# see: https://gist.github.com/plroebuck/af19a26c908838c7f9e363c571199deb
|
||||||
|
|
||||||
|
icnsfilename="logo"
|
||||||
|
iconsetdirname=$(mktemp -d -t logo-XXXXXXXXXX)
|
||||||
|
sizes=( 16 32 128 256 512 )
|
||||||
|
#densities=( 72 144 )
|
||||||
|
densities=( 72 )
|
||||||
|
|
||||||
|
for size in "${sizes[@]}"
|
||||||
|
do
|
||||||
|
dimen="${size}x${size}"
|
||||||
|
for density in "${densities[@]}"
|
||||||
|
do
|
||||||
|
if [ "${density}" == "72" ];
|
||||||
|
then
|
||||||
|
## std
|
||||||
|
resolution="${dimen}"
|
||||||
|
scale=""
|
||||||
|
else
|
||||||
|
## hires
|
||||||
|
resolution="$(( $size * 2 ))x$(( $size * 2 ))"
|
||||||
|
scale="@2x"
|
||||||
|
fi
|
||||||
|
pngfilename="${iconsetdirname}/icon_${dimen}${scale}.png"
|
||||||
|
#echo \
|
||||||
|
convert \
|
||||||
|
-background "none" \
|
||||||
|
-density "${density}" \
|
||||||
|
-resize "${resolution}!" \
|
||||||
|
-units "PixelsPerInch" \
|
||||||
|
logo.svg "${pngfilename}"
|
||||||
|
if [ "$?" -ne 0 ]; then
|
||||||
|
echo "error creating icon file: ${pngfilename}" >&2
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "wrote temp icon file: ${pngfilename}" >&2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
png2icns logo.icns "${iconsetdirname}"/icon_*.png
|
495
export_presets.cfg
Normal file
495
export_presets.cfg
Normal file
@ -0,0 +1,495 @@
|
|||||||
|
[preset.0]
|
||||||
|
|
||||||
|
name="Linux/X11"
|
||||||
|
platform="Linux/X11"
|
||||||
|
runnable=true
|
||||||
|
dedicated_server=false
|
||||||
|
custom_features=""
|
||||||
|
export_filter="all_resources"
|
||||||
|
include_filter=""
|
||||||
|
exclude_filter=""
|
||||||
|
export_path="exports/rat-times-x64.x86_64"
|
||||||
|
encryption_include_filters=""
|
||||||
|
encryption_exclude_filters=""
|
||||||
|
encrypt_pck=false
|
||||||
|
encrypt_directory=false
|
||||||
|
script_encryption_key=""
|
||||||
|
|
||||||
|
[preset.0.options]
|
||||||
|
|
||||||
|
custom_template/debug=""
|
||||||
|
custom_template/release=""
|
||||||
|
debug/export_console_script=1
|
||||||
|
binary_format/embed_pck=false
|
||||||
|
texture_format/bptc=false
|
||||||
|
texture_format/s3tc=true
|
||||||
|
texture_format/etc=false
|
||||||
|
texture_format/etc2=false
|
||||||
|
texture_format/no_bptc_fallbacks=true
|
||||||
|
binary_format/architecture="x86_64"
|
||||||
|
ssh_remote_deploy/enabled=false
|
||||||
|
ssh_remote_deploy/host="user@host_ip"
|
||||||
|
ssh_remote_deploy/port="22"
|
||||||
|
ssh_remote_deploy/extra_args_ssh=""
|
||||||
|
ssh_remote_deploy/extra_args_scp=""
|
||||||
|
ssh_remote_deploy/run_script="#!/usr/bin/env bash
|
||||||
|
export DISPLAY=:0
|
||||||
|
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
|
||||||
|
\"{temp_dir}/{exe_name}\" {cmd_args}"
|
||||||
|
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
|
||||||
|
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
|
||||||
|
rm -rf \"{temp_dir}\""
|
||||||
|
|
||||||
|
[preset.1]
|
||||||
|
|
||||||
|
name="macOS"
|
||||||
|
platform="macOS"
|
||||||
|
runnable=true
|
||||||
|
dedicated_server=false
|
||||||
|
custom_features=""
|
||||||
|
export_filter="all_resources"
|
||||||
|
include_filter=""
|
||||||
|
exclude_filter=""
|
||||||
|
export_path=""
|
||||||
|
encryption_include_filters=""
|
||||||
|
encryption_exclude_filters=""
|
||||||
|
encrypt_pck=false
|
||||||
|
encrypt_directory=false
|
||||||
|
script_encryption_key=""
|
||||||
|
|
||||||
|
[preset.1.options]
|
||||||
|
|
||||||
|
binary_format/architecture="universal"
|
||||||
|
custom_template/debug=""
|
||||||
|
custom_template/release=""
|
||||||
|
debug/export_console_script=1
|
||||||
|
application/icon="res://logo.icns"
|
||||||
|
application/icon_interpolation=4
|
||||||
|
application/bundle_identifier="org.mutnt.io.rat-times"
|
||||||
|
application/signature=""
|
||||||
|
application/app_category="Productivity"
|
||||||
|
application/short_version="1.0"
|
||||||
|
application/version="1.0"
|
||||||
|
application/copyright=""
|
||||||
|
application/copyright_localized={}
|
||||||
|
display/high_res=true
|
||||||
|
codesign/codesign=1
|
||||||
|
codesign/identity=""
|
||||||
|
codesign/certificate_file=""
|
||||||
|
codesign/certificate_password=""
|
||||||
|
codesign/entitlements/custom_file=""
|
||||||
|
codesign/entitlements/allow_jit_code_execution=false
|
||||||
|
codesign/entitlements/allow_unsigned_executable_memory=false
|
||||||
|
codesign/entitlements/allow_dyld_environment_variables=false
|
||||||
|
codesign/entitlements/disable_library_validation=false
|
||||||
|
codesign/entitlements/audio_input=false
|
||||||
|
codesign/entitlements/camera=false
|
||||||
|
codesign/entitlements/location=false
|
||||||
|
codesign/entitlements/address_book=false
|
||||||
|
codesign/entitlements/calendars=false
|
||||||
|
codesign/entitlements/photos_library=false
|
||||||
|
codesign/entitlements/apple_events=false
|
||||||
|
codesign/entitlements/debugging=false
|
||||||
|
codesign/entitlements/app_sandbox/enabled=false
|
||||||
|
codesign/entitlements/app_sandbox/network_server=false
|
||||||
|
codesign/entitlements/app_sandbox/network_client=false
|
||||||
|
codesign/entitlements/app_sandbox/device_usb=false
|
||||||
|
codesign/entitlements/app_sandbox/device_bluetooth=false
|
||||||
|
codesign/entitlements/app_sandbox/files_downloads=0
|
||||||
|
codesign/entitlements/app_sandbox/files_pictures=0
|
||||||
|
codesign/entitlements/app_sandbox/files_music=0
|
||||||
|
codesign/entitlements/app_sandbox/files_movies=0
|
||||||
|
codesign/entitlements/app_sandbox/helper_executables=[]
|
||||||
|
codesign/custom_options=PackedStringArray()
|
||||||
|
notarization/notarization=0
|
||||||
|
notarization/apple_id_name=""
|
||||||
|
notarization/apple_id_password=""
|
||||||
|
notarization/apple_team_id=""
|
||||||
|
notarization/api_uuid=""
|
||||||
|
notarization/api_key=""
|
||||||
|
notarization/api_key_id=""
|
||||||
|
privacy/microphone_usage_description=""
|
||||||
|
privacy/microphone_usage_description_localized={}
|
||||||
|
privacy/camera_usage_description=""
|
||||||
|
privacy/camera_usage_description_localized={}
|
||||||
|
privacy/location_usage_description=""
|
||||||
|
privacy/location_usage_description_localized={}
|
||||||
|
privacy/address_book_usage_description=""
|
||||||
|
privacy/address_book_usage_description_localized={}
|
||||||
|
privacy/calendar_usage_description=""
|
||||||
|
privacy/calendar_usage_description_localized={}
|
||||||
|
privacy/photos_library_usage_description=""
|
||||||
|
privacy/photos_library_usage_description_localized={}
|
||||||
|
privacy/desktop_folder_usage_description=""
|
||||||
|
privacy/desktop_folder_usage_description_localized={}
|
||||||
|
privacy/documents_folder_usage_description=""
|
||||||
|
privacy/documents_folder_usage_description_localized={}
|
||||||
|
privacy/downloads_folder_usage_description=""
|
||||||
|
privacy/downloads_folder_usage_description_localized={}
|
||||||
|
privacy/network_volumes_usage_description=""
|
||||||
|
privacy/network_volumes_usage_description_localized={}
|
||||||
|
privacy/removable_volumes_usage_description=""
|
||||||
|
privacy/removable_volumes_usage_description_localized={}
|
||||||
|
ssh_remote_deploy/enabled=false
|
||||||
|
ssh_remote_deploy/host="user@host_ip"
|
||||||
|
ssh_remote_deploy/port="22"
|
||||||
|
ssh_remote_deploy/extra_args_ssh=""
|
||||||
|
ssh_remote_deploy/extra_args_scp=""
|
||||||
|
ssh_remote_deploy/run_script="#!/usr/bin/env bash
|
||||||
|
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
|
||||||
|
open \"{temp_dir}/{exe_name}.app\" --args {cmd_args}"
|
||||||
|
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
|
||||||
|
kill $(pgrep -x -f \"{temp_dir}/{exe_name}.app/Contents/MacOS/{exe_name} {cmd_args}\")
|
||||||
|
rm -rf \"{temp_dir}\""
|
||||||
|
|
||||||
|
[preset.2]
|
||||||
|
|
||||||
|
name="Android"
|
||||||
|
platform="Android"
|
||||||
|
runnable=true
|
||||||
|
dedicated_server=false
|
||||||
|
custom_features=""
|
||||||
|
export_filter="all_resources"
|
||||||
|
include_filter=""
|
||||||
|
exclude_filter=""
|
||||||
|
export_path=""
|
||||||
|
encryption_include_filters=""
|
||||||
|
encryption_exclude_filters=""
|
||||||
|
encrypt_pck=false
|
||||||
|
encrypt_directory=false
|
||||||
|
script_encryption_key=""
|
||||||
|
|
||||||
|
[preset.2.options]
|
||||||
|
|
||||||
|
custom_template/debug=""
|
||||||
|
custom_template/release=""
|
||||||
|
gradle_build/use_gradle_build=false
|
||||||
|
gradle_build/export_format=0
|
||||||
|
gradle_build/min_sdk=""
|
||||||
|
gradle_build/target_sdk=""
|
||||||
|
architectures/armeabi-v7a=false
|
||||||
|
architectures/arm64-v8a=true
|
||||||
|
architectures/x86=false
|
||||||
|
architectures/x86_64=false
|
||||||
|
keystore/debug="/home/xananax/projects/TimeCounter/assets/debug.keystore"
|
||||||
|
keystore/debug_user="android"
|
||||||
|
keystore/debug_password="android"
|
||||||
|
keystore/release=""
|
||||||
|
keystore/release_user=""
|
||||||
|
keystore/release_password=""
|
||||||
|
version/code=1
|
||||||
|
version/name="1.0"
|
||||||
|
package/unique_name="org.mutnt.io.ratstimes"
|
||||||
|
package/name=""
|
||||||
|
package/signed=true
|
||||||
|
package/app_category=2
|
||||||
|
package/retain_data_on_uninstall=false
|
||||||
|
package/exclude_from_recents=false
|
||||||
|
launcher_icons/main_192x192=""
|
||||||
|
launcher_icons/adaptive_foreground_432x432=""
|
||||||
|
launcher_icons/adaptive_background_432x432=""
|
||||||
|
graphics/opengl_debug=false
|
||||||
|
xr_features/xr_mode=0
|
||||||
|
xr_features/hand_tracking=0
|
||||||
|
xr_features/hand_tracking_frequency=0
|
||||||
|
xr_features/passthrough=0
|
||||||
|
screen/immersive_mode=true
|
||||||
|
screen/support_small=true
|
||||||
|
screen/support_normal=true
|
||||||
|
screen/support_large=true
|
||||||
|
screen/support_xlarge=true
|
||||||
|
user_data_backup/allow=false
|
||||||
|
command_line/extra_args=""
|
||||||
|
apk_expansion/enable=false
|
||||||
|
apk_expansion/SALT=""
|
||||||
|
apk_expansion/public_key=""
|
||||||
|
permissions/custom_permissions=PackedStringArray()
|
||||||
|
permissions/access_checkin_properties=false
|
||||||
|
permissions/access_coarse_location=false
|
||||||
|
permissions/access_fine_location=false
|
||||||
|
permissions/access_location_extra_commands=false
|
||||||
|
permissions/access_mock_location=false
|
||||||
|
permissions/access_network_state=false
|
||||||
|
permissions/access_surface_flinger=false
|
||||||
|
permissions/access_wifi_state=false
|
||||||
|
permissions/account_manager=false
|
||||||
|
permissions/add_voicemail=false
|
||||||
|
permissions/authenticate_accounts=false
|
||||||
|
permissions/battery_stats=false
|
||||||
|
permissions/bind_accessibility_service=false
|
||||||
|
permissions/bind_appwidget=false
|
||||||
|
permissions/bind_device_admin=false
|
||||||
|
permissions/bind_input_method=false
|
||||||
|
permissions/bind_nfc_service=false
|
||||||
|
permissions/bind_notification_listener_service=false
|
||||||
|
permissions/bind_print_service=false
|
||||||
|
permissions/bind_remoteviews=false
|
||||||
|
permissions/bind_text_service=false
|
||||||
|
permissions/bind_vpn_service=false
|
||||||
|
permissions/bind_wallpaper=false
|
||||||
|
permissions/bluetooth=false
|
||||||
|
permissions/bluetooth_admin=false
|
||||||
|
permissions/bluetooth_privileged=false
|
||||||
|
permissions/brick=false
|
||||||
|
permissions/broadcast_package_removed=false
|
||||||
|
permissions/broadcast_sms=false
|
||||||
|
permissions/broadcast_sticky=false
|
||||||
|
permissions/broadcast_wap_push=false
|
||||||
|
permissions/call_phone=false
|
||||||
|
permissions/call_privileged=false
|
||||||
|
permissions/camera=false
|
||||||
|
permissions/capture_audio_output=false
|
||||||
|
permissions/capture_secure_video_output=false
|
||||||
|
permissions/capture_video_output=false
|
||||||
|
permissions/change_component_enabled_state=false
|
||||||
|
permissions/change_configuration=false
|
||||||
|
permissions/change_network_state=false
|
||||||
|
permissions/change_wifi_multicast_state=false
|
||||||
|
permissions/change_wifi_state=false
|
||||||
|
permissions/clear_app_cache=false
|
||||||
|
permissions/clear_app_user_data=false
|
||||||
|
permissions/control_location_updates=false
|
||||||
|
permissions/delete_cache_files=false
|
||||||
|
permissions/delete_packages=false
|
||||||
|
permissions/device_power=false
|
||||||
|
permissions/diagnostic=false
|
||||||
|
permissions/disable_keyguard=false
|
||||||
|
permissions/dump=false
|
||||||
|
permissions/expand_status_bar=false
|
||||||
|
permissions/factory_test=false
|
||||||
|
permissions/flashlight=false
|
||||||
|
permissions/force_back=false
|
||||||
|
permissions/get_accounts=false
|
||||||
|
permissions/get_package_size=false
|
||||||
|
permissions/get_tasks=false
|
||||||
|
permissions/get_top_activity_info=false
|
||||||
|
permissions/global_search=false
|
||||||
|
permissions/hardware_test=false
|
||||||
|
permissions/inject_events=false
|
||||||
|
permissions/install_location_provider=false
|
||||||
|
permissions/install_packages=false
|
||||||
|
permissions/install_shortcut=false
|
||||||
|
permissions/internal_system_window=false
|
||||||
|
permissions/internet=false
|
||||||
|
permissions/kill_background_processes=false
|
||||||
|
permissions/location_hardware=false
|
||||||
|
permissions/manage_accounts=false
|
||||||
|
permissions/manage_app_tokens=false
|
||||||
|
permissions/manage_documents=false
|
||||||
|
permissions/manage_external_storage=false
|
||||||
|
permissions/master_clear=false
|
||||||
|
permissions/media_content_control=false
|
||||||
|
permissions/modify_audio_settings=false
|
||||||
|
permissions/modify_phone_state=false
|
||||||
|
permissions/mount_format_filesystems=false
|
||||||
|
permissions/mount_unmount_filesystems=false
|
||||||
|
permissions/nfc=false
|
||||||
|
permissions/persistent_activity=false
|
||||||
|
permissions/process_outgoing_calls=false
|
||||||
|
permissions/read_calendar=false
|
||||||
|
permissions/read_call_log=false
|
||||||
|
permissions/read_contacts=false
|
||||||
|
permissions/read_external_storage=false
|
||||||
|
permissions/read_frame_buffer=false
|
||||||
|
permissions/read_history_bookmarks=false
|
||||||
|
permissions/read_input_state=false
|
||||||
|
permissions/read_logs=false
|
||||||
|
permissions/read_phone_state=false
|
||||||
|
permissions/read_profile=false
|
||||||
|
permissions/read_sms=false
|
||||||
|
permissions/read_social_stream=false
|
||||||
|
permissions/read_sync_settings=false
|
||||||
|
permissions/read_sync_stats=false
|
||||||
|
permissions/read_user_dictionary=false
|
||||||
|
permissions/reboot=false
|
||||||
|
permissions/receive_boot_completed=false
|
||||||
|
permissions/receive_mms=false
|
||||||
|
permissions/receive_sms=false
|
||||||
|
permissions/receive_wap_push=false
|
||||||
|
permissions/record_audio=false
|
||||||
|
permissions/reorder_tasks=false
|
||||||
|
permissions/restart_packages=false
|
||||||
|
permissions/send_respond_via_message=false
|
||||||
|
permissions/send_sms=false
|
||||||
|
permissions/set_activity_watcher=false
|
||||||
|
permissions/set_alarm=false
|
||||||
|
permissions/set_always_finish=false
|
||||||
|
permissions/set_animation_scale=false
|
||||||
|
permissions/set_debug_app=false
|
||||||
|
permissions/set_orientation=false
|
||||||
|
permissions/set_pointer_speed=false
|
||||||
|
permissions/set_preferred_applications=false
|
||||||
|
permissions/set_process_limit=false
|
||||||
|
permissions/set_time=false
|
||||||
|
permissions/set_time_zone=false
|
||||||
|
permissions/set_wallpaper=false
|
||||||
|
permissions/set_wallpaper_hints=false
|
||||||
|
permissions/signal_persistent_processes=false
|
||||||
|
permissions/status_bar=false
|
||||||
|
permissions/subscribed_feeds_read=false
|
||||||
|
permissions/subscribed_feeds_write=false
|
||||||
|
permissions/system_alert_window=false
|
||||||
|
permissions/transmit_ir=false
|
||||||
|
permissions/uninstall_shortcut=false
|
||||||
|
permissions/update_device_stats=false
|
||||||
|
permissions/use_credentials=false
|
||||||
|
permissions/use_sip=false
|
||||||
|
permissions/vibrate=false
|
||||||
|
permissions/wake_lock=false
|
||||||
|
permissions/write_apn_settings=false
|
||||||
|
permissions/write_calendar=false
|
||||||
|
permissions/write_call_log=false
|
||||||
|
permissions/write_contacts=false
|
||||||
|
permissions/write_external_storage=false
|
||||||
|
permissions/write_gservices=false
|
||||||
|
permissions/write_history_bookmarks=false
|
||||||
|
permissions/write_profile=false
|
||||||
|
permissions/write_secure_settings=false
|
||||||
|
permissions/write_settings=false
|
||||||
|
permissions/write_sms=false
|
||||||
|
permissions/write_social_stream=false
|
||||||
|
permissions/write_sync_settings=false
|
||||||
|
permissions/write_user_dictionary=false
|
||||||
|
|
||||||
|
[preset.3]
|
||||||
|
|
||||||
|
name="iOS"
|
||||||
|
platform="iOS"
|
||||||
|
runnable=true
|
||||||
|
dedicated_server=false
|
||||||
|
custom_features=""
|
||||||
|
export_filter="all_resources"
|
||||||
|
include_filter=""
|
||||||
|
exclude_filter=""
|
||||||
|
export_path=""
|
||||||
|
encryption_include_filters=""
|
||||||
|
encryption_exclude_filters=""
|
||||||
|
encrypt_pck=false
|
||||||
|
encrypt_directory=false
|
||||||
|
script_encryption_key=""
|
||||||
|
|
||||||
|
[preset.3.options]
|
||||||
|
|
||||||
|
custom_template/debug=""
|
||||||
|
custom_template/release=""
|
||||||
|
architectures/arm64=true
|
||||||
|
application/app_store_team_id="org.mutnt.io"
|
||||||
|
application/provisioning_profile_uuid_debug=""
|
||||||
|
application/code_sign_identity_debug=""
|
||||||
|
application/export_method_debug=1
|
||||||
|
application/provisioning_profile_uuid_release=""
|
||||||
|
application/code_sign_identity_release=""
|
||||||
|
application/export_method_release=0
|
||||||
|
application/targeted_device_family=2
|
||||||
|
application/bundle_identifier="rat-times"
|
||||||
|
application/signature=""
|
||||||
|
application/short_version="1.0"
|
||||||
|
application/version="1.0"
|
||||||
|
application/icon_interpolation=4
|
||||||
|
application/launch_screens_interpolation=4
|
||||||
|
capabilities/access_wifi=false
|
||||||
|
capabilities/push_notifications=false
|
||||||
|
user_data/accessible_from_files_app=false
|
||||||
|
user_data/accessible_from_itunes_sharing=false
|
||||||
|
privacy/camera_usage_description=""
|
||||||
|
privacy/camera_usage_description_localized={}
|
||||||
|
privacy/microphone_usage_description=""
|
||||||
|
privacy/microphone_usage_description_localized={}
|
||||||
|
privacy/photolibrary_usage_description=""
|
||||||
|
privacy/photolibrary_usage_description_localized={}
|
||||||
|
icons/iphone_120x120=""
|
||||||
|
icons/iphone_180x180=""
|
||||||
|
icons/ipad_76x76=""
|
||||||
|
icons/ipad_152x152=""
|
||||||
|
icons/ipad_167x167=""
|
||||||
|
icons/app_store_1024x1024=""
|
||||||
|
icons/spotlight_40x40=""
|
||||||
|
icons/spotlight_80x80=""
|
||||||
|
icons/settings_58x58=""
|
||||||
|
icons/settings_87x87=""
|
||||||
|
icons/notification_40x40=""
|
||||||
|
icons/notification_60x60=""
|
||||||
|
storyboard/use_launch_screen_storyboard=false
|
||||||
|
storyboard/image_scale_mode=0
|
||||||
|
storyboard/custom_image@2x=""
|
||||||
|
storyboard/custom_image@3x=""
|
||||||
|
storyboard/use_custom_bg_color=false
|
||||||
|
storyboard/custom_bg_color=Color(0, 0, 0, 1)
|
||||||
|
landscape_launch_screens/iphone_2436x1125=""
|
||||||
|
landscape_launch_screens/iphone_2208x1242=""
|
||||||
|
landscape_launch_screens/ipad_1024x768=""
|
||||||
|
landscape_launch_screens/ipad_2048x1536=""
|
||||||
|
portrait_launch_screens/iphone_640x960=""
|
||||||
|
portrait_launch_screens/iphone_640x1136=""
|
||||||
|
portrait_launch_screens/iphone_750x1334=""
|
||||||
|
portrait_launch_screens/iphone_1125x2436=""
|
||||||
|
portrait_launch_screens/ipad_768x1024=""
|
||||||
|
portrait_launch_screens/ipad_1536x2048=""
|
||||||
|
portrait_launch_screens/iphone_1242x2208=""
|
||||||
|
|
||||||
|
[preset.4]
|
||||||
|
|
||||||
|
name="Windows Desktop"
|
||||||
|
platform="Windows Desktop"
|
||||||
|
runnable=true
|
||||||
|
dedicated_server=false
|
||||||
|
custom_features=""
|
||||||
|
export_filter="all_resources"
|
||||||
|
include_filter=""
|
||||||
|
exclude_filter=""
|
||||||
|
export_path=""
|
||||||
|
encryption_include_filters=""
|
||||||
|
encryption_exclude_filters=""
|
||||||
|
encrypt_pck=false
|
||||||
|
encrypt_directory=false
|
||||||
|
script_encryption_key=""
|
||||||
|
|
||||||
|
[preset.4.options]
|
||||||
|
|
||||||
|
custom_template/debug=""
|
||||||
|
custom_template/release=""
|
||||||
|
debug/export_console_script=1
|
||||||
|
binary_format/embed_pck=false
|
||||||
|
texture_format/bptc=false
|
||||||
|
texture_format/s3tc=true
|
||||||
|
texture_format/etc=false
|
||||||
|
texture_format/etc2=false
|
||||||
|
texture_format/no_bptc_fallbacks=true
|
||||||
|
binary_format/architecture="x86_64"
|
||||||
|
codesign/enable=false
|
||||||
|
codesign/identity_type=0
|
||||||
|
codesign/identity=""
|
||||||
|
codesign/password=""
|
||||||
|
codesign/timestamp=true
|
||||||
|
codesign/timestamp_server_url=""
|
||||||
|
codesign/digest_algorithm=1
|
||||||
|
codesign/description=""
|
||||||
|
codesign/custom_options=PackedStringArray()
|
||||||
|
application/modify_resources=false
|
||||||
|
application/icon=""
|
||||||
|
application/console_wrapper_icon=""
|
||||||
|
application/icon_interpolation=4
|
||||||
|
application/file_version=""
|
||||||
|
application/product_version=""
|
||||||
|
application/company_name=""
|
||||||
|
application/product_name=""
|
||||||
|
application/file_description=""
|
||||||
|
application/copyright=""
|
||||||
|
application/trademarks=""
|
||||||
|
ssh_remote_deploy/enabled=false
|
||||||
|
ssh_remote_deploy/host="user@host_ip"
|
||||||
|
ssh_remote_deploy/port="22"
|
||||||
|
ssh_remote_deploy/extra_args_ssh=""
|
||||||
|
ssh_remote_deploy/extra_args_scp=""
|
||||||
|
ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
|
||||||
|
$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
|
||||||
|
$trigger = New-ScheduledTaskTrigger -Once -At 00:00
|
||||||
|
$settings = New-ScheduledTaskSettingsSet
|
||||||
|
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
|
||||||
|
Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
|
||||||
|
Start-ScheduledTask -TaskName godot_remote_debug
|
||||||
|
while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
|
||||||
|
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
|
||||||
|
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
|
||||||
|
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
|
||||||
|
Remove-Item -Recurse -Force '{temp_dir}'"
|
34
icon.png.import
Normal file
34
icon.png.import
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bxdbjqtxinxlp"
|
||||||
|
path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://icon.png"
|
||||||
|
dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
0
info/.gdignore
Normal file
0
info/.gdignore
Normal file
BIN
info/screenshot.png
Normal file
BIN
info/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.3 KiB |
87
logo.svg
Normal file
87
logo.svg
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
width="64"
|
||||||
|
height="64"
|
||||||
|
viewBox="0 0 16.933333 16.933333"
|
||||||
|
version="1.1"
|
||||||
|
id="svg13794"
|
||||||
|
inkscape:version="1.2.2 (b0a8486541, 2022-12-01)"
|
||||||
|
sodipodi:docname="logo.svg"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview13796"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#111111"
|
||||||
|
borderopacity="1"
|
||||||
|
inkscape:showpageshadow="0"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pagecheckerboard="1"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:document-units="mm"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="6.2502245"
|
||||||
|
inkscape:cx="22.479193"
|
||||||
|
inkscape:cy="24.159132"
|
||||||
|
inkscape:window-width="1896"
|
||||||
|
inkscape:window-height="1029"
|
||||||
|
inkscape:window-x="12"
|
||||||
|
inkscape:window-y="39"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="layer1" />
|
||||||
|
<defs
|
||||||
|
id="defs13791" />
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1">
|
||||||
|
<ellipse
|
||||||
|
style="fill:#1d86ff;fill-opacity:1;stroke-width:1.85208;paint-order:stroke markers fill;stop-color:#000000"
|
||||||
|
id="circle14391"
|
||||||
|
cx="4.0016642"
|
||||||
|
cy="4.8131599"
|
||||||
|
rx="2.9889076"
|
||||||
|
ry="2.9889104" />
|
||||||
|
<path
|
||||||
|
style="fill:#d588ff;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="m 10.040695,15.90349 6.892697,-1.588035 -1.494564,-0.466127 1.045969,-0.83042 -1.837551,0.445927 v -0.84077 z"
|
||||||
|
id="path14447" />
|
||||||
|
<path
|
||||||
|
style="fill:#d588ff;fill-opacity:1;stroke:none;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||||
|
d="M 6.8926369,16.389379 -5.9950227e-5,14.801343 1.4945043,14.335217 0.44853556,13.504797 2.2860868,13.950724 v -0.84077 z"
|
||||||
|
id="path14449" />
|
||||||
|
<ellipse
|
||||||
|
style="fill:#1d86ff;fill-opacity:1;stroke-width:1.85208;paint-order:stroke markers fill;stop-color:#000000"
|
||||||
|
id="path13969"
|
||||||
|
cx="8.1552019"
|
||||||
|
cy="9.9386654"
|
||||||
|
rx="6.4920444"
|
||||||
|
ry="6.4920506" />
|
||||||
|
<path
|
||||||
|
sodipodi:type="spiral"
|
||||||
|
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#4200cb;stroke-width:0.230262;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
|
||||||
|
id="path14024"
|
||||||
|
sodipodi:cx="8.4666662"
|
||||||
|
sodipodi:cy="8.4666662"
|
||||||
|
sodipodi:expansion="2"
|
||||||
|
sodipodi:revolution="1.5184656"
|
||||||
|
sodipodi:radius="2.3796637"
|
||||||
|
sodipodi:argument="-19.12742"
|
||||||
|
sodipodi:t0="0"
|
||||||
|
d="m 8.4666662,8.4666662 c 0.027537,-0.00785 0.021565,0.052556 0.017694,0.06203 -0.044361,0.108565 -0.2002796,0.066923 -0.2658124,0.00874 C 8.0210701,8.3621249 8.1306116,8.0511576 8.307424,7.9083989 8.6808232,7.6069157 9.2185608,7.8211538 9.4591415,8.1835689 9.8827565,8.8217104 9.5243913,9.6591442 8.9090057,10.017409 7.9391013,10.582067 6.7291388,10.039501 6.2335968,9.1036351 6.1901155,9.0215177 6.1515675,8.9367957 6.1180994,8.8501155"
|
||||||
|
transform="matrix(-3.9529526,2.2775757,-2.3165148,-4.0094692,60.938259,26.017524)"
|
||||||
|
inkscape:transform-center-x="-0.51754845"
|
||||||
|
inkscape:transform-center-y="-2.4484256" />
|
||||||
|
<ellipse
|
||||||
|
style="fill:#1d86ff;fill-opacity:1;stroke-width:1.85208;paint-order:stroke markers fill;stop-color:#000000"
|
||||||
|
id="circle14389"
|
||||||
|
cx="11.931787"
|
||||||
|
cy="4.8131599"
|
||||||
|
rx="2.9889076"
|
||||||
|
ry="2.9889104" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.6 KiB |
37
logo.svg.import
Normal file
37
logo.svg.import
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://fk5s6m8qlsei"
|
||||||
|
path="res://.godot/imported/logo.svg-8d8cf086b974db23ad31f8a2f3ea7d0f.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://logo.svg"
|
||||||
|
dest_files=["res://.godot/imported/logo.svg-8d8cf086b974db23ad31f8a2f3ea7d0f.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
43
project.godot
Normal file
43
project.godot
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
; Engine configuration file.
|
||||||
|
; It's best edited using the editor UI and not directly,
|
||||||
|
; since the parameters that go here are not all obvious.
|
||||||
|
;
|
||||||
|
; Format:
|
||||||
|
; [section] ; section goes between []
|
||||||
|
; param=value ; assign values to parameters
|
||||||
|
|
||||||
|
config_version=5
|
||||||
|
|
||||||
|
[application]
|
||||||
|
|
||||||
|
config/name="Rat Times"
|
||||||
|
config/description="Track your time(s)s"
|
||||||
|
run/main_scene="res://Main.tscn"
|
||||||
|
config/use_custom_user_dir=true
|
||||||
|
config/custom_user_dir_name="rat_times"
|
||||||
|
config/features=PackedStringArray("4.0")
|
||||||
|
boot_splash/bg_color=Color(0.141176, 0.141176, 0.141176, 0)
|
||||||
|
boot_splash/show_image=false
|
||||||
|
config/icon="res://logo.svg"
|
||||||
|
config/macos_native_icon="res://logo.icns"
|
||||||
|
config/windows_native_icon="res://logo.ico"
|
||||||
|
|
||||||
|
[display]
|
||||||
|
|
||||||
|
window/size/viewport_width=500
|
||||||
|
window/size/viewport_height=151
|
||||||
|
window/size/resizable=false
|
||||||
|
window/size/always_on_top=true
|
||||||
|
window/size/transparent=true
|
||||||
|
window/per_pixel_transparency/allowed=true
|
||||||
|
window/subwindows/embed_subwindows=false
|
||||||
|
|
||||||
|
[physics]
|
||||||
|
|
||||||
|
common/enable_pause_aware_picking=true
|
||||||
|
|
||||||
|
[rendering]
|
||||||
|
|
||||||
|
textures/vram_compression/import_etc2_astc=true
|
||||||
|
viewport/transparent_background=true
|
||||||
|
environment/default_environment="res://default_env.tres"
|
Loading…
Reference in New Issue
Block a user