[Bf-extensions-cvs] [4279754] master: view 3d pie menus: fixes for T48709

meta-androcto noreply at git.blender.org
Thu Jul 28 12:56:53 CEST 2016


Commit: 4279754095490a301a4621b939367532b4e4f7c3
Author: meta-androcto
Date:   Thu Jul 28 20:56:27 2016 +1000
Branches: master
https://developer.blender.org/rBAC4279754095490a301a4621b939367532b4e4f7c3

view 3d pie menus: fixes for T48709

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

M	space_view3d_pie_menus/__init__.py
M	space_view3d_pie_menus/pie_delete_menu/__init__.py
M	space_view3d_pie_menus/pie_editor_switch_menu/__init__.py
M	space_view3d_pie_menus/pie_save_open_menu/__init__.py
M	space_view3d_pie_menus/pie_select_menu/__init__.py
M	space_view3d_pie_menus/pie_views_numpad_menu/__init__.py

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

diff --git a/space_view3d_pie_menus/__init__.py b/space_view3d_pie_menus/__init__.py
index e47ad24..8184232 100644
--- a/space_view3d_pie_menus/__init__.py
+++ b/space_view3d_pie_menus/__init__.py
@@ -125,18 +125,13 @@ def unregister_submodule(mod):
 class UIToolsPreferences(AddonPreferences):
     bl_idname = __name__
 
-    align_box_draw = BoolProperty(
-        name='Box Draw',
-        description='If applied patch: patch/ui_layout_box.patch',
-        default=False)
-
     def draw(self, context):
         layout = self.layout
 
         for mod in sub_modules:
             mod_name = mod.__name__.split('.')[-1]
             info = mod.bl_info
-            column = layout.column(align=self.align_box_draw)
+            column = layout.column()
             box = column.box()
 
             # first stage
@@ -195,12 +190,9 @@ class UIToolsPreferences(AddonPreferences):
                 # Details and settings
                 if getattr(self, 'use_' + mod_name):
                     prefs = get_addon_preferences(mod_name)
-                    if prefs and hasattr(prefs, 'draw'):
-                        if self.align_box_draw:
-                            box = column.box()
-                        else:
-                            box = box.column()
 
+                    if prefs and hasattr(prefs, 'draw'):
+                        box = box.column()
                         prefs.layout = box
                         try:
                             prefs.draw(context)
@@ -210,9 +202,7 @@ class UIToolsPreferences(AddonPreferences):
                         del prefs.layout
 
         row = layout.row()
-        sub = row.row()
-        sub.alignment = 'RIGHT'
-        sub.prop(self, 'align_box_draw')
+        row.label("End of Pie Menu Activations")
 
 
 for mod in sub_modules:
diff --git a/space_view3d_pie_menus/pie_delete_menu/__init__.py b/space_view3d_pie_menus/pie_delete_menu/__init__.py
index 3053dfd..f804c87 100644
--- a/space_view3d_pie_menus/pie_delete_menu/__init__.py
+++ b/space_view3d_pie_menus/pie_delete_menu/__init__.py
@@ -71,21 +71,8 @@ class PieDelete(Menu):
         box.operator("mesh.delete", text="Only Faces", icon='UV_FACESEL').type = 'ONLY_FACE'
         box.operator("mesh.remove_doubles", text="Remove Doubles", icon='ORTHO')
 
-# Limited Dissolve
-
-
-class DeleteLimitedDissolve(Operator):
-    bl_idname = "delete.limiteddissolve"
-    bl_label = "Delete Limited Dissolve"
-    bl_options = {'REGISTER', 'UNDO'}
-
-    def execute(self, context):
-        bpy.ops.mesh.dissolve_limited
-        return {'FINISHED'}
-
 classes = (
     PieDelete,
-    DeleteLimitedDissolve,
     )
 
 addon_keymaps = []
diff --git a/space_view3d_pie_menus/pie_editor_switch_menu/__init__.py b/space_view3d_pie_menus/pie_editor_switch_menu/__init__.py
index 303c27e..dcc1e08 100644
--- a/space_view3d_pie_menus/pie_editor_switch_menu/__init__.py
+++ b/space_view3d_pie_menus/pie_editor_switch_menu/__init__.py
@@ -40,7 +40,7 @@ from bpy.props import (
         )
 
 
