[Bf-blender-cvs] [6a82b2f4c64] temp-node-tree-pages-prototype: start with page 1 and show current page

Jacques Lucke noreply at git.blender.org
Thu Mar 18 16:40:56 CET 2021


Commit: 6a82b2f4c64e0c841307a70a2e063ad03c6505bb
Author: Jacques Lucke
Date:   Thu Mar 18 15:37:12 2021 +0100
Branches: temp-node-tree-pages-prototype
https://developer.blender.org/rB6a82b2f4c64e0c841307a70a2e063ad03c6505bb

start with page 1 and show current page

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

M	release/scripts/startup/bl_operators/node.py
M	release/scripts/startup/bl_ui/space_node.py

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

diff --git a/release/scripts/startup/bl_operators/node.py b/release/scripts/startup/bl_operators/node.py
index 86bf48ec135..63d8a475418 100644
--- a/release/scripts/startup/bl_operators/node.py
+++ b/release/scripts/startup/bl_operators/node.py
@@ -344,19 +344,32 @@ class NODE_OT_follow_portal(Operator):
         bpy.ops.node.view_selected()
         return {'FINISHED'}
 
-PAGE_SIZE = 10000
+PAGE_SIZE = 20000
 
 def get_page_center(page):
-    return Vector((page * PAGE_SIZE, 0))
+    return Vector(((page - 1) * PAGE_SIZE, 0))
 
-def node_is_on_page(node, page):
+def position_is_on_page(pos, page):
     page_center = get_page_center(page)
-    return (abs(page_center.x - node.location.x) < PAGE_SIZE / 2
-        and abs(page_center.y - node.location.y) < PAGE_SIZE / 2)
+    return (abs(page_center.x - pos[0]) < PAGE_SIZE / 2
+        and abs(page_center.y - pos[1]) < PAGE_SIZE / 2)
+
+def node_is_on_page(node, page):
+    return position_is_on_page(node.location, page)
 
 def get_nodes_on_page(ntree, page):
     return [n for n in ntree.nodes if node_is_on_page(n, page)]
 
+def get_current_page(context):
+    for region in context.area.regions:
+        if region.type != 'WINDOW':
+            continue
+        pos = region.view2d.region_to_view(0, 0)
+        for page in range(10):
+            if position_is_on_page(pos, page):
+                return page
+    return None
+
 class NODE_OT_goto_page(Operator):
     '''Goto page'''
     bl_idname = "node.goto_page"
diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py
index b6a85dd8fd8..d8f85eef885 100644
--- a/release/scripts/startup/bl_ui/space_node.py
+++ b/release/scripts/startup/bl_ui/space_node.py
@@ -168,9 +168,14 @@ class NODE_HT_header(Header):
                 else:
                     row.template_ID(snode, "node_tree", new="node.new_geometry_nodes_modifier")
 
+            import bl_operators.node as node_module
+            current_page = node_module.get_current_page(context)
+
             row = layout.row(align=True)
-            for page in range(5):
-                props = row.operator("node.goto_page", text=str(page))
+            for page in range(1, 6):
+                subrow = row.row(align=True)
+                subrow.enabled = page != current_page
+                props = subrow.operator("node.goto_page", text=str(page))
                 props.page = page
 
             row = layout.row(align=True)



More information about the Bf-blender-cvs mailing list