[Bf-blender-cvs] [9cb5f0a2282] master: Spreadsheet: add boilerplate code for new editor type

Jacques Lucke noreply at git.blender.org
Mon Mar 8 16:27:14 CET 2021


Commit: 9cb5f0a2282a7a84f7f8636b43a32bdc04b51cd5
Author: Jacques Lucke
Date:   Mon Mar 8 16:23:21 2021 +0100
Branches: master
https://developer.blender.org/rB9cb5f0a2282a7a84f7f8636b43a32bdc04b51cd5

Spreadsheet: add boilerplate code for new editor type

This adds the initial boilerplate code that is required to introduce
the new spreadsheet editor. The editor is still hidden from the ui.

It can be made visible by undoing the change in `rna_screen.c`.

This patch does not contain any business logic for the spreadsheet editor.

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

Ref T86279.

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

M	release/datafiles/userdef/userdef_default_theme.c
M	release/scripts/presets/interface_theme/Blender_Light.xml
M	release/scripts/startup/bl_ui/__init__.py
A	release/scripts/startup/bl_ui/space_spreadsheet.py
M	source/blender/blenkernel/BKE_context.h
M	source/blender/blenkernel/intern/context.c
M	source/blender/blenkernel/intern/screen.c
M	source/blender/blenloader/intern/versioning_userdef.c
M	source/blender/editors/CMakeLists.txt
M	source/blender/editors/include/ED_space_api.h
M	source/blender/editors/interface/interface_template_search_menu.c
M	source/blender/editors/interface/resources.c
M	source/blender/editors/space_api/CMakeLists.txt
M	source/blender/editors/space_api/spacetypes.c
A	source/blender/editors/space_spreadsheet/CMakeLists.txt
A	source/blender/editors/space_spreadsheet/space_spreadsheet.cc
A	source/blender/editors/space_spreadsheet/spreadsheet_intern.hh
A	source/blender/editors/space_spreadsheet/spreadsheet_ops.cc
M	source/blender/makesdna/DNA_space_types.h
M	source/blender/makesdna/DNA_userdef_types.h
M	source/blender/makesrna/RNA_access.h
M	source/blender/makesrna/intern/rna_screen.c
M	source/blender/makesrna/intern/rna_space.c
M	source/blender/makesrna/intern/rna_userdef.c
M	source/blender/windowmanager/WM_types.h

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

diff --git a/release/datafiles/userdef/userdef_default_theme.c b/release/datafiles/userdef/userdef_default_theme.c
index 0477b0c9f23..5b34515d080 100644
--- a/release/datafiles/userdef/userdef_default_theme.c
+++ b/release/datafiles/userdef/userdef_default_theme.c
@@ -1009,6 +1009,38 @@ const bTheme U_theme_default = {
     .facedot_size = 4,
     .gp_vertex_size = 3,
   },
