[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