mirror of
https://github.com/Relintai/pandemonium_engine_easy_charts.git
synced 2024-12-23 13:57:01 +01:00
198 lines
6.1 KiB
GDScript3
198 lines
6.1 KiB
GDScript3
|
# ----------------------------------------------
|
||
|
# ~{ 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)
|