+  .space_spreadsheet = {
+    .back = RGBA(0x28282800),
+    .title = RGBA(0xffffffff),
+    .text = RGBA(0xc3c3c3ff),
+    .text_hi = RGBA(0xffffffff),
+    .header = RGBA(0x454545ff),
+    .header_text = RGBA(0xeeeeeeff),
+    .header_text_hi = RGBA(0xffffffff),
+    .tab_active = RGBA(0x4b4b4bff),
+    .tab_inactive = RGBA(0x2b2b2bff),
+    .tab_back = RGBA(0x232323ff),
+    .tab_outline = RGBA(0x232323ff),
+    .button = RGBA(0x424242ff),
+    .button_title = RGBA(0xffffffff),
+    .button_text = RGBA(0xe5e5e5ff),
+    .button_text_hi = RGBA(0xffffffff),
+    .panelcolors = {
+      .header = RGBA(0x424242cc),
+      .back = RGBA(0x333333b3),
+      .sub_back = RGBA(0x0000003e),
+    },
+    .active = RGBA(0x3b5689ff),
+    .vertex_size = 3,
+    .outline_width = 1,
+    .facedot_size = 4,
+    .match = RGBA(0x337f334c),
+    .selected_highlight = RGBA(0x223a5bff),
+    .selected_object = RGBA(0xe96a00ff),
+    .active_object = RGBA(0xffaf29ff),
+    .edited_object = RGBA(0x00806266),
+    .row_alternate = RGBA(0xffffff07),
+  },
   .tarm = {
     {
       .solid = RGBA(0x9a0000ff),
diff --git a/release/scripts/presets/interface_theme/Blender_Light.xml b/release/scripts/presets/interface_theme/Blender_Light.xml
index 77908bb6bbf..9da075ad949 100644
--- a/release/scripts/presets/interface_theme/Blender_Light.xml
+++ b/release/scripts/presets/interface_theme/Blender_Light.xml
@@ -1316,6 +1316,42 @@
         </space>
       </ThemeStatusBar>
     </statusbar>
+    <spreadsheet>
+      <ThemeSpreadsheet
+        row_alternate="#ffffff0f"
+        >
+        <space>
+          <ThemeSpaceGeneric
+            back="#999999"
+            title="#000000"
+            text="#000000"
+            text_hi="#ffffff"
+            header="#adadadff"
+            header_text="#000000"
+            header_text_hi="#ffffff"
+            button="#999999e6"
+            button_title="#1a1a1a"
+            button_text="#000000"
+            button_text_hi="#ffffff"
+            navigation_bar="#00000000"
+            execution_buts="#999999e6"
+            tab_active="#6697e6"
+            tab_inactive="#cccccc"
+            tab_back="#999999ff"
+            tab_outline="#999999"
+            >
+            <panelcolors>
+              <ThemePanelColors
+                header="#42424200"
+                back="#00000028"
+                sub_back="#00000024"
+                >
+              </ThemePanelColors>
+            </panelcolors>
+          </ThemeSpaceGeneric>
+        </space>
+      </ThemeSpreadsheet>
+    </spreadsheet>
     <bone_color_sets>
       <ThemeBoneColorSet
         normal="#9a0000"
diff --git a/release/scripts/startup/bl_ui/__init__.py b/release/scripts/startup/bl_ui/__init__.py
index 7d3ecceca41..b3131e64df7 100644
--- a/release/scripts/startup/bl_ui/__init__.py
+++ b/release/scripts/startup/bl_ui/__init__.py
@@ -86,6 +86,7 @@ _modules = [
     "space_outliner",
     "space_properties",
     "space_sequencer",
+    "space_spreadsheet",
     "space_statusbar",
     "space_text",
     "space_time",
diff --git a/release/scripts/startup/bl_ui/space_spreadsheet.py b/release/scripts/startup/bl_ui/space_spreadsheet.py
new file mode 100644
index 00000000000..e433ead070c
--- /dev/null
+++ b/release/scripts/startup/bl_ui/space_spreadsheet.py
@@ -0,0 +1,39 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software Foundation,
+#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+import bpy
+
+
+class SPREADSHEET_HT_header(bpy.types.Header):
+    bl_space_type = 'SPREADSHEET'
+
+    def draw(self, context):
+        layout = self.layout
+        space = context.space_data
+
+        layout.template_header()
+
+
+classes = (
+    SPREADSHEET_HT_header,
+)
+
+if __name__ == "__main__":  # Only for live edit.
+    from bpy.utils import register_class
+    for cls in classes:
+        register_class(cls)
diff --git a/source/blender/blenkernel/BKE_context.h b/source/blender/blenkernel/BKE_context.h
index 94392dd78da..3d30188e517 100644
--- a/source/blender/blenkernel/BKE_context.h
+++ b/source/blender/blenkernel/BKE_context.h
@@ -197,6 +197,7 @@ struct SpaceInfo *CTX_wm_space_info(const bContext *C);
 struct SpaceUserPref *CTX_wm_space_userpref(const bContext *C);
 struct SpaceClip *CTX_wm_space_clip(const bContext *C);
 struct SpaceTopBar *CTX_wm_space_topbar(const bContext *C);
+struct SpaceSpreadsheet *CTX_wm_space_spreadsheet(const bContext *C);
 
 void CTX_wm_manager_set(bContext *C, struct wmWindowManager *wm);
 void CTX_wm_window_set(bContext *C, struct wmWindow *win);
diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c
index 6bc385ecd31..cbf7a4483c0 100644
--- a/source/blender/blenkernel/intern/context.c
+++ b/source/blender/blenkernel/intern/context.c
@@ -914,6 +914,15 @@ struct SpaceTopBar *CTX_wm_space_topbar(const bContext *C)
   return NULL;
 }
 
+struct SpaceSpreadsheet *CTX_wm_space_spreadsheet(const bContext *C)
+{
+  ScrArea *area = CTX_wm_area(C);
+  if (area && area->spacetype == SPACE_SPREADSHEET) {
+    return area->spacedata.first;
+  }
+  return NULL;
+}
+
 void CTX_wm_manager_set(bContext *C, wmWindowManager *wm)
 {
   C->wm.manager = wm;
diff --git a/source/blender/blenkernel/intern/screen.c b/source/blender/blenkernel/intern/screen.c
index 623f3a349d8..aa1a9403908 100644
--- a/source/blender/blenkernel/intern/screen.c
+++ b/source/blender/blenkernel/intern/screen.c
@@ -1342,6 +1342,9 @@ static void write_area_regions(BlendWriter *writer, ScrArea *area)
     else if (sl->spacetype == SPACE_INFO) {
       BLO_write_struct(writer, SpaceInfo, sl);
     }
+    else if (sl->spacetype == SPACE_SPREADSHEET) {
+      BLO_write_struct(writer, SpaceSpreadsheet, sl);
+    }
   }
 }
 
diff --git a/source/blender/blenloader/intern/versioning_userdef.c b/source/blender/blenloader/intern/versioning_userdef.c
index 3d39181cd32..ae22c5151cc 100644
--- a/source/blender/blenloader/intern/versioning_userdef.c
+++ b/source/blender/blenloader/intern/versioning_userdef.c
@@ -282,6 +282,8 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
     FROM_DEFAULT_V4_UCHAR(space_info.info_property);
     FROM_DEFAULT_V4_UCHAR(space_info.info_error);
     FROM_DEFAULT_V4_UCHAR(space_info.info_operator);
+
+    btheme->space_spreadsheet = btheme->space_outliner;
   }
 
 #undef FROM_DEFAULT_V4_UCHAR
