Initial Commit
Initial commit of Code Base.
This commit is contained in:
parent
293b1213e1
commit
c11a4ebbc2
653 changed files with 36893 additions and 1 deletions
139
addons/twitcher/editor/setup/page_use_case.gd
Normal file
139
addons/twitcher/editor/setup/page_use_case.gd
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
@tool
|
||||
extends MarginContainer
|
||||
|
||||
enum UseCase {
|
||||
Overlay, Game, Other
|
||||
}
|
||||
|
||||
const PRESET_GAME_SCOPES = preload("res://addons/twitcher/auth/preset_game_scopes.tres")
|
||||
const PRESET_OVERLAY_SCOPES = preload("res://addons/twitcher/auth/preset_overlay_scopes.tres")
|
||||
const TwitchScopeProperty = preload("res://addons/twitcher/editor/inspector/twitch_scope_property.gd")
|
||||
const TwitchEditorSettings = preload("res://addons/twitcher/editor/twitch_editor_settings.gd")
|
||||
const TwitchTweens = preload("res://addons/twitcher/editor/twitch_tweens.gd")
|
||||
|
||||
@export var choose_button_group: ButtonGroup
|
||||
|
||||
@onready var overlay: CheckBox = %Overlay
|
||||
@onready var game: CheckBox = %Game
|
||||
@onready var something_else: CheckBox = %SomethingElse
|
||||
@onready var scope_list: RichTextLabel = %ScopeList
|
||||
@onready var to_documentation: Button = %ToDocumentation
|
||||
@onready var scope_file_select: FileSelect = %ScopeFileSelect
|
||||
@onready var scopes_container: HBoxContainer = %Scopes
|
||||
@onready var advanced_edit: CheckButton = %AdvancedEdit
|
||||
@onready var other_scope_options: PanelContainer = %OtherScopeOptions
|
||||
@onready var extended_scope_info: PanelContainer = %ExtendedScopeInfo
|
||||
@onready var save: Button = %Save
|
||||
|
||||
var other_scope_property: TwitchScopeProperty = TwitchScopeProperty.new()
|
||||
var scopes: TwitchOAuthScopes: set = update_scopes
|
||||
var has_changes: bool:
|
||||
set(val):
|
||||
has_changes = val
|
||||
changed.emit()
|
||||
save.text = save.text.trim_suffix(" (unsaved changes)")
|
||||
if has_changes: save.text += " (unsaved changes)"
|
||||
|
||||
signal changed
|
||||
signal use_case_changed(use_case: UseCase)
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
to_documentation.pressed.connect(_on_to_documentation_pressed)
|
||||
choose_button_group.pressed.connect(_on_choose)
|
||||
scope_file_select.file_selected.connect(_on_scope_file_selected)
|
||||
save.pressed.connect(_on_save_pressed)
|
||||
other_scope_property.scope_selected.connect(_on_scope_info)
|
||||
advanced_edit.toggled.connect(_on_toggle_advanced_edit)
|
||||
|
||||
scopes_container.hide()
|
||||
extended_scope_info.hide()
|
||||
extended_scope_info.add_child(other_scope_property)
|
||||
|
||||
# Reset radio buttons cause it's a tool script and the radio button stay and won't throw another signal otherwise
|
||||
game.set_pressed_no_signal(false)
|
||||
overlay.set_pressed_no_signal(false)
|
||||
something_else.set_pressed_no_signal(false)
|
||||
|
||||
scope_file_select.path = TwitchEditorSettings.get_scope_path()
|
||||
match TwitchEditorSettings.project_preset:
|
||||
TwitchEditorSettings.PRESET_GAME:
|
||||
game.button_pressed = true
|
||||
TwitchEditorSettings.PRESET_OVERLAY:
|
||||
overlay.button_pressed = true
|
||||
TwitchEditorSettings.PRESET_OTHER:
|
||||
something_else.button_pressed = true
|
||||
|
||||
# Needs to be resetted cause the radio reset will change the has_changges to true
|
||||
has_changes = false
|
||||
|
||||
func _on_scope_file_selected(path: String) -> void:
|
||||
has_changes = true
|
||||
if FileAccess.file_exists(path):
|
||||
var resource = load(path)
|
||||
if resource is OAuthScopes: scopes = resource
|
||||
else: OS.alert("The selected scope is not a scope file, it will be overwritten!")
|
||||
|
||||
|
||||
func _on_toggle_advanced_edit(toggled_on: bool) -> void:
|
||||
extended_scope_info.visible = toggled_on
|
||||
|
||||
|
||||
func _on_choose(button: BaseButton) -> void:
|
||||
match button:
|
||||
overlay:
|
||||
use_case_changed.emit(UseCase.Overlay)
|
||||
scopes = PRESET_OVERLAY_SCOPES.duplicate(true)
|
||||
advanced_edit.button_pressed = false
|
||||
TwitchEditorSettings.project_preset = TwitchEditorSettings.PRESET_OVERLAY
|
||||
game:
|
||||
use_case_changed.emit(UseCase.Game)
|
||||
scopes = PRESET_GAME_SCOPES.duplicate(true)
|
||||
advanced_edit.button_pressed = false
|
||||
TwitchEditorSettings.project_preset = TwitchEditorSettings.PRESET_GAME
|
||||
something_else:
|
||||
use_case_changed.emit(UseCase.Other)
|
||||
scopes = TwitchOAuthScopes.new()
|
||||
advanced_edit.button_pressed = true
|
||||
TwitchEditorSettings.project_preset = TwitchEditorSettings.PRESET_OTHER
|
||||
|
||||
_show_selected_scopes()
|
||||
has_changes = true
|
||||
|
||||
func _on_scope_info(scope: TwitchScope.Definition) -> void:
|
||||
_show_selected_scopes()
|
||||
|
||||
|
||||
func _on_save_pressed() -> void:
|
||||
var s_path = scope_file_select.path
|
||||
scopes.take_over_path(s_path)
|
||||
ResourceSaver.save(scopes, s_path)
|
||||
TwitchEditorSettings.set_scope_path(s_path)
|
||||
TwitchTweens.flash(save, Color.GREEN)
|
||||
has_changes = false
|
||||
|
||||
|
||||
func _show_selected_scopes() -> void:
|
||||
scopes_container.show()
|
||||
|
||||
if scopes.used_scopes.is_empty():
|
||||
scope_list.text = "[i]No scopes selected yet[/i]"
|
||||
return
|
||||
|
||||
var scope_description: String = ""
|
||||
for scope_name: StringName in scopes.used_scopes:
|
||||
var scope: TwitchScope.Definition = TwitchScope.SCOPE_MAP[scope_name]
|
||||
scope_description += "[b]%s[/b] - %s\n\n" % [scope.value, scope.description]
|
||||
|
||||
scope_list.text = scope_description
|
||||
|
||||
|
||||
func _on_to_documentation_pressed() -> void:
|
||||
OS.shell_open("https://dev.twitch.tv/docs/authentication/scopes/")
|
||||
|
||||
|
||||
func update_scopes(val: TwitchOAuthScopes) -> void:
|
||||
scopes = val
|
||||
other_scope_property.set_object_and_property(scopes, "")
|
||||
other_scope_property.update_property()
|
||||
_show_selected_scopes()
|
||||
Loading…
Add table
Add a link
Reference in a new issue