diff --git a/bugbot.gd b/bugbot.gd index 54ed941..6fae904 100644 --- a/bugbot.gd +++ b/bugbot.gd @@ -1,12 +1,121 @@ @tool extends EditorPlugin +enum BugbotMenuItems { + SHOW_BUG_MARKERS, + HIDE_BUG_MARKERS +} + +enum BugReportPlatform { + BUGZILLA, + GITEA, + JIRA +} + +var __bugbot_menu_button : BugbotMenuButton func _enter_tree() -> void: + __initialise_project_settings() + + __bugbot_menu_button = preload("res://addons/Bugbot/bugbot_menu_button.tscn").instantiate() as BugbotMenuButton + add_control_to_container(CustomControlContainer.CONTAINER_SPATIAL_EDITOR_MENU, __bugbot_menu_button) + + # Setup popup menu + var bugbot_menu : PopupMenu = __bugbot_menu_button.get_popup() + bugbot_menu.add_item("Show Bug Markers", BugbotMenuItems.SHOW_BUG_MARKERS) + bugbot_menu.add_item("Hide Bug Markers", BugbotMenuItems.HIDE_BUG_MARKERS) + bugbot_menu.id_pressed.connect(__on_bugbot_menu_item_pressed) + # This is where we should initialise options for showing bug markers pass func _exit_tree() -> void: + remove_control_from_container(CustomControlContainer.CONTAINER_SPATIAL_EDITOR_MENU, __bugbot_menu_button) + __bugbot_menu_button.queue_free() + # This is where we should remove any visible bug markers pass + + +func __initialise_project_settings(): + __add_project_setting("bugbot/bug_report_platform", TYPE_INT, BugReportPlatform.BUGZILLA, PROPERTY_HINT_ENUM, "Bugzilla,Gitea,Jira") + + #region Placement + __add_project_setting("bugbot/bug_placement/precise_placement_distance", TYPE_FLOAT, 15.0, PROPERTY_HINT_RANGE, "0.0,100.0,0.1,or_greater") + __add_project_setting("bugbot/bug_placement/arbitrary_placement_distance", TYPE_FLOAT, 2.5, PROPERTY_HINT_RANGE, "0.0,100.0,0.1,or_greater") + #endregion + + #region Reporting + __add_project_setting("bugbot/reporting/bug_report_widget_depth", TYPE_INT, 10000) + + #region Bugzilla + __add_project_setting("bugbot/reporting/bugzilla/server", TYPE_STRING, "https://127.0.0.1:4433") + __add_project_setting("bugbot/reporting/bugzilla/REST_URI", TYPE_STRING, "rest/") + __add_project_setting("bugbot/reporting/bugzilla/product_name", TYPE_STRING, "") + __add_project_setting("bugbot/reporting/bugzilla/API_key", TYPE_STRING, "") + __add_project_setting("bugbot/reporting/bugzilla/default_status", TYPE_STRING, "UNCONFIRMED") + #endregion + #region Gitea + __add_project_setting("bugbot/reporting/gitea/server", TYPE_STRING, "https://127.0.0.1:4433") + __add_project_setting("bugbot/reporting/gitea/base_URL", TYPE_STRING, "api/v1/") + __add_project_setting("bugbot/reporting/gitea/owner_name", TYPE_STRING, "ProjectOwner") + __add_project_setting("bugbot/reporting/gitea/repo_name", TYPE_STRING, "ProjectName") + __add_project_setting("bugbot/reporting/gitea/API_key", TYPE_STRING, "") + __add_project_setting("bugbot/reporting/gitea/default_label", TYPE_STRING, "Kind/Bug") + __add_project_setting("bugbot/reporting/gitea/default_status", TYPE_STRING, "Status/Need More Info") + #endregion + #region Jira + __add_project_setting("bugbot/reporting/jira/server", TYPE_STRING, "https://127.0.0.1:4433") + __add_project_setting("bugbot/reporting/jira/REST_URI", TYPE_STRING, "rest/") + __add_project_setting("bugbot/reporting/jira/project_name", TYPE_STRING, "ProjectName") + __add_project_setting("bugbot/reporting/jira/email", TYPE_STRING, "") + __add_project_setting("bugbot/reporting/jira/API_key", TYPE_STRING, "") + __add_project_setting("bugbot/reporting/jira/bug_issue_type", TYPE_STRING, "Bug") + __add_project_setting("bugbot/reporting/jira/map_name_field", TYPE_STRING, "") + __add_project_setting("bugbot/reporting/jira/marker_location_field", TYPE_STRING, "") + __add_project_setting("bugbot/reporting/jira/optional_fields/department_field", TYPE_STRING, "") + __add_project_setting("bugbot/reporting/jira/optional_fields/severity_field", TYPE_STRING, "") + __add_project_setting("bugbot/reporting/jira/optional_fields/platform_field", TYPE_STRING, "") + __add_project_setting("bugbot/reporting/jira/optional_fields/version_field", TYPE_STRING, "") + #endregion + #endregion + + #region Bug Markers + __add_project_setting("bugbot/markers/unresolved/show_unresolved_bugs", TYPE_BOOL, true) + __add_project_setting("bugbot/markers/unresolved/tint", TYPE_COLOR, Color(0.1,0.0,0.0)) + __add_project_setting("bugbot/markers/unresolved/unresolved_statuses", TYPE_ARRAY, Array(), PROPERTY_HINT_ARRAY_TYPE, "String") + + __add_project_setting("bugbot/markers/in_progress/show_in_progress_bugs", TYPE_BOOL, true) + __add_project_setting("bugbot/markers/in_progress/tint", TYPE_COLOR, Color(0.5,0.5,0.0)) + __add_project_setting("bugbot/markers/in_progress/in_progress_statuses", TYPE_ARRAY, Array(), PROPERTY_HINT_ARRAY_TYPE, "String") + + __add_project_setting("bugbot/markers/resolved/show_resolved_bugs", TYPE_BOOL, false) + __add_project_setting("bugbot/markers/resolved/tint", TYPE_COLOR, Color(0.0,1.0,0.0)) + __add_project_setting("bugbot/markers/resolved/resolved_statuses", TYPE_ARRAY, Array(), PROPERTY_HINT_ARRAY_TYPE, "String") + #endregion + + #region Batch Loading + __add_project_setting("bugbot/markers/display/load_markers_batch", TYPE_INT, 10) + __add_project_setting("bugbot/markers/display/unload_markers_batch", TYPE_INT, 25) + #endregion + +func __on_bugbot_menu_item_pressed(id:int): + match id: + BugbotMenuItems.SHOW_BUG_MARKERS: + print("Show Bug Markers is happening.") + BugbotMenuItems.HIDE_BUG_MARKERS: + print("Show Bug Markers is not happening. In fact, the opposite of that.") + +func __add_project_setting(_setting:String, _type:int, _default_value:Variant, _hint:int = PropertyHint.PROPERTY_HINT_NONE, _hint_string:String = ""): + var setting_info: Dictionary = { + "name": _setting, + "type": _type, + "hint": _hint, + "hint_string": _hint_string + } + + if not ProjectSettings.has_setting(_setting): + ProjectSettings.set_setting(_setting, _default_value) + ProjectSettings.add_property_info(setting_info) + ProjectSettings.set_initial_value(_setting, _default_value) diff --git a/bugbot_menu_button.gd b/bugbot_menu_button.gd new file mode 100644 index 0000000..0f39746 --- /dev/null +++ b/bugbot_menu_button.gd @@ -0,0 +1,2 @@ +class_name BugbotMenuButton +extends MenuButton diff --git a/bugbot_menu_button.tscn b/bugbot_menu_button.tscn new file mode 100644 index 0000000..86f64d8 --- /dev/null +++ b/bugbot_menu_button.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://co7opobmvswt1"] + +[ext_resource type="Script" path="res://addons/Bugbot/bugbot_menu_button.gd" id="1_n0pdf"] + +[node name="BugbotMenuButton" type="MenuButton"] +offset_right = 64.0 +offset_bottom = 31.0 +text = "Bugbot" +script = ExtResource("1_n0pdf")