mirror of
https://github.com/Relintai/pandemonium_engine_easy_charts.git
synced 2024-12-23 13:57:01 +01:00
219 lines
8.1 KiB
GDScript3
219 lines
8.1 KiB
GDScript3
|
tool
|
||
|
extends Control
|
||
|
|
||
|
onready var RepositoryItem = preload("res://addons/github-integration/scenes/RepositoryItem.tscn")
|
||
|
onready var GistItem = preload("res://addons/github-integration/scenes/GistItem.tscn")
|
||
|
|
||
|
onready var User = $Panel/HBoxContainer/user
|
||
|
onready var Avatar : TextureRect = $Panel/HBoxContainer/avatar
|
||
|
onready var Repos = $Panel/List/RepositoryHeader/repos
|
||
|
onready var Gists = $Panel/List/GistHeader/gists
|
||
|
onready var RepoList = $Panel/List/RepositoryList/Repos
|
||
|
onready var GistList = $Panel/List/GistList/Gists
|
||
|
onready var NewRepo = $Panel/List/repos_buttons/repo
|
||
|
onready var NewGist = $Panel/List/gist_buttons/gist
|
||
|
onready var ReloadBtn = $ReloadBtn
|
||
|
|
||
|
onready var SearchRepo = $Panel/List/RepositoryHeader/search_repo
|
||
|
onready var SearchGist = $Panel/List/GistHeader/search_gist
|
||
|
|
||
|
onready var GistDialog = $NewGist
|
||
|
onready var RepoDialog = $NewRepo
|
||
|
|
||
|
var request : HTTPRequest = HTTPRequest.new()
|
||
|
|
||
|
enum REQUESTS { REPOS = 0, GISTS = 1, UP_REPOS = 2, UP_GISTS = 3, DELETE = 4, COMMIT = 5, BRANCHES = 6, END = -1 }
|
||
|
var requesting
|
||
|
var repositories
|
||
|
var gists
|
||
|
var branches
|
||
|
|
||
|
signal new_branch()
|
||
|
signal completed_loading()
|
||
|
|
||
|
var repository_list : Array = []
|
||
|
var gist_list : Array = []
|
||
|
|
||
|
func _ready():
|
||
|
load_icons()
|
||
|
call_deferred("add_child",request)
|
||
|
request.connect("request_completed",self,"request_completed")
|
||
|
NewRepo.connect("pressed",self,"new_repo")
|
||
|
NewGist.connect("pressed",self,"new_gist")
|
||
|
ReloadBtn.connect("pressed",self,"_reload")
|
||
|
SearchRepo.connect("text_changed",self,"_on_search_repo")
|
||
|
SearchGist.connect("text_changed",self,"_on_search_gist")
|
||
|
|
||
|
func set_darkmode(darkmode : bool):
|
||
|
if darkmode:
|
||
|
$BG.color = "#24292e"
|
||
|
set_theme(load("res://addons/github-integration/resources/themes/GitHubTheme-Dark.tres"))
|
||
|
$Panel/List/RepositoryList.set("custom_styles/bg", load("res://addons/github-integration/resources/styles/List-black.tres"))
|
||
|
$Panel/List/GistList.set("custom_styles/bg", load("res://addons/github-integration/resources/styles/List-black.tres"))
|
||
|
else:
|
||
|
$BG.color = "#f6f8fa"
|
||
|
set_theme(load("res://addons/github-integration/resources/themes/GitHubTheme.tres"))
|
||
|
$Panel/List/RepositoryList.set("custom_styles/bg", load("res://addons/github-integration/resources/styles/List-white.tres"))
|
||
|
$Panel/List/GistList.set("custom_styles/bg", load("res://addons/github-integration/resources/styles/List-white.tres"))
|
||
|
|
||
|
func load_panel() -> void:
|
||
|
# Avatar.texture = UserData.AVATAR
|
||
|
# User.text = UserData.USER.login
|
||
|
Repos.text = str(UserData.USER.public_repos)
|
||
|
Gists.text = str(UserData.USER.public_gists)
|
||
|
|
||
|
request_repositories(REQUESTS.REPOS)
|
||
|
|
||
|
func load_icons():
|
||
|
$Panel/List/GistHeader/gists_icon.texture = IconLoaderGithub.load_icon_from_name("gists")
|
||
|
$Panel/List/RepositoryHeader/repos_icon.texture = IconLoaderGithub.load_icon_from_name("repos")
|
||
|
ReloadBtn.icon = IconLoaderGithub.load_icon_from_name("reload-gray")
|
||
|
NewRepo.icon = IconLoaderGithub.load_icon_from_name("repos")
|
||
|
NewGist.icon = IconLoaderGithub.load_icon_from_name("gists")
|
||
|
|
||
|
func request_completed(result, response_code, headers, body ):
|
||
|
if result == 0:
|
||
|
match requesting:
|
||
|
REQUESTS.REPOS:
|
||
|
if response_code == 200:
|
||
|
repositories = JSON.parse(body.get_string_from_utf8()).result
|
||
|
load_repositories(repositories)
|
||
|
get_parent().print_debug_message("loaded all repositories...")
|
||
|
#requesting = REQUESTS.END
|
||
|
REQUESTS.GISTS:
|
||
|
if response_code == 200:
|
||
|
gists = JSON.parse(body.get_string_from_utf8()).result
|
||
|
load_gists(gists)
|
||
|
get_parent().print_debug_message("loaded all gists...")
|
||
|
emit_signal("completed_loading")
|
||
|
show()
|
||
|
REQUESTS.BRANCHES:
|
||
|
if response_code == 200:
|
||
|
branches = JSON.parse(body.get_string_from_utf8()).result
|
||
|
emit_signal("new_branch")
|
||
|
REQUESTS.UP_REPOS:
|
||
|
if response_code == 200:
|
||
|
repositories.clear()
|
||
|
repositories = JSON.parse(body.get_string_from_utf8()).result
|
||
|
load_repositories(repositories)
|
||
|
get_parent().print_debug_message("updated all repositories...")
|
||
|
REQUESTS.UP_GISTS:
|
||
|
if response_code == 200:
|
||
|
gists.clear()
|
||
|
gists = JSON.parse(body.get_string_from_utf8()).result
|
||
|
load_gists(gists)
|
||
|
get_parent().print_debug_message("updated all gists...")
|
||
|
REQUESTS.DELETE:
|
||
|
if response_code == 204:
|
||
|
get_parent().print_debug_message("deleted repository...")
|
||
|
OS.delay_msec(1500)
|
||
|
request_repositories(REQUESTS.UP_REPOS)
|
||
|
|
||
|
func load_gists(gists : Array) -> void:
|
||
|
gist_list.clear()
|
||
|
|
||
|
for gist in gists:
|
||
|
var gist_item = GistItem.instance()
|
||
|
GistList.add_child(gist_item)
|
||
|
gist_item.set_gist(gist)
|
||
|
gist_item.connect("gist_selected",self,"gist_selected")
|
||
|
gist_item.connect("gist_clicked",self,"gist_clicked")
|
||
|
gist_list.append(gist_item)
|
||
|
|
||
|
Gists.text = str(gists.size())
|
||
|
|
||
|
func load_repositories(rep : Array) -> void:
|
||
|
repository_list.clear()
|
||
|
|
||
|
for repository in rep:
|
||
|
var repo_item = RepositoryItem.instance()
|
||
|
RepoList.add_child(repo_item)
|
||
|
repo_item.set_repository(repository)
|
||
|
repo_item.connect("repo_selected",self,"repo_selected")
|
||
|
repo_item.connect("repo_clicked",self,"repo_clicked")
|
||
|
repository_list.append(repo_item)
|
||
|
|
||
|
Repos.text = str(repositories.size())
|
||
|
|
||
|
if requesting == REQUESTS.REPOS:
|
||
|
request_gists(REQUESTS.GISTS)
|
||
|
|
||
|
func repo_clicked(clicked_repo : Dictionary):
|
||
|
for repository in repository_list:
|
||
|
if repository._repository!=clicked_repo:
|
||
|
repository.deselect()
|
||
|
|
||
|
func gist_clicked(clicked_gist : Dictionary):
|
||
|
for gist in gist_list:
|
||
|
if gist._gist!=clicked_gist:
|
||
|
gist.deselect()
|
||
|
|
||
|
func request_branches(req : int, rep : Dictionary):
|
||
|
requesting = req
|
||
|
request.request("https://api.github.com/repos/"+UserData.USER.login+"/"+rep.name+"/branches",UserData.header,false,HTTPClient.METHOD_GET,"")
|
||
|
|
||
|
func request_gists(req : int):
|
||
|
requesting = req
|
||
|
request.request("https://api.github.com/gists",UserData.header,false,HTTPClient.METHOD_GET,"")
|
||
|
|
||
|
func request_repositories(req : int):
|
||
|
requesting = req
|
||
|
request.request("https://api.github.com/user/repos?per_page=100",UserData.header,false,HTTPClient.METHOD_GET,"")
|
||
|
|
||
|
func new_repo():
|
||
|
RepoDialog.popup()
|
||
|
|
||
|
#request.request()
|
||
|
|
||
|
func repo_selected(repository : Dictionary):
|
||
|
get_parent().print_debug_message("opening selected repository...")
|
||
|
get_parent().loading(true)
|
||
|
|
||
|
# var repo = RepoList.get_selected()
|
||
|
get_parent().Repo.open_repo(repository)
|
||
|
yield(get_parent().Repo,"loaded_repo")
|
||
|
hide()
|
||
|
|
||
|
get_parent().loading(false)
|
||
|
|
||
|
func gist_selected(gist : Dictionary):
|
||
|
get_parent().print_debug_message("opening selected gist...")
|
||
|
get_parent().loading(true)
|
||
|
|
||
|
# var gist = GistList.get_selected()
|
||
|
get_parent().Gist.request_gist(gist.id)
|
||
|
yield(get_parent().Gist,"loaded_gist")
|
||
|
hide()
|
||
|
|
||
|
get_parent().loading(false)
|
||
|
|
||
|
func new_gist():
|
||
|
GistDialog.popup()
|
||
|
|
||
|
func _reload():
|
||
|
get_parent().loading(true)
|
||
|
get_parent().print_debug_message("Reloading, please wait...")
|
||
|
request_repositories(REQUESTS.REPOS)
|
||
|
yield(self,"completed_loading")
|
||
|
get_parent().loading(false)
|
||
|
|
||
|
func _on_search_repo(repo_name : String):
|
||
|
for repository in repository_list:
|
||
|
if repo_name!="":
|
||
|
if repo_name.to_lower() in repository._name.to_lower():
|
||
|
repository.show()
|
||
|
else:
|
||
|
repository.hide()
|
||
|
else:
|
||
|
repository.show()
|
||
|
|
||
|
func _on_search_gist(gist_name : String):
|
||
|
for gist in gist_list:
|
||
|
if gist_name!="":
|
||
|
if gist_name.to_lower() in gist._name.to_lower():
|
||
|
gist.show()
|
||
|
else:
|
||
|
gist.hide()
|
||
|
else:
|
||
|
gist.show()
|