Merge remote-tracking branch 'sasha/master'

# Conflicts:
#	scenes/tab_switch.tscn
#	scenes/ЭМС.gd
This commit is contained in:
MaD_CaT
2023-08-18 10:28:03 +03:00
4 changed files with 43 additions and 30 deletions

View File

@@ -8,7 +8,7 @@
[sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_2bft1"]
size = Vector2(1600, 1200)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_ogspn"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_dklk6"]
resource_local_to_scene = true
shader = ExtResource("4_gb4a1")
shader_parameter/color = Color(1, 1, 1, 0.168627)
@@ -26,6 +26,6 @@ centered = false
script = ExtResource("2_vkwmy")
[node name="строб" parent="." instance=ExtResource("3_uhdvc")]
material = SubResource("ShaderMaterial_ogspn")
material = SubResource("ShaderMaterial_dklk6")
position = Vector2(560, 560)
scale = Vector2(1100, 1100)

View File

@@ -1,27 +1,30 @@
[gd_scene load_steps=6 format=3 uid="uid://3slb0i3pvowc"]
[ext_resource type="Script" path="res://scenes/tab_switch.gd" id="1_7r2o8"]
[ext_resource type="PackedScene" uid="uid://b276iygic5itk" path="res://scenes/работа.tscn" id="2_1dgoj"]
[ext_resource type="PackedScene" uid="uid://lwmw4egynmd1" path="res://scenes/контроль.tscn" id="3_5nxuy"]
[ext_resource type="PackedScene" uid="uid://trt0q8th3bn2" path="res://scenes/журнал.tscn" id="4_f2u82"]
[ext_resource type="PackedScene" uid="uid://dab6loryocc73" path="res://scenes/ЭМС.tscn" id="5_ocw3o"]
[ext_resource type="Script" path="res://scenes/tab_switch.gd" id="1_wyyi7"]
[ext_resource type="PackedScene" uid="uid://b276iygic5itk" path="res://scenes/работа.tscn" id="2_r1u0h"]
[ext_resource type="PackedScene" uid="uid://lwmw4egynmd1" path="res://scenes/контроль.tscn" id="3_dmb4a"]
[ext_resource type="PackedScene" uid="uid://trt0q8th3bn2" path="res://scenes/журнал.tscn" id="4_pp7si"]
[ext_resource type="PackedScene" uid="uid://dab6loryocc73" path="res://scenes/ЭМС.tscn" id="5_kbxv3"]
[node name="tab_switch" type="TabContainer"]
offset_right = 1600.0
offset_bottom = 1200.0
script = ExtResource("1_7r2o8")
script = ExtResource("1_wyyi7")
[node name="работа" parent="." instance=ExtResource("2_1dgoj")]
layout_mode = 2
[node name="контроль" parent="." instance=ExtResource("3_5nxuy")]
[node name="работа" parent="." instance=ExtResource("2_r1u0h")]
visible = false
layout_mode = 2
[node name="журнал" parent="." instance=ExtResource("4_f2u82")]
[node name="контроль" parent="." instance=ExtResource("3_dmb4a")]
visible = false
layout_mode = 2
[node name="ЭМС" parent="." instance=ExtResource("5_ocw3o")]
[node name="журнал" parent="." instance=ExtResource("4_pp7si")]
visible = false
layout_mode = 2
[node name="ЭМС" parent="." instance=ExtResource("5_kbxv3")]
visible = false
layout_mode = 2
[connection signal="gui_input" from="работа" to="работа" method="_on_gui_input"]

View File

