Browse Source

Merge pull request #28009 from kbake/output-context-menu-27543

Adds Copy button to output panel
Rémi Verschelde 6 years ago
parent
commit
b96cd577c3
2 changed files with 20 additions and 0 deletions
  1. 17 0
      editor/editor_log.cpp
  2. 3 0
      editor/editor_log.h

+ 17 - 0
editor/editor_log.cpp

@@ -78,10 +78,19 @@ void EditorLog::_clear_request() {
 	tool_button->set_icon(Ref<Texture>());
 	tool_button->set_icon(Ref<Texture>());
 }
 }
 
 
+void EditorLog::_copy_request() {
+
+	log->selection_copy();
+}
+
 void EditorLog::clear() {
 void EditorLog::clear() {
 	_clear_request();
 	_clear_request();
 }
 }
 
 
+void EditorLog::copy() {
+	_copy_request();
+}
+
 void EditorLog::add_message(const String &p_msg, MessageType p_type) {
 void EditorLog::add_message(const String &p_msg, MessageType p_type) {
 
 
 	log->add_newline();
 	log->add_newline();
@@ -125,7 +134,9 @@ void EditorLog::_undo_redo_cbk(void *p_self, const String &p_name) {
 void EditorLog::_bind_methods() {
 void EditorLog::_bind_methods() {
 
 
 	ClassDB::bind_method(D_METHOD("_clear_request"), &EditorLog::_clear_request);
 	ClassDB::bind_method(D_METHOD("_clear_request"), &EditorLog::_clear_request);
+	ClassDB::bind_method(D_METHOD("_copy_request"), &EditorLog::_copy_request);
 	ADD_SIGNAL(MethodInfo("clear_request"));
 	ADD_SIGNAL(MethodInfo("clear_request"));
+	ADD_SIGNAL(MethodInfo("copy_request"));
 }
 }
 
 
 EditorLog::EditorLog() {
 EditorLog::EditorLog() {
@@ -139,6 +150,12 @@ EditorLog::EditorLog() {
 	title->set_h_size_flags(SIZE_EXPAND_FILL);
 	title->set_h_size_flags(SIZE_EXPAND_FILL);
 	hb->add_child(title);
 	hb->add_child(title);
 
 
+	copybutton = memnew(Button);
+	hb->add_child(copybutton);
+	copybutton->set_text(TTR("Copy"));
+	copybutton->set_shortcut(ED_SHORTCUT("editor/copy_output", TTR("Copy Selection"), KEY_MASK_CMD | KEY_C));
+	copybutton->connect("pressed", this, "_copy_request");
+
 	clearbutton = memnew(Button);
 	clearbutton = memnew(Button);
 	hb->add_child(clearbutton);
 	hb->add_child(clearbutton);
 	clearbutton->set_text(TTR("Clear"));
 	clearbutton->set_text(TTR("Clear"));

+ 3 - 0
editor/editor_log.h

@@ -48,6 +48,7 @@ class EditorLog : public VBoxContainer {
 	GDCLASS(EditorLog, VBoxContainer);
 	GDCLASS(EditorLog, VBoxContainer);
 
 
 	Button *clearbutton;
 	Button *clearbutton;
+	Button *copybutton;
 	Label *title;
 	Label *title;
 	RichTextLabel *log;
 	RichTextLabel *log;
 	HBoxContainer *title_hb;
 	HBoxContainer *title_hb;
@@ -62,6 +63,7 @@ class EditorLog : public VBoxContainer {
 
 
 	//void _dragged(const Point2& p_ofs);
 	//void _dragged(const Point2& p_ofs);
 	void _clear_request();
 	void _clear_request();
+	void _copy_request();
 	static void _undo_redo_cbk(void *p_self, const String &p_name);
 	static void _undo_redo_cbk(void *p_self, const String &p_name);
 
 
 protected:
 protected:
@@ -80,6 +82,7 @@ public:
 	void deinit();
 	void deinit();
 
 
 	void clear();
 	void clear();
+	void copy();
 	EditorLog();
 	EditorLog();
 	~EditorLog();
 	~EditorLog();
 };
 };