[Bf-blender-cvs] [1738e893aba] soc-2020-info-editor: WIP: initial support for synax highlighting in info editor and console
Mateusz GrzeliÅski
noreply at git.blender.org
Thu Jul 23 16:58:38 CEST 2020
Commit: 1738e893aba6d55a118d55a3a84bd6e30e84bba5
Author: Mateusz Grzeliński
Date: Thu Jul 23 11:46:38 2020 +0200
Branches: soc-2020-info-editor
https://developer.blender.org/rB1738e893aba6d55a118d55a3a84bd6e30e84bba5
WIP: initial support for synax highlighting in info editor and console
===================================================================
M release/datafiles/userdef/userdef_default_theme.c
M source/blender/blenkernel/intern/report.c
M source/blender/blenloader/intern/versioning_userdef.c
M source/blender/editors/include/ED_text.h
M source/blender/editors/space_console/console_draw.c
M source/blender/editors/space_info/info_draw.c
M source/blender/editors/space_info/info_report.c
M source/blender/editors/space_info/textview.c
M source/blender/editors/space_info/textview.h
M source/blender/editors/space_text/text_draw.c
M source/blender/editors/space_text/text_format.c
M source/blender/makesdna/DNA_windowmanager_types.h
M source/blender/makesrna/intern/rna_userdef.c
===================================================================
diff --git a/release/datafiles/userdef/userdef_default_theme.c b/release/datafiles/userdef/userdef_default_theme.c
index 286ce03305f..e737e82d261 100644
--- a/release/datafiles/userdef/userdef_default_theme.c
+++ b/release/datafiles/userdef/userdef_default_theme.c
@@ -498,6 +498,14 @@ const bTheme U_theme_default = {
.info_property_text = RGBA(0xffffffff),
.info_operator = RGBA(0x3ace87ff),
.info_operator_text = RGBA(0xffffffff),
+ .syntaxl = RGBA(0xf6e162ff),
+ .syntaxs = RGBA(0xff734dff),
+ .syntaxb = RGBA(0xff1961ff),
+ .syntaxn = RGBA(0x50dbffff),
+ .syntaxv = RGBA(0x95d600ff),
+ .syntaxc = RGBA(0x939393ff),
+ .syntaxd = RGBA(0xad80ffff),
+ .syntaxr = RGBA(0xc4753bff),
},
.space_action = {
.back = RGBA(0x42424200),
@@ -899,6 +907,14 @@ const bTheme U_theme_default = {
.vertex_size = 3,
.outline_width = 1,
.facedot_size = 4,
+ .syntaxl = RGBA(0xf6e162ff),
+ .syntaxs = RGBA(0xff734dff),
+ .syntaxb = RGBA(0xff1961ff),
+ .syntaxn = RGBA(0x50dbffff),
+ .syntaxv = RGBA(0x95d600ff),
+ .syntaxc = RGBA(0x939393ff),
+ .syntaxd = RGBA(0xad80ffff),
+ .syntaxr = RGBA(0xc4753bff),
},
.space_clip = {
.back = RGBA(0x42424200),
diff --git a/source/blender/blenkernel/intern/report.c b/source/blender/blenkernel/intern/report.c
index 4816e706832..f8aceda9b43 100644
--- a/source/blender/blenkernel/intern/report.c
+++ b/source/blender/blenkernel/intern/report.c
@@ -166,6 +166,14 @@ void BKE_report(ReportList *reports, ReportType type, const char *_message)
report->type = type;
report->typestr = BKE_report_type_str(type);
+ /* TODO (grzelins) hack: we want to pass flags in argument */
+ if (report->type == RPT_PROPERTY) {
+ report->flag = RPT_PYTHON;
+ }
+ if (report->type == RPT_OPERATOR) {
+ report->flag = RPT_PYTHON;
+ }
+
len = strlen(message);
message_alloc = MEM_mallocN(sizeof(char) * (len + 1), "ReportMessage");
memcpy(message_alloc, message, sizeof(char) * (len + 1));
@@ -211,6 +219,14 @@ void BKE_reportf(ReportList *reports, ReportType type, const char *_format, ...)
report->type = type;
report->typestr = BKE_report_type_str(type);
+ /* TODO (grzelins) hack: we want to pass flags in argument */
+ if (report->type == RPT_PROPERTY) {
+ report->flag = RPT_PYTHON;
+ }
+ if (report->type == RPT_OPERATOR) {
+ report->flag = RPT_PYTHON;
+ }
+
BLI_addtail(&reports->list, report);
}
BLI_dynstr_free(message);
diff --git a/source/blender/blenloader/intern/versioning_userdef.c b/source/blender/blenloader/intern/versioning_userdef.c
index 50e3b375166..bb2b96c85cd 100644
--- a/source/blender/blenloader/intern/versioning_userdef.c
+++ b/source/blender/blenloader/intern/versioning_userdef.c
@@ -216,6 +216,27 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
btheme->tui.transparent_checker_size = U_theme_default.tui.transparent_checker_size;
}
+ if (!USER_VERSION_ATLEAST(290, 6)) {
+ FROM_DEFAULT_V4_UCHAR(space_info.info_active);
+ FROM_DEFAULT_V4_UCHAR(space_info.info_selected);
+ FROM_DEFAULT_V4_UCHAR(space_info.syntaxb);
+ FROM_DEFAULT_V4_UCHAR(space_info.syntaxc);
+ FROM_DEFAULT_V4_UCHAR(space_info.syntaxd);
+ FROM_DEFAULT_V4_UCHAR(space_info.syntaxl);
+ FROM_DEFAULT_V4_UCHAR(space_info.syntaxn);
+ FROM_DEFAULT_V4_UCHAR(space_info.syntaxr);
+ FROM_DEFAULT_V4_UCHAR(space_info.syntaxs);
+ FROM_DEFAULT_V4_UCHAR(space_info.syntaxv);
+ FROM_DEFAULT_V4_UCHAR(space_console.syntaxb);
+ FROM_DEFAULT_V4_UCHAR(space_console.syntaxc);
+ FROM_DEFAULT_V4_UCHAR(space_console.syntaxd);
+ FROM_DEFAULT_V4_UCHAR(space_console.syntaxl);
+ FROM_DEFAULT_V4_UCHAR(space_console.syntaxn);
+ FROM_DEFAULT_V4_UCHAR(space_console.syntaxr);
+ FROM_DEFAULT_V4_UCHAR(space_console.syntaxs);
+ FROM_DEFAULT_V4_UCHAR(space_console.syntaxv);
+ }
+
/**
* Versioning code until next subversion bump goes here.
*
diff --git a/source/blender/editors/include/ED_text.h b/source/blender/editors/include/ED_text.h
index 4f7b76675f0..e6438f42f5c 100644
--- a/source/blender/editors/include/ED_text.h
+++ b/source/blender/editors/include/ED_text.h
@@ -35,6 +35,7 @@ struct UndoStep;
struct UndoType;
struct bContext;
+void text_format_draw_font_color(int font_id, char formatchar);
bool ED_text_region_location_from_cursor(struct SpaceText *st,
struct ARegion *region,
const int cursor_co[2],
diff --git a/source/blender/editors/space_console/console_draw.c b/source/blender/editors/space_console/console_draw.c
index 7e3dbcfefa4..87ea04cf55e 100644
--- a/source/blender/editors/space_console/console_draw.c
+++ b/source/blender/editors/space_console/console_draw.c
@@ -18,6 +18,7 @@
* \ingroup spconsole
*/
+#include <DNA_text_types.h>
#include <string.h>
#include "BLI_blenlib.h"
@@ -37,24 +38,39 @@
#include "console_intern.h"
#include "../space_info/textview.h"
-
-static enum eTextViewContext_LineFlag console_line_data(TextViewContext *tvc,
- uchar fg[4],
- uchar UNUSED(bg[4]),
- int *UNUSED(icon),
- uchar UNUSED(icon_fg[4]),
- uchar UNUSED(icon_bg[4]))
+#include "../space_text/text_format.h"
+
+#define TABNUMBER 4
+#define PROPMPT_LEN 4
+
+static enum eTextViewContext_LineFlag console_line_draw_data(TextViewContext *tvc,
+ TextLine *text_line,
+ uchar fg[4],
+ uchar UNUSED(bg[4]),
+ int *UNUSED(icon),
+ uchar UNUSED(icon_fg[4]),
+ uchar UNUSED(icon_bg[4]))
{
const ConsoleLine *cl_iter = tvc->iter;
+ SpaceConsole *sc = (SpaceConsole *)tvc->arg1;
int fg_id = TH_TEXT;
switch (cl_iter->type) {
- case CONSOLE_LINE_OUTPUT:
- fg_id = TH_CONSOLE_OUTPUT;
- break;
- case CONSOLE_LINE_INPUT:
- fg_id = TH_CONSOLE_INPUT;
- break;
+ case CONSOLE_LINE_OUTPUT: {
+ TextFormatType *py_formatter = ED_text_format_get_by_extension("py");
+ py_formatter->format_line(text_line, TABNUMBER, false);
+ return TVC_LINE_FG_COMPLEX;
+ }
+ case CONSOLE_LINE_INPUT: {
+ TextFormatType *py_formatter = ED_text_format_get_by_extension("py");
+ py_formatter->format_line(text_line, TABNUMBER, false);
+ /* workaround: formatter formats also prompt >>>, what is not desirable but current
+ * implementation is basic enough so it does not really care */
+ for (int i = 0; i < text_line->len && i < strlen(sc->prompt); ++i) {
+ text_line->format[i] = FMT_TYPE_DEFAULT;
+ }
+ return TVC_LINE_FG_COMPLEX;
+ }
case CONSOLE_LINE_INFO:
fg_id = TH_CONSOLE_INFO;
break;
@@ -64,7 +80,7 @@ static enum eTextViewContext_LineFlag console_line_data(TextViewContext *tvc,
}
UI_GetThemeColor4ubv(fg_id, fg);
- return TVC_LINE_FG;
+ return TVC_LINE_FG_SIMPLE;
}
void console_scrollback_prompt_begin(SpaceConsole *sc, ConsoleLine *cl_dummy)
@@ -106,8 +122,12 @@ static void console_textview_end(TextViewContext *tvc)
(void)sc;
}
-static int console_textview_step(TextViewContext *tvc)
+static int console_textview_step(TextViewContext *tvc, ListBase *text_lines)
{
+ const ConsoleLine *cl = tvc->iter;
+ if (cl->prev && cl->prev->type != cl->type) {
+ textview_clear_text_lines(text_lines);
+ }
return ((tvc->iter = (void *)((Link *)tvc->iter)->prev) != NULL);
}
@@ -116,7 +136,6 @@ static void console_textview_line_get(TextViewContext *tvc, const char **r_line,
const ConsoleLine *cl = tvc->iter;
*r_line = cl->line;
*r_len = cl->len;
- // printf("'%s' %d\n", *line, cl->len);
BLI_assert(cl->line[cl->len] == '\0' && (cl->len == 0 || cl->line[cl->len - 1] != '\0'));
}
@@ -213,7 +232,7 @@ static int console_textview_main__internal(SpaceConsole *sc,
tvc.step = console_textview_step;
tvc.line_get = console_textview_line_get;
- tvc.line_data = console_line_data;
+ tvc.line_draw_data = console_line_draw_data;
tvc.draw_cursor = console_textview_draw_cursor;
tvc.const_colors = console_textview_const_colors;
diff --git a/source/blender/editors/space_info/info_draw.c b/source/blender/editors/space_info/info_draw.c
index a6141e87a1f..63fbcbcca57 100644
--- a/source/blender/editors/space_info/info_draw.c
+++ b/source/blender/editors/space_info/info_draw.c
@@ -22,6 +22,8 @@
*/
#include <BLI_blenlib.h>
+#include <DNA_text_types.h>
+#include <MEM_guardedalloc.h>
#include <limits.h>
#include <string.h>
@@ -36,43 +38,56 @@
#include "UI_resources.h"
#include "UI_view2d.h"
+#include "../space_text/text_format.h"
#include "GPU_framebuffer.h"
#include "info_intern.h"
#include "textview.h"
-static enum eTextViewContext_LineFlag report_line_data(TextViewContext *tvc,
- uchar fg[4],
- uchar bg[4],
- int *r_icon,
- uchar r_icon_fg[4],
- uchar r_icon_bg[4])
+#define TABNUMBER 2
+
+static enum eTextViewContext_LineFlag report_line_draw_data(TextViewContext *tvc,
+ TextLine *text_line,
+ uchar fg[4],
+ uchar bg[4],
+ int *r_icon,
+ uchar r_icon_fg[4],
+
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list