|
@@ -0,0 +1,52 @@
|
|
|
+from modules import scripts
|
|
|
+xyz_grid = [x for x in scripts.scripts_data if x.script_class.__module__ == "xyz_grid.py"][0].module
|
|
|
+from modules.shared import opts
|
|
|
+
|
|
|
+def int_applier(value_name:str, min_range:int = -1, max_range:int = -1):
|
|
|
+ """
|
|
|
+ Returns a function that applies the given value to the given value_name in opts.data.
|
|
|
+ """
|
|
|
+ # convert to int
|
|
|
+ def validate(value_name:str, value:str):
|
|
|
+ try:
|
|
|
+ value = int(value)
|
|
|
+ except:
|
|
|
+ raise ValueError(f"Value {value} for {value_name} is not an integer")
|
|
|
+ # validate value
|
|
|
+ if not min_range == -1:
|
|
|
+ assert value >= min_range, f"Value {value} for {value_name} must be greater than or equal to {min_range}"
|
|
|
+ if not max_range == -1:
|
|
|
+ assert value <= max_range, f"Value {value} for {value_name} must be less than or equal to {max_range}"
|
|
|
+ def apply_int(p, x, xs):
|
|
|
+ validate(value_name, x)
|
|
|
+ opts.data[value_name] = int(x)
|
|
|
+ return apply_int
|
|
|
+
|
|
|
+def bool_applier(value_name:str):
|
|
|
+ """
|
|
|
+ Returns a function that applies the given value to the given value_name in opts.data.
|
|
|
+ """
|
|
|
+ def validate(value_name:str, value:str):
|
|
|
+ assert value.lower() in ["true", "false"], f"Value {value} for {value_name} must be either true or false"
|
|
|
+ def apply_bool(p, x, xs):
|
|
|
+ validate(value_name, x)
|
|
|
+ value_boolean = x.lower() == "true"
|
|
|
+ opts.data[value_name] = value_boolean
|
|
|
+ return apply_bool
|
|
|
+
|
|
|
+def add_axis_options():
|
|
|
+ extra_axis_options = [
|
|
|
+ xyz_grid.AxisOption("[Hypertile] Unet First pass Enabled", str, bool_applier("hypertile_enable_unet"), choices=xyz_grid.boolean_choice(reverse=True)),
|
|
|
+ xyz_grid.AxisOption("[Hypertile] Unet Second pass Enabled", str, bool_applier("hypertile_enable_unet_secondpass"), choices=xyz_grid.boolean_choice(reverse=True)),
|
|
|
+ xyz_grid.AxisOption("[Hypertile] Unet Max Depth", int, int_applier("hypertile_max_depth_unet", 0, 3), choices=lambda: [str(x) for x in range(4)]),
|
|
|
+ xyz_grid.AxisOption("[Hypertile] Unet Max Tile Size", int, int_applier("hypertile_max_tile_unet", 0, 512)),
|
|
|
+ xyz_grid.AxisOption("[Hypertile] Unet Swap Size", int, int_applier("hypertile_swap_size_unet", 0, 64)),
|
|
|
+ xyz_grid.AxisOption("[Hypertile] VAE Enabled", str, bool_applier("hypertile_enable_vae"), choices=xyz_grid.boolean_choice(reverse=True)),
|
|
|
+ xyz_grid.AxisOption("[Hypertile] VAE Max Depth", int, int_applier("hypertile_max_depth_vae", 0, 3), choices=lambda: [str(x) for x in range(4)]),
|
|
|
+ xyz_grid.AxisOption("[Hypertile] VAE Max Tile Size", int, int_applier("hypertile_max_tile_vae", 0, 512)),
|
|
|
+ xyz_grid.AxisOption("[Hypertile] VAE Swap Size", int, int_applier("hypertile_swap_size_vae", 0, 64)),
|
|
|
+ ]
|
|
|
+ # check if the axis options have already been added
|
|
|
+ if any(set(opt.label for opt in extra_axis_options).intersection(set(opt.label for opt in xyz_grid.axis_options))):
|
|
|
+ return
|
|
|
+ xyz_grid.axis_options.extend(extra_axis_options)
|