import bpy from .operators import (AddPlaneCutter, AddCylinderCutter, AddCubeCutter, AddSphereCutter, CombineLabels, ConvertToMesh, InvertScalar, FillByLabel, FillByThreshold, FillByRange) from .io import ExportVolumeData, ImportAsLabelLayer, ImportAsScalarLayer, ImportVolumeData, AddVolumeData from .save import ReLinkNodes, SaveLayers, SaveAllToShare class ModifyLayer(bpy.types.Menu): bl_idname = "BIOXELNODES_MT_MODIFY_LAYERS" bl_label = "Modify Layer" def draw(self, context): layout = self.layout layout.operator(InvertScalar.bl_idname) layout.operator(FillByThreshold.bl_idname) layout.operator(FillByRange.bl_idname) layout.operator(FillByLabel.bl_idname) layout.operator(CombineLabels.bl_idname) class AddCutterMenu(bpy.types.Menu): bl_idname = "BIOXELNODES_MT_CUTTERS" bl_label = "Add a Cutter to Container" def draw(self, context): layout = self.layout layout.operator(AddPlaneCutter.bl_idname) layout.operator(AddCylinderCutter.bl_idname) layout.operator(AddCubeCutter.bl_idname) layout.operator(AddSphereCutter.bl_idname) class ImportLayerMenu(bpy.types.Menu): bl_idname = "BIOXELNODES_MT_LAYERS" bl_label = "Import Volume Data as Bioxel" def draw(self, context): layout = self.layout layout.operator(ImportAsScalarLayer.bl_idname) layout.operator(ImportAsLabelLayer.bl_idname) class BioxelNodesView3DMenu(bpy.types.Menu): bl_idname = "BIOXELNODES_MT_VIEW3D" bl_label = "Bioxel Nodes" def draw(self, context): layout = self.layout layout.menu(ImportLayerMenu.bl_idname) layout.menu(AddCutterMenu.bl_idname) layout.operator(ConvertToMesh.bl_idname) layout.separator() layout.operator(SaveLayers.bl_idname) class BioxelNodesOutlinerMenu(bpy.types.Menu): bl_idname = "BIOXELNODES_MT_OUTLINER" bl_label = "Bioxel Nodes" def draw(self, context): layout = self.layout layout.menu(ImportLayerMenu.bl_idname) layout.menu(AddCutterMenu.bl_idname) layout.operator(ConvertToMesh.bl_idname) layout.separator() layout.menu(ModifyLayer.bl_idname) layout.separator() layout.operator(SaveLayers.bl_idname) def TOPBAR_FILE_IMPORT(self, context): layout = self.layout layout.separator() layout.menu(ImportLayerMenu.bl_idname) def TOPBAR_FILE_EXPORT(self, context): layout = self.layout layout.separator() layout.operator(ExportVolumeData.bl_idname) def VIEW3D_OBJECT(self, context): layout = self.layout layout.separator() layout.menu(BioxelNodesView3DMenu.bl_idname, icon="FILE_VOLUME") def OUTLINER_OBJECT(self, context): layout = self.layout layout.separator() layout.menu(BioxelNodesOutlinerMenu.bl_idname, icon="FILE_VOLUME") class BioxelNodesTopbarMenu(bpy.types.Menu): bl_idname = "BIOXELNODES_MT_TOPBAR" bl_label = "Bioxel Nodes" def draw(self, context): layout = self.layout layout.menu(ImportLayerMenu.bl_idname) layout.operator(ExportVolumeData.bl_idname) layout.separator() layout.menu(AddCutterMenu.bl_idname) layout.operator(ConvertToMesh.bl_idname) layout.separator() layout.operator(SaveAllToShare.bl_idname) layout.operator(ReLinkNodes.bl_idname) def TOPBAR(self, context): layout = self.layout layout.menu(BioxelNodesTopbarMenu.bl_idname) def add(): bpy.types.TOPBAR_MT_file_import.append(TOPBAR_FILE_IMPORT) bpy.types.TOPBAR_MT_file_export.append(TOPBAR_FILE_EXPORT) bpy.types.OUTLINER_MT_object.append(OUTLINER_OBJECT) bpy.types.VIEW3D_MT_object_context_menu.append(VIEW3D_OBJECT) bpy.types.TOPBAR_MT_editor_menus.append(TOPBAR) def remove(): bpy.types.TOPBAR_MT_file_import.remove(TOPBAR_FILE_IMPORT) bpy.types.TOPBAR_MT_file_export.remove(TOPBAR_FILE_EXPORT) bpy.types.OUTLINER_MT_object.remove(OUTLINER_OBJECT) bpy.types.VIEW3D_MT_object_context_menu.remove(VIEW3D_OBJECT) bpy.types.TOPBAR_MT_editor_menus.remove(TOPBAR)