[Bf-blender-cvs] [954326c333c] soc-2020-info-editor: Clog: add copy operators
Mateusz GrzeliÅski
noreply at git.blender.org
Fri Aug 14 21:16:05 CEST 2020
Commit: 954326c333c459a48804d9865e628ce210fcc691
Author: Mateusz Grzeliński
Date: Fri Aug 14 21:14:11 2020 +0200
Branches: soc-2020-info-editor
https://developer.blender.org/rB954326c333c459a48804d9865e628ce210fcc691
Clog: add copy operators
===================================================================
M release/scripts/startup/bl_ui/space_info.py
M source/blender/editors/space_info/info_clog.c
M source/blender/editors/space_info/info_draw_clog.c
M source/blender/editors/space_info/info_intern.h
===================================================================
diff --git a/release/scripts/startup/bl_ui/space_info.py b/release/scripts/startup/bl_ui/space_info.py
index 9e03a4337ec..a433d558adc 100644
--- a/release/scripts/startup/bl_ui/space_info.py
+++ b/release/scripts/startup/bl_ui/space_info.py
@@ -159,7 +159,10 @@ class INFO_MT_context_menu(Menu):
layout.operator("info.report_copy", text="Copy")
layout.operator("info.report_delete", text="Delete")
else:
- layout.operator("info.clog_copy", text="Copy Message")
+ layout.operator("info.clog_copy", text="Copy Visible").method = 'COPY_VISIBLE'
+ layout.operator("info.clog_copy", text="Copy Message").method = 'COPY_MESSAGE'
+ layout.operator("info.clog_copy", text="Copy Path").method = 'COPY_PATH'
+ layout.operator("info.clog_copy", text="Copy Basename").method = 'COPY_BASENAME'
layout.operator("info.clog_delete", text="Delete (mockup)")
diff --git a/source/blender/editors/space_info/info_clog.c b/source/blender/editors/space_info/info_clog.c
index 5467441e172..ac275238f90 100644
--- a/source/blender/editors/space_info/info_clog.c
+++ b/source/blender/editors/space_info/info_clog.c
@@ -456,10 +456,18 @@ void INFO_OT_clog_delete(wmOperatorType *ot)
/* properties */
}
-static int clog_copy_exec(bContext *C, wmOperator *UNUSED(op))
+typedef enum ClogCopy {
+ CLOG_COPY_VISBLE = 0,
+ CLOG_COPY_MESSAGE,
+ CLOG_COPY_FILE_LINE,
+ CLOG_COPY_FILE_LINE_SHORT,
+} ClogCopy;
+
+static int clog_copy_exec(bContext *C, wmOperator *op)
{
SpaceInfo *sinfo = CTX_wm_space_info(C);
CLG_LogRecordList *records = CLG_log_records_get();
+ ClogCopy copy_type = RNA_enum_get(op->ptr, "method");
CLG_LogRecord *record;
DynStr *buf_dyn = BLI_dynstr_new();
@@ -467,8 +475,31 @@ static int clog_copy_exec(bContext *C, wmOperator *UNUSED(op))
for (record = records->first; record; record = record->next) {
if (is_clog_record_visible(record, sinfo) && (record->flag & CLG_SELECT)) {
- BLI_dynstr_append(buf_dyn, record->message);
- BLI_dynstr_append(buf_dyn, "\n");
+ switch (copy_type) {
+ case CLOG_COPY_VISBLE: {
+ char *log = clog_record_sprintfN(record, sinfo);
+ BLI_dynstr_append(buf_dyn, log);
+ BLI_dynstr_append(buf_dyn, "\n");
+ break;
+ }
+ case CLOG_COPY_MESSAGE: {
+ BLI_dynstr_append(buf_dyn, record->message);
+ BLI_dynstr_append(buf_dyn, "\n");
+ break;
+ }
+ case CLOG_COPY_FILE_LINE: {
+ BLI_dynstr_append(buf_dyn, record->file_line);
+ BLI_dynstr_append(buf_dyn, "\n");
+ break;
+ }
+ case CLOG_COPY_FILE_LINE_SHORT: {
+ BLI_dynstr_append(buf_dyn, BLI_path_basename(record->file_line));
+ BLI_dynstr_append(buf_dyn, "\n");
+ break;
+ }
+ default:
+ BLI_assert(false);
+ }
}
}
@@ -496,4 +527,15 @@ void INFO_OT_clog_copy(wmOperatorType *ot)
/*ot->flag = OPTYPE_REGISTER;*/
/* properties */
+ static const EnumPropertyItem clog_copy_items[] = {
+ {CLOG_COPY_VISBLE, "COPY_VISIBLE", 0, "", ""},
+ {CLOG_COPY_MESSAGE, "COPY_MESSAGE", 0, "", ""},
+ {CLOG_COPY_FILE_LINE, "COPY_PATH", 0, "", ""},
+ {CLOG_COPY_FILE_LINE_SHORT, "COPY_BASENAME", 0, "", ""},
+ {0, NULL, 0, NULL, NULL},
+ };
+
+ PropertyRNA *prop;
+ prop = RNA_def_enum(ot->srna, "method", clog_copy_items, CLOG_COPY_VISBLE, "Method", "");
+ RNA_def_property_flag(prop, PROP_SKIP_SAVE);
}
diff --git a/source/blender/editors/space_info/info_draw_clog.c b/source/blender/editors/space_info/info_draw_clog.c
index 548c965bf1a..058432cd6b2 100644
--- a/source/blender/editors/space_info/info_draw_clog.c
+++ b/source/blender/editors/space_info/info_draw_clog.c
@@ -167,14 +167,8 @@ int clog_textview_step(struct TextViewContext *tvc)
return (tvc->iter != NULL);
}
-void clog_textview_text_get(struct TextViewContext *tvc,
- char **r_line,
- int *r_len,
- bool *owns_memory)
+char *clog_record_sprintfN(const struct CLG_LogRecord *record, const SpaceInfo *sinfo)
{
- const struct CLG_LogRecord *record = tvc->iter;
- const SpaceInfo *sinfo = tvc->arg1;
-
DynStr *dynStr = BLI_dynstr_new();
if (sinfo->log_format & INFO_CLOG_SHOW_TIMESTAMP) {
char timestamp_str[64];
@@ -199,8 +193,9 @@ void clog_textview_text_get(struct TextViewContext *tvc,
BLI_dynstr_appendf(dynStr, "(%s) ", record->type->identifier);
}
if (sinfo->log_format & INFO_CLOG_SHOW_FILE_LINE) {
- const char *file_line = (sinfo->log_format & INFO_CLOG_USE_SHORT_FILTE_LINE) ? BLI_path_basename(record->file_line) :
- record->file_line;
+ const char *file_line = (sinfo->log_format & INFO_CLOG_USE_SHORT_FILTE_LINE) ?
+ BLI_path_basename(record->file_line) :
+ record->file_line;
BLI_dynstr_appendf(dynStr, "%s ", file_line);
}
if (sinfo->log_format & INFO_CLOG_SHOW_FUNCTION) {
@@ -211,9 +206,22 @@ void clog_textview_text_get(struct TextViewContext *tvc,
}
BLI_dynstr_append(dynStr, record->message);
+ char *cstring = BLI_dynstr_get_cstring(dynStr);
+ BLI_dynstr_free(dynStr);
+ return cstring;
+}
- *r_line = BLI_dynstr_get_cstring(dynStr);
- *r_len = BLI_dynstr_get_len(dynStr);
+void clog_textview_text_get(struct TextViewContext *tvc,
+ char **r_line,
+ int *r_len,
+ bool *owns_memory)
+{
+ const struct CLG_LogRecord *record = tvc->iter;
+ const SpaceInfo *sinfo = tvc->arg1;
+
+ char *cstring = clog_record_sprintfN(record, sinfo);
+
+ *r_line = cstring;
+ *r_len = strlen(cstring);
*owns_memory = true;
- BLI_dynstr_free(dynStr);
}
diff --git a/source/blender/editors/space_info/info_intern.h b/source/blender/editors/space_info/info_intern.h
index 5d159139272..bd33ea3dee2 100644
--- a/source/blender/editors/space_info/info_intern.h
+++ b/source/blender/editors/space_info/info_intern.h
@@ -104,6 +104,7 @@ void report_textview_text_get(struct TextViewContext *tvc,
int *r_len,
bool *owns_memory);
/* info_draw_clog.c */
+char *clog_record_sprintfN(const struct CLG_LogRecord *record, const SpaceInfo *sinfo);
bool is_clog_record_visible(const struct CLG_LogRecord *record, const struct SpaceInfo *sinfo);
enum eTextViewContext_LineDrawFlag clog_line_draw_data(struct TextViewContext *tvc,
uchar fg[4],
More information about the Bf-blender-cvs
mailing list