temp save

This commit is contained in:
Joseph HENRY 2025-12-01 17:26:08 +01:00
parent 1a71fe37df
commit e26cc4f09f
6 changed files with 70 additions and 53 deletions

View File

@ -1,3 +1,20 @@
if "bpy" in locals():
import importlib
importlib.reload(operators)
importlib.reload(panels)
importlib.reload(functions)
importlib.reload(properties)
from .functions import read_shelves
from . import operators
from . import properties
from . import ui
from .properties import CustomShelfSettings, CustomShelfProps
import bpy
import os
bl_info = { bl_info = {
"name": "Custom Shelf", "name": "Custom Shelf",
"author": "Christophe Seux", "author": "Christophe Seux",
@ -12,25 +29,6 @@ bl_info = {
} }
if "bpy" in locals():
import importlib
importlib.reload(operators)
importlib.reload(panels)
importlib.reload(functions)
importlib.reload(properties)
from .utils import report
from .functions import read_shelves
from . import operators
from . import properties
from . import ui
from .properties import CustomShelfSettings, CustomShelfProps
import bpy
import os
bl_classes = [ bl_classes = [
properties.AdditionnalShelves, properties.AdditionnalShelves,
properties.CustomShelfProps, properties.CustomShelfProps,
@ -42,6 +40,7 @@ bl_classes = [
operators.CSHELF_OT_open_shelf_folder, operators.CSHELF_OT_open_shelf_folder,
operators.CSHELF_OT_add_script, operators.CSHELF_OT_add_script,
operators.CSHELF_OT_set_tag_filter, operators.CSHELF_OT_set_tag_filter,
operators.CustomShelfAddonPreferences,
ui.CSHELF_MT_text_editor, ui.CSHELF_MT_text_editor,
] ]

View File

@ -212,7 +212,7 @@ def read_shelves():
tag_filter_items.sort() tag_filter_items.sort()
tag_filter_items.insert(0, "__clear__") tag_filter_items.insert(0, "__clear__")
prefs["tag_filter_items"] = tag_filter_items # prefs["tag_filter_items"] = tag_filter_items
# bpy.utils.unregister_class(CustomShelfPrefs) # bpy.utils.unregister_class(CustomShelfPrefs)
# bpy.utils.register_class(CustomShelfPrefs) # bpy.utils.register_class(CustomShelfPrefs)

View File

@ -1,7 +1,8 @@
from .utils import * from .utils import *
from .functions import * from .functions import *
from bpy.types import Operator from bpy.types import AddonPreferences, Operator, PropertyGroup
from bpy.props import * from bpy.props import *
from bpy.props import CollectionProperty
from .properties import CustomShelfSettings from .properties import CustomShelfSettings
@ -267,7 +268,6 @@ class CSHELF_OT_add_script(Operator):
folder_row.prop(bl_props, "category_enum", expand=True) folder_row.prop(bl_props, "category_enum", expand=True)
else: else:
folder_row.prop(self, "new_category", text="") folder_row.prop(self, "new_category", text="")
folder_row.prop(self, "add_category", icon="ADD", text="") folder_row.prop(self, "add_category", icon="ADD", text="")
@ -392,3 +392,13 @@ class CSHELF_OT_add_script(Operator):
bl_props.tab_enum = tab bl_props.tab_enum = tab
return context.window_manager.invoke_props_dialog(self, width=500) return context.window_manager.invoke_props_dialog(self, width=500)
class TagFilterItem(PropertyGroup):
value: StringProperty(name="Tag")
class CustomShelfAddonPreferences(AddonPreferences):
bl_idname = __name__
tag_filter_items: CollectionProperty(type=TagFilterItem)

View File

@ -9,4 +9,5 @@ dependencies = []
[dependency-groups] [dependency-groups]
dev = [ dev = [
"black>=25.11.0", "black>=25.11.0",
"fake-bpy-module>=20251003",
] ]

View File

@ -1,12 +1,19 @@
from pathlib import Path
from typing import Any
import bpy import bpy
import os import os
from os import listdir, mkdir, scandir
from os.path import join, dirname, splitext, isdir, exists, basename
from bpy.types import Operator, Panel, PropertyGroup
from bpy.props import *
import subprocess import subprocess
import json import json
from bpy.props import (
BoolProperty,
EnumProperty,
FloatProperty,
IntProperty,
PointerProperty,
StringProperty,
)
id_type = { id_type = {
"Action": "actions", "Action": "actions",
@ -46,47 +53,34 @@ id_type = {
} }
def report(var, message, type="INFO"): def read_json(path: Path):
print([a for a in locals()])
print([a for a in globals()])
if "self" in var:
var["self"].report({type}, message)
else:
print("")
print(type)
print(message)
def read_json(path):
jsonFile = path jsonFile = path
if os.path.exists(jsonFile): if os.path.exists(jsonFile):
try: try:
with open(jsonFile) as data_file: with open(jsonFile) as data_file:
return json.load(data_file) return json.load(data_file)
except: except Exception:
print("the file %s not json readable" % jsonFile) print("the file %s not json readable" % jsonFile)
return return
def search_filter(search, str): def search_filter(search: str, str: str):
return search.lower() in str.lower() return search.lower() in str.lower()
def title(string): def title(string: str):
return string.replace("_", " ").replace("-", " ").title() return string.replace("_", " ").replace("-", " ").title()
def arg_name(string): def arg_name(string: str):
return string.replace(" ", "_").replace("-", "_").lower().strip("_") return string.replace(" ", "_").replace("-", "_").lower().strip("_")
def open_folder(path): def open_folder(path: Path):
try: try:
os.startfile(path) os.startfile(path)
except: except Exception:
subprocess.Popen(["xdg-open", path]) _ = subprocess.Popen(["xdg-open", path])
def dic_to_args(dic): def dic_to_args(dic):
@ -141,7 +135,7 @@ def dic_to_args(dic):
return args return args
def read_info(script_path): def read_info(script_path: Path):
import collections import collections
if isinstance(script_path, list): if isinstance(script_path, list):
@ -151,13 +145,13 @@ def read_info(script_path):
lines = f.read().splitlines() lines = f.read().splitlines()
info = {} info = {}
for i, l in enumerate(lines): for i, line in enumerate(lines):
if i >= 10: if i >= 10:
return info, lines return info, lines
if l.startswith("info"): if line.startswith("info"):
info_start = i info_start = i
info_str = l info_str = line
while ( while (
info_str.endswith(",") info_str.endswith(",")
@ -202,7 +196,7 @@ def read_info(script_path):
return info, lines return info, lines
def dic_to_str(dic, keys=None, spaces=4): def dic_to_str(dic: dict[str, Any], keys: list[str] | None = None, spaces: int = 4): # pyright: ignore[reportExplicitAny]
if not keys: if not keys:
keys = sorted(dic) keys = sorted(dic)

15
uv.lock generated
View File

@ -60,12 +60,25 @@ source = { virtual = "." }
[package.dev-dependencies] [package.dev-dependencies]
dev = [ dev = [
{ name = "black" }, { name = "black" },
{ name = "fake-bpy-module" },
] ]
[package.metadata] [package.metadata]
[package.metadata.requires-dev] [package.metadata.requires-dev]
dev = [{ name = "black", specifier = ">=25.11.0" }] dev = [
{ name = "black", specifier = ">=25.11.0" },
{ name = "fake-bpy-module", specifier = ">=20251003" },
]
[[package]]
name = "fake-bpy-module"
version = "20251003"
source = { registry = "https://pypi.org/simple" }
sdist = { url = "https://files.pythonhosted.org/packages/3a/d7/8e34a795715d18497a257929ace8776a94d6c2c744e36b61e75567cbda64/fake_bpy_module-20251003.tar.gz", hash = "sha256:43d7fd082efc34497e238de3ad4d31fb850f2d1a8bb07418ae36eae56c1c7434", size = 973644, upload-time = "2025-10-03T06:19:57.638Z" }
wheels = [
{ url = "https://files.pythonhosted.org/packages/c6/24/d318f51ae1ebe953038984ed26fa0f9cd5466ef83da30c317282645695ec/fake_bpy_module-20251003-py3-none-any.whl", hash = "sha256:424f75fee6f300fc6d8e0d39abb28dbccd8777f611afa47ecdb9a03c00f2f43f", size = 1103011, upload-time = "2025-10-03T06:19:55.524Z" },
]
[[package]] [[package]]
name = "mypy-extensions" name = "mypy-extensions"