diff --git a/source/blender/editors/CMakeLists.txt b/source/blender/editors/CMakeLists.txt
index a2ae350ce4b..092198cea86 100644
--- a/source/blender/editors/CMakeLists.txt
+++ b/source/blender/editors/CMakeLists.txt
@@ -53,6 +53,7 @@ if(WITH_BLENDER)
   add_subdirectory(space_outliner)
   add_subdirectory(space_script)
   add_subdirectory(space_sequencer)
+  add_subdirectory(space_spreadsheet)
   add_subdirectory(space_statusbar)
   add_subdirectory(space_text)
   add_subdirectory(space_topbar)
diff --git a/source/blender/editors/include/ED_space_api.h b/source/blender/editors/include/ED_space_api.h
index fc474ea464d..1a3aa7e5496 100644
--- a/source/blender/editors/include/ED_space_api.h
+++ b/source/blender/editors/include/ED_space_api.h
@@ -55,6 +55,7 @@ void ED_spacetype_userpref(void);
 void ED_spacetype_clip(void);
 void ED_spacetype_statusbar(void);
 void ED_spacetype_topbar(void);
+void ED_spacetype_spreadsheet(void);
 
 /* calls for instancing and freeing spacetype static data
  * called in WM_init_exit */
diff --git a/source/blender/editors/interface/interface_template_search_menu.c b/source/blender/editors/interface/interface_template_search_menu.c
index e1f8f63dcbf..74668b2f3a3 100644
--- a/source/blender/editors/interface/interface_template_search_menu.c
+++ b/source/blender/editors/interface/interface_template_search_menu.c
@@ -642,6 +642,7 @@ static struct MenuSearch_Data *menu_items_from_ui_create(
           SPACE_MENU_NOP(SPACE_SCRIPT);
           SPACE_MENU_NOP(SPACE_STATUSBAR);
           SPACE_MENU_NOP(SPACE_TOPBAR);
+          SPACE_MENU_NOP(SPACE_SPREADSHEET);
         }
       }
       for (int i = 0; i < idname_array_len; i++) {
diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c
index 80e54f4f92f..afac254f542 100644
--- a/source/blender/editors/interface/resources.c
+++ b/source/blender/editors/interface/resources.c
@@ -160,6 +160,9 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
         case SPACE_STATUSBAR:
           ts = &btheme->space_statusbar;
           break;
+        case SPACE_SPREADSHEET:
+          ts = &btheme->space_spreadsheet;
+          break;
         default:
           ts = &btheme->space_view3d;
           break;
diff --git a/source/blender/editors/space_api/CMakeLists.txt b/source/blender/editors/space_api/CMakeLists.txt
index 573afb76f0e..85c07223f2d 100644
--- a/source/blender/editors/space_api/CMakeLists.txt
+++ b/source/blender/editors/space_api/CMakeLists.txt
@@ -50,6 +50,7 @@ set(LIB
   bf_editor_space_outliner
   bf_editor_space_script
   bf_editor_space_sequencer
+  bf_editor_space_spreadsheet
   bf_editor_space_statusbar
   bf_editor_space_text
   bf_editor_space_topbar
diff --git a/source/blender/editor

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list