[Bf-blender-cvs] [145f8517316] master: UI: click on status bar report message now opens window with Info editor

Brecht Van Lommel noreply at git.blender.org
Fri Aug 16 16:49:16 CEST 2019


Commit: 145f851731655910f653763f4122288bc12c5629
Author: Brecht Van Lommel
Date:   Fri Aug 16 16:24:16 2019 +0200
Branches: master
https://developer.blender.org/rB145f851731655910f653763f4122288bc12c5629

UI: click on status bar report message now opens window with Info editor

Patch by Valentin (Poulpator)

Differential Revision: https://developer.blender.org/D5468

===================================================================

M	source/blender/editors/interface/interface_templates.c
M	source/blender/editors/screen/screen_ops.c
M	source/blender/windowmanager/WM_api.h
M	source/blender/windowmanager/intern/wm_window.c

===================================================================

diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index 37eb1770f68..0cd048323f1 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -6392,22 +6392,17 @@ void uiTemplateReportsBanner(uiLayout *layout, bContext *C)
         block, UI_BTYPE_LABEL, 0, icon, 2, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, "");
   }
 
-  UI_block_emboss_set(block, UI_EMBOSS);
-
-  uiDefBut(block,
-           UI_BTYPE_LABEL,
-           0,
+  but = uiDefButO(block,
+           UI_BTYPE_BUT,
+           "SCREEN_OT_info_log_show",
+           WM_OP_INVOKE_REGION_WIN,
            report->message,
            UI_UNIT_X + 5,
            0,
            UI_UNIT_X + width,
            UI_UNIT_Y,
-           NULL,
-           0.0f,
-           0.0f,
-           0,
-           0,
-           "");
+           "Show in Info Log");
+    rgba_float_to_uchar(but->col, rti->col);
 }
 
 void uiTemplateInputStatus(uiLayout *layout, struct bContext *C)
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 8377fd0e128..272c5623dc6 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -4774,6 +4774,45 @@ static void SCREEN_OT_drivers_editor_show(struct wmOperatorType *ot)
 
 /** \} */
 
+/* -------------------------------------------------------------------- */
+/** \name Show Info Log Operator
+ * \{ */
+
+static int info_log_show_invoke(bContext *C, wmOperator *op, const wmEvent *event)
+{
+  PointerRNA ptr = {{NULL}};
+  PropertyRNA *prop = NULL;
+
+  int sizex = 900 * UI_DPI_FAC;
+  int sizey = 580 * UI_DPI_FAC;
+  int shift_y = 480;
+
+  /* changes context! */
+  if (WM_window_open_temp(C, event->x, event->y+shift_y, sizex, sizey, WM_WINDOW_INFO) != NULL) {
+    ScrArea *area = CTX_wm_area(C);
+    ARegion *region = BKE_area_find_region_type(area, RGN_TYPE_HEADER);
+    return OPERATOR_FINISHED;
+  }
+  else {
+    BKE_report(op->reports, RPT_ERROR, "Failed to open window!");
+    return OPERATOR_CANCELLED;
+  }
+}
+
+static void SCREEN_OT_info_log_show(struct wmOperatorType *ot)
+{
+  /* identifiers */
+  ot->name = "Show Info Log";
+  ot->description = "Show info log in a separate window";
+  ot->idname = "SCREEN_OT_info_log_show";
+
+  /* api callbacks */
+  ot->invoke = info_log_show_invoke;
+  ot->poll = ED_operator_screenactive;
+}
+
+/** \} */
+
 /* -------------------------------------------------------------------- */
 /** \name New Screen Operator
  * \{ */
@@ -5241,6 +5280,7 @@ void ED_operatortypes_screen(void)
   WM_operatortype_append(SCREEN_OT_screenshot);
   WM_operatortype_append(SCREEN_OT_userpref_show);
   WM_operatortype_append(SCREEN_OT_drivers_editor_show);
+  WM_operatortype_append(SCREEN_OT_info_log_show);
   WM_operatortype_append(SCREEN_OT_region_blend);
   WM_operatortype_append(SCREEN_OT_space_type_set_or_cycle);
   WM_operatortype_append(SCREEN_OT_space_context_cycle);
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index cf87afa2a34..0f0d74c259b 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -162,6 +162,7 @@ enum {
   WM_WINDOW_RENDER = 1,
   WM_WINDOW_USERPREFS,
   WM_WINDOW_DRIVERS,
+  WM_WINDOW_INFO,
   // WM_WINDOW_FILESEL // UNUSED
 };
 
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index d17b8817691..dc9a7b29bb2 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -893,6 +893,9 @@ wmWindow *WM_window_open_temp(bContext *C, int x, int y, int sizex, int sizey, i
   else if (type == WM_WINDOW_DRIVERS) {
     ED_area_newspace(C, sa, SPACE_GRAPH, false);
   }
+  else if (type == WM_WINDOW_INFO) {
+    ED_area_newspace(C,sa, SPACE_INFO,false);
+  }
   else {
     ED_area_newspace(C, sa, SPACE_USERPREF, false);
   }
@@ -917,6 +920,9 @@ wmWindow *WM_window_open_temp(bContext *C, int x, int y, int sizex, int sizey, i
   else if (sa->spacetype == SPACE_GRAPH) {
     title = IFACE_("Blender Drivers Editor");
   }
+  else if (sa->spacetype == SPACE_INFO){
+    title = IFACE_("Blender Info Log");
+  }
   else {
     title = "Blender";
   }



More information about the Bf-blender-cvs mailing list