forked from datawhale/whale-town-front
fix: 修复聊天系统编译错误
- 修复 WebSocketManager/SocketIOClient 函数缩进错误 - 重命名 is_connected() 避免与 Object 基类冲突 - 修复 tscn 文件多余前导空格 - 修复测试文件 GUT 断言函数调用 - 添加 GUT 测试框架
This commit is contained in:
124
addons/gut/gui/option_maker.gd
Normal file
124
addons/gut/gui/option_maker.gd
Normal file
@@ -0,0 +1,124 @@
|
||||
var PanelControls = load("res://addons/gut/gui/panel_controls.gd")
|
||||
|
||||
# All titles so we can free them when we want.
|
||||
var _all_titles = []
|
||||
|
||||
|
||||
var base_container = null
|
||||
# All the various PanelControls indexed by thier keys.
|
||||
var controls = {}
|
||||
|
||||
|
||||
func _init(cont):
|
||||
base_container = cont
|
||||
|
||||
|
||||
func add_title(text):
|
||||
var row = PanelControls.BaseGutPanelControl.new(text, text)
|
||||
base_container.add_child(row)
|
||||
row.connect('draw', _on_title_cell_draw.bind(row))
|
||||
_all_titles.append(row)
|
||||
return row
|
||||
|
||||
|
||||
func add_ctrl(key, ctrl):
|
||||
controls[key] = ctrl
|
||||
base_container.add_child(ctrl)
|
||||
|
||||
|
||||
func add_number(key, value, disp_text, v_min, v_max, hint=''):
|
||||
var ctrl = PanelControls.NumberControl.new(disp_text, value, v_min, v_max, hint)
|
||||
add_ctrl(key, ctrl)
|
||||
return ctrl
|
||||
|
||||
|
||||
func add_float(key, value, disp_text, step, v_min, v_max, hint=''):
|
||||
var ctrl = PanelControls.FloatControl.new(disp_text, value, step, v_min, v_max, hint)
|
||||
add_ctrl(key, ctrl)
|
||||
return ctrl
|
||||
|
||||
|
||||
func add_select(key, value, values, disp_text, hint=''):
|
||||
var ctrl = PanelControls.SelectControl.new(disp_text, value, values, hint)
|
||||
add_ctrl(key, ctrl)
|
||||
return ctrl
|
||||
|
||||
|
||||
func add_value(key, value, disp_text, hint=''):
|
||||
var ctrl = PanelControls.StringControl.new(disp_text, value, hint)
|
||||
add_ctrl(key, ctrl)
|
||||
return ctrl
|
||||
|
||||
func add_multiline_text(key, value, disp_text, hint=''):
|
||||
var ctrl = PanelControls.MultiLineStringControl.new(disp_text, value, hint)
|
||||
add_ctrl(key, ctrl)
|
||||
return ctrl
|
||||
|
||||
func add_boolean(key, value, disp_text, hint=''):
|
||||
var ctrl = PanelControls.BooleanControl.new(disp_text, value, hint)
|
||||
add_ctrl(key, ctrl)
|
||||
return ctrl
|
||||
|
||||
|
||||
func add_directory(key, value, disp_text, hint=''):
|
||||
var ctrl = PanelControls.DirectoryControl.new(disp_text, value, hint)
|
||||
add_ctrl(key, ctrl)
|
||||
ctrl.dialog.title = disp_text
|
||||
return ctrl
|
||||
|
||||
|
||||
func add_file(key, value, disp_text, hint=''):
|
||||
var ctrl = PanelControls.DirectoryControl.new(disp_text, value, hint)
|
||||
add_ctrl(key, ctrl)
|
||||
ctrl.dialog.file_mode = ctrl.dialog.FILE_MODE_OPEN_FILE
|
||||
ctrl.dialog.title = disp_text
|
||||
return ctrl
|
||||
|
||||
|
||||
func add_save_file_anywhere(key, value, disp_text, hint=''):
|
||||
var ctrl = PanelControls.DirectoryControl.new(disp_text, value, hint)
|
||||
add_ctrl(key, ctrl)
|
||||
ctrl.dialog.file_mode = ctrl.dialog.FILE_MODE_SAVE_FILE
|
||||
ctrl.dialog.access = ctrl.dialog.ACCESS_FILESYSTEM
|
||||
ctrl.dialog.title = disp_text
|
||||
return ctrl
|
||||
|
||||
|
||||
func add_color(key, value, disp_text, hint=''):
|
||||
var ctrl = PanelControls.ColorControl.new(disp_text, value, hint)
|
||||
add_ctrl(key, ctrl)
|
||||
return ctrl
|
||||
|
||||
|
||||
var _blurbs = 0
|
||||
func add_blurb(text):
|
||||
var ctrl = RichTextLabel.new()
|
||||
ctrl.fit_content = true
|
||||
ctrl.bbcode_enabled = true
|
||||
ctrl.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||
ctrl.text = text
|
||||
add_ctrl(str("blurb_", _blurbs), ctrl)
|
||||
return ctrl
|
||||
|
||||
|
||||
# ------------------
|
||||
# Events
|
||||
# ------------------
|
||||
func _on_title_cell_draw(which):
|
||||
which.draw_rect(Rect2(Vector2(0, 0), which.size), Color(0, 0, 0, .15))
|
||||
|
||||
|
||||
# ------------------
|
||||
# Public
|
||||
# ------------------
|
||||
|
||||
func clear():
|
||||
for key in controls:
|
||||
controls[key].free()
|
||||
|
||||
controls.clear()
|
||||
|
||||
for entry in _all_titles:
|
||||
entry.free()
|
||||
|
||||
_all_titles.clear()
|
||||
Reference in New Issue
Block a user