-class AreaPieMenu(Menu):
+class AreaPieMenu(bpy.types.Menu):
     bl_idname = "INFO_MT_window_pie"
     bl_label = "Pie Menu"
     bl_description = "Window Pie Menus"
@@ -49,14 +49,14 @@ class AreaPieMenu(Menu):
         self.layout.operator(AreaTypePieOperator.bl_idname, icon="PLUGIN")
 
 
-class AreaTypePieOperator(Operator):
+class AreaTypePieOperator(bpy.types.Operator):
     bl_idname = "wm.area_type_pie_operator"
     bl_label = "Editor Type"
     bl_description = "This is pie menu of editor type change"
     bl_options = {'REGISTER', 'UNDO'}
 
     def execute(self, context):
-        bpy.ops.wm.call_menu_pie(name=AreaTypePie.bl_idname)
+        bpy.ops.wm.call_menu_pie(name=AreaTypeEditor.bl_idname)
         return {'FINISHED'}
 
 
diff --git a/space_view3d_pie_menus/pie_save_open_menu/__init__.py b/space_view3d_pie_menus/pie_save_open_menu/__init__.py
index 8863073..718e3e3 100644
--- a/space_view3d_pie_menus/pie_save_open_menu/__init__.py
+++ b/space_view3d_pie_menus/pie_save_open_menu/__init__.py
@@ -21,8 +21,6 @@
 bl_info = {
     "name": "Hotkey: 'Ctrl S'",
     "description": "Save/Open & File Menus",
-    #    "author": "pitiwazou, meta-androcto",
-    #    "version": (0, 1, 0),
     "blender": (2, 77, 0),
     "location": "All Editors",
     "warning": "",
@@ -125,36 +123,49 @@ class ExternalData(Menu):
         layout.operator("file.report_missing_files", text="Report Missing Files")
         layout.operator("file.find_missing_files", text="Find Missing Files")
 
-# Save Incremental
 
+# Save Incremental
 
 class FileIncrementalSave(Operator):
     bl_idname = "file.save_incremental"
     bl_label = "Save Incremental"
-    bl_description = "Save Files with _001, _002 extension"
+    bl_description = "Save First!then Incremental, .blend will get _001 extension"
     bl_options = {"REGISTER"}
 
+    @classmethod
+    def poll(cls, context):
+        return (bpy.data.filepath is not "")
+
     def execute(self, context):
         f_path = bpy.data.filepath
-        if f_path.find("_") != -1:
-            # fix for cases when there is an underscore in the name like my_file.blend
+        b_name = bpy.path.basename(f_path)
+
+        if b_name and b_name.find("_") != -1:
+            # except in cases when there is an underscore in the name like my_file.blend
             try:
-                str_nb = f_path.rpartition("_")[-1].rpartition(".blend")[0]
+                str_nb = b_name.rpartition("_")[-1].rpartition(".blend")[0]
                 int_nb = int(str(str_nb))
                 new_nb = str_nb.replace(str(int_nb), str(int_nb + 1))
                 output = f_path.replace(str_nb, new_nb)
 
                 i = 1
                 while os.path.isfile(output):
-                    str_nb = f_path.rpartition("_")[-1].rpartition(".blend")[0]
+                    str_nb = b_name.rpartition("_")[-1].rpartition(".blend")[0]
                     i += 1
                     new_nb = str_nb.replace(str(int_nb), str(int_nb + i))
                     output = f_path.replace(str_nb, new_nb)
             except ValueError:
                 output = f_path.rpartition(".blend")[0] + "_001" + ".blend"
         else:
+            # no underscore in the name or saving a nameless (.blend) file
             output = f_path.rpartition(".blend")[0] + "_001" + ".blend"
-        bpy.ops.wm.save_as_mainfile(filepath=output)
+
+        # fix for saving in a directory without privileges
+        try:
+            bpy.ops.wm.save_as_mainfile(filepath=output)
+        except:
+            self.report({'WARNING'}, "File could not be saved. Check the System Console for errors")
+            return {'CANCELLED'}
 
         self.report(
                 {'INFO'}, "File: {0} - Created at: {1}".format(
diff --git a/space_view3d_pie_menus/pie_select_menu/__init__.py b/space_view3d_pie_menus/pie_select_menu/__init__.py
index 90d8255..16ed8a1 100644
--- a/space_view3d_pie_menus/pie_select_menu/__init__.py
+++ b/space_view3d_pie_menus/pie_select_menu/__init__.py
@@ -91,39 +91,58 @@ class PieSelectionsEM(Menu):
         layout = self.layout
         pie = layout.menu_pie()
         # 4 - LEFT
-        pie.operator("view3d.select_circle", text="Circle Select", icon='BORDER_LASSO')
+        pie.operator("mesh.loop_multi_select", text="Select Ring", icon='ZOOM_PREVIOUS').ring = True
         # 6 - RIGHT
-        pie.operator("view3d.select_border", text="Border Select", icon='BORDER_RECT')
+        pie.operator("mesh.loop_multi_select", text="Select Loop", icon='ZOOM_PREVIOUS').ring = False
         # 2 - BOTTOM
         pie.operator("mesh.select_all", text="Invert Selection", icon='ZOOM_PREVIOUS').action = 'INVERT'
         # 8 - TOP
         pie.operator("mesh.select_all", text="De/Select All", icon='RENDER_REGION').action = 'TOGGLE'
         # 7 - TOP - LEFT
+        pie.operator("view3d.select_circle", text="Circle Select", icon='BORDER_LASSO')
+        # 9 - TOP - RIGHT
+        pie.operator("view3d.select_border", text="Border Select", icon='BORDER_RECT')
+        # 1 - BOTTOM - LEFT
         box = pie.split().column()
         row = box.row(align=True)
         box.operator("mesh.select_nth", text="Checker Select", icon='PARTICLE_POINT')
         box.operator("mesh.loop_to_region", text="Select Loop Inner Region", icon='FACESEL')
         box.operator("mesh.select_similar", text="Select Similar", icon='GHOST')
-        # 9 - TOP - RIGHT
-        pie.operator("object.selectallbyselection", text="Complete Select", icon='RENDER_REGION')
-        # 1 - BOTTOM - LEFT
-        pie.operator("mesh.loop_multi_select", text="Select Ring", icon='ZOOM_PREVIOUS').ring = True
         # 3 - BOTTOM - RIGHT
-        pie.operator("mesh.loop_multi_select", text="Select Loop", icon='ZOOM_PREVIOUS').ring = False
+        pie.menu("object.selectallbyselection", text="Multi Select", icon='RENDER_REGION')
 
 # Select All By Selection
 
 
-class SelectAllBySelection(Operator):
+class SelectAllBySelection(Menu):
     bl_idname = "object.selectallbyselection"
     bl_label = "Verts Edges Faces"
     bl_options = {'REGISTER', 'UNDO'}
 
-    def execute(self, context):
+    def draw(self, context):
+        layout = self.layout
+        layout.operator_context = 'INVOKE_REGION_WIN'
+
+        prop = layout.operator("wm.context_set_value", text="Vertex Select",
+                               icon='VERTEXSEL')
+        prop.value = "(True, False, False)"
+        prop.data_path = "tool_settings.mesh_select_mode"
+
+        prop = layout.operator("wm.context_set_value", text="Edge Select",
+                               icon='EDGESEL')
+        prop.value = "(False, True, False)"
+        prop.data_path = "tool_settings.mesh_select_mode"
+
+        prop = layout.operator("wm.context_set_value", text="Face Select",
+                               icon='FACESEL')
+        prop.value = "(False, False, True)"
+        prop.data_path = "tool_settings.mesh_select_mode"
 
-        bpy.ops.mesh.select_all(action='TOGGLE')
-        bpy.ops.mesh.select_all(action='TOGGLE')
-        return {'FINISHED'}
+        prop = layout.operator("wm.context_set_value",
+                               text="Vertex & Edge & Face Select",
+            

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list