From a7767978c2fb430eeaa66d8d9c2e5690341903f1 Mon Sep 17 00:00:00 2001 From: Anish Lakhwara Date: Sun, 28 Aug 2022 17:20:26 +1000 Subject: [PATCH] init with resolution swapper --- Text | 48 +++++++++++++++++++++++++++++++++++++++++ flake.lock | 42 ++++++++++++++++++++++++++++++++++++ flake.nix | 20 +++++++++++++++++ resolution-swapper.py | 50 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 160 insertions(+) create mode 100644 Text create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 resolution-swapper.py diff --git a/Text b/Text new file mode 100644 index 0000000..6ec08c5 --- /dev/null +++ b/Text @@ -0,0 +1,48 @@ +bl_info = { + "name": "Swap Resulotion", + "blender": (2, 80, 0), + "category": "Context", +} + +import bpy + +class SwapResolution(bpy.types.Operator): + """Resolution Swaping button""" # Use this as a tooltip for menu items and buttons. + bl_idname = "scene.swap_res" # Unique identifier for buttons and menu items to reference. + bl_label = "Swap Resolution" # Display name in the interface. + + + def swap(self, curr_x, curr_y): + y = curr_x + x = curr_y + bpy.context.scene.render.resolution_y = y + bpy.context.scene.render.resolution_x = x + + def execute(self, context): # execute() is called when running the operator. + # The original script + render = context.scene.render + self.swap(render.resolution_x, render.resolution_y) + + return {'FINISHED'} # Lets Blender know the operator finished successfully. + +class FancyPanel(bpy.types.Panel): + bl_idname = "test_fancy_panel_for_fun" + bl_label = "Fancy Panel" + bl_space_type = 'PROPERTIES' + bl_region_type = "WINDOW" + + def draw(self, context): + self.layout.laber(text="Testing") + self.layout.operator("scene.swap_res") + +def register(): + bpy.utils.register_class(SwapResolution) + bpy.utils.register_class(FancyPanel) + # bpy.types.VIEW3D_MT_object.append(menu_func) # Adds the new operator to an existing menu. + +def unregister(): + bpy.utils.unregister_class(SwapResolution) + bpy.utils.unregister_class(FancyPanel) + +if __name__ == "__main__": + register() \ No newline at end of file diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..a7e8fe2 --- /dev/null +++ b/flake.lock @@ -0,0 +1,42 @@ +{ + "nodes": { + "flake-utils": { + "locked": { + "lastModified": 1659877975, + "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1661641486, + "narHash": "sha256-+wdlXaGJeO2PrFrOwVIyP+LmGD1iavGbMJ7Qy+S8SzM=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "da1b01a144a95b75db46e2c7102eb51200625515", + "type": "github" + }, + "original": { + "owner": "nixos", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..0101a35 --- /dev/null +++ b/flake.nix @@ -0,0 +1,20 @@ +{ + description = "Blender Addon Development"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let pkgs = nixpkgs.legacyPackages.${system}; + in + { + devShell = pkgs.mkShell { + buildInputs = [ + pkgs.blender + ]; + }; + }); +} diff --git a/resolution-swapper.py b/resolution-swapper.py new file mode 100644 index 0000000..cdd77d4 --- /dev/null +++ b/resolution-swapper.py @@ -0,0 +1,50 @@ +bl_info = { + "name": "Resolution Swapper", + "author": "Anish Lakhwara", + "version": (1, 0, 0), + "blender": (2, 78, 0), + "description": "Simple button to swap X & Y resolution size", + "category": "Properties", +} + +import bpy + +class ResSwapButton(bpy.types.Operator): + bl_idname = "resswap.button" + bl_label = "Swap Resolution" + + def execute(self, context): + x = context.scene.render.resolution_y + y = context.scene.render.resolution_x + context.scene.render.resolution_y = y + context.scene.render.resolution_x = x + + return {'FINISHED'} + +def menu_func(self, context): + self.layout.operator(ResSwapButton.bl_idname) + +class ResSwapPanel(bpy.types.Panel): + """Creates a Panel in the scene context of the properties editor""" + bl_label = "Resolution Swaper" + bl_idname = "SCENE_PT_layout" + bl_space_type = 'PROPERTIES' + bl_region_type = 'WINDOW' + bl_context = "output" + + def draw(self, context): + scene = context.scene + self.layout.operator(ResSwapButton.bl_idname) + +def register(): + bpy.utils.register_class(ResSwapButton) + bpy.types.RENDER_PT_format.append(menu_func) + #bpy.utils.register_class(ResSwapPanel) + + +def unregister(): + bpy.utils.unregister_class(ResSwapButton) + #bpy.utils.unregister_class(ResSwapPanel) + +if __name__ == "__main__": + register() \ No newline at end of file