174 lines
4.5 KiB
C++
174 lines
4.5 KiB
C++
|
#include "editor_vcs_interface.h"
|
||
|
|
||
|
EditorVCSInterface *EditorVCSInterface::singleton = NULL;
|
||
|
|
||
|
void EditorVCSInterface::_bind_methods() {
|
||
|
|
||
|
// Proxy end points that act as fallbacks to unavailability of a function in the VCS addon
|
||
|
ClassDB::bind_method(D_METHOD("_initialize", "project_root_path"), &EditorVCSInterface::_initialize);
|
||
|
ClassDB::bind_method(D_METHOD("_get_is_vcs_intialized"), &EditorVCSInterface::_get_is_vcs_intialized);
|
||
|
ClassDB::bind_method(D_METHOD("_get_vcs_name"), &EditorVCSInterface::_get_vcs_name);
|
||
|
ClassDB::bind_method(D_METHOD("_shut_down"), &EditorVCSInterface::_shut_down);
|
||
|
ClassDB::bind_method(D_METHOD("_get_project_name"), &EditorVCSInterface::_get_project_name);
|
||
|
ClassDB::bind_method(D_METHOD("_get_modified_files_data"), &EditorVCSInterface::_get_modified_files_data);
|
||
|
ClassDB::bind_method(D_METHOD("_commit", "msg"), &EditorVCSInterface::_commit);
|
||
|
ClassDB::bind_method(D_METHOD("_get_file_diff", "file_path"), &EditorVCSInterface::_get_file_diff);
|
||
|
ClassDB::bind_method(D_METHOD("_stage_file", "file_path"), &EditorVCSInterface::_stage_file);
|
||
|
ClassDB::bind_method(D_METHOD("_unstage_file", "file_path"), &EditorVCSInterface::_unstage_file);
|
||
|
|
||
|
ClassDB::bind_method(D_METHOD("is_addon_ready"), &EditorVCSInterface::is_addon_ready);
|
||
|
|
||
|
// API methods that redirect calls to the proxy end points
|
||
|
ClassDB::bind_method(D_METHOD("initialize", "project_root_path"), &EditorVCSInterface::initialize);
|
||
|
ClassDB::bind_method(D_METHOD("get_is_vcs_intialized"), &EditorVCSInterface::get_is_vcs_intialized);
|
||
|
ClassDB::bind_method(D_METHOD("get_modified_files_data"), &EditorVCSInterface::get_modified_files_data);
|
||
|
ClassDB::bind_method(D_METHOD("stage_file", "file_path"), &EditorVCSInterface::stage_file);
|
||
|
ClassDB::bind_method(D_METHOD("unstage_file", "file_path"), &EditorVCSInterface::unstage_file);
|
||
|
ClassDB::bind_method(D_METHOD("commit", "msg"), &EditorVCSInterface::commit);
|
||
|
ClassDB::bind_method(D_METHOD("get_file_diff", "file_path"), &EditorVCSInterface::get_file_diff);
|
||
|
ClassDB::bind_method(D_METHOD("shut_down"), &EditorVCSInterface::shut_down);
|
||
|
ClassDB::bind_method(D_METHOD("get_project_name"), &EditorVCSInterface::get_project_name);
|
||
|
ClassDB::bind_method(D_METHOD("get_vcs_name"), &EditorVCSInterface::get_vcs_name);
|
||
|
}
|
||
|
|
||
|
bool EditorVCSInterface::_initialize(String p_project_root_path) {
|
||
|
|
||
|
WARN_PRINT("Selected VCS addon does not implement an initialization function. This warning will be suppressed.")
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
bool EditorVCSInterface::_get_is_vcs_intialized() {
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
Dictionary EditorVCSInterface::_get_modified_files_data() {
|
||
|
|
||
|
return Dictionary();
|
||
|
}
|
||
|
|
||
|
void EditorVCSInterface::_stage_file(String p_file_path) {
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
void EditorVCSInterface::_unstage_file(String p_file_path) {
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
void EditorVCSInterface::_commit(String p_msg) {
|
||
|
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
Array EditorVCSInterface::_get_file_diff(String p_file_path) {
|
||
|
|
||
|
return Array();
|
||
|
}
|
||
|
|
||
|
bool EditorVCSInterface::_shut_down() {
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
String EditorVCSInterface::_get_project_name() {
|
||
|
|
||
|
return String();
|
||
|
}
|
||
|
|
||
|
String EditorVCSInterface::_get_vcs_name() {
|
||
|
|
||
|
return "";
|
||
|
}
|
||
|
|
||
|
bool EditorVCSInterface::initialize(String p_project_root_path) {
|
||
|
|
||
|
is_initialized = call("_initialize", p_project_root_path);
|
||
|
return is_initialized;
|
||
|
}
|
||
|
|
||
|
bool EditorVCSInterface::get_is_vcs_intialized() {
|
||
|
|
||
|
return call("_get_is_vcs_intialized");
|
||
|
}
|
||
|
|
||
|
Dictionary EditorVCSInterface::get_modified_files_data() {
|
||
|
|
||
|
return call("_get_modified_files_data");
|
||
|
}
|
||
|
|
||
|
void EditorVCSInterface::stage_file(String p_file_path) {
|
||
|
|
||
|
if (is_addon_ready()) {
|
||
|
|
||
|
call("_stage_file", p_file_path);
|
||
|
}
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
void EditorVCSInterface::unstage_file(String p_file_path) {
|
||
|
|
||
|
if (is_addon_ready()) {
|
||
|
|
||
|
call("_unstage_file", p_file_path);
|
||
|
}
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
bool EditorVCSInterface::is_addon_ready() {
|
||
|
|
||
|
return is_initialized;
|
||
|
}
|
||
|
|
||
|
void EditorVCSInterface::commit(String p_msg) {
|
||
|
|
||
|
if (is_addon_ready()) {
|
||
|
|
||
|
call("_commit", p_msg);
|
||
|
}
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
Array EditorVCSInterface::get_file_diff(String p_file_path) {
|
||
|
|
||
|
if (is_addon_ready()) {
|
||
|
|
||
|
return call("_get_file_diff", p_file_path);
|
||
|
}
|
||
|
return Array();
|
||
|
}
|
||
|
|
||
|
bool EditorVCSInterface::shut_down() {
|
||
|
|
||
|
return call("_shut_down");
|
||
|
}
|
||
|
|
||
|
String EditorVCSInterface::get_project_name() {
|
||
|
|
||
|
return call("_get_project_name");
|
||
|
}
|
||
|
|
||
|
String EditorVCSInterface::get_vcs_name() {
|
||
|
|
||
|
return call("_get_vcs_name");
|
||
|
}
|
||
|
|
||
|
EditorVCSInterface::EditorVCSInterface() {
|
||
|
|
||
|
is_initialized = false;
|
||
|
}
|
||
|
|
||
|
EditorVCSInterface::~EditorVCSInterface() {
|
||
|
}
|
||
|
|
||
|
EditorVCSInterface *EditorVCSInterface::get_singleton() {
|
||
|
|
||
|
return singleton;
|
||
|
}
|
||
|
|
||
|
void EditorVCSInterface::set_singleton(EditorVCSInterface *p_singleton) {
|
||
|
|
||
|
singleton = p_singleton;
|
||
|
}
|