pandemonium_engine_easy_charts/addons/github-integration/scripts/GitHub.gd

198 lines
6.1 KiB
GDScript3
Raw Normal View History

2020-08-04 15:22:30 +02:00
# ----------------------------------------------
# ~{ GitHub Integration }~
# [Author] Nicolò "fenix" Santilio
# [github] fenix-hub/godot-engine.github-integration
# [version] 0.2.9
# [date] 09.13.2019
# -----------------------------------------------
tool
extends Control
onready var VersionCheck : HTTPRequest = $VersionCheck
onready var SignIn = $SingIn
onready var UserPanel = $UserPanel
onready var CommitRepo = $Commit
onready var Repo = $Repo
onready var Gist = $Gist
onready var Commit = $Commit
onready var LoadNode = $loading
onready var Version = $Header/datas/version
onready var ConnectionIcon : TextureRect = $Header/datas/connection
onready var Header = $Header
onready var RestartConnection = Header.get_node("datas/restart_connection")
onready var Menu = $Header/datas/Menu.get_popup()
var user_avatar : ImageTexture = ImageTexture.new()
var user_img = Image.new()
var connection_status : Array = [
IconLoaderGithub.load_icon_from_name("searchconnection"),
IconLoaderGithub.load_icon_from_name("noconnection"),
IconLoaderGithub.load_icon_from_name("connection")
]
var plugin_version
var plugin_name
func load_config():
var config = ConfigFile.new()
var err = config.load("res://addons/github-integration/plugin.cfg")
if err == OK:
plugin_version = config.get_value("plugin","version")
plugin_name = "[%s] >> " % config.get_value("plugin","name")
func _ready():
load_config()
set_darkmode(PluginSettings.darkmode)
LoadNode.hide()
Menu.connect("id_pressed", self, "menu_item_pressed")
RestartConnection.connect("pressed",self,"check_connection")
VersionCheck.connect("request_completed",self,"_on_version_check")
# Debug.connect("toggled",self,"_on_debug_toggled")
Repo.hide()
SignIn.show()
SignIn.connect("signed",self,"signed")
UserPanel.hide()
Commit.hide()
Version.text = "v "+plugin_version
# Debug.set_pressed(PluginSettings.debug)
ConnectionIcon.set_texture(connection_status[0])
# check_connection()
ConnectionIcon.use_parent_material = false
ConnectionIcon.material.set("shader_param/speed", 3)
RestHandler.check_connection()
var connection = yield(RestHandler, "_check_connection")
match connection:
true:
SignIn.btnSignIn.set_disabled(false)
ConnectionIcon.set_texture(connection_status[2])
ConnectionIcon.set_tooltip("Connected to GitHub API")
RestartConnection.hide()
false:
SignIn.btnSignIn.set_disabled(true)
ConnectionIcon.set_texture(connection_status[1])
ConnectionIcon.set_tooltip("Can't connect to GitHub API, check your internet connection or API status")
RestartConnection.show()
ConnectionIcon.use_parent_material = true
ConnectionIcon.material.set("shader_param/speed", 0)
Menu.set_item_checked(0, PluginSettings.debug)
Menu.set_item_checked(1, PluginSettings.auto_log)
VersionCheck.request("https://api.github.com/repos/fenix-hub/godot-engine.github-integration/tags",[],false,HTTPClient.METHOD_GET,"")
if PluginSettings.auto_log:
SignIn.sign_in()
func check_connection():
pass
func loading(value : bool) -> void:
LoadNode.visible = value
func show_loading_progress(value : float, max_value : float) -> void:
LoadNode.show_progress(value,max_value)
func hide_loading_progress():
LoadNode.hide_progress()
func show_number(value : float, type : String) -> void:
LoadNode.show_number(value,type)
func hide_number():
LoadNode.hide_number()
func signed() -> void:
UserPanel.load_panel()
set_avatar(UserData.AVATAR)
set_username(UserData.USER.login)
func print_debug_message(message : String = "",type : int = 0):
if PluginSettings.debug == true:
match type:
0:
print(plugin_name,message)
1:
printerr(plugin_name,message)
2:
push_warning(plugin_name+message)
func _on_debug_toggled(button_pressed):
PluginSettings.set_debug(button_pressed)
Menu.set_item_checked(0, PluginSettings.debug)
if button_pressed:
print(plugin_name, "Debug Enabled")
else:
print(plugin_name, "Debug Disabled")
func _on_autologin_toggled(button_pressed):
PluginSettings.set_auto_log(button_pressed)
Menu.set_item_checked(1, PluginSettings.auto_log)
if button_pressed:
print(plugin_name, "Auto Login Enabled")
else:
print(plugin_name, "Auto Login Disabled")
func menu_item_pressed(id : int):
match id:
0:
_on_debug_toggled(!Menu.is_item_checked(id))
1:
_on_autologin_toggled(!Menu.is_item_checked(id))
3:
OS.shell_open("https://github.com/fenix-hub/godot-engine.github-integration/wiki")
5:
logout()
7:
set_darkmode(!Menu.is_item_checked(id))
func logout():
set_avatar(IconLoaderGithub.load_icon_from_name("circle"))
set_username("user")
SignIn.show()
UserPanel.hide()
Repo.hide()
Commit.hide()
Gist.hide()
SignIn.Mail.text = ""
SignIn.Token.text = ""
func set_darkmode(darkmode : bool):
PluginSettings.set_darkmode(darkmode)
Menu.set_item_checked(7, PluginSettings.darkmode)
SignIn.set_darkmode(darkmode)
UserPanel.set_darkmode(darkmode)
Repo.set_darkmode(darkmode)
Commit.set_darkmode(darkmode)
Gist.set_darkmode(darkmode)
Header.set_darkmode(darkmode)
func set_avatar(avatar : ImageTexture):
$Header/datas/avatar.texture = avatar
func set_username(username : String):
$Header/datas/user.text = username
func _on_version_check(result, response_code, headers, body ):
if result == 0:
if response_code == 200:
var tags : Array = JSON.parse(body.get_string_from_utf8()).result
var first_tag : Dictionary = tags[0] as Dictionary
if first_tag.name != ("v"+plugin_version):
print_debug_message("a new plugin version has been found, current version is %s and new version is %s" % [("v"+plugin_version), first_tag.name],1)