[Bf-blender-cvs] [eb74853] master: Use tabs for image editor.

Antony Riakiotakis noreply at git.blender.org
Wed Feb 19 16:22:29 CET 2014


Commit: eb7485389b8ae29c0f56c942e800722fe25ebebe
Author: Antony Riakiotakis
Date:   Thu Feb 13 19:49:26 2014 +0200
https://developer.blender.org/rBeb7485389b8ae29c0f56c942e800722fe25ebebe

Use tabs for image editor.

For initial discussion see T38371

This commit organized panels for image editor to new tab categories dependent
on the image editor mode:

View Mode:
Tools - contains UV tools (currently only transform and UV Sculpting)
Scopes - contains scopes
Grease Pencil - contains Grease Pencil operators

Paint Mode:
Tools - contains brush options
Scopes - as above
Grease Pencil - as above

Mask Mode
Mask - contains mask tools
Scopes - as above
Grease Pencil - as above

Grease Pencil panel/tab now includes operators, not view options which have been
moved to the UI region on the right.
To make this work better, image editor toolbar now is of type TOOLS instead
of PREVIEW as was the case previously. A nice version patch makes sure all
works predictably, but opening newer files with older blender executables
could backfire.

This commit does not address which UV Tools will be included in the
Tools tab for the view mode, but does include some basic tools (transform)
and provides a class to inherit from to avoid conflicts with UV Sculpting.

Reviewers: brecht, dingto, sergey

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

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

M	release/scripts/startup/bl_ui/__init__.py
A	release/scripts/startup/bl_ui/properties_grease_pencil_common.py
M	release/scripts/startup/bl_ui/space_clip.py
M	release/scripts/startup/bl_ui/space_image.py
M	source/blender/blenkernel/BKE_blender.h
M	source/blender/blenloader/intern/versioning_260.c
M	source/blender/editors/space_image/image_buttons.c
M	source/blender/editors/space_image/image_intern.h
M	source/blender/editors/space_image/space_image.c

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

