From 0670a8ebdf59183ded76cf3b0198c580b0ecc6b7 Mon Sep 17 00:00:00 2001 From: Sebastian Morr Date: Fri, 23 Oct 2020 16:43:02 +0200 Subject: [PATCH] Allow to inspect index and commit files --- file_browser.gd | 62 ++++++++++++++++++++++++++++++++++--- file_browser.tscn | 57 ++++++++++++++++++++++++++++++++-- levels/time-machine/reorder | 2 +- node.gd | 4 ++- node.tscn | 9 +++--- repository.gd | 4 +-- repository.tscn | 34 +++++++++++--------- text_editor.gd | 19 ++++++------ 8 files changed, 152 insertions(+), 39 deletions(-) diff --git a/file_browser.gd b/file_browser.gd index df0e9fb..2efa56e 100644 --- a/file_browser.gd +++ b/file_browser.gd @@ -6,16 +6,28 @@ enum FileBrowserMode { INDEX } -export(FileBrowserMode) var mode = FileBrowserMode.WORKING_DIRECTORY +export(String) var title setget _set_title +export(FileBrowserMode) var mode = FileBrowserMode.WORKING_DIRECTORY setget _set_mode var shell var commit setget _set_commit var repository +var open_file + onready var grid = $Panel/Margin/Rows/Scroll/Grid +onready var text_edit = $Panel/TextEdit +onready var save_button = $Panel/TextEdit/SaveButton +onready var title_label = $Panel/Margin/Rows/Title func _ready(): update() + _set_mode(mode) + _set_title(title) + +func _input(event): + if event.is_action_pressed("save"): + save() func clear(): for item in grid.get_children(): @@ -49,7 +61,7 @@ func update(): for file_path in files: var item = preload("res://file_browser_item.tscn").instance() item.label = file_path - #item.connect("clicked", self, "item_clicked") + item.connect("clicked", self, "item_clicked") grid.add_child(item) FileBrowserMode.INDEX: if repository: @@ -59,16 +71,56 @@ func update(): for file_path in files: var item = preload("res://file_browser_item.tscn").instance() item.label = file_path - #item.connect("clicked", self, "item_clicked") + item.connect("clicked", self, "item_clicked") grid.add_child(item) func item_clicked(item): - var file_path = item.label - shell.run("'%s'/fake-editor-noblock '%s'" % [game.tmp_prefix_inside, file_path]) + print(item.label) + open_file = item.label + match mode: + FileBrowserMode.WORKING_DIRECTORY: + text_edit.text = helpers.read_file(shell._cwd + item.label) + FileBrowserMode.COMMIT: + text_edit.text = commit.repository.shell.run("git show %s:\"%s\"" % [commit.id, item.label]) + FileBrowserMode.INDEX: + text_edit.text = repository.shell.run("git show :\"%s\"" % [item.label]) + text_edit.show() + text_edit.grab_focus() + +func close(): + text_edit.hide() + +func save(): + match mode: + FileBrowserMode.WORKING_DIRECTORY: + var fixme_path = shell._cwd + + # Add a newline to the end of the file if there is none. + if text_edit.text.length() > 0 and text_edit.text.substr(text_edit.text.length()-1, 1) != "\n": + text_edit.text += "\n" + + helpers.write_file(fixme_path+open_file, text_edit.text) + close() func _set_commit(new_commit): commit = new_commit update() + +func _set_mode(new_mode): + mode = new_mode + if save_button: + save_button.visible = mode == FileBrowserMode.WORKING_DIRECTORY + text_edit.readonly = not mode == FileBrowserMode.WORKING_DIRECTORY + text_edit.selecting_enabled = mode == FileBrowserMode.WORKING_DIRECTORY + if mode == FileBrowserMode.WORKING_DIRECTORY: + text_edit.focus_mode = Control.FOCUS_CLICK + else: + text_edit.focus_mode = Control.FOCUS_NONE + +func _set_title(new_title): + title = new_title + if title_label: + title_label.text = new_title func very_best_sort(a,b): # We're looking at the third character because all entries have the form diff --git a/file_browser.tscn b/file_browser.tscn index 89f6d07..5b832b4 100644 --- a/file_browser.tscn +++ b/file_browser.tscn @@ -1,11 +1,13 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://file_browser.gd" type="Script" id=1] +[ext_resource path="res://fonts/default.tres" type="DynamicFont" id=2] [ext_resource path="res://styles/theme.tres" type="Theme" id=3] [node name="FileBrowser" type="Control"] anchor_right = 1.0 anchor_bottom = 1.0 +rect_min_size = Vector2( 0, 142 ) theme = ExtResource( 3 ) script = ExtResource( 1 ) __meta__ = { @@ -35,11 +37,17 @@ margin_left = 8.0 margin_top = 8.0 margin_right = 1912.0 margin_bottom = 1072.0 -custom_constants/separation = 32 +custom_constants/separation = 0 __meta__ = { "_edit_use_anchors_": false } +[node name="Title" type="Label" parent="Panel/Margin/Rows"] +margin_right = 1904.0 +margin_bottom = 25.0 +text = "title" +align = 1 + [node name="Breadcrumbs" type="HBoxContainer" parent="Panel/Margin/Rows"] visible = false margin_right = 1856.0 @@ -59,6 +67,7 @@ margin_bottom = 50.0 text = "dir" [node name="Scroll" type="ScrollContainer" parent="Panel/Margin/Rows"] +margin_top = 25.0 margin_right = 1904.0 margin_bottom = 1064.0 size_flags_horizontal = 3 @@ -66,7 +75,7 @@ size_flags_vertical = 3 [node name="Grid" type="GridContainer" parent="Panel/Margin/Rows/Scroll"] margin_right = 1904.0 -margin_bottom = 1064.0 +margin_bottom = 1039.0 size_flags_horizontal = 3 size_flags_vertical = 3 custom_constants/vseparation = 16 @@ -75,3 +84,45 @@ columns = 4 __meta__ = { "_edit_use_anchors_": false } + +[node name="TextEdit" type="TextEdit" parent="Panel"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="SaveButton" type="Button" parent="Panel/TextEdit"] +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -114.396 +margin_top = -59.399 +margin_right = -14.3955 +margin_bottom = -14.399 +focus_mode = 0 +custom_fonts/font = ExtResource( 2 ) +enabled_focus_mode = 0 +text = "Save" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CloseButton" type="Button" parent="Panel/TextEdit"] +anchor_left = 1.0 +anchor_right = 1.0 +margin_left = -54.3247 +margin_top = 12.0 +margin_right = -14.3247 +margin_bottom = 52.0 +focus_mode = 0 +custom_fonts/font = ExtResource( 2 ) +enabled_focus_mode = 0 +text = "x" +__meta__ = { +"_edit_use_anchors_": false +} +[connection signal="pressed" from="Panel/TextEdit/SaveButton" to="." method="save"] +[connection signal="pressed" from="Panel/TextEdit/CloseButton" to="." method="close"] diff --git a/levels/time-machine/reorder b/levels/time-machine/reorder index a26eac4..980917f 100644 --- a/levels/time-machine/reorder +++ b/levels/time-machine/reorder @@ -1,4 +1,4 @@ -title = Reodering events +title = Reordering events [description] diff --git a/node.gd b/node.gd index bb428d8..14e4877 100644 --- a/node.gd +++ b/node.gd @@ -55,6 +55,7 @@ func type_set(new_type): type = new_type if type == "commit": $FileBrowser.commit = self + $FileBrowser.title = "Commit" if type != "ref": $ID.text = $ID.text.substr(0,8) #elif type == "ref": @@ -113,7 +114,8 @@ func _input(event): if hovered: if event.is_action_pressed("click"): held = true - $FileBrowser.visible = not $FileBrowser.visible + if type == "commit": + $FileBrowser.visible = not $FileBrowser.visible elif event.is_action_pressed("right_click"): var input = get_tree().get_current_scene().find_node("Input") input.text += id diff --git a/node.tscn b/node.tscn index efb6e74..4a12a7b 100644 --- a/node.tscn +++ b/node.tscn @@ -85,10 +85,11 @@ __meta__ = { visible = false anchor_right = 0.0 anchor_bottom = 0.0 -margin_left = 32.0 -margin_top = -25.0 -margin_right = 460.0 -margin_bottom = 93.0 +margin_left = -460.672 +margin_top = -23.6409 +margin_right = -32.6716 +margin_bottom = 94.3591 +mouse_filter = 1 mode = 1 [connection signal="mouse_entered" from="Rect" to="." method="_on_hover"] [connection signal="mouse_exited" from="Rect" to="." method="_on_unhover"] diff --git a/repository.gd b/repository.gd index b193a33..3c3f4a7 100644 --- a/repository.gd +++ b/repository.gd @@ -1,8 +1,8 @@ extends Control -onready var index = $Rows/RepoVis/Index +onready var index = $Rows/Browsers/Index onready var nodes = $Rows/RepoVis/Nodes -onready var file_browser = $Rows/FileBrowser +onready var file_browser = $Rows/Browsers/FileBrowser onready var label_node = $Rows/RepoVis/Label onready var path_node = $Rows/RepoVis/Path onready var simplify_checkbox = $Rows/RepoVis/SimplifyCheckbox diff --git a/repository.tscn b/repository.tscn index 07d1f7a..e754cc5 100644 --- a/repository.tscn +++ b/repository.tscn @@ -25,7 +25,7 @@ __meta__ = { [node name="RepoVis" type="Control" parent="Rows"] margin_right = 1920.0 -margin_bottom = 901.0 +margin_bottom = 926.0 mouse_filter = 2 size_flags_vertical = 3 __meta__ = { @@ -43,14 +43,6 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="Index" parent="Rows/RepoVis" instance=ExtResource( 4 )] -anchor_bottom = 0.0 -margin_left = 22.0 -margin_top = 65.0 -margin_right = -17.0 -margin_bottom = 188.0 -mode = 2 - [node name="IndexLabel" type="Label" parent="Rows/RepoVis"] visible = false margin_left = 21.0 @@ -106,14 +98,28 @@ __meta__ = { "_edit_use_anchors_": false } -[node name="FileBrowser" parent="Rows" instance=ExtResource( 4 )] -anchor_right = 0.0 -anchor_bottom = 0.0 -margin_top = 913.0 +[node name="Browsers" type="VBoxContainer" parent="Rows"] +margin_top = 938.0 margin_right = 1920.0 margin_bottom = 1080.0 + +[node name="Index" parent="Rows/Browsers" instance=ExtResource( 4 )] +visible = false +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_right = 1920.0 +margin_bottom = 142.0 size_flags_vertical = 3 -size_flags_stretch_ratio = 0.19 +title = "Index" +mode = 2 + +[node name="FileBrowser" parent="Rows/Browsers" instance=ExtResource( 4 )] +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_right = 1920.0 +margin_bottom = 142.0 +size_flags_vertical = 3 +title = "Working directory" [connection signal="mouse_entered" from="." to="." method="_on_mouse_entered"] [connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"] [connection signal="pressed" from="Rows/RepoVis/Button" to="." method="update_everything"] diff --git a/text_editor.gd b/text_editor.gd index eee959a..3d55bab 100644 --- a/text_editor.gd +++ b/text_editor.gd @@ -35,15 +35,16 @@ func open(filename): grab_focus() func save(): - var fixme_path = game.tmp_prefix_outside+"repos/" - - # Add a newline to the end of the file if there is none. - if text.length() > 0 and text.substr(text.length()-1, 1) != "\n": - text += "\n" - - helpers.write_file(fixme_path+path, text) - emit_signal("saved") - close() + if visible: + var fixme_path = game.tmp_prefix_outside+"repos/" + + # Add a newline to the end of the file if there is none. + if text.length() > 0 and text.substr(text.length()-1, 1) != "\n": + text += "\n" + + helpers.write_file(fixme_path+path, text) + emit_signal("saved") + close() func close(): if _client_connection and _client_connection.is_connected_to_host():