@@ -42,6 +42,7 @@ enum DragFSM {
## Переключант режим окна программы полный экран - обычный
func _on_full_screen(): toggle_full_screen(window_0_id)
func _unhandled_key_input(event: InputEvent) -> void: _on_gui_input(event)
## Обработчик сигнала изменения списка целей
@@ -158,7 +159,7 @@ func _on_drag_begin(event) -> void:
## Обработчик событий вввода. Вызывается godot
func _input(event):
func _on_gui_input(event):
if event is InputEventMouseMotion:
if drag_fsm == DragFSM.DRAG:
emit_signal('drag_continue', event)

View File

@@ -2,10 +2,10 @@ extends GridContainer
## Виджет "Таблица"
@export var node_gap: = Vector2(0.0, 0.0) ## Зазор между ячейками, который не возможно вычислить или получить
@export var selector_color: = Color(1.0, 1.0, 1.0, 1.0) ## Окрашивающий цвет для индикатора выбранного ряда
@export var selector_key_down: Key = KEY_DOWN ## Клавиша увеличения индекса выбранного ряда
@export var selector_key_up: Key = KEY_UP ## Клавиша уменьшения индекса выбранного ряда
@export var node_gap: = Vector2(0.0, 0.0) ## Зазор между ячейками, который не возможно вычислить или получить
@export var selector_color: = Color(1.0, 1.0, 1.0, 1.0) ## Окрашивающий цвет для индикатора выбранного ряда
@export var selector_key_down: Key = KEY_DOWN ## Клавиша увеличения индекса выбранного ряда
@export var selector_key_up: Key = KEY_UP ## Клавиша уменьшения индекса выбранного ряда
@export_file var node_type_file: = 'res://table/node.tscn': get = get_node_scene, set = load_node_scene ## Сцена ячейки устанавливаемая по умолчанию
@export_file var selector_type_file: = 'res://table/selector.tscn': set = load_selector_scene ## Сцена индикатора для выбранного ряда
@@ -18,8 +18,9 @@ const SLCT_PREFIX = 'SLCT_' ## Префикс ключа индикато
const HEAD_KEY_FORMAT = HEAD_PREFIX + INDEX_FORMAT ## Формат ключа заголовка
const NODE_KEY_FORMAT = NODE_PREFIX + INDEX_FORMAT ## Формат ключа ячейки
const ROW_SELECTOR_KEY_FORMAT = SLCT_PREFIX + INDEX_FORMAT ## Формат ключа индикаторов выбранного ряда
const META_NAME_USER_DATA = 'user_data'
const META_NAME_CALLEBLE = 'calleble'
const META_USER_DATA = 'user_data' ## Имя свойства для сохранения данных пользователя
const META_CALLABLE = 'callable' ## Имя свойства для сохранения вызываемого
const META_EVENT_NAME = 'event_name' ## Имя свойства для сохранения названия события
var header: GridContainer ## Заголовок таблицы
var in_focus: = false ## Фокус пользовательского ввода
@@ -38,8 +39,8 @@ var scroll_adj: = Vector2(0, 0)
func get_node_scene(): return node_type_file
func _assert_meta(i_col: int, i_row: int, pname: String, node): assert(node.has_meta(pname), 'ошибка: нет мета-свойства \"%s\" у ячейки колонка:%d ряд:%d' % [pname, i_col, i_row])
func get_node_user_data(i_col: int, i_row: int): return get_node_meta(i_col, i_row, META_NAME_USER_DATA)
func set_node_user_data(i_col: int, i_row: int, val) -> void: set_node_meta(i_col, i_row, META_NAME_USER_DATA, val)
func get_node_user_data(i_col: int, i_row: int): return get_node_meta(i_col, i_row, META_USER_DATA)
func set_node_user_data(i_col: int, i_row: int, val) -> void: set_node_meta(i_col, i_row, META_USER_DATA, val)
## Закрепляет заголовок таблицы. [param scrl] - Прокрутка,
@@ -68,6 +69,9 @@ func selector_up():
if i_row < 0:
i_row = rows_count - 1
set_row_selected(i_row, true)
var node = get_node2(0, i_row)
if scroll is ScrollContainer:
scroll.ensure_control_visible(node)
emit_signal('selected_changed', i_row)
@@ -84,6 +88,9 @@ func selector_down():
i_row += 1
i_row %= rows_count
set_row_selected(i_row, true)
var node = get_node2(0, i_row)
if scroll is ScrollContainer:
scroll.ensure_control_visible(node)
emit_signal('selected_changed', i_row)
@@ -184,7 +191,7 @@ func set_columns_aligment(alignments: Array) -> void:
##
func _input(event) -> void:
if event is InputEventKey:
if in_focus and event.pressed:
if event.pressed and in_focus:
if event.keycode == selector_key_up:
selector_up()
elif event.keycode == selector_key_down:
@@ -392,9 +399,10 @@ func remove_row(i_row: int):
var conn = get_node_meta(i_col, i_row, 'callable_focus_entered')
node.disconnect('focus_entered', conn)
if node.has_meta(META_NAME_CALLEBLE):
conn = node.get_meta(META_NAME_CALLEBLE)
node.disconnect('pressed', conn)
if node.has_meta(META_CALLABLE):
conn = node.get_meta(META_CALLABLE)
var event_name = node.get_meta(META_EVENT_NAME)
node.disconnect(event_name, conn)
remove_child(node)
nodes.erase(node_key)
@@ -459,12 +467,13 @@ func connect_columns(dest_node: Node, event_name: String, callback: String, clmn
for i_col in clmns:
assert(i_col >= 0 and i_col < columns, 'ошибка: нет такой колонки: %d' % i_col)
var node = get_node2(i_col, i_row)
if node.has_meta(META_NAME_CALLEBLE):
var conn = node.get_meta(META_NAME_CALLEBLE)
if node.has_meta(META_CALLABLE):
var conn = node.get_meta(META_CALLABLE)
node.disconnect(event_name, conn)
var conn = Callable(dest_node, callback).bind([node] + user_data)
assert (OK == node.connect(event_name, conn))
node.set_meta(META_NAME_CALLEBLE, conn)
node.set_meta(META_CALLABLE, conn)
node.set_meta(META_EVENT_NAME, event_name)
##