diff --git a/release/scripts/startup/bl_ui/__init__.py b/release/scripts/startup/bl_ui/__init__.py
index b1b1d0a..793cbf8 100644
--- a/release/scripts/startup/bl_ui/__init__.py
+++ b/release/scripts/startup/bl_ui/__init__.py
@@ -43,6 +43,7 @@ _modules = [
     "properties_material",
     "properties_object",
     "properties_paint_common",
+    "properties_grease_pencil_common",
     "properties_particle",
     "properties_physics_cloth",
     "properties_physics_common",
diff --git a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
new file mode 100644
index 0000000..08796ee
--- /dev/null
+++ b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
@@ -0,0 +1,43 @@
+# ##### 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 #####
+
+# <pep8 compliant>
+
+class GreasePencilPanel():
+    # subclass must set
+    # bl_space_type = 'IMAGE_EDITOR'
+    # bl_region_type = 'TOOLS'
+    bl_label = "Grease Pencil"
+
+    @staticmethod
+    def draw(self, context):
+        layout = self.layout
+
+        col = layout.column(align=True)
+
+        row = col.row(align=True)
+        row.operator("gpencil.draw", text="Draw").mode = 'DRAW'
+        row.operator("gpencil.draw", text="Line").mode = 'DRAW_STRAIGHT'
+
+        row = col.row(align=True)
+        row.operator("gpencil.draw", text="Poly").mode = 'DRAW_POLY'
+        row.operator("gpencil.draw", text="Erase").mode = 'ERASER'
+
+        row = col.row(align=True)
+        row.prop(context.tool_settings, "use_grease_pencil_sessions")
+
diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py
index 00c2f7a..9114a31 100644
--- a/release/scripts/startup/bl_ui/space_clip.py
+++ b/release/scripts/startup/bl_ui/space_clip.py
@@ -21,7 +21,7 @@
 import bpy
 from bpy.types import Panel, Header, Menu, UIList
 from bpy.app.translations import pgettext_iface as iface_
-
+from bl_ui.properties_grease_pencil_common import GreasePencilPanel
 
 class CLIP_UL_tracking_objects(UIList):
     def draw_item(self, context, layout, data, item, icon,
@@ -1043,28 +1043,11 @@ class CLIP_PT_tools_mask(MASK_PT_tools, Panel):
 # --- end mask ---
 
 
-class CLIP_PT_tools_grease_pencil(Panel):
+class CLIP_PT_tools_grease_pencil(GreasePencilPanel, Panel):
     bl_space_type = 'CLIP_EDITOR'
     bl_region_type = 'TOOLS'
-    bl_label = "Grease Pencil"
     bl_category = "Grease Pencil"
 
-    def draw(self, context):
-        layout = self.layout
-
-        col = layout.column(align=True)
-
-        row = col.row(align=True)
-        row.operator("gpencil.draw", text="Draw").mode = 'DRAW'
-        row.operator("gpencil.draw", text="Line").mode = 'DRAW_STRAIGHT'
-
-        row = col.row(align=True)
-        row.operator("gpencil.draw", text="Poly").mode = 'DRAW_POLY'
-        row.operator("gpencil.draw", text="Erase").mode = 'ERASER'
-
-        row = col.row(align=True)
-        row.prop(context.tool_settings, "use_grease_pencil_sessions")
-
 
 class CLIP_PT_footage(CLIP_PT_clip_view_panel, Panel):
     bl_space_type = 'CLIP_EDITOR'
diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py
index fdc5be4..10d292b 100644
--- a/release/scripts/startup/bl_ui/space_image.py
+++ b/release/scripts/startup/bl_ui/space_image.py
@@ -24,17 +24,20 @@ from bl_ui.properties_paint_common import (
         brush_texture_settings,
         brush_mask_texture_settings,
         )
+from bl_ui.properties_grease_pencil_common import GreasePencilPanel
 from bpy.app.translations import pgettext_iface as iface_
 
 
 class ImagePaintPanel(UnifiedPaintPanel):
     bl_space_type = 'IMAGE_EDITOR'
-    bl_region_type = 'UI'
+    bl_region_type = 'TOOLS'
+    bl_category = "Tools"
 
 
 class BrushButtonsPanel:
     bl_space_type = 'IMAGE_EDITOR'
-    bl_region_type = 'UI'
+    bl_region_type = 'TOOLS'
+    bl_category = "Tools"
 
     @classmethod
     def poll(cls, context):
@@ -42,6 +45,15 @@ class BrushButtonsPanel:
         toolsettings = context.tool_settings.image_paint
         return sima.show_paint and toolsettings.brush
 
+class UVToolsPanel:
+    bl_space_type = 'IMAGE_EDITOR'
+    bl_region_type = 'TOOLS'
+    bl_category = "Tools"
+
+    @classmethod
+    def poll(cls, context):
+        sima = context.space_data
+        return sima.show_uvedit and not context.tool_settings.use_uv_sculpt
 
 class IMAGE_MT_view(Menu):
     bl_label = "View"
@@ -466,6 +478,42 @@ class MASK_MT_editor_menus(Menu):
             layout.menu("MASK_MT_mask")
 
 
+# -----------------------------------------------------------------------------
+# Mask (similar code in space_clip.py, keep in sync)
+# note! - panel placement does _not_ fit well with image panels... need to fix
+
+from bl_ui.properties_mask_common import (MASK_PT_mask,
+                                          MASK_PT_layers,
+                                          MASK_PT_spline,
+                                          MASK_PT_point,
+                                          MASK_PT_display,
+                                          MASK_PT_tools)
+
+
+class IMAGE_PT_mask(MASK_PT_mask, Panel):
+    bl_space_type = 'IMAGE_EDITOR'
+    bl_region_type = 'UI'
+
+class IMAGE_PT_mask_layers(MASK_PT_layers, Panel):
+    bl_space_type = 'IMAGE_EDITOR'
+    bl_region_type = 'UI'
+
+
+class IMAGE_PT_mask_display(MASK_PT_display, Panel):
+    bl_space_type = 'IMAGE_EDITOR'
+    bl_region_type = 'UI'
+
+
+class IMAGE_PT_active_mask_spline(MASK_PT_spline, Panel):
+    bl_space_type = 'IMAGE_EDITOR'
+    bl_region_type = 'UI'
+
+
+class IMAGE_PT_active_mask_point(MASK_PT_point, Panel):
+    bl_space_type = 'IMAGE_EDITOR'
+    bl_region_type = 'UI'
+
+
 class IMAGE_PT_image_properties(Panel):
     bl_space_type = 'IMAGE_EDITOR'
     bl_region_type = 'UI'
@@ -494,7 +542,7 @@ class IMAGE_PT_game_properties(Panel):
     def poll(cls, context):
         sima = context.space_data
         # display even when not in game mode because these settings effect the 3d view
-        return (sima and sima.image)  # and (rd.engine == 'BLENDER_GAME')
+        return (sima and sima.image and not sima.show_maskedit)  # and (rd.engine == 'BLENDER_GAME')
 
     def draw(self, context):
         layout = self.layout
@@ -526,112 +574,6 @@ class IMAGE_PT_game_properties(Panel):
         col.prop(ima, "mapping", expand=True)
 
 
-class IMAGE_PT_view_histogram(Panel):
-    bl_space_type = 'IMAGE_EDITOR'
-    bl_region_type = 'PREVIEW'
-    bl_label = "Histogram"
-
-    @classmethod
-    def poll(cls, context):
-        sima = context.space_data
-        return (sima and sima.image)
-
-    def draw(self, context):
-        layout = self.layout
-
-        sima = context.space_data
-        hist = sima.scopes.histogram
-
-        layout.template_histogram(sima.scopes, "histogram")
-        row = layout.row(align=True)
-        row.prop(hist, "mode", expand=True)
-        row.prop(hist, "show_line", text="")
-
-
-class IMAGE_PT_view_waveform(Panel):
-    bl_space_type = 'IMAGE_EDITOR'
-    bl_region_type = 'PREVIEW'
-    bl_label = "Waveform"
-
-    @classmethod
-    def poll(cls, context):
-        sima = context.space_data
-        return (sima and sima.image)
-
-    def draw(self, context):
-        layout = self.layout
-
-        sima = context.space_data
-
-        layout.template_waveform(sima, "scopes")
-        row = layout.split(percentage=0.75)
-        row.prop(sima.scopes, "waveform_alpha")
-        row.prop(sima.scopes, "waveform_mode", icon_only=True)
-
-
-class IMAGE_PT_view_vectorscope(Panel):
-    bl_space_type = 'IMAGE_EDITOR'
-    bl_region_type = 'PREVIEW'
-    bl_label = "Vectorscope"
-
-    @classmethod
-    def poll(cls, context):
-        sima = context.space_data
-        return (sima and sima.image)
-
-    def draw(self, context):
-        layout = self.layout
-
-        sima = context.space_data
-        layout.template_vectorscope(sima, "scopes")
-        layout.prop(sima.scopes, "vectorscope_alpha")
-
-
-class IMAGE_PT_sample_line(Panel):
-    bl_space_type = 'IMAGE_EDITOR'
-    bl_region_type = 'PREVIEW'
-    bl_label = "Sample Line"
-
-    @classmethod
-    def poll(cls, context):
-        sima = context.space_data
-        return (sima and sima.image)
-
-    def draw(self, context):
-        layout = self.layout
-
-        sima = context.space_data
-        hist = sima.sample_histogram
-
-        layout.operator("image.sample_line")
-        layout.template_histogram(sima, "sample_histogram")
-        row = layout.row(align=True)
-        row.prop(hist, "mode", expand=True)
-        row.prop(hist, "show_line", text="")
-
-
-class IMAGE_PT_scope_sample(Panel):
-    bl_space_type = 'IMAGE_EDITOR'
-    bl_region_type = 'PREVIEW'
-    bl_label = "Scope Samples"
-
-    @classmethod
-    def poll(cls, context):
-        sima = context.space_data
-        return sima
-
-    def draw(self, context):
-        layout = self.layout
-
-        sima = context.space_data
-
-        row = layout.row()
-        row.prop(sima.scopes, "use_full_resolution")
-        sub = row.row()
-        sub.active = not sima.scopes.use_full_resolution
-        sub.prop(sima.scopes, "accuracy")
-
-
 class IMAGE_PT_view_properties(Panel):
     bl_space_type = 'IMAGE_EDITOR'
     bl_region_type = 'UI'
@@ -692,11 +634,28 @@ class IMAGE_PT_view_properties(Panel):
             sub.row().prop(uvedit, "draw_stretch_type", expand=True)
 
 


@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list