OverviewFilesCommitsIssuesDocsReleasesPeers

hardops / operators / third_party / power_save.py

59 lines · python ref:
import bpy
import pathlib
from ... utility import addon
from ...ui_framework.operator_ui import Master
from ... utility import addon

class HOPS_OT_TP_PowerSaveInt(bpy.types.Operator):
    bl_idname = "hops.powersave"
    bl_label = "PowerSave"
    bl_options = {'REGISTER', 'UNDO'}
    bl_description = """PowerSave!

Save this blend file with the name in the text field below.
If no name is provided, generate one based on the date and time.
If this blend has never been saved, put it in the PowerSave folder

Ctrl - Go into a save prompt
"""

    called_ui = False

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        HOPS_OT_TP_PowerSaveInt.called_ui = False

    def invoke(self, context, event):

        if event.ctrl:
            bpy.ops.hops.power_save_dialog('INVOKE_DEFAULT')
            return {"FINISHED"}

        return self.execute(context)

    def execute(self, context):

        try:
            bpy.ops.powersave.powersave()
        except:
            pass

        # Operator UI
        if not HOPS_OT_TP_PowerSaveInt.called_ui:
            HOPS_OT_TP_PowerSaveInt.called_ui = True

            path = pathlib.Path(bpy.data.filepath).resolve()
            folder, name = str(path.parent), path.stem

            ui = Master()
            draw_data = [
                ["PowerSave"],
                [folder, " "],
                [name, " "],
                ["Now saving ... ", " "]
            ]
            ui.receive_draw_data(draw_data=draw_data)
            ui.draw(draw_bg=addon.preference().ui.Hops_operator_draw_bg, draw_border=addon.preference().ui.Hops_operator_draw_border)

        return {"FINISHED"}